@matterlabs/zksync-js 0.0.6 → 0.0.7

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 (46) hide show
  1. package/dist/adapters/ethers/client.cjs +170 -48
  2. package/dist/adapters/ethers/client.cjs.map +1 -1
  3. package/dist/adapters/ethers/client.js +6 -6
  4. package/dist/adapters/ethers/errors/error-ops.d.ts +26 -19
  5. package/dist/adapters/ethers/index.cjs +171 -49
  6. package/dist/adapters/ethers/index.cjs.map +1 -1
  7. package/dist/adapters/ethers/index.js +9 -9
  8. package/dist/adapters/ethers/sdk.cjs +52 -46
  9. package/dist/adapters/ethers/sdk.cjs.map +1 -1
  10. package/dist/adapters/ethers/sdk.js +7 -7
  11. package/dist/adapters/viem/client.cjs +119 -3
  12. package/dist/adapters/viem/client.cjs.map +1 -1
  13. package/dist/adapters/viem/client.js +4 -4
  14. package/dist/adapters/viem/errors/error-ops.d.ts +26 -19
  15. package/dist/adapters/viem/index.cjs +171 -49
  16. package/dist/adapters/viem/index.cjs.map +1 -1
  17. package/dist/adapters/viem/index.js +8 -8
  18. package/dist/adapters/viem/sdk.cjs +52 -46
  19. package/dist/adapters/viem/sdk.cjs.map +1 -1
  20. package/dist/adapters/viem/sdk.js +6 -6
  21. package/dist/{chunk-YUK547UF.js → chunk-7VP6742W.js} +3 -3
  22. package/dist/{chunk-WU2LOG2A.js → chunk-EWLA4NUE.js} +5 -5
  23. package/dist/{chunk-M5J2MM2U.js → chunk-GIXLOHLK.js} +1 -1
  24. package/dist/{chunk-XRE7H466.js → chunk-GNERKUWO.js} +3 -47
  25. package/dist/chunk-KAMEGD6I.js +75 -0
  26. package/dist/{chunk-2MDK3GLO.js → chunk-KRIRXY74.js} +7 -51
  27. package/dist/{chunk-F2ENUV3A.js → chunk-NCR42O6O.js} +1 -1
  28. package/dist/{chunk-3MRGU4HV.js → chunk-NGXRO2ZX.js} +4 -4
  29. package/dist/{chunk-LL3WKCFJ.js → chunk-NNFWIAVG.js} +2 -2
  30. package/dist/{chunk-NEC2ZKHI.js → chunk-P5PIWVEO.js} +1 -1
  31. package/dist/{chunk-NTEIA5KA.js → chunk-VRL6Y4YJ.js} +1 -1
  32. package/dist/{chunk-6K6VJQAL.js → chunk-WY36Z6YB.js} +122 -5
  33. package/dist/core/constants.cjs +1 -1
  34. package/dist/core/constants.d.ts +1 -1
  35. package/dist/core/constants.js +1 -1
  36. package/dist/core/errors/error-ops.d.ts +18 -0
  37. package/dist/core/index.cjs +120 -3
  38. package/dist/core/index.cjs.map +1 -1
  39. package/dist/core/index.js +5 -5
  40. package/dist/core/rpc/types.d.ts +5 -0
  41. package/dist/core/rpc/zks.d.ts +4 -1
  42. package/dist/index.cjs +121 -4
  43. package/dist/index.cjs.map +1 -1
  44. package/dist/index.js +5 -5
  45. package/package.json +1 -1
  46. package/dist/chunk-NCAIVYBR.js +0 -23
@@ -1,6 +1,6 @@
1
- export { createViemSdk } from '../../chunk-2MDK3GLO.js';
2
- import '../../chunk-LL3WKCFJ.js';
3
- import '../../chunk-NEC2ZKHI.js';
4
- import '../../chunk-NCAIVYBR.js';
5
- import '../../chunk-M5J2MM2U.js';
6
- import '../../chunk-F2ENUV3A.js';
1
+ export { createViemSdk } from '../../chunk-KRIRXY74.js';
2
+ import '../../chunk-NNFWIAVG.js';
3
+ import '../../chunk-P5PIWVEO.js';
4
+ import '../../chunk-KAMEGD6I.js';
5
+ import '../../chunk-GIXLOHLK.js';
6
+ import '../../chunk-NCR42O6O.js';
@@ -1,6 +1,6 @@
1
- import { createZksRpc, makeTransportFromViem } from './chunk-6K6VJQAL.js';
2
- import { IBridgehub_default, IL1AssetRouter_default, IL1Nullifier_default, IBaseToken_default, L2NativeTokenVault_default, IL2AssetRouter_default, L1NativeTokenVault_default } from './chunk-M5J2MM2U.js';
3
- import { L2_ASSET_ROUTER_ADDRESS, L2_NATIVE_TOKEN_VAULT_ADDRESS, L2_BASE_TOKEN_ADDRESS } from './chunk-F2ENUV3A.js';
1
+ import { createZksRpc, makeTransportFromViem } from './chunk-WY36Z6YB.js';
2
+ import { IBridgehub_default, IL1AssetRouter_default, IL1Nullifier_default, IBaseToken_default, L2NativeTokenVault_default, IL2AssetRouter_default, L1NativeTokenVault_default } from './chunk-GIXLOHLK.js';
3
+ import { L2_ASSET_ROUTER_ADDRESS, L2_NATIVE_TOKEN_VAULT_ADDRESS, L2_BASE_TOKEN_ADDRESS } from './chunk-NCR42O6O.js';
4
4
  import { getContract, createWalletClient } from 'viem';
5
5
 
6
6
  // src/adapters/viem/rpc.ts
@@ -1,8 +1,8 @@
1
- import { createErrorHandlers, toZKsyncError, classifyReadinessFromRevert } from './chunk-XRE7H466.js';
2
- import { createNTVCodec, buildFeeBreakdown, quoteL2Gas, quoteL2BaseCost, quoteL1Gas, quoteL2Gas2 } from './chunk-LL3WKCFJ.js';
3
- import { findL1MessageSentLog, messengerLogIndex, normalizeL1Token, isAddressEq, hexEq, isHash66, isETH, normalizeAddrEq, pickWithdrawRoute } from './chunk-NEC2ZKHI.js';
4
- import { OP_WITHDRAWALS, IL1Nullifier_default, createError, OP_DEPOSITS, IERC20_default, isZKsyncError, isReceiptNotFound } from './chunk-M5J2MM2U.js';
5
- import { ETH_ADDRESS, L1_MESSENGER_ADDRESS, L2_ASSET_ROUTER_ADDRESS, L2_BASE_TOKEN_ADDRESS, L2_NATIVE_TOKEN_VAULT_ADDRESS, TOPIC_CANONICAL_ASSIGNED, TOPIC_CANONICAL_SUCCESS, SAFE_L1_BRIDGE_GAS } from './chunk-F2ENUV3A.js';
1
+ import { createErrorHandlers, toZKsyncError, classifyReadinessFromRevert } from './chunk-GNERKUWO.js';
2
+ import { createNTVCodec, buildFeeBreakdown, quoteL2Gas, quoteL2BaseCost, quoteL1Gas, quoteL2Gas2 } from './chunk-NNFWIAVG.js';
3
+ import { findL1MessageSentLog, messengerLogIndex, normalizeL1Token, isAddressEq, hexEq, isHash66, isETH, normalizeAddrEq, pickWithdrawRoute } from './chunk-P5PIWVEO.js';
4
+ import { OP_WITHDRAWALS, IL1Nullifier_default, createError, OP_DEPOSITS, IERC20_default, isZKsyncError, isReceiptNotFound } from './chunk-GIXLOHLK.js';
5
+ import { ETH_ADDRESS, L1_MESSENGER_ADDRESS, L2_ASSET_ROUTER_ADDRESS, L2_BASE_TOKEN_ADDRESS, L2_NATIVE_TOKEN_VAULT_ADDRESS, TOPIC_CANONICAL_ASSIGNED, TOPIC_CANONICAL_SUCCESS, SAFE_L1_BRIDGE_GAS } from './chunk-NCR42O6O.js';
6
6
  import { Interface, AbiCoder, ethers, Contract, NonceManager } from 'ethers';
7
7
 
8
8
  var I_BRIDGEHUB = new Interface([
@@ -1,4 +1,4 @@
1
- import { __export } from './chunk-F2ENUV3A.js';
1
+ import { __export } from './chunk-NCR42O6O.js';
2
2
 
3
3
  // src/core/internal/abis/IBridgehub.ts
4
4
  var IBridgehubABI = [
@@ -1,5 +1,5 @@
1
- import { REVERT_TO_READINESS } from './chunk-NCAIVYBR.js';
2
- import { IL1Nullifier_default, IERC20_default, L1NativeTokenVault_default, L2NativeTokenVault_default, Mailbox_default, isZKsyncError, createError, shapeCause } from './chunk-M5J2MM2U.js';
1
+ import { createErrorOps, REVERT_TO_READINESS } from './chunk-KAMEGD6I.js';
2
+ import { IL1Nullifier_default, IERC20_default, L1NativeTokenVault_default, L2NativeTokenVault_default, Mailbox_default } from './chunk-GIXLOHLK.js';
3
3
  import { Interface } from 'ethers';
4
4
 
5
5
  var ERROR_IFACES = [];
@@ -108,50 +108,6 @@ function classifyReadinessFromRevert(e) {
108
108
  }
109
109
 
110
110
  // src/adapters/ethers/errors/error-ops.ts
111
- function toZKsyncError(type, base, err) {
112
- if (isZKsyncError(err)) return err;
113
- const revert = decodeRevert(err);
114
- return createError(type, { ...base, ...revert ? { revert } : {}, cause: shapeCause(err) });
115
- }
116
- function resolveMessage(op, msg) {
117
- if (!msg) return `Error during ${op}.`;
118
- return typeof msg === "function" ? msg() : msg;
119
- }
120
- function createErrorHandlers(resource) {
121
- async function run(kind, operation, fn, opts) {
122
- try {
123
- return await fn();
124
- } catch (e) {
125
- if (isZKsyncError(e)) throw e;
126
- const message = resolveMessage(operation, opts?.message);
127
- throw toZKsyncError(kind, { resource, operation, context: opts?.ctx ?? {}, message }, e);
128
- }
129
- }
130
- function wrap(operation, fn, opts) {
131
- return run("INTERNAL", operation, fn, opts);
132
- }
133
- function wrapAs(kind, operation, fn, opts) {
134
- return run(kind, operation, fn, opts);
135
- }
136
- async function toResult(operation, fn, opts) {
137
- try {
138
- const value = await wrap(operation, fn, opts);
139
- return { ok: true, value };
140
- } catch (e) {
141
- const shaped = isZKsyncError(e) ? e : toZKsyncError(
142
- "INTERNAL",
143
- {
144
- resource,
145
- operation,
146
- context: opts?.ctx ?? {},
147
- message: resolveMessage(operation, opts?.message)
148
- },
149
- e
150
- );
151
- return { ok: false, error: shaped };
152
- }
153
- }
154
- return { wrap, wrapAs, toResult };
155
- }
111
+ var { toZKsyncError, createErrorHandlers } = createErrorOps(decodeRevert);
156
112
 
157
113
  export { classifyReadinessFromRevert, createErrorHandlers, decodeRevert, registerErrorAbi, toZKsyncError };
@@ -0,0 +1,75 @@
1
+ import { isZKsyncError, createError, shapeCause } from './chunk-GIXLOHLK.js';
2
+
3
+ // src/core/errors/error-ops.ts
4
+ function resolveMessage(op, msg) {
5
+ if (!msg) return `Error during ${op}.`;
6
+ return typeof msg === "function" ? msg() : msg;
7
+ }
8
+ function createErrorOps(decodeRevert) {
9
+ function toZKsyncError(type, base, err) {
10
+ if (isZKsyncError(err)) return err;
11
+ const revert = decodeRevert ? decodeRevert(err) : void 0;
12
+ return createError(type, { ...base, ...revert ? { revert } : {}, cause: shapeCause(err) });
13
+ }
14
+ function createErrorHandlers(resource) {
15
+ async function run(kind, operation, fn, opts) {
16
+ try {
17
+ return await fn();
18
+ } catch (e) {
19
+ if (isZKsyncError(e)) throw e;
20
+ const message = resolveMessage(operation, opts?.message);
21
+ throw toZKsyncError(kind, { resource, operation, context: opts?.ctx ?? {}, message }, e);
22
+ }
23
+ }
24
+ function wrap(operation, fn, opts) {
25
+ return run("INTERNAL", operation, fn, opts);
26
+ }
27
+ function wrapAs(kind, operation, fn, opts) {
28
+ return run(kind, operation, fn, opts);
29
+ }
30
+ async function toResult(operation, fn, opts) {
31
+ try {
32
+ const value = await wrap(operation, fn, opts);
33
+ return { ok: true, value };
34
+ } catch (e) {
35
+ const shaped = isZKsyncError(e) ? e : toZKsyncError(
36
+ "INTERNAL",
37
+ {
38
+ resource,
39
+ operation,
40
+ context: opts?.ctx ?? {},
41
+ message: resolveMessage(operation, opts?.message)
42
+ },
43
+ e
44
+ );
45
+ return { ok: false, error: shaped };
46
+ }
47
+ }
48
+ return { wrap, wrapAs, toResult };
49
+ }
50
+ return { toZKsyncError, createErrorHandlers };
51
+ }
52
+
53
+ // src/core/errors/withdrawal-revert-map.ts
54
+ var REVERT_TO_READINESS = {
55
+ // Already done
56
+ WithdrawalAlreadyFinalized: { kind: "FINALIZED" },
57
+ // Temporary — try later
58
+ BatchNotExecuted: { kind: "NOT_READY", reason: "batch-not-executed" },
59
+ LocalRootIsZero: { kind: "NOT_READY", reason: "root-missing" },
60
+ // Permanent — won’t become ready for this tx
61
+ WrongL2Sender: { kind: "UNFINALIZABLE", reason: "message-invalid" },
62
+ InvalidSelector: { kind: "UNFINALIZABLE", reason: "message-invalid" },
63
+ L2WithdrawalMessageWrongLength: { kind: "UNFINALIZABLE", reason: "message-invalid" },
64
+ WrongMsgLength: { kind: "UNFINALIZABLE", reason: "message-invalid" },
65
+ TokenNotLegacy: { kind: "UNFINALIZABLE", reason: "message-invalid" },
66
+ TokenIsLegacy: { kind: "UNFINALIZABLE", reason: "message-invalid" },
67
+ InvalidProof: { kind: "UNFINALIZABLE", reason: "message-invalid" },
68
+ InvalidChainId: { kind: "UNFINALIZABLE", reason: "invalid-chain" },
69
+ NotSettlementLayer: { kind: "UNFINALIZABLE", reason: "settlement-layer" },
70
+ // Likely environment mismatch — treat as permanent for this tx
71
+ OnlyEraSupported: { kind: "UNFINALIZABLE", reason: "unsupported" },
72
+ LocalRootMustBeZero: { kind: "UNFINALIZABLE", reason: "unsupported" }
73
+ };
74
+
75
+ export { REVERT_TO_READINESS, createErrorOps };
@@ -1,9 +1,9 @@
1
- import { createNTVCodec, buildFeeBreakdown, quoteL2Gas, quoteL1Gas, quoteL2Gas2 } from './chunk-LL3WKCFJ.js';
2
- import { findL1MessageSentLog, messengerLogIndex, normalizeL1Token, isAddressEq, hexEq, isHash66, isETH, normalizeAddrEq, pickWithdrawRoute } from './chunk-NEC2ZKHI.js';
3
- import { REVERT_TO_READINESS } from './chunk-NCAIVYBR.js';
4
- import { IL1Nullifier_default, IERC20_default, L1NativeTokenVault_default, L2NativeTokenVault_default, Mailbox_default, isZKsyncError, createError, shapeCause, OP_WITHDRAWALS, OP_DEPOSITS, isReceiptNotFound, IBridgehub_default, IL2AssetRouter_default, IBaseToken_default } from './chunk-M5J2MM2U.js';
5
- import { ETH_ADDRESS, L1_MESSENGER_ADDRESS, L2_ASSET_ROUTER_ADDRESS, L2_BASE_TOKEN_ADDRESS, L2_NATIVE_TOKEN_VAULT_ADDRESS, TOPIC_CANONICAL_ASSIGNED, TOPIC_CANONICAL_SUCCESS, SAFE_L1_BRIDGE_GAS } from './chunk-F2ENUV3A.js';
6
- import { keccak256, encodeAbiParameters, concat, decodeErrorResult, decodeAbiParameters, decodeEventLog, encodeFunctionData, zeroAddress } from 'viem';
1
+ import { createNTVCodec, buildFeeBreakdown, quoteL2Gas, quoteL1Gas, quoteL2Gas2 } from './chunk-NNFWIAVG.js';
2
+ import { findL1MessageSentLog, messengerLogIndex, normalizeL1Token, isAddressEq, hexEq, isHash66, isETH, normalizeAddrEq, pickWithdrawRoute } from './chunk-P5PIWVEO.js';
3
+ import { createErrorOps, REVERT_TO_READINESS } from './chunk-KAMEGD6I.js';
4
+ import { IL1Nullifier_default, IERC20_default, L1NativeTokenVault_default, L2NativeTokenVault_default, Mailbox_default, OP_WITHDRAWALS, createError, OP_DEPOSITS, isZKsyncError, isReceiptNotFound, IBridgehub_default, IL2AssetRouter_default, IBaseToken_default } from './chunk-GIXLOHLK.js';
5
+ import { ETH_ADDRESS, L1_MESSENGER_ADDRESS, L2_ASSET_ROUTER_ADDRESS, L2_BASE_TOKEN_ADDRESS, L2_NATIVE_TOKEN_VAULT_ADDRESS, TOPIC_CANONICAL_ASSIGNED, TOPIC_CANONICAL_SUCCESS, SAFE_L1_BRIDGE_GAS } from './chunk-NCR42O6O.js';
6
+ import { keccak256, encodeAbiParameters, decodeErrorResult, concat, decodeAbiParameters, decodeEventLog, encodeFunctionData, zeroAddress } from 'viem';
7
7
 
8
8
  // src/adapters/viem/resources/deposits/context.ts
9
9
  async function commonCtx(p, client, tokens, contracts) {
@@ -201,51 +201,7 @@ function classifyReadinessFromRevert(e) {
201
201
  }
202
202
 
203
203
  // src/adapters/viem/errors/error-ops.ts
204
- function toZKsyncError(type, base, err) {
205
- if (isZKsyncError(err)) return err;
206
- const revert = decodeRevert(err);
207
- return createError(type, { ...base, ...revert ? { revert } : {}, cause: shapeCause(err) });
208
- }
209
- function resolveMessage(op, msg) {
210
- if (!msg) return `Error during ${op}.`;
211
- return typeof msg === "function" ? msg() : msg;
212
- }
213
- function createErrorHandlers(resource) {
214
- async function run(kind, operation, fn, opts) {
215
- try {
216
- return await fn();
217
- } catch (e) {
218
- if (isZKsyncError(e)) throw e;
219
- const message = resolveMessage(operation, opts?.message);
220
- throw toZKsyncError(kind, { resource, operation, context: opts?.ctx ?? {}, message }, e);
221
- }
222
- }
223
- function wrap2(operation, fn, opts) {
224
- return run("INTERNAL", operation, fn, opts);
225
- }
226
- function wrapAs10(kind, operation, fn, opts) {
227
- return run(kind, operation, fn, opts);
228
- }
229
- async function toResult2(operation, fn, opts) {
230
- try {
231
- const value = await wrap2(operation, fn, opts);
232
- return { ok: true, value };
233
- } catch (e) {
234
- const shaped = isZKsyncError(e) ? e : toZKsyncError(
235
- "INTERNAL",
236
- {
237
- resource,
238
- operation,
239
- context: opts?.ctx ?? {},
240
- message: resolveMessage(operation, opts?.message)
241
- },
242
- e
243
- );
244
- return { ok: false, error: shaped };
245
- }
246
- }
247
- return { wrap: wrap2, wrapAs: wrapAs10, toResult: toResult2 };
248
- }
204
+ var { toZKsyncError, createErrorHandlers } = createErrorOps(decodeRevert);
249
205
 
250
206
  // src/adapters/viem/estimator.ts
251
207
  function toCoreTx(tx) {
@@ -50,7 +50,7 @@ var TX_OVERHEAD_GAS = 10000n;
50
50
  var TX_MEMORY_OVERHEAD_GAS = 10n;
51
51
  var DEFAULT_PUBDATA_BYTES = 155n;
52
52
  var DEFAULT_ABI_BYTES = 400n;
53
- var SAFE_L1_BRIDGE_GAS = 600000n;
53
+ var SAFE_L1_BRIDGE_GAS = 700000n;
54
54
  var L1_FEE_ESTIMATION_COEF_NUMERATOR = 12;
55
55
  var L1_FEE_ESTIMATION_COEF_DENOMINATOR = 10;
56
56
 
@@ -1,7 +1,7 @@
1
- import { createErrorHandlers } from './chunk-XRE7H466.js';
2
- import { createZksRpc, makeTransportFromEthers } from './chunk-6K6VJQAL.js';
3
- import { createError, IBridgehub_default, IL1AssetRouter_default, IL1Nullifier_default, IBaseToken_default, L2NativeTokenVault_default, IL2AssetRouter_default, L1NativeTokenVault_default, OP_DEPOSITS } from './chunk-M5J2MM2U.js';
4
- import { L2_ASSET_ROUTER_ADDRESS, L2_NATIVE_TOKEN_VAULT_ADDRESS, L2_BASE_TOKEN_ADDRESS } from './chunk-F2ENUV3A.js';
1
+ import { createErrorHandlers } from './chunk-GNERKUWO.js';
2
+ import { createZksRpc, makeTransportFromEthers } from './chunk-WY36Z6YB.js';
3
+ import { createError, IBridgehub_default, IL1AssetRouter_default, IL1Nullifier_default, IBaseToken_default, L2NativeTokenVault_default, IL2AssetRouter_default, L1NativeTokenVault_default, OP_DEPOSITS } from './chunk-GIXLOHLK.js';
4
+ import { L2_ASSET_ROUTER_ADDRESS, L2_NATIVE_TOKEN_VAULT_ADDRESS, L2_BASE_TOKEN_ADDRESS } from './chunk-NCR42O6O.js';
5
5
  import { BrowserProvider, Interface, Contract } from 'ethers';
6
6
 
7
7
  // src/adapters/ethers/rpc.ts
@@ -1,5 +1,5 @@
1
- import { IBridgehub_default } from './chunk-M5J2MM2U.js';
2
- import { BUFFER, DEFAULT_ABI_BYTES, DEFAULT_PUBDATA_BYTES, TX_MEMORY_OVERHEAD_GAS, TX_OVERHEAD_GAS } from './chunk-F2ENUV3A.js';
1
+ import { IBridgehub_default } from './chunk-GIXLOHLK.js';
2
+ import { BUFFER, DEFAULT_ABI_BYTES, DEFAULT_PUBDATA_BYTES, TX_MEMORY_OVERHEAD_GAS, TX_OVERHEAD_GAS } from './chunk-NCR42O6O.js';
3
3
 
4
4
  // src/core/codec/ntv.ts
5
5
  function createNTVCodec(deps) {
@@ -1,4 +1,4 @@
1
- import { ETH_ADDRESS, FORMAL_ETH_ADDRESS, L2_BASE_TOKEN_ADDRESS, L2_ASSET_ROUTER_ADDRESS, L1_MESSENGER_ADDRESS, TOPIC_L1_MESSAGE_SENT_NEW, TOPIC_L1_MESSAGE_SENT_LEG } from './chunk-F2ENUV3A.js';
1
+ import { ETH_ADDRESS, FORMAL_ETH_ADDRESS, L2_BASE_TOKEN_ADDRESS, L2_ASSET_ROUTER_ADDRESS, L1_MESSENGER_ADDRESS, TOPIC_L1_MESSAGE_SENT_NEW, TOPIC_L1_MESSAGE_SENT_LEG } from './chunk-NCR42O6O.js';
2
2
 
3
3
  // src/core/utils/addr.ts
4
4
  var isHash66 = (x) => !!x && x.startsWith("0x") && x.length === 66;
@@ -1,4 +1,4 @@
1
- import { isETH, normalizeAddrEq } from './chunk-NEC2ZKHI.js';
1
+ import { isETH, normalizeAddrEq } from './chunk-P5PIWVEO.js';
2
2
 
3
3
  // src/core/resources/deposits/route.ts
4
4
  async function pickDepositRoute(client, chainIdL2, token) {
@@ -1,10 +1,11 @@
1
- import { createError, isZKsyncError, shapeCause } from './chunk-M5J2MM2U.js';
2
- import { __export } from './chunk-F2ENUV3A.js';
1
+ import { createError, isZKsyncError, shapeCause } from './chunk-GIXLOHLK.js';
2
+ import { __export } from './chunk-NCR42O6O.js';
3
3
 
4
4
  // src/core/rpc/zks.ts
5
5
  var zks_exports = {};
6
6
  __export(zks_exports, {
7
7
  createZksRpc: () => createZksRpc,
8
+ normalizeBlockMetadata: () => normalizeBlockMetadata,
8
9
  normalizeGenesis: () => normalizeGenesis,
9
10
  normalizeProof: () => normalizeProof
10
11
  });
@@ -30,6 +31,8 @@ var METHODS = {
30
31
  getBridgehub: "zks_getBridgehubContract",
31
32
  getL2ToL1LogProof: "zks_getL2ToL1LogProof",
32
33
  getReceipt: "eth_getTransactionReceipt",
34
+ getBytecodeSupplier: "zks_getBytecodeSupplierContract",
35
+ getBlockMetadataByNumber: "zks_getBlockMetadataByNumber",
33
36
  getGenesis: "zks_getGenesis"
34
37
  };
35
38
  function toHexArray(arr) {
@@ -82,7 +85,9 @@ function ensureHex(value, field, context) {
82
85
  context: { field, valueType: typeof value, ...context }
83
86
  });
84
87
  }
85
- function ensureNumber(value, field) {
88
+ function ensureNumber(value, field, opts) {
89
+ const operation = opts?.operation ?? "zksrpc.normalizeGenesis";
90
+ const messagePrefix = opts?.messagePrefix ?? "Malformed genesis response";
86
91
  if (typeof value === "number" && Number.isFinite(value)) return value;
87
92
  if (typeof value === "bigint") return Number(value);
88
93
  if (typeof value === "string" && value.trim() !== "") {
@@ -91,8 +96,36 @@ function ensureNumber(value, field) {
91
96
  }
92
97
  throw createError("RPC", {
93
98
  resource: "zksrpc",
94
- operation: "zksrpc.normalizeGenesis",
95
- message: "Malformed genesis response: expected numeric value.",
99
+ operation,
100
+ message: `${messagePrefix}: expected numeric value.`,
101
+ context: { field, valueType: typeof value }
102
+ });
103
+ }
104
+ function ensureBigInt(value, field, opts) {
105
+ const operation = opts?.operation ?? "zksrpc.normalizeBlockMetadata";
106
+ const messagePrefix = opts?.messagePrefix ?? "Malformed block metadata response";
107
+ if (typeof value === "bigint") return value;
108
+ if (typeof value === "number" && Number.isFinite(value)) {
109
+ if (!Number.isInteger(value)) {
110
+ throw createError("RPC", {
111
+ resource: "zksrpc",
112
+ operation,
113
+ message: `${messagePrefix}: expected integer value.`,
114
+ context: { field, valueType: typeof value }
115
+ });
116
+ }
117
+ return BigInt(value);
118
+ }
119
+ if (typeof value === "string" && value.trim() !== "") {
120
+ try {
121
+ return BigInt(value);
122
+ } catch {
123
+ }
124
+ }
125
+ throw createError("RPC", {
126
+ resource: "zksrpc",
127
+ operation,
128
+ message: `${messagePrefix}: expected bigint-compatible value.`,
96
129
  context: { field, valueType: typeof value }
97
130
  });
98
131
  }
@@ -178,6 +211,57 @@ function normalizeGenesis(raw) {
178
211
  });
179
212
  }
180
213
  }
214
+ function normalizeBlockMetadata(raw) {
215
+ try {
216
+ if (!raw || typeof raw !== "object") {
217
+ throw createError("RPC", {
218
+ resource: "zksrpc",
219
+ operation: "zksrpc.normalizeBlockMetadata",
220
+ message: "Malformed block metadata response: expected object.",
221
+ context: { receivedType: typeof raw }
222
+ });
223
+ }
224
+ const record = raw;
225
+ const pubdataPricePerByte = ensureBigInt(
226
+ record["pubdata_price_per_byte"] ?? record["pubdataPricePerByte"],
227
+ "pubdata_price_per_byte",
228
+ {
229
+ operation: "zksrpc.normalizeBlockMetadata",
230
+ messagePrefix: "Malformed block metadata response"
231
+ }
232
+ );
233
+ const nativePrice = ensureBigInt(
234
+ record["native_price"] ?? record["nativePrice"],
235
+ "native_price",
236
+ {
237
+ operation: "zksrpc.normalizeBlockMetadata",
238
+ messagePrefix: "Malformed block metadata response"
239
+ }
240
+ );
241
+ const executionVersion = ensureNumber(
242
+ record["execution_version"] ?? record["executionVersion"],
243
+ "execution_version",
244
+ {
245
+ operation: "zksrpc.normalizeBlockMetadata",
246
+ messagePrefix: "Malformed block metadata response"
247
+ }
248
+ );
249
+ return {
250
+ pubdataPricePerByte,
251
+ nativePrice,
252
+ executionVersion
253
+ };
254
+ } catch (e) {
255
+ if (isZKsyncError(e)) throw e;
256
+ throw createError("RPC", {
257
+ resource: "zksrpc",
258
+ operation: "zksrpc.normalizeBlockMetadata",
259
+ message: "Failed to normalize block metadata response.",
260
+ context: { receivedType: typeof raw },
261
+ cause: shapeCause(e)
262
+ });
263
+ }
264
+ }
181
265
  function createZksRpc(transport) {
182
266
  return {
183
267
  // Fetches the Bridgehub contract address.
@@ -200,6 +284,26 @@ function createZksRpc(transport) {
200
284
  }
201
285
  );
202
286
  },
287
+ // Fetches the Bytecode Supplier contract address.
288
+ async getBytecodeSupplierAddress() {
289
+ return withRpcOp(
290
+ "zksrpc.getBytecodeSupplierAddress",
291
+ "Failed to fetch Bytecode Supplier address.",
292
+ {},
293
+ async () => {
294
+ const addrRaw = await transport(METHODS.getBytecodeSupplier, []);
295
+ if (typeof addrRaw !== "string" || !addrRaw.startsWith("0x")) {
296
+ throw createError("RPC", {
297
+ resource: "zksrpc",
298
+ operation: "zksrpc.getBytecodeSupplierAddress",
299
+ message: "Unexpected Bytecode Supplier address response.",
300
+ context: { valueType: typeof addrRaw }
301
+ });
302
+ }
303
+ return addrRaw;
304
+ }
305
+ );
306
+ },
203
307
  // Fetches a proof for an L2→L1 log emitted in the given transaction.
204
308
  async getL2ToL1LogProof(txHash, index) {
205
309
  return withRpcOp(
@@ -236,6 +340,19 @@ function createZksRpc(transport) {
236
340
  }
237
341
  );
238
342
  },
343
+ // Fetches block metadata for the given block number.
344
+ async getBlockMetadataByNumber(blockNumber) {
345
+ return withRpcOp(
346
+ "zksrpc.getBlockMetadataByNumber",
347
+ "Failed to fetch block metadata.",
348
+ { blockNumber },
349
+ async () => {
350
+ const raw = await transport(METHODS.getBlockMetadataByNumber, [blockNumber]);
351
+ if (raw == null) return null;
352
+ return normalizeBlockMetadata(raw);
353
+ }
354
+ );
355
+ },
239
356
  // Fetches the genesis configuration returned by `zks_getGenesis`.
240
357
  async getGenesis() {
241
358
  return withRpcOp(
@@ -22,7 +22,7 @@ var TX_OVERHEAD_GAS = 10000n;
22
22
  var TX_MEMORY_OVERHEAD_GAS = 10n;
23
23
  var DEFAULT_PUBDATA_BYTES = 155n;
24
24
  var DEFAULT_ABI_BYTES = 400n;
25
- var SAFE_L1_BRIDGE_GAS = 600000n;
25
+ var SAFE_L1_BRIDGE_GAS = 700000n;
26
26
  var L1_FEE_ESTIMATION_COEF_NUMERATOR = 12;
27
27
  var L1_FEE_ESTIMATION_COEF_DENOMINATOR = 10;
28
28
 
@@ -29,7 +29,7 @@ export declare const TX_OVERHEAD_GAS = 10000n;
29
29
  export declare const TX_MEMORY_OVERHEAD_GAS = 10n;
30
30
  export declare const DEFAULT_PUBDATA_BYTES = 155n;
31
31
  export declare const DEFAULT_ABI_BYTES = 400n;
32
- export declare const SAFE_L1_BRIDGE_GAS = 600000n;
32
+ export declare const SAFE_L1_BRIDGE_GAS = 700000n;
33
33
  /**
34
34
  * Numerator used in scaling the gas limit to help ensure acceptance of L1->L2 txs.
35
35
  * Used with {@link L1_FEE_ESTIMATION_COEF_DENOMINATOR}.
@@ -1 +1 @@
1
- export { BUFFER, DEFAULT_ABI_BYTES, DEFAULT_PUBDATA_BYTES, ETH_ADDRESS, FORMAL_ETH_ADDRESS, L1_FEE_ESTIMATION_COEF_DENOMINATOR, L1_FEE_ESTIMATION_COEF_NUMERATOR, L1_MESSENGER_ADDRESS, L1_SOPH_TOKEN_ADDRESS, L2_ASSET_ROUTER_ADDRESS, L2_BASE_TOKEN_ADDRESS, L2_NATIVE_TOKEN_VAULT_ADDRESS, SAFE_L1_BRIDGE_GAS, TOPIC_CANONICAL_ASSIGNED, TOPIC_CANONICAL_SUCCESS, TOPIC_L1_MESSAGE_SENT, TOPIC_L1_MESSAGE_SENT_LEG, TOPIC_L1_MESSAGE_SENT_NEW, TX_MEMORY_OVERHEAD_GAS, TX_OVERHEAD_GAS, k256hex } from '../chunk-F2ENUV3A.js';
1
+ export { BUFFER, DEFAULT_ABI_BYTES, DEFAULT_PUBDATA_BYTES, ETH_ADDRESS, FORMAL_ETH_ADDRESS, L1_FEE_ESTIMATION_COEF_DENOMINATOR, L1_FEE_ESTIMATION_COEF_NUMERATOR, L1_MESSENGER_ADDRESS, L1_SOPH_TOKEN_ADDRESS, L2_ASSET_ROUTER_ADDRESS, L2_BASE_TOKEN_ADDRESS, L2_NATIVE_TOKEN_VAULT_ADDRESS, SAFE_L1_BRIDGE_GAS, TOPIC_CANONICAL_ASSIGNED, TOPIC_CANONICAL_SUCCESS, TOPIC_L1_MESSAGE_SENT, TOPIC_L1_MESSAGE_SENT_LEG, TOPIC_L1_MESSAGE_SENT_NEW, TX_MEMORY_OVERHEAD_GAS, TX_OVERHEAD_GAS, k256hex } from '../chunk-NCR42O6O.js';
@@ -0,0 +1,18 @@
1
+ import { type TryResult, type ErrorEnvelope, type ErrorType, type Resource } from '../types/errors';
2
+ type Ctx = Record<string, unknown>;
3
+ export type DecodeRevert = (err: unknown) => ErrorEnvelope['revert'] | undefined;
4
+ type WrapOptions<TCtx extends Ctx = Ctx> = {
5
+ /** Optional contextual data for debugging */
6
+ ctx?: TCtx;
7
+ /** Optional error message */
8
+ message?: string | (() => string);
9
+ };
10
+ export declare function createErrorOps(decodeRevert?: DecodeRevert): {
11
+ toZKsyncError: (type: ErrorType, base: Omit<ErrorEnvelope, "type" | "revert" | "cause">, err: unknown) => import("..").ZKsyncError;
12
+ createErrorHandlers: (resource: Resource) => {
13
+ wrap: <T, TCtx extends Ctx = Ctx>(operation: string, fn: () => T | Promise<T>, opts?: WrapOptions<TCtx>) => Promise<T>;
14
+ wrapAs: <T, TCtx extends Ctx = Ctx>(kind: ErrorType, operation: string, fn: () => T | Promise<T>, opts?: WrapOptions<TCtx>) => Promise<T>;
15
+ toResult: <T, TCtx extends Ctx = Ctx>(operation: string, fn: () => T | Promise<T>, opts?: WrapOptions<TCtx>) => Promise<TryResult<T>>;
16
+ };
17
+ };
18
+ export {};