@matterlabs/zksync-js 0.0.17 → 0.0.19

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.
@@ -8556,16 +8556,58 @@ function routeEthDirect() {
8556
8556
  }
8557
8557
  };
8558
8558
  }
8559
+
8560
+ // src/core/codec/ntv.ts
8561
+ function createNTVCodec(deps) {
8562
+ function encodeAssetId(originChainId, ntvAddress, tokenAddress) {
8563
+ const encoded = deps.encode(
8564
+ ["uint256", "address", "address"],
8565
+ [originChainId, ntvAddress, tokenAddress]
8566
+ );
8567
+ return deps.keccak256(encoded);
8568
+ }
8569
+ return {
8570
+ encodeAssetId
8571
+ };
8572
+ }
8573
+
8574
+ // src/adapters/ethers/resources/deposits/routes/erc20-nonbase.ts
8559
8575
  var { wrapAs: wrapAs3 } = createErrorHandlers("deposits");
8560
8576
  var ZERO_L2_TOKEN_ADDRESS2 = "0x0000000000000000000000000000000000000000";
8561
8577
  var ZERO_ASSET_ID = "0x0000000000000000000000000000000000000000000000000000000000000000";
8578
+ var ntvCodec = createNTVCodec({
8579
+ encode: (types, values) => ethers.AbiCoder.defaultAbiCoder().encode(types, values),
8580
+ keccak256: (data) => ethers.keccak256(data)
8581
+ });
8582
+ async function encodeSecondBridgeErc20DepositCalldata(input) {
8583
+ if (!input.ctx.resolvedToken) {
8584
+ return encodeSecondBridgeErc20Args(input.token, input.amount, input.receiver);
8585
+ }
8586
+ const { chainId } = await input.ctx.client.l1.getNetwork();
8587
+ const expectedL1AssetId = ntvCodec.encodeAssetId(
8588
+ BigInt(chainId),
8589
+ L2_NATIVE_TOKEN_VAULT_ADDRESS,
8590
+ input.token
8591
+ );
8592
+ const assetId = input.ctx.resolvedToken.assetId.toLowerCase();
8593
+ const isL1Origin = assetId === ZERO_ASSET_ID || assetId === expectedL1AssetId.toLowerCase();
8594
+ if (isL1Origin) {
8595
+ return encodeSecondBridgeErc20Args(input.token, input.amount, input.receiver);
8596
+ }
8597
+ const transferData = encodeNativeTokenVaultTransferData(
8598
+ input.amount,
8599
+ input.receiver,
8600
+ input.token
8601
+ );
8602
+ return encodeSecondBridgeDataV1(input.ctx.resolvedToken.assetId, transferData);
8603
+ }
8562
8604
  async function getPriorityGasModel(input) {
8563
8605
  try {
8564
8606
  const l1NativeTokenVault = await input.ctx.contracts.l1NativeTokenVault();
8565
8607
  const l1AssetRouter = await input.ctx.contracts.l1AssetRouter();
8566
8608
  const { chainId: l1ChainId } = await input.ctx.client.l1.getNetwork();
8567
- const isFirstBridge = input.ctx.resolvedToken.assetId.toLowerCase() === ZERO_ASSET_ID || input.ctx.resolvedToken.originChainId === 0n;
8568
- const erc20MetadataOriginChainId = isFirstBridge ? BigInt(l1ChainId) : input.ctx.resolvedToken.originChainId;
8609
+ const isFirstBridge = input.ctx.resolvedToken.assetId.toLowerCase() === ZERO_ASSET_ID;
8610
+ const erc20MetadataOriginChainId = isFirstBridge ? BigInt(l1ChainId) : input.ctx.resolvedToken.originChainId !== 0n ? input.ctx.resolvedToken.originChainId : await l1NativeTokenVault.originChainId(input.ctx.resolvedToken.assetId);
8569
8611
  const erc20Metadata = await l1NativeTokenVault.getERC20Getters(
8570
8612
  input.token,
8571
8613
  erc20MetadataOriginChainId
@@ -8631,9 +8673,14 @@ function routeErc20NonBase() {
8631
8673
  const secondBridgeCalldata = await wrapAs3(
8632
8674
  "INTERNAL",
8633
8675
  OP_DEPOSITS.nonbase.encodeCalldata,
8634
- () => Promise.resolve(encodeSecondBridgeErc20Args(p.token, p.amount, receiver)),
8676
+ () => encodeSecondBridgeErc20DepositCalldata({
8677
+ ctx,
8678
+ token: p.token,
8679
+ amount: p.amount,
8680
+ receiver
8681
+ }),
8635
8682
  {
8636
- ctx: { where: "encodeSecondBridgeErc20Args" },
8683
+ ctx: { where: "encodeSecondBridgeErc20DepositCalldata" },
8637
8684
  message: "Failed to encode bridging calldata."
8638
8685
  }
8639
8686
  );
@@ -8767,26 +8814,10 @@ function routeErc20NonBase() {
8767
8814
  }
8768
8815
  };
8769
8816
  }
8770
-
8771
- // src/core/codec/ntv.ts
8772
- function createNTVCodec(deps) {
8773
- function encodeAssetId(originChainId, ntvAddress, tokenAddress) {
8774
- const encoded = deps.encode(
8775
- ["uint256", "address", "address"],
8776
- [originChainId, ntvAddress, tokenAddress]
8777
- );
8778
- return deps.keccak256(encoded);
8779
- }
8780
- return {
8781
- encodeAssetId
8782
- };
8783
- }
8784
-
8785
- // src/adapters/ethers/resources/deposits/routes/eth-nonbase.ts
8786
8817
  var { wrapAs: wrapAs4 } = createErrorHandlers("deposits");
8787
8818
  var ZERO_L2_TOKEN_ADDRESS3 = "0x0000000000000000000000000000000000000000";
8788
8819
  var ZERO_ASSET_ID2 = "0x0000000000000000000000000000000000000000000000000000000000000000";
8789
- var ntvCodec = createNTVCodec({
8820
+ var ntvCodec2 = createNTVCodec({
8790
8821
  encode: (types, values) => ethers.AbiCoder.defaultAbiCoder().encode(types, values),
8791
8822
  keccak256: (data) => ethers.keccak256(data)
8792
8823
  });
@@ -8795,7 +8826,7 @@ async function getPriorityGasModel2(input) {
8795
8826
  const l1AssetRouter = await input.ctx.contracts.l1AssetRouter();
8796
8827
  const l1NativeTokenVault = await input.ctx.contracts.l1NativeTokenVault();
8797
8828
  const originChainId = input.ctx.resolvedToken.originChainId !== 0n ? input.ctx.resolvedToken.originChainId : BigInt((await input.ctx.client.l1.getNetwork()).chainId);
8798
- const resolvedAssetId = input.ctx.resolvedToken.assetId.toLowerCase() === ZERO_ASSET_ID2 ? ntvCodec.encodeAssetId(originChainId, L2_NATIVE_TOKEN_VAULT_ADDRESS, ETH_ADDRESS) : input.ctx.resolvedToken.assetId;
8829
+ const resolvedAssetId = input.ctx.resolvedToken.assetId.toLowerCase() === ZERO_ASSET_ID2 ? ntvCodec2.encodeAssetId(originChainId, L2_NATIVE_TOKEN_VAULT_ADDRESS, ETH_ADDRESS) : input.ctx.resolvedToken.assetId;
8799
8830
  const erc20Metadata = await l1NativeTokenVault.getERC20Getters(
8800
8831
  ETH_ADDRESS,
8801
8832
  originChainId
@@ -9133,7 +9164,7 @@ function routeErc20Base() {
9133
9164
  }
9134
9165
  var { wrapAs: wrapAs6 } = createErrorHandlers("tokens");
9135
9166
  var abi = ethers.AbiCoder.defaultAbiCoder();
9136
- var ntvCodec2 = createNTVCodec({
9167
+ var ntvCodec3 = createNTVCodec({
9137
9168
  encode: (types, values) => abi.encode(types, values),
9138
9169
  keccak256: (data) => ethers.ethers.keccak256(data)
9139
9170
  });
@@ -9252,7 +9283,7 @@ function createTokensResource(client) {
9252
9283
  return wrapAs6("CONTRACT", "tokens.isChainEthBased", async () => {
9253
9284
  const baseAssetId = await getBaseTokenAssetId();
9254
9285
  const l1ChainId = await getL1ChainId();
9255
- const ethAssetId = ntvCodec2.encodeAssetId(
9286
+ const ethAssetId = ntvCodec3.encodeAssetId(
9256
9287
  l1ChainId,
9257
9288
  L2_NATIVE_TOKEN_VAULT_ADDRESS,
9258
9289
  ETH_ADDRESS