@matterlabs/zksync-js 0.0.8 → 0.0.10

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 (75) 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 +684 -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 +267 -273
  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 +6 -5
  50. package/dist/{chunk-NODVRI3E.js → chunk-AIFHAPJC.js} +8 -2
  51. package/dist/{chunk-3GFCAGGI.js → chunk-FBKBF7YM.js} +1533 -1434
  52. package/dist/chunk-HOZTREW6.js +209 -0
  53. package/dist/{chunk-L343N56B.js → chunk-IYEDEUXG.js} +1 -1
  54. package/dist/{chunk-63DNJXS3.js → chunk-MBEMIFYS.js} +1375 -75
  55. package/dist/chunk-N3FVEFOK.js +113 -0
  56. package/dist/{chunk-NVULC4JB.js → chunk-QDJOEVGJ.js} +2 -2
  57. package/dist/{chunk-5V2JRM5J.js → chunk-SRPKTXIF.js} +1 -1
  58. package/dist/{chunk-SHQQI3UD.js → chunk-UIXU35ZU.js} +1 -1
  59. package/dist/{chunk-ODMBZ2VX.js → chunk-VKUTFNZA.js} +42 -31
  60. package/dist/{chunk-LNIEQ7AN.js → chunk-ZBGQQ63V.js} +36 -167
  61. package/dist/{chunk-QZVYN3YA.js → chunk-ZVHFVUDE.js} +2 -37
  62. package/dist/core/index.cjs +3 -2
  63. package/dist/core/index.cjs.map +1 -1
  64. package/dist/core/index.js +4 -4
  65. package/dist/core/resources/interop/attributes/types.d.ts +0 -2
  66. package/dist/core/resources/interop/finalization.d.ts +0 -1
  67. package/dist/core/types/errors.d.ts +15 -5
  68. package/dist/core/types/fees.d.ts +9 -0
  69. package/dist/core/types/flows/interop.d.ts +12 -36
  70. package/dist/core/types/primitives.d.ts +1 -0
  71. package/dist/index.cjs +3 -2
  72. package/dist/index.cjs.map +1 -1
  73. package/dist/index.js +4 -4
  74. package/package.json +1 -1
  75. package/dist/chunk-FGXRG2JS.js +0 -142
@@ -0,0 +1,209 @@
1
+ import { createErrorHandlers } from './chunk-QDJOEVGJ.js';
2
+ import { createZksRpc, makeTransportFromEthers } from './chunk-UIXU35ZU.js';
3
+ import { createError, OP_CLIENT, IBridgehub_default, IL1AssetRouter_default, IL1Nullifier_default, L2MessageVerification_default, IInteropHandler_default, InteropCenter_default, IBaseToken_default, L2NativeTokenVault_default, IL2AssetRouter_default, L1NativeTokenVault_default, OP_DEPOSITS } from './chunk-FBKBF7YM.js';
4
+ import { L2_ASSET_ROUTER_ADDRESS, L2_NATIVE_TOKEN_VAULT_ADDRESS, L2_BASE_TOKEN_ADDRESS, L2_INTEROP_CENTER_ADDRESS, L2_INTEROP_HANDLER_ADDRESS, L2_MESSAGE_VERIFICATION_ADDRESS, FORMAL_ETH_ADDRESS } from './chunk-C3AGOEHR.js';
5
+ import { BrowserProvider, Interface, Contract } from 'ethers';
6
+
7
+ // src/adapters/ethers/rpc.ts
8
+ function zksRpcFromEthers(l2Provider) {
9
+ const maybe = l2Provider;
10
+ if (typeof maybe.send !== "function") {
11
+ throw new Error(
12
+ "zksRpcFromEthers requires a JSON-RPC capable provider with .send(method, params). Pass an ethers JsonRpcProvider (or wrap your EIP-1193 provider: new BrowserProvider(window.ethereum))."
13
+ );
14
+ }
15
+ return createZksRpc(makeTransportFromEthers(maybe));
16
+ }
17
+
18
+ // src/adapters/ethers/client.ts
19
+ var { wrapAs, wrap } = createErrorHandlers("client");
20
+ var ChainTypeManagerABI = [
21
+ "function getSemverProtocolVersion() view returns (uint32,uint32,uint32)"
22
+ ];
23
+ function createEthersClient(args) {
24
+ const { l1, l2, signer } = args;
25
+ let boundSigner = signer;
26
+ const signerProvider = signer.provider;
27
+ const isBrowserProvider = signerProvider instanceof BrowserProvider;
28
+ if (!isBrowserProvider && (!boundSigner.provider || boundSigner.provider !== l1)) {
29
+ boundSigner = signer.connect(l1);
30
+ } else if (isBrowserProvider && signerProvider) {
31
+ void (async () => {
32
+ try {
33
+ const [signerNet, l1Net] = await Promise.all([
34
+ signerProvider.getNetwork(),
35
+ l1.getNetwork()
36
+ ]);
37
+ if (signerNet.chainId !== l1Net.chainId) {
38
+ const warning = createError("STATE", {
39
+ message: `BrowserProvider signer chainId (${signerNet.chainId}) != L1 provider chainId (${l1Net.chainId}). Ensure the wallet is connected to the correct network.`,
40
+ resource: "helpers",
41
+ operation: "client.browserProvider.networkMismatch",
42
+ context: {
43
+ signerChainId: signerNet.chainId,
44
+ l1ChainId: l1Net.chainId
45
+ }
46
+ });
47
+ console.debug("[zksync-sdk] non-fatal warning:", warning);
48
+ }
49
+ } catch (e) {
50
+ }
51
+ })();
52
+ }
53
+ const zks = zksRpcFromEthers(l2);
54
+ let addrCache;
55
+ let cCache;
56
+ async function ensureAddresses() {
57
+ if (addrCache) return addrCache;
58
+ return await wrap(
59
+ OP_CLIENT.ensureAddresses,
60
+ async () => {
61
+ const bridgehub = args.overrides?.bridgehub ?? await zks.getBridgehubAddress();
62
+ const IBridgehub = new Interface(IBridgehub_default);
63
+ const bh = new Contract(bridgehub, IBridgehub, l1);
64
+ const l1AssetRouter = args.overrides?.l1AssetRouter ?? await bh.assetRouter();
65
+ const IL1AssetRouter = new Interface(IL1AssetRouter_default);
66
+ const ar = new Contract(l1AssetRouter, IL1AssetRouter, l1);
67
+ const l1Nullifier = args.overrides?.l1Nullifier ?? await ar.L1_NULLIFIER();
68
+ const IL1Nullifier = new Interface(IL1Nullifier_default);
69
+ const nf = new Contract(l1Nullifier, IL1Nullifier, l1);
70
+ const l1NativeTokenVault = args.overrides?.l1NativeTokenVault ?? await nf.l1NativeTokenVault();
71
+ const l2AssetRouter = args.overrides?.l2AssetRouter ?? L2_ASSET_ROUTER_ADDRESS;
72
+ const l2NativeTokenVault = args.overrides?.l2NativeTokenVault ?? L2_NATIVE_TOKEN_VAULT_ADDRESS;
73
+ const l2BaseTokenSystem = args.overrides?.l2BaseTokenSystem ?? L2_BASE_TOKEN_ADDRESS;
74
+ const interopCenter = args.overrides?.interopCenter ?? L2_INTEROP_CENTER_ADDRESS;
75
+ const interopHandler = args.overrides?.interopHandler ?? L2_INTEROP_HANDLER_ADDRESS;
76
+ const l2MessageVerification = args.overrides?.l2MessageVerification ?? L2_MESSAGE_VERIFICATION_ADDRESS;
77
+ addrCache = {
78
+ bridgehub,
79
+ l1AssetRouter,
80
+ l1Nullifier,
81
+ l1NativeTokenVault,
82
+ l2AssetRouter,
83
+ l2NativeTokenVault,
84
+ l2BaseTokenSystem,
85
+ interopCenter,
86
+ interopHandler,
87
+ l2MessageVerification
88
+ };
89
+ return addrCache;
90
+ },
91
+ {
92
+ ctx: { where: "ensureAddresses" },
93
+ message: "Failed to ensure contract addresses."
94
+ }
95
+ );
96
+ }
97
+ async function contracts() {
98
+ if (cCache) return cCache;
99
+ const a = await ensureAddresses();
100
+ cCache = {
101
+ bridgehub: new Contract(a.bridgehub, IBridgehub_default, l1),
102
+ l1AssetRouter: new Contract(a.l1AssetRouter, IL1AssetRouter_default, l1),
103
+ l1Nullifier: new Contract(a.l1Nullifier, IL1Nullifier_default, l1),
104
+ l1NativeTokenVault: new Contract(a.l1NativeTokenVault, L1NativeTokenVault_default, l1),
105
+ l2AssetRouter: new Contract(a.l2AssetRouter, IL2AssetRouter_default, l2),
106
+ l2NativeTokenVault: new Contract(a.l2NativeTokenVault, L2NativeTokenVault_default, l2),
107
+ l2BaseTokenSystem: new Contract(a.l2BaseTokenSystem, IBaseToken_default, l2),
108
+ interopCenter: new Contract(a.interopCenter, InteropCenter_default, l2),
109
+ interopHandler: new Contract(a.interopHandler, IInteropHandler_default, l2),
110
+ l2MessageVerification: new Contract(a.l2MessageVerification, L2MessageVerification_default, l2)
111
+ };
112
+ return cCache;
113
+ }
114
+ function refresh() {
115
+ addrCache = void 0;
116
+ cCache = void 0;
117
+ }
118
+ function resolveSignerFor(provider) {
119
+ const signerProvider2 = boundSigner.provider;
120
+ if (signerProvider2 === provider) {
121
+ return boundSigner;
122
+ }
123
+ if (!isBrowserProvider && typeof boundSigner.connect === "function") {
124
+ return boundSigner.connect(provider);
125
+ }
126
+ if (!signerProvider2) {
127
+ throw createError("STATE", {
128
+ resource: "helpers",
129
+ message: "Signer has no associated provider; cannot resolve requested signer.",
130
+ operation: "client.resolveSignerFor"
131
+ });
132
+ }
133
+ return boundSigner;
134
+ }
135
+ async function baseToken(chainId) {
136
+ const { bridgehub } = await ensureAddresses();
137
+ const bh = new Contract(bridgehub, IBridgehub_default, l1);
138
+ return await wrapAs("CONTRACT", OP_DEPOSITS.base.baseToken, () => bh.baseToken(chainId), {
139
+ ctx: { where: "bridgehub.baseToken", chainId },
140
+ message: "Failed to read base token."
141
+ });
142
+ }
143
+ async function getProtocolVersion(chainId) {
144
+ const targetChainId = chainId ?? (await l2.getNetwork()).chainId;
145
+ const { bridgehub } = await ensureAddresses();
146
+ const bh = new Contract(bridgehub, IBridgehub_default, l1);
147
+ const chainTypeManager = await wrapAs(
148
+ "CONTRACT",
149
+ OP_CLIENT.getSemverProtocolVersion,
150
+ () => bh.chainTypeManager(targetChainId),
151
+ {
152
+ ctx: { where: "bridgehub.chainTypeManager", bridgehub, chainId: targetChainId },
153
+ message: "Failed to read chain type manager."
154
+ }
155
+ );
156
+ if (chainTypeManager.toLowerCase() === FORMAL_ETH_ADDRESS) {
157
+ throw createError("STATE", {
158
+ resource: "client",
159
+ operation: OP_CLIENT.getSemverProtocolVersion,
160
+ message: "No registered chain type manager for the chain.",
161
+ context: { chainId }
162
+ });
163
+ }
164
+ const ctm = new Contract(chainTypeManager, ChainTypeManagerABI, l1);
165
+ const semver = await wrapAs(
166
+ "CONTRACT",
167
+ OP_CLIENT.getSemverProtocolVersion,
168
+ () => ctm.getSemverProtocolVersion(),
169
+ {
170
+ ctx: {
171
+ where: "chainTypeManager.getSemverProtocolVersion",
172
+ chainId: targetChainId,
173
+ chainTypeManager
174
+ },
175
+ message: "Failed to read semver protocol version."
176
+ }
177
+ );
178
+ return semver;
179
+ }
180
+ function signerFor(target) {
181
+ if (target === "l1") {
182
+ return boundSigner.provider === l1 ? boundSigner : boundSigner.connect(l1);
183
+ }
184
+ const provider = target ?? l2;
185
+ return boundSigner.provider === provider ? boundSigner : boundSigner.connect(provider);
186
+ }
187
+ const client = {
188
+ kind: "ethers",
189
+ l1,
190
+ l2,
191
+ signer: boundSigner,
192
+ getL1Signer() {
193
+ return resolveSignerFor(l1);
194
+ },
195
+ getL2Signer() {
196
+ return resolveSignerFor(l2);
197
+ },
198
+ zks,
199
+ ensureAddresses,
200
+ contracts,
201
+ refresh,
202
+ baseToken,
203
+ getProtocolVersion,
204
+ signerFor
205
+ };
206
+ return client;
207
+ }
208
+
209
+ export { createEthersClient };
@@ -1,4 +1,4 @@
1
- import { isETH, normalizeAddrEq } from './chunk-QZVYN3YA.js';
1
+ import { isETH, normalizeAddrEq } from './chunk-FBKBF7YM.js';
2
2
 
3
3
  // src/core/resources/deposits/route.ts
4
4
  async function pickDepositRoute(client, chainIdL2, token) {