diff --git a/.gitignore b/.gitignore
index af421c671..927ce0b9c 100644
--- a/.gitignore
+++ b/.gitignore
@@ -10,6 +10,8 @@ test-tokens/typechain
.openzeppelin/dev-*.json
.openzeppelin/unknown-*.json
.openzeppelin/.session
+.openzeppelin/holesky.json
+.openzeppelin/sepolia.json
# predeployed generator artificats
predeployed/test/additional.json
diff --git a/contracts/schain/tokens/ERC721OnChain.sol b/contracts/schain/tokens/ERC721OnChain.sol
index d0c892f0f..b75f8357f 100644
--- a/contracts/schain/tokens/ERC721OnChain.sol
+++ b/contracts/schain/tokens/ERC721OnChain.sol
@@ -104,7 +104,7 @@ contract ERC721OnChain is
)
public
view
- override(AccessControlEnumerableUpgradeable, ERC721Upgradeable)
+ override(AccessControlEnumerableUpgradeable, ERC721Upgradeable, ERC721URIStorageUpgradeable)
returns (bool)
{
return super.supportsInterface(interfaceId);
diff --git a/contracts/test/MessageProxyForSchainTester.sol b/contracts/test/MessageProxyForSchainTester.sol
index a40c88093..6838d25f8 100644
--- a/contracts/test/MessageProxyForSchainTester.sol
+++ b/contracts/test/MessageProxyForSchainTester.sol
@@ -43,7 +43,7 @@ interface IMessageProxyForSchainTester {
}
-contract MessageProxyForSchainTester is MessageProxyForSchain, IMessageProxyForSchainTester {
+contract MessageProxyForSchainTester is MessageProxyForSchain, IMessageProxyForSchainTester {
IEtherbaseUpgradeable public etherbase = ETHERBASE;
@@ -82,4 +82,4 @@ contract MessageProxyForSchainTester is MessageProxyForSchain, IMessageProxyForS
function _getEtherbase() internal view override returns (IEtherbaseUpgradeable) {
return etherbase;
}
-}
\ No newline at end of file
+}
diff --git a/contracts/test/SkaleManagerMock.sol b/contracts/test/SkaleManagerMock.sol
new file mode 100644
index 000000000..11e99fa4c
--- /dev/null
+++ b/contracts/test/SkaleManagerMock.sol
@@ -0,0 +1,42 @@
+// SPDX-License-Identifier: AGPL-3.0-only
+
+/**
+ * SkaleManagerMock.sol - SKALE Interchain Messaging Agent
+ * Copyright (C) 2024-Present SKALE Labs
+ * @author Artem Payvin
+ *
+ * SKALE IMA is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * SKALE IMA is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with SKALE IMA. If not, see .
+ */
+
+pragma solidity 0.8.16;
+
+import "./TestContractManager.sol";
+interface ISkaleManagerMock {
+ function setVersion(string calldata newVersion) external;
+}
+
+contract SkaleManagerMock is ISkaleManagerMock, ContractManager {
+
+ ContractManager public contractManager;
+
+ string public version;
+
+ constructor(address newContractManager) {
+ contractManager = ContractManager(newContractManager);
+ }
+
+ function setVersion(string calldata newVersion) external override {
+ version = newVersion;
+ }
+}
diff --git a/gas/calculateGas.ts b/gas/calculateGas.ts
index 6b607edb3..de1f32c81 100644
--- a/gas/calculateGas.ts
+++ b/gas/calculateGas.ts
@@ -24,7 +24,7 @@
*/
import chaiAsPromised from "chai-as-promised";
-import chai = require("chai");
+import chai from "chai";
import {
CommunityLocker,
CommunityPool,
@@ -79,22 +79,29 @@ import { deployTokenManagerERC1155 } from "../test/utils/deploy/schain/tokenMana
import { deployMessageProxyForSchain } from "../test/utils/deploy/schain/messageProxyForSchain";
import { deployMessages } from "../test/utils/deploy/messages";
-import { stringKeccak256, getPublicKey } from "../test/utils/helper";
+import { getPublicKey } from "../test/utils/helper";
import { ethers } from "hardhat";
-import { SignerWithAddress } from "@nomiclabs/hardhat-ethers/dist/src/signer-with-address";
-import { BigNumber, Wallet } from "ethers";
+import { SignerWithAddress } from "@nomicfoundation/hardhat-ethers/signers";
+import { BigNumberish, Wallet, HDNodeWallet, ContractTransactionReceipt } from "ethers";
import { expect } from "chai";
import { deployCommunityLocker } from "../test/utils/deploy/schain/communityLocker";
import { deployCommunityPool } from "../test/utils/deploy/mainnet/communityPool";
+function getGasUsed(res: ContractTransactionReceipt | null): bigint {
+ if (!res) {
+ throw new Error("Transaction result is null");
+ }
+ return res.gasUsed;
+}
+
describe("Gas calculation", () => {
let deployer: SignerWithAddress;
let user: SignerWithAddress;
let schainOwner: SignerWithAddress;
let richGuy: SignerWithAddress;
- let nodeAddress: Wallet;
+ let nodeAddress: HDNodeWallet;
let imaLinker: Linker;
let depositBoxEth: DepositBoxEth;
@@ -130,20 +137,20 @@ describe("Gas calculation", () => {
let ERC1155TokenOnSchain: ERC1155OnChain;
const schainName = "GasCalculation";
- const schainNameHash = stringKeccak256("GasCalculation");
+ const schainNameHash = ethers.id("GasCalculation");
const contractManagerAddress = "0x0000000000000000000000000000000000000000";
const mainnetName = "Mainnet";
before(async () => {
[deployer, schainOwner, user, richGuy] = await ethers.getSigners();
nodeAddress = Wallet.createRandom().connect(ethers.provider);
- const balanceRichGuy = await richGuy.getBalance();
- await richGuy.sendTransaction({to: nodeAddress.address, value: balanceRichGuy.sub(ethers.utils.parseEther("1"))});
+ const balanceRichGuy = await ethers.provider.getBalance(richGuy.address);
+ await richGuy.sendTransaction({to: nodeAddress.address, value: balanceRichGuy - ethers.parseEther("1")});
})
after(async () => {
- const balanceNode = await nodeAddress.getBalance();
- await nodeAddress.sendTransaction({to: richGuy.address, value: balanceNode.sub(ethers.utils.parseEther("1"))});
+ const balanceNode = await ethers.provider.getBalance(nodeAddress.address);
+ await nodeAddress.sendTransaction({to: richGuy.address, value: balanceNode - ethers.parseEther("1")});
});
beforeEach(async () => {
@@ -155,17 +162,17 @@ describe("Gas calculation", () => {
schainsInternal = await (await ethers.getContractFactory("SchainsInternal")).deploy() as SchainsInternal;
skaleVerifier = await (await ethers.getContractFactory("SkaleVerifierMock")).deploy() as SkaleVerifierMock;
wallets = await (await ethers.getContractFactory("Wallets")).deploy() as Wallets;
- await contractManager.connect(deployer).setContractsAddress("KeyStorage", keyStorage.address);
- await contractManager.connect(deployer).setContractsAddress("Nodes", nodes.address);
- await contractManager.connect(deployer).setContractsAddress("Schains", schains.address);
- await contractManager.connect(deployer).setContractsAddress("SchainsInternal", schainsInternal.address);
- await contractManager.connect(deployer).setContractsAddress("SkaleVerifier", skaleVerifier.address);
- await contractManager.connect(deployer).setContractsAddress("Wallets", wallets.address);
+ await contractManager.connect(deployer).setContractsAddress("KeyStorage", keyStorage);
+ await contractManager.connect(deployer).setContractsAddress("Nodes", nodes);
+ await contractManager.connect(deployer).setContractsAddress("Schains", schains);
+ await contractManager.connect(deployer).setContractsAddress("SchainsInternal", schainsInternal);
+ await contractManager.connect(deployer).setContractsAddress("SkaleVerifier", skaleVerifier);
+ await contractManager.connect(deployer).setContractsAddress("Wallets", wallets);
// add ContractManager to contracts
- await schains.connect(deployer).addContractManager(contractManager.address);
- await schainsInternal.connect(deployer).addContractManager(contractManager.address);
- await wallets.connect(deployer).addContractManager(contractManager.address);
+ await schains.connect(deployer).addContractManager(contractManager);
+ await schainsInternal.connect(deployer).addContractManager(contractManager);
+ await wallets.connect(deployer).addContractManager(contractManager);
// setup 16 nodes
const nodeCreationParams = {
@@ -224,41 +231,41 @@ describe("Gas calculation", () => {
depositBoxERC1155 = await deployDepositBoxERC1155(contractManager, imaLinker, messageProxyForMainnet);
const extraContractRegistrarRole = await messageProxyForMainnet.EXTRA_CONTRACT_REGISTRAR_ROLE();
await messageProxyForMainnet.connect(deployer).grantRole(extraContractRegistrarRole, deployer.address);
- await messageProxyForMainnet.registerExtraContractForAll(depositBoxEth.address)
- await messageProxyForMainnet.registerExtraContractForAll(depositBoxERC20.address)
- await messageProxyForMainnet.registerExtraContractForAll(depositBoxERC721.address)
- await messageProxyForMainnet.registerExtraContractForAll(depositBoxERC1155.address)
- await messageProxyForMainnet.registerExtraContractForAll(communityPool.address)
- await messageProxyForMainnet.registerExtraContractForAll(imaLinker.address)
+ await messageProxyForMainnet.registerExtraContractForAll(depositBoxEth)
+ await messageProxyForMainnet.registerExtraContractForAll(depositBoxERC20)
+ await messageProxyForMainnet.registerExtraContractForAll(depositBoxERC721)
+ await messageProxyForMainnet.registerExtraContractForAll(depositBoxERC1155)
+ await messageProxyForMainnet.registerExtraContractForAll(communityPool)
+ await messageProxyForMainnet.registerExtraContractForAll(imaLinker)
messages = await deployMessages();
// IMA schain part deployment
- messageProxyForSchain = await deployMessageProxyForSchain(keyStorage.address, schainName);
+ messageProxyForSchain = await deployMessageProxyForSchain(keyStorage, schainName);
await keyStorage.connect(deployer).setBlsCommonPublicKey(BLSPublicKey);
- tokenManagerLinker = await deployTokenManagerLinker(messageProxyForSchain, imaLinker.address);
- communityLocker = await deployCommunityLocker(schainName, messageProxyForSchain.address, tokenManagerLinker, communityPool.address);
+ tokenManagerLinker = await deployTokenManagerLinker(messageProxyForSchain, await imaLinker.getAddress());
+ communityLocker = await deployCommunityLocker(schainName, messageProxyForSchain, tokenManagerLinker, await communityPool.getAddress());
tokenManagerEth = await deployTokenManagerEth(
schainName,
- messageProxyForSchain.address,
+ messageProxyForSchain,
tokenManagerLinker,
communityLocker,
- depositBoxEth.address,
+ await depositBoxEth.getAddress(),
"0x0000000000000000000000000000000000000000");
- tokenManagerERC20 = await deployTokenManagerERC20(schainName, messageProxyForSchain.address, tokenManagerLinker, communityLocker, depositBoxERC20.address);
- tokenManagerERC721 = await deployTokenManagerERC721(schainName, messageProxyForSchain.address, tokenManagerLinker, communityLocker, depositBoxERC721.address);
- tokenManagerERC1155 = await deployTokenManagerERC1155(schainName, messageProxyForSchain.address, tokenManagerLinker, communityLocker, depositBoxERC1155.address);
+ tokenManagerERC20 = await deployTokenManagerERC20(schainName, messageProxyForSchain, tokenManagerLinker, communityLocker, await depositBoxERC20.getAddress());
+ tokenManagerERC721 = await deployTokenManagerERC721(schainName, messageProxyForSchain, tokenManagerLinker, communityLocker, await depositBoxERC721.getAddress());
+ tokenManagerERC1155 = await deployTokenManagerERC1155(schainName, messageProxyForSchain, tokenManagerLinker, communityLocker, await depositBoxERC1155.getAddress());
await messageProxyForSchain.connect(deployer).grantRole(extraContractRegistrarRole, deployer.address);
- await messageProxyForSchain.registerExtraContractForAll(tokenManagerEth.address)
- await messageProxyForSchain.registerExtraContractForAll(tokenManagerERC20.address)
- await messageProxyForSchain.registerExtraContractForAll(tokenManagerERC721.address)
- await messageProxyForSchain.registerExtraContractForAll(tokenManagerERC1155.address)
- await messageProxyForSchain.registerExtraContractForAll(communityLocker.address)
+ await messageProxyForSchain.registerExtraContractForAll(tokenManagerEth)
+ await messageProxyForSchain.registerExtraContractForAll(tokenManagerERC20)
+ await messageProxyForSchain.registerExtraContractForAll(tokenManagerERC721)
+ await messageProxyForSchain.registerExtraContractForAll(tokenManagerERC1155)
+ await messageProxyForSchain.registerExtraContractForAll(communityLocker)
ethERC20 = await deployEthErc20(tokenManagerEth);
- await tokenManagerEth.connect(deployer).setEthErc20Address(ethERC20.address);
+ await tokenManagerEth.connect(deployer).setEthErc20Address(ethERC20);
const chainConnectorRole = await messageProxyForSchain.CHAIN_CONNECTOR_ROLE();
- await messageProxyForSchain.connect(deployer).grantRole(chainConnectorRole, tokenManagerLinker.address);
+ await messageProxyForSchain.connect(deployer).grantRole(chainConnectorRole, tokenManagerLinker);
await tokenManagerERC20.connect(deployer).grantRole(await tokenManagerERC20.TOKEN_REGISTRAR_ROLE(), schainOwner.address);
await tokenManagerERC721.connect(deployer).grantRole(await tokenManagerERC721.TOKEN_REGISTRAR_ROLE(), schainOwner.address);
await tokenManagerERC1155.connect(deployer).grantRole(await tokenManagerERC1155.TOKEN_REGISTRAR_ROLE(), schainOwner.address);
@@ -269,16 +276,16 @@ describe("Gas calculation", () => {
// await lockAndDataForSchain.setContract("ERC20Module", erc20ModuleForSchain.address);
// await lockAndDataForSchain.setContract("ERC721Module", erc721ModuleForSchain.address);
// await lockAndDataForSchain.setContract("TokenManager", tokenManager.address);
- // await lockAndDataForSchain.setContract("MessageProxy", messageProxyForSchain.address);
+ // await lockAndDataForSchain.setContract("MessageProxy", messageProxyForSchain);
// await lockAndDataForSchain.setContract("TokenFactory", tokenFactory.address);
// IMA registration
- await messageProxyForMainnet.grantRole(await messageProxyForMainnet.CHAIN_CONNECTOR_ROLE(), imaLinker.address);
- await imaLinker.connectSchain(schainName, [tokenManagerLinker.address, communityLocker.address, tokenManagerEth.address, tokenManagerERC20.address, tokenManagerERC721.address, tokenManagerERC1155.address]);
+ await messageProxyForMainnet.grantRole(await messageProxyForMainnet.CHAIN_CONNECTOR_ROLE(), imaLinker);
+ await imaLinker.connectSchain(schainName, [tokenManagerLinker, communityLocker, tokenManagerEth, tokenManagerERC20, tokenManagerERC721, tokenManagerERC1155]);
await communityPool.connect(user).rechargeUserWallet(schainName, user.address, { value: 1e18.toString() });
- // await lockAndDataForSchain.addDepositBox(depositBoxEth.address);
- // await lockAndDataForSchain.addDepositBox(depositBoxERC20.address);
- // await lockAndDataForSchain.addDepositBox(depositBoxERC721.address);
+ // await lockAndDataForSchain.addDepositBox(depositBoxEth);
+ // await lockAndDataForSchain.addDepositBox(depositBoxERC20);
+ // await lockAndDataForSchain.addDepositBox(depositBoxERC721);
// Deploy test tokens
ERC20TokenOnMainnet = await deployERC20OnChain("GCERC20", "GCE");
@@ -291,7 +298,7 @@ describe("Gas calculation", () => {
// Mint tokens and grant minter role
await ERC20TokenOnMainnet.mint(user.address, 5);
const minterRoleERC20 = await ERC20TokenOnSchain.MINTER_ROLE();
- await ERC20TokenOnSchain.grantRole(minterRoleERC20, tokenManagerERC20.address);
+ await ERC20TokenOnSchain.grantRole(minterRoleERC20, tokenManagerERC20);
await ERC721TokenOnMainnet.mint(user.address, 1);
await ERC721TokenOnMainnet.mint(user.address, 2);
@@ -304,7 +311,7 @@ describe("Gas calculation", () => {
await ERC721TokenOnMainnet.mint(user.address, 9);
await ERC721TokenOnMainnet.mint(user.address, 10);
const minterRoleERC721 = await ERC721TokenOnSchain.MINTER_ROLE();
- await ERC721TokenOnSchain.grantRole(minterRoleERC721, tokenManagerERC721.address);
+ await ERC721TokenOnSchain.grantRole(minterRoleERC721, tokenManagerERC721);
await ERC1155TokenOnMainnet.mint(user.address, 1, 1, "0x");
await ERC1155TokenOnMainnet.mint(user.address, 2, 2, "0x");
@@ -317,7 +324,7 @@ describe("Gas calculation", () => {
await ERC1155TokenOnMainnet.mint(user.address, 9, 9, "0x");
await ERC1155TokenOnMainnet.mint(user.address, 10, 10, "0x");
const minterRoleERC1155 = await ERC1155TokenOnSchain.MINTER_ROLE();
- await ERC1155TokenOnSchain.grantRole(minterRoleERC1155, tokenManagerERC1155.address);
+ await ERC1155TokenOnSchain.grantRole(minterRoleERC1155, tokenManagerERC1155);
// register user
await communityPool.connect(user).rechargeUserWallet(schainName, user.address, {value: "1000000000000000000"});
@@ -325,234 +332,234 @@ describe("Gas calculation", () => {
it("calculate eth deposits", async () => {
let res = await (await depositBoxEth.connect(user).deposit(schainName, {value: "1000000000000000000"})).wait();
- console.log("First deposit eth cost:", res.gasUsed.toNumber());
+ console.log("First deposit eth cost:", getGasUsed(res));
res = await (await depositBoxEth.connect(user).deposit(schainName, {value: "1000000000000000000"})).wait();
- console.log("Second deposit eth cost:", res.gasUsed.toNumber());
+ console.log("Second deposit eth cost:", getGasUsed(res));
res = await (await depositBoxEth.connect(user).deposit(schainName, {value: "1000000000000000000"})).wait();
- console.log("Third deposit eth cost:", res.gasUsed.toNumber());
+ console.log("Third deposit eth cost:", getGasUsed(res));
res = await (await depositBoxEth.connect(user).deposit(schainName, {value: "1000000000000000000"})).wait();
- console.log("Forth deposit eth cost:", res.gasUsed.toNumber());
+ console.log("Forth deposit eth cost:", getGasUsed(res));
res = await (await depositBoxEth.connect(user).deposit(schainName, {value: "1000000000000000000"})).wait();
- console.log("Fifth deposit eth cost:", res.gasUsed.toNumber());
+ console.log("Fifth deposit eth cost:", getGasUsed(res));
});
describe("ERC20 init", async () => {
beforeEach(async () => {
- let res = await (await tokenManagerERC20.connect(schainOwner).addERC20TokenByOwner(mainnetName, ERC20TokenOnMainnet.address, ERC20TokenOnSchain.address)).wait();
- console.log("Registration of ERC20 token in TokenManager cost:", res.gasUsed.toNumber());
- res = await (await depositBoxERC20.connect(schainOwner).addERC20TokenByOwner(schainName, ERC20TokenOnMainnet.address)).wait();
- console.log("Registration of ERC20 token in DepositBox cost:", res.gasUsed.toNumber());
+ let res = await (await tokenManagerERC20.connect(schainOwner).addERC20TokenByOwner(mainnetName, ERC20TokenOnMainnet, ERC20TokenOnSchain)).wait();
+ console.log("Registration of ERC20 token in TokenManager cost:", getGasUsed(res));
+ res = await (await depositBoxERC20.connect(schainOwner).addERC20TokenByOwner(schainName, ERC20TokenOnMainnet)).wait();
+ console.log("Registration of ERC20 token in DepositBox cost:", getGasUsed(res));
});
it("calculate registration and approve ERC20", async () => {
- let res = await (await ERC20TokenOnMainnet.connect(user).approve(depositBoxERC20.address, 2)).wait();
- console.log("First approve of ERC20 token cost:", res.gasUsed.toNumber());
- res = await (await ERC20TokenOnMainnet.connect(user).approve(depositBoxERC20.address, 2)).wait();
- console.log("Second approve of ERC20 token cost:", res.gasUsed.toNumber());
+ let res = await (await ERC20TokenOnMainnet.connect(user).approve(depositBoxERC20, 2)).wait();
+ console.log("First approve of ERC20 token cost:", getGasUsed(res));
+ res = await (await ERC20TokenOnMainnet.connect(user).approve(depositBoxERC20, 2)).wait();
+ console.log("Second approve of ERC20 token cost:", getGasUsed(res));
});
it("calculate erc20 deposits without eth without automatic deploy", async () => {
- await ERC20TokenOnMainnet.connect(user).approve(depositBoxERC20.address, 5);
-
- let res = await (await depositBoxERC20.connect(user).depositERC20(schainName, ERC20TokenOnMainnet.address, 1)).wait();
- console.log("First deposit erc20 cost:", res.gasUsed.toNumber());
- res = await (await depositBoxERC20.connect(user).depositERC20(schainName, ERC20TokenOnMainnet.address, 1)).wait();
- console.log("Second deposit erc20 cost:", res.gasUsed.toNumber());
- res = await (await depositBoxERC20.connect(user).depositERC20(schainName, ERC20TokenOnMainnet.address, 1)).wait();
- console.log("Third deposit erc20 cost:", res.gasUsed.toNumber());
- res = await (await depositBoxERC20.connect(user).depositERC20(schainName, ERC20TokenOnMainnet.address, 1)).wait();
- console.log("Forth deposit erc20 cost:", res.gasUsed.toNumber());
- res = await (await depositBoxERC20.connect(user).depositERC20(schainName, ERC20TokenOnMainnet.address, 1)).wait();
- console.log("Deposit all remaining approved erc20 tokens cost:", res.gasUsed.toNumber());
+ await ERC20TokenOnMainnet.connect(user).approve(depositBoxERC20, 5);
+
+ let res = await (await depositBoxERC20.connect(user).depositERC20(schainName, ERC20TokenOnMainnet, 1)).wait();
+ console.log("First deposit erc20 cost:", getGasUsed(res));
+ res = await (await depositBoxERC20.connect(user).depositERC20(schainName, ERC20TokenOnMainnet, 1)).wait();
+ console.log("Second deposit erc20 cost:", getGasUsed(res));
+ res = await (await depositBoxERC20.connect(user).depositERC20(schainName, ERC20TokenOnMainnet, 1)).wait();
+ console.log("Third deposit erc20 cost:", getGasUsed(res));
+ res = await (await depositBoxERC20.connect(user).depositERC20(schainName, ERC20TokenOnMainnet, 1)).wait();
+ console.log("Forth deposit erc20 cost:", getGasUsed(res));
+ res = await (await depositBoxERC20.connect(user).depositERC20(schainName, ERC20TokenOnMainnet, 1)).wait();
+ console.log("Deposit all remaining approved erc20 tokens cost:", getGasUsed(res));
});
it("calculate erc20 deposits of all approved tokens without eth without automatic deploy", async () => {
- await ERC20TokenOnMainnet.connect(user).approve(depositBoxERC20.address, 5);
+ await ERC20TokenOnMainnet.connect(user).approve(depositBoxERC20, 5);
- const res = await (await depositBoxERC20.connect(user).depositERC20(schainName, ERC20TokenOnMainnet.address, 5)).wait();
- console.log("Deposit all approved erc20 tokens at once cost:", res.gasUsed.toNumber());
+ const res = await (await depositBoxERC20.connect(user).depositERC20(schainName, ERC20TokenOnMainnet, 5)).wait();
+ console.log("Deposit all approved erc20 tokens at once cost:", getGasUsed(res));
});
});
describe("ERC721 init", async () => {
beforeEach(async () => {
- let res = await (await tokenManagerERC721.connect(schainOwner).addERC721TokenByOwner(mainnetName, ERC721TokenOnMainnet.address, ERC721TokenOnSchain.address)).wait();
- console.log("Registration of ERC721 token in TokenManager cost:", res.gasUsed.toNumber());
- res = await (await depositBoxERC721.connect(schainOwner).addERC721TokenByOwner(schainName, ERC721TokenOnMainnet.address)).wait();
- console.log("Registration of ERC721 token in DepositBox cost:", res.gasUsed.toNumber());
+ let res = await (await tokenManagerERC721.connect(schainOwner).addERC721TokenByOwner(mainnetName, ERC721TokenOnMainnet, ERC721TokenOnSchain)).wait();
+ console.log("Registration of ERC721 token in TokenManager cost:", getGasUsed(res));
+ res = await (await depositBoxERC721.connect(schainOwner).addERC721TokenByOwner(schainName, ERC721TokenOnMainnet)).wait();
+ console.log("Registration of ERC721 token in DepositBox cost:", getGasUsed(res));
});
it("calculate registration and approve ERC721", async () => {
- let res = await (await ERC721TokenOnMainnet.connect(user).approve(depositBoxERC721.address, 1)).wait();
- console.log("First transfer of ERC721 token cost:", res.gasUsed.toNumber());
- res = await (await ERC721TokenOnMainnet.connect(user).approve(depositBoxERC721.address, 2)).wait();
- console.log("Second transfer of ERC721 token cost:", res.gasUsed.toNumber());
- res = await (await ERC721TokenOnMainnet.connect(user).approve(depositBoxERC721.address, 3)).wait();
- console.log("Third transfer of ERC721 token cost:", res.gasUsed.toNumber());
- res = await (await ERC721TokenOnMainnet.connect(user).approve(depositBoxERC721.address, 4)).wait();
- console.log("Forth transfer of ERC721 token cost:", res.gasUsed.toNumber());
- res = await (await ERC721TokenOnMainnet.connect(user).approve(depositBoxERC721.address, 5)).wait();
- console.log("Fifth transfer of ERC721 token cost:", res.gasUsed.toNumber());
- res = await (await ERC721TokenOnMainnet.connect(user).approve(depositBoxERC721.address, 6)).wait();
- console.log("Sixth transfer of ERC721 token cost:", res.gasUsed.toNumber());
- res = await (await ERC721TokenOnMainnet.connect(user).approve(depositBoxERC721.address, 7)).wait();
- console.log("Seventh transfer of ERC721 token cost:", res.gasUsed.toNumber());
- res = await (await ERC721TokenOnMainnet.connect(user).approve(depositBoxERC721.address, 8)).wait();
- console.log("Eighth transfer of ERC721 token cost:", res.gasUsed.toNumber());
- res = await (await ERC721TokenOnMainnet.connect(user).approve(depositBoxERC721.address, 9)).wait();
- console.log("Ninth transfer of ERC721 token cost:", res.gasUsed.toNumber());
- res = await (await ERC721TokenOnMainnet.connect(user).approve(depositBoxERC721.address, 10)).wait();
- console.log("Tenth transfer of ERC721 token cost:", res.gasUsed.toNumber());
+ let res = await (await ERC721TokenOnMainnet.connect(user).approve(depositBoxERC721, 1)).wait();
+ console.log("First transfer of ERC721 token cost:", getGasUsed(res));
+ res = await (await ERC721TokenOnMainnet.connect(user).approve(depositBoxERC721, 2)).wait();
+ console.log("Second transfer of ERC721 token cost:", getGasUsed(res));
+ res = await (await ERC721TokenOnMainnet.connect(user).approve(depositBoxERC721, 3)).wait();
+ console.log("Third transfer of ERC721 token cost:", getGasUsed(res));
+ res = await (await ERC721TokenOnMainnet.connect(user).approve(depositBoxERC721, 4)).wait();
+ console.log("Forth transfer of ERC721 token cost:", getGasUsed(res));
+ res = await (await ERC721TokenOnMainnet.connect(user).approve(depositBoxERC721, 5)).wait();
+ console.log("Fifth transfer of ERC721 token cost:", getGasUsed(res));
+ res = await (await ERC721TokenOnMainnet.connect(user).approve(depositBoxERC721, 6)).wait();
+ console.log("Sixth transfer of ERC721 token cost:", getGasUsed(res));
+ res = await (await ERC721TokenOnMainnet.connect(user).approve(depositBoxERC721, 7)).wait();
+ console.log("Seventh transfer of ERC721 token cost:", getGasUsed(res));
+ res = await (await ERC721TokenOnMainnet.connect(user).approve(depositBoxERC721, 8)).wait();
+ console.log("Eighth transfer of ERC721 token cost:", getGasUsed(res));
+ res = await (await ERC721TokenOnMainnet.connect(user).approve(depositBoxERC721, 9)).wait();
+ console.log("Ninth transfer of ERC721 token cost:", getGasUsed(res));
+ res = await (await ERC721TokenOnMainnet.connect(user).approve(depositBoxERC721, 10)).wait();
+ console.log("Tenth transfer of ERC721 token cost:", getGasUsed(res));
});
it("calculate erc721 deposits without eth without automatic deploy", async () => {
- await ERC721TokenOnMainnet.connect(user).approve(depositBoxERC721.address, 1);
- await ERC721TokenOnMainnet.connect(user).approve(depositBoxERC721.address, 2);
- await ERC721TokenOnMainnet.connect(user).approve(depositBoxERC721.address, 3);
- await ERC721TokenOnMainnet.connect(user).approve(depositBoxERC721.address, 4);
- await ERC721TokenOnMainnet.connect(user).approve(depositBoxERC721.address, 5);
- await ERC721TokenOnMainnet.connect(user).approve(depositBoxERC721.address, 6);
- await ERC721TokenOnMainnet.connect(user).approve(depositBoxERC721.address, 7);
- await ERC721TokenOnMainnet.connect(user).approve(depositBoxERC721.address, 8);
- await ERC721TokenOnMainnet.connect(user).approve(depositBoxERC721.address, 9);
- await ERC721TokenOnMainnet.connect(user).approve(depositBoxERC721.address, 10);
-
- let res = await (await depositBoxERC721.connect(user).depositERC721(schainName, ERC721TokenOnMainnet.address, 1)).wait();
- console.log("First deposit erc721 cost:", res.gasUsed.toNumber());
- res = await (await depositBoxERC721.connect(user).depositERC721(schainName, ERC721TokenOnMainnet.address, 2)).wait();
- console.log("Second deposit erc721 cost:", res.gasUsed.toNumber());
- res = await (await depositBoxERC721.connect(user).depositERC721(schainName, ERC721TokenOnMainnet.address, 3)).wait();
- console.log("Third deposit erc721 cost:", res.gasUsed.toNumber());
- res = await (await depositBoxERC721.connect(user).depositERC721(schainName, ERC721TokenOnMainnet.address, 4)).wait();
- console.log("Forth deposit erc721 cost:", res.gasUsed.toNumber());
- res = await (await depositBoxERC721.connect(user).depositERC721(schainName, ERC721TokenOnMainnet.address, 5)).wait();
- console.log("Fifth deposit erc721 cost:", res.gasUsed.toNumber());
- res = await (await depositBoxERC721.connect(user).depositERC721(schainName, ERC721TokenOnMainnet.address, 6)).wait();
- console.log("Sixth deposit erc721 cost:", res.gasUsed.toNumber());
- res = await (await depositBoxERC721.connect(user).depositERC721(schainName, ERC721TokenOnMainnet.address, 7)).wait();
- console.log("Seventh deposit erc721 cost:", res.gasUsed.toNumber());
- res = await (await depositBoxERC721.connect(user).depositERC721(schainName, ERC721TokenOnMainnet.address, 8)).wait();
- console.log("Eighth deposit erc721 cost:", res.gasUsed.toNumber());
- res = await (await depositBoxERC721.connect(user).depositERC721(schainName, ERC721TokenOnMainnet.address, 9)).wait();
- console.log("Ninth deposit erc721 cost:", res.gasUsed.toNumber());
- res = await (await depositBoxERC721.connect(user).depositERC721(schainName, ERC721TokenOnMainnet.address, 10)).wait();
- console.log("Tenth deposit erc721 cost:", res.gasUsed.toNumber());
+ await ERC721TokenOnMainnet.connect(user).approve(depositBoxERC721, 1);
+ await ERC721TokenOnMainnet.connect(user).approve(depositBoxERC721, 2);
+ await ERC721TokenOnMainnet.connect(user).approve(depositBoxERC721, 3);
+ await ERC721TokenOnMainnet.connect(user).approve(depositBoxERC721, 4);
+ await ERC721TokenOnMainnet.connect(user).approve(depositBoxERC721, 5);
+ await ERC721TokenOnMainnet.connect(user).approve(depositBoxERC721, 6);
+ await ERC721TokenOnMainnet.connect(user).approve(depositBoxERC721, 7);
+ await ERC721TokenOnMainnet.connect(user).approve(depositBoxERC721, 8);
+ await ERC721TokenOnMainnet.connect(user).approve(depositBoxERC721, 9);
+ await ERC721TokenOnMainnet.connect(user).approve(depositBoxERC721, 10);
+
+ let res = await (await depositBoxERC721.connect(user).depositERC721(schainName, ERC721TokenOnMainnet, 1)).wait();
+ console.log("First deposit erc721 cost:", getGasUsed(res));
+ res = await (await depositBoxERC721.connect(user).depositERC721(schainName, ERC721TokenOnMainnet, 2)).wait();
+ console.log("Second deposit erc721 cost:", getGasUsed(res));
+ res = await (await depositBoxERC721.connect(user).depositERC721(schainName, ERC721TokenOnMainnet, 3)).wait();
+ console.log("Third deposit erc721 cost:", getGasUsed(res));
+ res = await (await depositBoxERC721.connect(user).depositERC721(schainName, ERC721TokenOnMainnet, 4)).wait();
+ console.log("Forth deposit erc721 cost:", getGasUsed(res));
+ res = await (await depositBoxERC721.connect(user).depositERC721(schainName, ERC721TokenOnMainnet, 5)).wait();
+ console.log("Fifth deposit erc721 cost:", getGasUsed(res));
+ res = await (await depositBoxERC721.connect(user).depositERC721(schainName, ERC721TokenOnMainnet, 6)).wait();
+ console.log("Sixth deposit erc721 cost:", getGasUsed(res));
+ res = await (await depositBoxERC721.connect(user).depositERC721(schainName, ERC721TokenOnMainnet, 7)).wait();
+ console.log("Seventh deposit erc721 cost:", getGasUsed(res));
+ res = await (await depositBoxERC721.connect(user).depositERC721(schainName, ERC721TokenOnMainnet, 8)).wait();
+ console.log("Eighth deposit erc721 cost:", getGasUsed(res));
+ res = await (await depositBoxERC721.connect(user).depositERC721(schainName, ERC721TokenOnMainnet, 9)).wait();
+ console.log("Ninth deposit erc721 cost:", getGasUsed(res));
+ res = await (await depositBoxERC721.connect(user).depositERC721(schainName, ERC721TokenOnMainnet, 10)).wait();
+ console.log("Tenth deposit erc721 cost:", getGasUsed(res));
});
it("calculate erc721 deposits without eth without automatic deploy and approve each time", async () => {
- let res = await (await ERC721TokenOnMainnet.connect(user).approve(depositBoxERC721.address, 1)).wait();
- console.log("First approve of ERC721 token cost:", res.gasUsed.toNumber());
- res = await (await depositBoxERC721.connect(user).depositERC721(schainName, ERC721TokenOnMainnet.address, 1)).wait();
- console.log("First deposit erc721 cost:", res.gasUsed.toNumber());
- res = await (await ERC721TokenOnMainnet.connect(user).approve(depositBoxERC721.address, 2)).wait();
- console.log("Second approve of ERC721 token cost:", res.gasUsed.toNumber());
- res = await (await depositBoxERC721.connect(user).depositERC721(schainName, ERC721TokenOnMainnet.address, 2)).wait();
- console.log("Second deposit erc721 cost:", res.gasUsed.toNumber());
- res = await (await ERC721TokenOnMainnet.connect(user).approve(depositBoxERC721.address, 3)).wait();
- console.log("Third approve of ERC721 token cost:", res.gasUsed.toNumber());
- res = await (await depositBoxERC721.connect(user).depositERC721(schainName, ERC721TokenOnMainnet.address, 3)).wait();
- console.log("Third deposit erc721 cost:", res.gasUsed.toNumber());
- res = await (await ERC721TokenOnMainnet.connect(user).approve(depositBoxERC721.address, 4)).wait();
- console.log("Forth approve of ERC721 token cost:", res.gasUsed.toNumber());
- res = await (await depositBoxERC721.connect(user).depositERC721(schainName, ERC721TokenOnMainnet.address, 4)).wait();
- console.log("Forth deposit erc721 cost:", res.gasUsed.toNumber());
- res = await (await ERC721TokenOnMainnet.connect(user).approve(depositBoxERC721.address, 5)).wait();
- console.log("Fifth approve of ERC721 token cost:", res.gasUsed.toNumber());
- res = await (await depositBoxERC721.connect(user).depositERC721(schainName, ERC721TokenOnMainnet.address, 5)).wait();
- console.log("Fifth deposit erc721 cost:", res.gasUsed.toNumber());
- res = await (await ERC721TokenOnMainnet.connect(user).approve(depositBoxERC721.address, 6)).wait();
- console.log("Sixth approve of ERC721 token cost:", res.gasUsed.toNumber());
- res = await (await depositBoxERC721.connect(user).depositERC721(schainName, ERC721TokenOnMainnet.address, 6)).wait();
- console.log("Sixth deposit erc721 cost:", res.gasUsed.toNumber());
- res = await (await ERC721TokenOnMainnet.connect(user).approve(depositBoxERC721.address, 7)).wait();
- console.log("Seventh approve of ERC721 token cost:", res.gasUsed.toNumber());
- res = await (await depositBoxERC721.connect(user).depositERC721(schainName, ERC721TokenOnMainnet.address, 7)).wait();
- console.log("Seventh deposit erc721 cost:", res.gasUsed.toNumber());
- res = await (await ERC721TokenOnMainnet.connect(user).approve(depositBoxERC721.address, 8)).wait();
- console.log("Eighth approve of ERC721 token cost:", res.gasUsed.toNumber());
- res = await (await depositBoxERC721.connect(user).depositERC721(schainName, ERC721TokenOnMainnet.address, 8)).wait();
- console.log("Eighth deposit erc721 cost:", res.gasUsed.toNumber());
- res = await (await ERC721TokenOnMainnet.connect(user).approve(depositBoxERC721.address, 9)).wait();
- console.log("Ninth approve of ERC721 token cost:", res.gasUsed.toNumber());
- res = await (await depositBoxERC721.connect(user).depositERC721(schainName, ERC721TokenOnMainnet.address, 9)).wait();
- console.log("Ninth deposit erc721 cost:", res.gasUsed.toNumber());
- res = await (await ERC721TokenOnMainnet.connect(user).approve(depositBoxERC721.address, 10)).wait();
- console.log("Tenth approve of ERC721 token cost:", res.gasUsed.toNumber());
- res = await (await depositBoxERC721.connect(user).depositERC721(schainName, ERC721TokenOnMainnet.address, 10)).wait();
- console.log("Tenth deposit erc721 cost:", res.gasUsed.toNumber());
+ let res = await (await ERC721TokenOnMainnet.connect(user).approve(depositBoxERC721, 1)).wait();
+ console.log("First approve of ERC721 token cost:", getGasUsed(res));
+ res = await (await depositBoxERC721.connect(user).depositERC721(schainName, ERC721TokenOnMainnet, 1)).wait();
+ console.log("First deposit erc721 cost:", getGasUsed(res));
+ res = await (await ERC721TokenOnMainnet.connect(user).approve(depositBoxERC721, 2)).wait();
+ console.log("Second approve of ERC721 token cost:", getGasUsed(res));
+ res = await (await depositBoxERC721.connect(user).depositERC721(schainName, ERC721TokenOnMainnet, 2)).wait();
+ console.log("Second deposit erc721 cost:", getGasUsed(res));
+ res = await (await ERC721TokenOnMainnet.connect(user).approve(depositBoxERC721, 3)).wait();
+ console.log("Third approve of ERC721 token cost:", getGasUsed(res));
+ res = await (await depositBoxERC721.connect(user).depositERC721(schainName, ERC721TokenOnMainnet, 3)).wait();
+ console.log("Third deposit erc721 cost:", getGasUsed(res));
+ res = await (await ERC721TokenOnMainnet.connect(user).approve(depositBoxERC721, 4)).wait();
+ console.log("Forth approve of ERC721 token cost:", getGasUsed(res));
+ res = await (await depositBoxERC721.connect(user).depositERC721(schainName, ERC721TokenOnMainnet, 4)).wait();
+ console.log("Forth deposit erc721 cost:", getGasUsed(res));
+ res = await (await ERC721TokenOnMainnet.connect(user).approve(depositBoxERC721, 5)).wait();
+ console.log("Fifth approve of ERC721 token cost:", getGasUsed(res));
+ res = await (await depositBoxERC721.connect(user).depositERC721(schainName, ERC721TokenOnMainnet, 5)).wait();
+ console.log("Fifth deposit erc721 cost:", getGasUsed(res));
+ res = await (await ERC721TokenOnMainnet.connect(user).approve(depositBoxERC721, 6)).wait();
+ console.log("Sixth approve of ERC721 token cost:", getGasUsed(res));
+ res = await (await depositBoxERC721.connect(user).depositERC721(schainName, ERC721TokenOnMainnet, 6)).wait();
+ console.log("Sixth deposit erc721 cost:", getGasUsed(res));
+ res = await (await ERC721TokenOnMainnet.connect(user).approve(depositBoxERC721, 7)).wait();
+ console.log("Seventh approve of ERC721 token cost:", getGasUsed(res));
+ res = await (await depositBoxERC721.connect(user).depositERC721(schainName, ERC721TokenOnMainnet, 7)).wait();
+ console.log("Seventh deposit erc721 cost:", getGasUsed(res));
+ res = await (await ERC721TokenOnMainnet.connect(user).approve(depositBoxERC721, 8)).wait();
+ console.log("Eighth approve of ERC721 token cost:", getGasUsed(res));
+ res = await (await depositBoxERC721.connect(user).depositERC721(schainName, ERC721TokenOnMainnet, 8)).wait();
+ console.log("Eighth deposit erc721 cost:", getGasUsed(res));
+ res = await (await ERC721TokenOnMainnet.connect(user).approve(depositBoxERC721, 9)).wait();
+ console.log("Ninth approve of ERC721 token cost:", getGasUsed(res));
+ res = await (await depositBoxERC721.connect(user).depositERC721(schainName, ERC721TokenOnMainnet, 9)).wait();
+ console.log("Ninth deposit erc721 cost:", getGasUsed(res));
+ res = await (await ERC721TokenOnMainnet.connect(user).approve(depositBoxERC721, 10)).wait();
+ console.log("Tenth approve of ERC721 token cost:", getGasUsed(res));
+ res = await (await depositBoxERC721.connect(user).depositERC721(schainName, ERC721TokenOnMainnet, 10)).wait();
+ console.log("Tenth deposit erc721 cost:", getGasUsed(res));
});
});
describe("ERC1155 init", async () => {
beforeEach(async () => {
- let res = await (await tokenManagerERC1155.connect(schainOwner).addERC1155TokenByOwner(mainnetName, ERC1155TokenOnMainnet.address, ERC1155TokenOnSchain.address)).wait();
- console.log("Registration of ERC1155 token in TokenManager cost:", res.gasUsed.toNumber());
- res = await (await depositBoxERC1155.connect(schainOwner).addERC1155TokenByOwner(schainName, ERC1155TokenOnMainnet.address)).wait();
- console.log("Registration of ERC1155 token in DepositBox cost:", res.gasUsed.toNumber());
+ let res = await (await tokenManagerERC1155.connect(schainOwner).addERC1155TokenByOwner(mainnetName, ERC1155TokenOnMainnet, ERC1155TokenOnSchain)).wait();
+ console.log("Registration of ERC1155 token in TokenManager cost:", getGasUsed(res));
+ res = await (await depositBoxERC1155.connect(schainOwner).addERC1155TokenByOwner(schainName, ERC1155TokenOnMainnet)).wait();
+ console.log("Registration of ERC1155 token in DepositBox cost:", getGasUsed(res));
});
it("calculate registration and approve ERC1155", async () => {
- const res = await (await ERC1155TokenOnMainnet.connect(user).setApprovalForAll(depositBoxERC1155.address, true)).wait();
- console.log("Approve ERC1155 token cost:", res.gasUsed.toNumber());
+ const res = await (await ERC1155TokenOnMainnet.connect(user).setApprovalForAll(depositBoxERC1155, true)).wait();
+ console.log("Approve ERC1155 token cost:", getGasUsed(res));
});
it("calculate erc1155 deposits without eth without automatic deploy", async () => {
- await ERC1155TokenOnMainnet.connect(user).setApprovalForAll(depositBoxERC1155.address, true);
-
- let res = await (await depositBoxERC1155.connect(user).depositERC1155(schainName, ERC1155TokenOnMainnet.address, 1, 1)).wait();
- console.log("First deposit erc1155 cost:", res.gasUsed.toNumber());
- res = await (await depositBoxERC1155.connect(user).depositERC1155(schainName, ERC1155TokenOnMainnet.address, 2, 2)).wait();
- console.log("Second deposit erc1155 cost:", res.gasUsed.toNumber());
- res = await (await depositBoxERC1155.connect(user).depositERC1155(schainName, ERC1155TokenOnMainnet.address, 3, 3)).wait();
- console.log("Third deposit erc1155 cost:", res.gasUsed.toNumber());
- res = await (await depositBoxERC1155.connect(user).depositERC1155(schainName, ERC1155TokenOnMainnet.address, 4, 4)).wait();
- console.log("Forth deposit erc1155 cost:", res.gasUsed.toNumber());
- res = await (await depositBoxERC1155.connect(user).depositERC1155(schainName, ERC1155TokenOnMainnet.address, 5, 5)).wait();
- console.log("Fifth deposit erc1155 cost:", res.gasUsed.toNumber());
- res = await (await depositBoxERC1155.connect(user).depositERC1155(schainName, ERC1155TokenOnMainnet.address, 6, 6)).wait();
- console.log("Sixth deposit erc1155 cost:", res.gasUsed.toNumber());
- res = await (await depositBoxERC1155.connect(user).depositERC1155(schainName, ERC1155TokenOnMainnet.address, 7, 7)).wait();
- console.log("Seventh deposit erc1155 cost:", res.gasUsed.toNumber());
- res = await (await depositBoxERC1155.connect(user).depositERC1155(schainName, ERC1155TokenOnMainnet.address, 8, 8)).wait();
- console.log("Eighth deposit erc1155 cost:", res.gasUsed.toNumber());
- res = await (await depositBoxERC1155.connect(user).depositERC1155(schainName, ERC1155TokenOnMainnet.address, 9, 9)).wait();
- console.log("Ninth deposit erc1155 cost:", res.gasUsed.toNumber());
- res = await (await depositBoxERC1155.connect(user).depositERC1155(schainName, ERC1155TokenOnMainnet.address, 10, 10)).wait();
- console.log("Tenth deposit erc1155 cost:", res.gasUsed.toNumber());
+ await ERC1155TokenOnMainnet.connect(user).setApprovalForAll(depositBoxERC1155, true);
+
+ let res = await (await depositBoxERC1155.connect(user).depositERC1155(schainName, ERC1155TokenOnMainnet, 1, 1)).wait();
+ console.log("First deposit erc1155 cost:", getGasUsed(res));
+ res = await (await depositBoxERC1155.connect(user).depositERC1155(schainName, ERC1155TokenOnMainnet, 2, 2)).wait();
+ console.log("Second deposit erc1155 cost:", getGasUsed(res));
+ res = await (await depositBoxERC1155.connect(user).depositERC1155(schainName, ERC1155TokenOnMainnet, 3, 3)).wait();
+ console.log("Third deposit erc1155 cost:", getGasUsed(res));
+ res = await (await depositBoxERC1155.connect(user).depositERC1155(schainName, ERC1155TokenOnMainnet, 4, 4)).wait();
+ console.log("Forth deposit erc1155 cost:", getGasUsed(res));
+ res = await (await depositBoxERC1155.connect(user).depositERC1155(schainName, ERC1155TokenOnMainnet, 5, 5)).wait();
+ console.log("Fifth deposit erc1155 cost:", getGasUsed(res));
+ res = await (await depositBoxERC1155.connect(user).depositERC1155(schainName, ERC1155TokenOnMainnet, 6, 6)).wait();
+ console.log("Sixth deposit erc1155 cost:", getGasUsed(res));
+ res = await (await depositBoxERC1155.connect(user).depositERC1155(schainName, ERC1155TokenOnMainnet, 7, 7)).wait();
+ console.log("Seventh deposit erc1155 cost:", getGasUsed(res));
+ res = await (await depositBoxERC1155.connect(user).depositERC1155(schainName, ERC1155TokenOnMainnet, 8, 8)).wait();
+ console.log("Eighth deposit erc1155 cost:", getGasUsed(res));
+ res = await (await depositBoxERC1155.connect(user).depositERC1155(schainName, ERC1155TokenOnMainnet, 9, 9)).wait();
+ console.log("Ninth deposit erc1155 cost:", getGasUsed(res));
+ res = await (await depositBoxERC1155.connect(user).depositERC1155(schainName, ERC1155TokenOnMainnet, 10, 10)).wait();
+ console.log("Tenth deposit erc1155 cost:", getGasUsed(res));
});
it("calculate erc1155 deposits batches without eth without automatic deploy", async () => {
- await ERC1155TokenOnMainnet.connect(user).setApprovalForAll(depositBoxERC1155.address, true);
-
- let res = await (await depositBoxERC1155.connect(user).depositERC1155Batch(schainName, ERC1155TokenOnMainnet.address, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1])).wait();
- console.log("First deposit erc1155 cost:", res.gasUsed.toNumber());
- res = await (await depositBoxERC1155.connect(user).depositERC1155Batch(schainName, ERC1155TokenOnMainnet.address, [2, 3, 4, 5, 6, 7, 8, 9, 10], [1, 1, 1, 1, 1, 1, 1, 1, 1])).wait();
- console.log("Second deposit erc1155 cost:", res.gasUsed.toNumber());
- res = await (await depositBoxERC1155.connect(user).depositERC1155Batch(schainName, ERC1155TokenOnMainnet.address, [3, 4, 5, 6, 7, 8, 9, 10], [1, 1, 1, 1, 1, 1, 1, 1])).wait();
- console.log("Third deposit erc1155 cost:", res.gasUsed.toNumber());
- res = await (await depositBoxERC1155.connect(user).depositERC1155Batch(schainName, ERC1155TokenOnMainnet.address, [4, 5, 6, 7, 8, 9, 10], [1, 1, 1, 1, 1, 1, 1])).wait();
- console.log("Forth deposit erc1155 cost:", res.gasUsed.toNumber());
- res = await (await depositBoxERC1155.connect(user).depositERC1155Batch(schainName, ERC1155TokenOnMainnet.address, [5, 6, 7, 8, 9, 10], [1, 1, 1, 1, 1, 1])).wait();
- console.log("Fifth deposit erc1155 cost:", res.gasUsed.toNumber());
- res = await (await depositBoxERC1155.connect(user).depositERC1155Batch(schainName, ERC1155TokenOnMainnet.address, [6, 7, 8, 9, 10], [1, 1, 1, 1, 1])).wait();
- console.log("Sixth deposit erc1155 cost:", res.gasUsed.toNumber());
- res = await (await depositBoxERC1155.connect(user).depositERC1155Batch(schainName, ERC1155TokenOnMainnet.address, [7, 8, 9, 10], [1, 1, 1, 1])).wait();
- console.log("Seventh deposit erc1155 cost:", res.gasUsed.toNumber());
- res = await (await depositBoxERC1155.connect(user).depositERC1155Batch(schainName, ERC1155TokenOnMainnet.address, [8, 9, 10], [1, 1, 1])).wait();
- console.log("Eighth deposit erc1155 cost:", res.gasUsed.toNumber());
- res = await (await depositBoxERC1155.connect(user).depositERC1155Batch(schainName, ERC1155TokenOnMainnet.address, [9, 10], [1, 1])).wait();
- console.log("Ninth deposit erc1155 cost:", res.gasUsed.toNumber());
- res = await (await depositBoxERC1155.connect(user).depositERC1155Batch(schainName, ERC1155TokenOnMainnet.address, [10], [1])).wait();
- console.log("Tenth deposit erc1155 cost:", res.gasUsed.toNumber());
+ await ERC1155TokenOnMainnet.connect(user).setApprovalForAll(depositBoxERC1155, true);
+
+ let res = await (await depositBoxERC1155.connect(user).depositERC1155Batch(schainName, ERC1155TokenOnMainnet, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1])).wait();
+ console.log("First deposit erc1155 cost:", getGasUsed(res));
+ res = await (await depositBoxERC1155.connect(user).depositERC1155Batch(schainName, ERC1155TokenOnMainnet, [2, 3, 4, 5, 6, 7, 8, 9, 10], [1, 1, 1, 1, 1, 1, 1, 1, 1])).wait();
+ console.log("Second deposit erc1155 cost:", getGasUsed(res));
+ res = await (await depositBoxERC1155.connect(user).depositERC1155Batch(schainName, ERC1155TokenOnMainnet, [3, 4, 5, 6, 7, 8, 9, 10], [1, 1, 1, 1, 1, 1, 1, 1])).wait();
+ console.log("Third deposit erc1155 cost:", getGasUsed(res));
+ res = await (await depositBoxERC1155.connect(user).depositERC1155Batch(schainName, ERC1155TokenOnMainnet, [4, 5, 6, 7, 8, 9, 10], [1, 1, 1, 1, 1, 1, 1])).wait();
+ console.log("Forth deposit erc1155 cost:", getGasUsed(res));
+ res = await (await depositBoxERC1155.connect(user).depositERC1155Batch(schainName, ERC1155TokenOnMainnet, [5, 6, 7, 8, 9, 10], [1, 1, 1, 1, 1, 1])).wait();
+ console.log("Fifth deposit erc1155 cost:", getGasUsed(res));
+ res = await (await depositBoxERC1155.connect(user).depositERC1155Batch(schainName, ERC1155TokenOnMainnet, [6, 7, 8, 9, 10], [1, 1, 1, 1, 1])).wait();
+ console.log("Sixth deposit erc1155 cost:", getGasUsed(res));
+ res = await (await depositBoxERC1155.connect(user).depositERC1155Batch(schainName, ERC1155TokenOnMainnet, [7, 8, 9, 10], [1, 1, 1, 1])).wait();
+ console.log("Seventh deposit erc1155 cost:", getGasUsed(res));
+ res = await (await depositBoxERC1155.connect(user).depositERC1155Batch(schainName, ERC1155TokenOnMainnet, [8, 9, 10], [1, 1, 1])).wait();
+ console.log("Eighth deposit erc1155 cost:", getGasUsed(res));
+ res = await (await depositBoxERC1155.connect(user).depositERC1155Batch(schainName, ERC1155TokenOnMainnet, [9, 10], [1, 1])).wait();
+ console.log("Ninth deposit erc1155 cost:", getGasUsed(res));
+ res = await (await depositBoxERC1155.connect(user).depositERC1155Batch(schainName, ERC1155TokenOnMainnet, [10], [1])).wait();
+ console.log("Tenth deposit erc1155 cost:", getGasUsed(res));
});
});
describe("Exits", async() => {
// prepare BLS signature
// P.s. this is test signature from test of SkaleManager.SkaleVerifier - please do not use it!!!
- const BlsSignature: [BigNumber, BigNumber] = [
- BigNumber.from("178325537405109593276798394634841698946852714038246117383766698579865918287"),
- BigNumber.from("493565443574555904019191451171395204672818649274520396086461475162723833781"),
+ const BlsSignature: [BigNumberish, BigNumberish] = [
+ "178325537405109593276798394634841698946852714038246117383766698579865918287",
+ "493565443574555904019191451171395204672818649274520396086461475162723833781",
];
const sign = {
blsSignature: BlsSignature,
@@ -568,7 +575,7 @@ describe("Gas calculation", () => {
arrayOfMessages,
sign
)).wait();
- console.log(action, "cost:", res.gasUsed.toNumber());
+ console.log(action, "cost:", getGasUsed(res));
}
describe("Eth transfers ready", async () => {
@@ -577,8 +584,8 @@ describe("Gas calculation", () => {
async function getEthMessage() {
return {
data: await messages.encodeTransferEthMessage(user.address, "1000000000000000000"),
- destinationContract: depositBoxEth.address,
- sender: tokenManagerEth.address,
+ destinationContract: depositBoxEth,
+ sender: tokenManagerEth,
};
}
@@ -588,7 +595,7 @@ describe("Gas calculation", () => {
async function getMyEth(action: string) {
const res = await (await depositBoxEth.connect(user).getMyEth()).wait();
- console.log(action, "getMyEth eth cost:", res.gasUsed.toNumber());
+ console.log(action, "getMyEth eth cost:", getGasUsed(res));
}
it("calculate 1 exit eth cost per one message", async () => {
@@ -812,27 +819,27 @@ describe("Gas calculation", () => {
describe("ERC20 Token registered and approved", async () => {
- // prepare exit message of erc20 token - await TokenManager.exitToMainERC20(ERC20TokenOnMainnet.address, amount, {from: user});
+ // prepare exit message of erc20 token - await TokenManager.exitToMainERC20(ERC20TokenOnMainnet, amount, {from: user});
async function getERC20Message(amount: number) {
return {
- data: await messages.encodeTransferErc20Message(ERC20TokenOnMainnet.address, user.address, amount),
- destinationContract: depositBoxERC20.address,
- sender: tokenManagerERC20.address
+ data: await messages.encodeTransferErc20Message(ERC20TokenOnMainnet, user.address, amount),
+ destinationContract: depositBoxERC20,
+ sender: tokenManagerERC20
};
}
async function sendERC20(amount: number) {
- await depositBoxERC20.connect(user).depositERC20(schainName, ERC20TokenOnMainnet.address, amount);
+ await depositBoxERC20.connect(user).depositERC20(schainName, ERC20TokenOnMainnet, amount);
}
async function checkBalance() {
- ((await ERC20TokenOnMainnet.balanceOf(user.address)).toString()).should.be.equal(BigNumber.from(5).toString());
+ (await ERC20TokenOnMainnet.balanceOf(user.address)).should.be.equal(5);
}
beforeEach(async () => {
- await tokenManagerERC20.connect(schainOwner).addERC20TokenByOwner(mainnetName, ERC20TokenOnMainnet.address, ERC20TokenOnSchain.address);
- await depositBoxERC20.connect(schainOwner).addERC20TokenByOwner(schainName, ERC20TokenOnMainnet.address);
- await ERC20TokenOnMainnet.connect(user).approve(depositBoxERC20.address, 5);
+ await tokenManagerERC20.connect(schainOwner).addERC20TokenByOwner(mainnetName, ERC20TokenOnMainnet, ERC20TokenOnSchain);
+ await depositBoxERC20.connect(schainOwner).addERC20TokenByOwner(schainName, ERC20TokenOnMainnet);
+ await ERC20TokenOnMainnet.connect(user).approve(depositBoxERC20, 5);
});
afterEach(async() => {
@@ -919,17 +926,17 @@ describe("Gas calculation", () => {
describe("ERC721 Token registered and approved", async() => {
- // prepare exit message of erc721 token - await TokenManager.exitToMainERC721(ERC721TokenOnMainnet.address, tokenId, {from: user});
+ // prepare exit message of erc721 token - await TokenManager.exitToMainERC721(ERC721TokenOnMainnet, tokenId, {from: user});
async function getERC721Message(tokenId: number) {
return {
- data: await messages.encodeTransferErc721Message(ERC721TokenOnMainnet.address, user.address, tokenId),
- destinationContract: depositBoxERC721.address,
- sender: tokenManagerERC721.address
+ data: await messages.encodeTransferErc721Message(ERC721TokenOnMainnet, user.address, tokenId),
+ destinationContract: depositBoxERC721,
+ sender: tokenManagerERC721
};
}
async function sendERC721(tokenId: number) {
- await depositBoxERC721.connect(user).depositERC721(schainName, ERC721TokenOnMainnet.address, tokenId);
+ await depositBoxERC721.connect(user).depositERC721(schainName, ERC721TokenOnMainnet, tokenId);
}
async function checkBalance() {
@@ -941,13 +948,13 @@ describe("Gas calculation", () => {
}
beforeEach(async() => {
- await tokenManagerERC721.connect(schainOwner).addERC721TokenByOwner(mainnetName, ERC721TokenOnMainnet.address, ERC721TokenOnSchain.address);
- await depositBoxERC721.connect(schainOwner).addERC721TokenByOwner(schainName, ERC721TokenOnMainnet.address);
- await ERC721TokenOnMainnet.connect(user).approve(depositBoxERC721.address, 1);
- await ERC721TokenOnMainnet.connect(user).approve(depositBoxERC721.address, 2);
- await ERC721TokenOnMainnet.connect(user).approve(depositBoxERC721.address, 3);
- await ERC721TokenOnMainnet.connect(user).approve(depositBoxERC721.address, 4);
- await ERC721TokenOnMainnet.connect(user).approve(depositBoxERC721.address, 5);
+ await tokenManagerERC721.connect(schainOwner).addERC721TokenByOwner(mainnetName, ERC721TokenOnMainnet, ERC721TokenOnSchain);
+ await depositBoxERC721.connect(schainOwner).addERC721TokenByOwner(schainName, ERC721TokenOnMainnet);
+ await ERC721TokenOnMainnet.connect(user).approve(depositBoxERC721, 1);
+ await ERC721TokenOnMainnet.connect(user).approve(depositBoxERC721, 2);
+ await ERC721TokenOnMainnet.connect(user).approve(depositBoxERC721, 3);
+ await ERC721TokenOnMainnet.connect(user).approve(depositBoxERC721, 4);
+ await ERC721TokenOnMainnet.connect(user).approve(depositBoxERC721, 5);
});
afterEach(async() => {
@@ -1054,45 +1061,45 @@ describe("Gas calculation", () => {
describe("ERC1155 Token registered and approved", async() => {
- // prepare exit message of erc1155 token - await TokenManager.exitToMainERC721(ERC721TokenOnMainnet.address, tokenId, amount, {from: user});
+ // prepare exit message of erc1155 token - await TokenManager.exitToMainERC721(ERC721TokenOnMainnet, tokenId, amount, {from: user});
async function getERC1155Message(tokenId: number, amount: number) {
return {
- data: await messages.encodeTransferErc1155Message(ERC1155TokenOnMainnet.address, user.address, tokenId, amount),
- destinationContract: depositBoxERC1155.address,
- sender: tokenManagerERC1155.address
+ data: await messages.encodeTransferErc1155Message(ERC1155TokenOnMainnet, user.address, tokenId, amount),
+ destinationContract: depositBoxERC1155,
+ sender: tokenManagerERC1155
};
}
- // prepare exit batch message of erc1155 token - await TokenManager.exitToMainERC721(ERC721TokenOnMainnet.address, tokenId, amounts, {from: user});
+ // prepare exit batch message of erc1155 token - await TokenManager.exitToMainERC721(ERC721TokenOnMainnet, tokenId, amounts, {from: user});
async function getERC1155BatchMessage(tokenIds: number[], amounts: number[]) {
return {
- data: await messages.encodeTransferErc1155BatchMessage(ERC1155TokenOnMainnet.address, user.address, tokenIds, amounts),
- destinationContract: depositBoxERC1155.address,
- sender: tokenManagerERC1155.address
+ data: await messages.encodeTransferErc1155BatchMessage(ERC1155TokenOnMainnet, user.address, tokenIds, amounts),
+ destinationContract: depositBoxERC1155,
+ sender: tokenManagerERC1155
};
}
async function sendERC1155(tokenId: number, amount: number) {
- await depositBoxERC1155.connect(user).depositERC1155(schainName, ERC1155TokenOnMainnet.address, tokenId, amount);
+ await depositBoxERC1155.connect(user).depositERC1155(schainName, ERC1155TokenOnMainnet, tokenId, amount);
}
async function sendERC1155Batch(tokenIds: number[], amounts: number[]) {
- await depositBoxERC1155.connect(user).depositERC1155Batch(schainName, ERC1155TokenOnMainnet.address, tokenIds, amounts);
+ await depositBoxERC1155.connect(user).depositERC1155Batch(schainName, ERC1155TokenOnMainnet, tokenIds, amounts);
}
async function checkBalance() {
const balanceIds = await ERC1155TokenOnMainnet.balanceOfBatch([user.address, user.address, user.address, user.address, user.address], [1, 2, 3, 4, 5]);
const balanceIdsNumber: number[] = [];
balanceIds.forEach((element) => {
- balanceIdsNumber.push(BigNumber.from(element).toNumber())
+ balanceIdsNumber.push(Number(element))
});
expect(balanceIdsNumber).to.deep.equal([1, 2, 3, 4, 5]);
}
beforeEach(async() => {
- await tokenManagerERC1155.connect(schainOwner).addERC1155TokenByOwner(mainnetName, ERC1155TokenOnMainnet.address, ERC1155TokenOnSchain.address);
- await depositBoxERC1155.connect(schainOwner).addERC1155TokenByOwner(schainName, ERC1155TokenOnMainnet.address);
- await ERC1155TokenOnMainnet.connect(user).setApprovalForAll(depositBoxERC1155.address, true);
+ await tokenManagerERC1155.connect(schainOwner).addERC1155TokenByOwner(mainnetName, ERC1155TokenOnMainnet, ERC1155TokenOnSchain);
+ await depositBoxERC1155.connect(schainOwner).addERC1155TokenByOwner(schainName, ERC1155TokenOnMainnet);
+ await ERC1155TokenOnMainnet.connect(user).setApprovalForAll(depositBoxERC1155, true);
});
afterEach(async() => {
diff --git a/hardhat.config.ts b/hardhat.config.ts
index ebd01cb73..f162b3f81 100644
--- a/hardhat.config.ts
+++ b/hardhat.config.ts
@@ -1,6 +1,6 @@
import { HardhatUserConfig } from "hardhat/config";
-import "@nomiclabs/hardhat-etherscan";
-import "@nomiclabs/hardhat-waffle";
+import "@nomicfoundation/hardhat-verify";
+import "@nomicfoundation/hardhat-chai-matchers";
import "@openzeppelin/hardhat-upgrades";
import "@typechain/hardhat";
import "solidity-coverage";
diff --git a/migrations/deployMainnet.ts b/migrations/deployMainnet.ts
index db2fe6b45..6b060adf6 100644
--- a/migrations/deployMainnet.ts
+++ b/migrations/deployMainnet.ts
@@ -19,229 +19,248 @@
*/
/**
- * @file 1_migration_to_mainnet.js
+ * @file deployMainnet.ts
* @copyright SKALE Labs 2019-Present
*/
+import chalk from "chalk";
import { promises as fs } from 'fs';
-import { Interface } from "ethers/lib/utils";
+import { AddressLike, Interface } from 'ethers';
import { ethers, upgrades } from "hardhat";
-import { MessageProxyForMainnet, Linker } from "../typechain";
+import { MessageProxyForMainnet, Linker, ContractManager, CommunityPool } from "../typechain";
import { getAbi, getContractFactory, verifyProxy, getVersion } from '@skalenetwork/upgrade-tools';
import { Manifest } from "@openzeppelin/upgrades-core";
-import { SkaleABIFile } from '@skalenetwork/upgrade-tools/dist/src/types/SkaleABIFile';
+import { skaleContracts } from "@skalenetwork/skale-contracts-ethers-v6";
-export function getContractKeyInAbiFile(contract: string) {
- if (contract === "MessageProxyForMainnet") {
- return "message_proxy_mainnet";
- }
- return contract.replace(/([a-z0-9])(?=[A-Z])/g, '$1_').toLowerCase();
-}
-
-export async function getManifestFile(): Promise {
- return (await Manifest.forNetwork(ethers.provider)).file;
-}
-
-async function getContractManager() {
- const defaultFilePath = "data/skaleManagerComponents.json";
- const jsonData = JSON.parse(await fs.readFile(defaultFilePath)) as SkaleABIFile;
- try {
- const contractManagerAddress = jsonData.contract_manager_address as string;
- const contractManagerABI = jsonData.contract_manager_abi as [];
- return { address: contractManagerAddress, abi: contractManagerABI };
- } catch (e) {
- console.log(e);
- process.exit( 126 );
- }
-}
-export const contractsToDeploy = [
+export const depositBoxes = [
"DepositBoxEth",
"DepositBoxERC20",
"DepositBoxERC721",
"DepositBoxERC1155",
"DepositBoxERC721WithMetadata"
-]
+];
export const contracts = [
"MessageProxyForMainnet",
"Linker",
"CommunityPool",
- "DepositBoxEth",
- "DepositBoxERC20",
- "DepositBoxERC721",
- "DepositBoxERC1155",
- "DepositBoxERC721WithMetadata"
-]
+ ...depositBoxes
+];
-async function main() {
- const [ owner,] = await ethers.getSigners();
- const deployed = new Map();
+export function getContractKeyInAbiFile(contract: string) {
+ return contract === "MessageProxyForMainnet"
+ ? "message_proxy_mainnet"
+ : contract.replace(/([a-z0-9])(?=[A-Z])/g, '$1_').toLowerCase();
+}
+
+export async function getManifestFile(): Promise {
+ return (await Manifest.forNetwork(ethers.provider)).file;
+}
+
+async function getContractManager() {
+ const skaleManager = await getSkaleManagerInstance();
+ const contractManager = (await skaleManager.getContract("ContractManager")) as unknown as ContractManager;
+ return contractManager;
+}
+async function getLinker(): Promise {
const contractManager = await getContractManager();
- const version = await getVersion();
+ const Linker = await ethers.getContractFactory("Linker");
+ const linkerAddress = await contractManager.getContract("Linker");
+ return Linker.attach(linkerAddress) as Linker;
+}
- const messageProxyForMainnetName = "MessageProxyForMainnet";
- console.log("Deploy", messageProxyForMainnetName);
- const messageProxyForMainnetFactory = await getContractFactory(messageProxyForMainnetName);
- const messageProxyForMainnet = (
- await upgrades.deployProxy(messageProxyForMainnetFactory, [contractManager?.address], { initializer: 'initialize(address)' })
- ) as MessageProxyForMainnet;
- await messageProxyForMainnet.deployTransaction.wait();
- console.log("Proxy Contract", messageProxyForMainnetName, "deployed to", messageProxyForMainnet.address);
- deployed.set(
- messageProxyForMainnetName,
- {
- address: messageProxyForMainnet.address,
- interface: messageProxyForMainnet.interface
- }
- );
- await verifyProxy(messageProxyForMainnetName, messageProxyForMainnet.address, []);
- const extraContractRegistrarRole = await messageProxyForMainnet.EXTRA_CONTRACT_REGISTRAR_ROLE();
- await (await messageProxyForMainnet.grantRole(extraContractRegistrarRole, owner.address)).wait();
+async function getMessageProxyForMainnet(): Promise {
+ const contractManager = await getContractManager();
+ const MessageProxyForMainnet = await ethers.getContractFactory("MessageProxyForMainnet");
+ const messageProxyForMainnetAddress = await contractManager.getContract("MessageProxyForMainnet");
+ return MessageProxyForMainnet.attach(messageProxyForMainnetAddress) as MessageProxyForMainnet;
+}
+
+async function getSkaleManagerInstance() {
+ if (!process.env.SKALE_MANAGER_ADDRESS) {
+ console.log(chalk.red("Specify desired skale-manager instance"));
+ console.log(chalk.red("Set instance alias or SkaleManager address to SKALE_MANAGER_ADDRESS environment variable"));
+ process.exit(1);
+ }
+ const network = await skaleContracts.getNetworkByProvider(ethers.provider);
+ const project = network.getProject("skale-manager");
+ return await project.getInstance(process.env.SKALE_MANAGER_ADDRESS);
+}
+async function setVersion(messageProxy: MessageProxyForMainnet, version: string) {
try {
- console.log(`Set version ${version}`)
- await (await (messageProxyForMainnet as MessageProxyForMainnet).setVersion(version)).wait();
+ console.log(`Set version ${version}`);
+ await (await messageProxy.setVersion(version)).wait();
} catch {
- console.log("Failed to set ima version on mainnet");
+ console.error("Failed to set ima version on mainnet");
}
+}
+
+async function deployContract(name: string, args: string[], initializer: string) {
+ console.log("Deploy", name);
+ const factory = await getContractFactory(name);
+ const proxy = await upgrades.deployProxy(factory, args, { initializer });
+ await proxy.waitForDeployment();
+ const address = await proxy.getAddress();
+ console.log("Proxy Contract", name, "deployed to", address);
+ await verifyProxy(name, address, []);
+ return proxy;
+}
- const linkerName = "Linker";
- console.log("Deploy", linkerName);
- const linkerFactory = await getContractFactory(linkerName);
- const linker = (
- await upgrades.deployProxy(linkerFactory, [contractManager?.address, deployed.get(messageProxyForMainnetName)?.address], { initializer: 'initialize(address,address)' })
- ) as Linker;
- await linker.deployTransaction.wait();
- await (await linker.registerMainnetContract(linker.address)).wait();
- await (await messageProxyForMainnet.registerExtraContractForAll(linker.address)).wait();
- const chainConnectorRole = await messageProxyForMainnet.CHAIN_CONNECTOR_ROLE();
- await (await messageProxyForMainnet.grantRole(chainConnectorRole, linker.address)).wait();
- console.log("Proxy Contract", linkerName, "deployed to", linker.address);
- deployed.set(
- linkerName,
+async function registerContracts(linker: Linker, messageProxy: MessageProxyForMainnet, proxies: AddressLike[]) {
+ for (const proxy of proxies) {
+ await (await linker.registerMainnetContract(proxy)).wait();
+ await (await messageProxy.registerExtraContractForAll(proxy)).wait();
+ }
+}
+
+async function deployMessageProxyForMainnet(
+ deployed: Map<
+ string,
{
- address: linker.address,
- interface: linker.interface
+ address: string;
+ interface: Interface;
}
- );
- await verifyProxy(linkerName, linker.address, []);
-
- const communityPoolName = "CommunityPool";
- const communityPoolFactory = await getContractFactory(communityPoolName);
- const communityPool =
- await upgrades.deployProxy(
- communityPoolFactory,
- [
- contractManager?.address,
- deployed.get(linkerName)?.address,
- deployed.get(messageProxyForMainnetName)?.address
- ],
- {
- initializer: 'initialize(address,address,address)'
- }
- );
- await communityPool.deployTransaction.wait();
- await (await linker.registerMainnetContract(communityPool.address)).wait();
- await (await messageProxyForMainnet.registerExtraContractForAll(communityPool.address)).wait();
- await (await messageProxyForMainnet.setCommunityPool(communityPool.address)).wait();
- console.log("Proxy Contract", communityPoolName, "deployed to", communityPool.address);
- deployed.set(
- communityPoolName,
+ >
+): Promise {
+ const [owner] = await ethers.getSigners();
+ const contractManager = await getContractManager();
+ const messageProxyForMainnet = await deployContract(
+ "MessageProxyForMainnet",
+ [await contractManager.getAddress()],
+ 'initialize(address)'
+ ) as unknown as MessageProxyForMainnet;
+ await contractManager.connect(owner).setContractsAddress("MessageProxyForMainnet", messageProxyForMainnet);
+ await messageProxyForMainnet.grantRole(await messageProxyForMainnet.EXTRA_CONTRACT_REGISTRAR_ROLE(), owner.address);
+ deployed.set("MessageProxyForMainnet", {
+ address: await messageProxyForMainnet.getAddress(),
+ interface: messageProxyForMainnet.interface
+ });
+ return messageProxyForMainnet;
+}
+
+async function deployLinker(
+ deployed: Map<
+ string,
+ {
+ address: string;
+ interface: Interface;
+ }
+ >
+): Promise {
+ const [owner] = await ethers.getSigners();
+ const contractManager = await getContractManager();
+ const messageProxyForMainnet = await getMessageProxyForMainnet();
+ const linker = await deployContract(
+ "Linker",
+ [
+ await contractManager.getAddress(),
+ await messageProxyForMainnet.getAddress(),
+ ],
+ 'initialize(address,address)'
+ ) as unknown as Linker;
+ await contractManager.connect(owner).setContractsAddress("Linker", linker);
+ await messageProxyForMainnet.grantRole(await messageProxyForMainnet.CHAIN_CONNECTOR_ROLE(), linker);
+ await registerContracts(linker, messageProxyForMainnet, [linker]);
+
+ deployed.set("Linker", {
+ address: await linker.getAddress(),
+ interface: linker.interface
+ });
+ return linker;
+}
+
+async function deployCommunityPool(
+ deployed: Map<
+ string,
{
- address: communityPool.address,
- interface: communityPool.interface
+ address: string;
+ interface: Interface;
}
- );
- await verifyProxy(communityPoolName, communityPool.address, []);
-
- for (const contract of contractsToDeploy) {
- const contractFactory = await getContractFactory(contract);
- console.log("Deploy", contract);
- const proxy = await upgrades.deployProxy(
- contractFactory,
+ >
+): Promise {
+ const [owner] = await ethers.getSigners();
+ const contractManager = await getContractManager();
+ const messageProxyForMainnet = await getMessageProxyForMainnet();
+ const linker = await getLinker();
+ const communityPool = await deployContract(
+ "CommunityPool",
+ [
+ await contractManager.getAddress(),
+ await messageProxyForMainnet.getAddress(),
+ await linker.getAddress()
+ ],
+ 'initialize(address,address,address)'
+ ) as unknown as CommunityPool;
+ await contractManager.connect(owner).setContractsAddress("CommunityPool", communityPool);
+ await messageProxyForMainnet.setCommunityPool(communityPool);
+ await registerContracts(linker, messageProxyForMainnet, [communityPool]);
+
+ deployed.set("CommunityPool", {
+ address: await communityPool.getAddress(),
+ interface: communityPool.interface
+ });
+ return communityPool;
+}
+
+async function deployDepositBoxes(
+ deployed: Map<
+ string,
+ {
+ address: string;
+ interface: Interface;
+ }
+ >
+) {
+ const [owner] = await ethers.getSigners();
+ const contractManager = await getContractManager();
+ const linker = await getLinker();
+ const messageProxyForMainnet = await getMessageProxyForMainnet();
+ for (const contract of depositBoxes) {
+ const proxy = await deployContract(
+ contract,
[
- contractManager?.address,
- deployed.get(linkerName)?.address,
- deployed.get(messageProxyForMainnetName)?.address
+ await contractManager.getAddress(),
+ await linker.getAddress(),
+ await messageProxyForMainnet.getAddress()
],
- {
- initializer: 'initialize(address,address,address)'
- }
+ 'initialize(address,address,address)'
);
- await proxy.deployTransaction.wait();
- const contractName = contract;
- // // TODO: remove if - after adding tests to agent
- // if (contractName !== "DepositBoxERC1155") {
- console.log("Register", contract, "as", contractName, "=>", proxy.address);
- await (await linker.registerMainnetContract(proxy.address)).wait();
- await (await messageProxyForMainnet.registerExtraContractForAll(proxy.address)).wait();
- console.log( "Contract", contractName, "with address", proxy.address, "is registered as DepositBox in Linker" );
- deployed.set(
- contractName,
- {
- address: proxy.address,
- interface: proxy.interface
- }
- );
- await verifyProxy(contract, proxy.address, []);
+ await registerContracts(linker, messageProxyForMainnet, [proxy]);
+ await contractManager.connect(owner).setContractsAddress(contract, proxy);
+ deployed.set(contract, {
+ address: await proxy.getAddress(),
+ interface: proxy.interface
+ });
}
+}
- console.log("Store ABIs");
+async function main() {
+ const deployed = new Map();
+ const version = await getVersion();
+
+ const messageProxyForMainnet = await deployMessageProxyForMainnet(deployed);
+ await setVersion(messageProxyForMainnet, version);
- const outputObject: {[k: string]: string | []} = {};
+ await deployLinker(deployed);
+ await deployCommunityPool(deployed);
+ await deployDepositBoxes(deployed);
+
+ console.log("Store ABIs");
+ const outputObject: { [k: string]: string | [] } = {};
for (const contract of contracts) {
const contractKey = getContractKeyInAbiFile(contract);
const deployedContract = deployed.get(contract);
- if (deployedContract === undefined) {
- throw Error(`Contract ${contract} was not found`);
+ if (!deployedContract) {
+ throw new Error(`Contract ${contract} was not found`);
}
- outputObject[contractKey + "_address"] = deployedContract.address;
- outputObject[contractKey + "_abi"] = getAbi(deployedContract.interface);
+ outputObject[`${contractKey}_address`] = deployedContract.address;
+ outputObject[`${contractKey}_abi`] = getAbi(deployedContract.interface);
}
- const deployedDepositBoxERC721WithMetadata = deployed.get("DepositBoxERC721WithMetadata");
- if (deployedDepositBoxERC721WithMetadata === undefined) {
- throw new Error("DepositBoxERC721WithMetadata was not found");
- }
- outputObject[getContractKeyInAbiFile("DepositBoxERC721WithMetadata") + "_address"] = deployedDepositBoxERC721WithMetadata.address;
- outputObject[getContractKeyInAbiFile("DepositBoxERC721WithMetadata") + "_abi"] = getAbi(deployedDepositBoxERC721WithMetadata.interface);
await fs.writeFile("data/proxyMainnet.json", JSON.stringify(outputObject, null, 4));
- if( contractManager?.address !== null && contractManager?.address !== "" && contractManager?.address !== "0x0000000000000000000000000000000000000000" ) {
- // register MessageProxy in ContractManager
- if( contractManager?.abi !== undefined ) {
- if( await ethers.provider.getCode( contractManager?.address) !== "0x") {
- const contractManagerInst = new ethers.Contract(contractManager?.address, contractManager?.abi, owner);
- if (await contractManagerInst.owner() !== owner.address) {
- console.log( "Owner of ContractManager is not the same of the deployer" );
- } else {
- try {
- await contractManagerInst.setContractsAddress( "MessageProxyForMainnet", deployed.get( "MessageProxyForMainnet" )?.address);
- await contractManagerInst.setContractsAddress( "CommunityPool", deployed.get( "CommunityPool" )?.address);
- for (const contractName of contractsToDeploy) {
- const contractAddress = deployed.get(contractName);
- if (contractAddress === undefined) {
- throw new Error(`${contractName} was not found`);
- }
- await contractManagerInst.setContractsAddress( contractName, contractAddress);
- }
- console.log( "Successfully registered MessageProxy in ContractManager" );
- } catch ( error ) {
- console.log( "Registration of MessageProxy is failed on ContractManager. Please redo it by yourself!\nError:", error );
- }
- }
- } else
- console.log( "Contract Manager address is not a contract" );
-
- } else
- console.log( "Please provide an abi of ContractManager" );
-
- } else
- console.log( "Please provide an address of ContractManager" );
-
- console.log( "Registration is completed!" );
-
console.log("Done");
}
diff --git a/migrations/deploySchain.ts b/migrations/deploySchain.ts
index dcf726a16..bf0f18c83 100644
--- a/migrations/deploySchain.ts
+++ b/migrations/deploySchain.ts
@@ -19,30 +19,16 @@
*/
/**
- * @file deploySchain.js
+ * @file deploySchain.ts
* @copyright SKALE Labs 2019-Present
*/
import { promises as fs } from 'fs';
-import { Interface } from "ethers/lib/utils";
+import { Interface } from "ethers";
import { ethers, upgrades } from "hardhat";
-import hre from "hardhat";
import { getAbi, getVersion } from '@skalenetwork/upgrade-tools';
import { Manifest } from "@openzeppelin/upgrades-core";
-import { getManifestAdmin } from "@openzeppelin/hardhat-upgrades/dist/admin";
-import {
- CommunityLocker,
- EthErc20,
- KeyStorage,
- MessageProxyForSchain,
- TokenManagerERC20,
- TokenManagerERC721,
- TokenManagerEth,
- TokenManagerLinker,
- TokenManagerERC721WithMetadata,
- MessageProxyForSchainWithoutSignature
-} from '../typechain';
-import { TokenManagerERC1155 } from '../typechain';
-import { SkaleABIFile } from '@skalenetwork/upgrade-tools/dist/src/types/SkaleABIFile';
+import { MessageProxyForSchain, MessageProxyForSchainWithoutSignature } from '../typechain';
+
export function getContractKeyInAbiFile(contract: string): string {
if (contract === "MessageProxyForSchain") {
@@ -57,7 +43,7 @@ export async function getManifestFile(): Promise {
async function getProxyMainnet(contractName: string) {
const defaultFilePath = "data/proxyMainnet.json";
- const jsonData = JSON.parse(await fs.readFile(defaultFilePath)) as SkaleABIFile;
+ const jsonData: { [key: string]: string | [] } = JSON.parse(await fs.readFile(defaultFilePath, 'utf-8'));
try {
const contractAddress = jsonData[contractName] as string;
return contractAddress;
@@ -120,10 +106,10 @@ async function main() {
console.log("Deploy KeyStorage");
const keyStorageFactory = await ethers.getContractFactory("KeyStorage");
- const keyStorage = await upgrades.deployProxy(keyStorageFactory) as KeyStorage;
- await keyStorage.deployTransaction.wait();
- deployed.set( "KeyStorage", { address: keyStorage.address, interface: keyStorage.interface } );
- console.log("Contract KeyStorage deployed to", keyStorage.address);
+ const keyStorage = await upgrades.deployProxy(keyStorageFactory);
+ await keyStorage.waitForDeployment();
+ deployed.set( "KeyStorage", { address: await keyStorage.getAddress(), interface: keyStorage.interface } );
+ console.log("Contract KeyStorage deployed to", await keyStorage.getAddress());
let messageProxy: MessageProxyForSchain | MessageProxyForSchainWithoutSignature;
if( process.env.NO_SIGNATURES === "true" ) {
@@ -136,12 +122,13 @@ async function main() {
console.log("Deploy MessageProxyForSchain");
messageProxy = await upgrades.deployProxy(
await ethers.getContractFactory("MessageProxyForSchain"),
- [keyStorage.address, schainName]
- ) as MessageProxyForSchain;
+ [await keyStorage.getAddress(), schainName]
+ ) as unknown as MessageProxyForSchain;
}
- await messageProxy.deployTransaction.wait();
- deployed.set( "MessageProxyForSchain", { address: messageProxy.address, interface: messageProxy.interface } );
- console.log("Contract MessageProxyForSchain deployed to", messageProxy.address);
+ await messageProxy.waitForDeployment();
+ const messageProxyAddress = await messageProxy.getAddress();
+ deployed.set( "MessageProxyForSchain", { address: messageProxyAddress, interface: messageProxy.interface } );
+ console.log("Contract MessageProxyForSchain deployed to", messageProxyAddress);
try {
console.log(`Set version ${version}`)
@@ -152,111 +139,123 @@ async function main() {
console.log("Deploy TokenManagerLinker");
const tokenManagerLinkerFactory = await ethers.getContractFactory("TokenManagerLinker");
- const tokenManagerLinker = await upgrades.deployProxy(tokenManagerLinkerFactory, [ messageProxy.address, linkerAddress ] ) as TokenManagerLinker;
- await tokenManagerLinker.deployTransaction.wait();
- deployed.set( "TokenManagerLinker", { address: tokenManagerLinker.address, interface: tokenManagerLinker.interface } );
- console.log("Contract TokenManagerLinker deployed to", tokenManagerLinker.address);
+ const tokenManagerLinker = await upgrades.deployProxy(tokenManagerLinkerFactory, [messageProxyAddress, linkerAddress]);
+ await tokenManagerLinker.waitForDeployment();
+ deployed.set( "TokenManagerLinker", {
+ address: await tokenManagerLinker.getAddress(),
+ interface: tokenManagerLinker.interface
+ });
+ console.log("Contract TokenManagerLinker deployed to", await tokenManagerLinker.getAddress());
console.log("Deploy CommunityLocker");
const communityLockerFactory = await ethers.getContractFactory("CommunityLocker");
const communityLocker = await upgrades.deployProxy(
communityLockerFactory,
- [ schainName, messageProxy.address, tokenManagerLinker.address, communityPoolAddress ]
- ) as CommunityLocker;
- await communityLocker.deployTransaction.wait();
- deployed.set( "CommunityLocker", { address: communityLocker.address, interface: communityLocker.interface });
- console.log("Contract CommunityLocker deployed to", communityLocker.address);
+ [ schainName, messageProxyAddress, await tokenManagerLinker.getAddress(), communityPoolAddress ]
+ );
+ await communityLocker.waitForDeployment();
+ deployed.set( "CommunityLocker", { address: await communityLocker.getAddress(), interface: communityLocker.interface });
+ console.log("Contract CommunityLocker deployed to", await communityLocker.getAddress());
console.log("Deploy TokenManagerEth");
const tokenManagerEthFactory = await ethers.getContractFactory("TokenManagerEth");
const tokenManagerEth = await upgrades.deployProxy(tokenManagerEthFactory, [
schainName,
- messageProxy.address,
- tokenManagerLinker.address,
- communityLocker.address,
+ messageProxyAddress,
+ await tokenManagerLinker.getAddress(),
+ await communityLocker.getAddress(),
depositBoxEthAddress,
"0x0000000000000000000000000000000000000000"
- ]) as TokenManagerEth;
- await tokenManagerEth.deployTransaction.wait();
- deployed.set( "TokenManagerEth", { address: tokenManagerEth.address, interface: tokenManagerEth.interface } );
- console.log("Contract TokenManagerEth deployed to", tokenManagerEth.address);
+ ]);
+ await tokenManagerEth.waitForDeployment();
+ deployed.set( "TokenManagerEth", { address: await tokenManagerEth.getAddress(), interface: tokenManagerEth.interface } );
+ console.log("Contract TokenManagerEth deployed to", await tokenManagerEth.getAddress());
console.log("Deploy TokenManagerERC20");
const tokenManagerERC20Factory = await ethers.getContractFactory("TokenManagerERC20");
const tokenManagerERC20 = await upgrades.deployProxy(tokenManagerERC20Factory, [
schainName,
- messageProxy.address,
- tokenManagerLinker.address,
- communityLocker.address,
+ messageProxyAddress,
+ await tokenManagerLinker.getAddress(),
+ await communityLocker.getAddress(),
depositBoxERC20Address
- ]) as TokenManagerERC20;
- await tokenManagerERC20.deployTransaction.wait();
- deployed.set( "TokenManagerERC20", { address: tokenManagerERC20.address, interface: tokenManagerERC20.interface } );
- console.log("Contract TokenManagerERC20 deployed to", tokenManagerERC20.address);
+ ]);
+ await tokenManagerERC20.waitForDeployment();
+ deployed.set( "TokenManagerERC20", {
+ address: await tokenManagerERC20.getAddress(),
+ interface: tokenManagerERC20.interface
+ });
+ console.log("Contract TokenManagerERC20 deployed to", await tokenManagerERC20.getAddress());
console.log("Deploy TokenManagerERC721");
const tokenManagerERC721Factory = await ethers.getContractFactory("TokenManagerERC721");
const tokenManagerERC721 = await upgrades.deployProxy(tokenManagerERC721Factory, [
schainName,
- messageProxy.address,
- tokenManagerLinker.address,
- communityLocker.address,
+ messageProxyAddress,
+ await tokenManagerLinker.getAddress(),
+ await communityLocker.getAddress(),
depositBoxERC721Address
- ]) as TokenManagerERC721;
- await tokenManagerERC721.deployTransaction.wait();
- deployed.set( "TokenManagerERC721", { address: tokenManagerERC721.address, interface: tokenManagerERC721.interface } );
- console.log("Contract TokenManagerERC721 deployed to", tokenManagerERC721.address);
+ ]);
+ await tokenManagerERC721.waitForDeployment();
+ deployed.set( "TokenManagerERC721", {
+ address: await tokenManagerERC721.getAddress(),
+ interface: tokenManagerERC721.interface
+ });
+ console.log("Contract TokenManagerERC721 deployed to", await tokenManagerERC721.getAddress());
console.log("Deploy TokenManagerERC1155");
const tokenManagerERC1155Factory = await ethers.getContractFactory("TokenManagerERC1155");
const tokenManagerERC1155 = await upgrades.deployProxy(tokenManagerERC1155Factory, [
schainName,
- messageProxy.address,
- tokenManagerLinker.address,
- communityLocker.address,
+ messageProxyAddress,
+ await tokenManagerLinker.getAddress(),
+ await communityLocker.getAddress(),
depositBoxERC1155Address
- ]) as TokenManagerERC1155;
- await tokenManagerERC1155.deployTransaction.wait();
- deployed.set( "TokenManagerERC1155", { address: tokenManagerERC1155.address, interface: tokenManagerERC1155.interface } );
- console.log("Contract TokenManagerERC1155 deployed to", tokenManagerERC1155.address);
+ ]);
+ await tokenManagerERC1155.waitForDeployment();
+ deployed.set( "TokenManagerERC1155", { address: await tokenManagerERC1155.getAddress(), interface: tokenManagerERC1155.interface } );
+ console.log("Contract TokenManagerERC1155 deployed to", await tokenManagerERC1155.getAddress());
console.log("Deploy TokenManagerERC721WithMetadata");
const tokenManagerERC721WithMetadataFactory = await ethers.getContractFactory("TokenManagerERC721WithMetadata");
const tokenManagerERC721WithMetadata = await upgrades.deployProxy(tokenManagerERC721WithMetadataFactory, [
schainName,
- messageProxy.address,
- tokenManagerLinker.address,
- communityLocker.address,
+ messageProxyAddress,
+ await tokenManagerLinker.getAddress(),
+ await communityLocker.getAddress(),
depositBoxERC721WithMetadataAddress
- ]) as TokenManagerERC721WithMetadata;
- await tokenManagerERC721WithMetadata.deployTransaction.wait();
- deployed.set( "TokenManagerERC721WithMetadata", { address: tokenManagerERC721WithMetadata.address, interface: tokenManagerERC721WithMetadata.interface } );
- console.log("Contract TokenManagerERC721WithMetadata deployed to", tokenManagerERC721WithMetadata.address);
+ ]);
+ await tokenManagerERC721WithMetadata.waitForDeployment();
+ deployed.set("TokenManagerERC721WithMetadata", {
+ address: await tokenManagerERC721WithMetadata.getAddress(),
+ interface: tokenManagerERC721WithMetadata.interface
+ });
+ console.log("Contract TokenManagerERC721WithMetadata deployed to", await tokenManagerERC721WithMetadata.getAddress());
console.log("Register token managers");
- await (await tokenManagerLinker.registerTokenManager(tokenManagerEth.address)).wait();
- await (await tokenManagerLinker.registerTokenManager(tokenManagerERC20.address)).wait();
- await (await tokenManagerLinker.registerTokenManager(tokenManagerERC721.address)).wait();
- await (await tokenManagerLinker.registerTokenManager(tokenManagerERC1155.address)).wait();
- await (await tokenManagerLinker.registerTokenManager(tokenManagerERC721WithMetadata.address)).wait();
+ await (await tokenManagerLinker.registerTokenManager(await tokenManagerEth.getAddress())).wait();
+ await (await tokenManagerLinker.registerTokenManager(await tokenManagerERC20.getAddress())).wait();
+ await (await tokenManagerLinker.registerTokenManager(await tokenManagerERC721.getAddress())).wait();
+ await (await tokenManagerLinker.registerTokenManager(await tokenManagerERC1155.getAddress())).wait();
+ await (await tokenManagerLinker.registerTokenManager(await tokenManagerERC721WithMetadata.getAddress())).wait();
console.log("Deploy EthErc20");
const ethERC20Factory = await ethers.getContractFactory("EthErc20");
- const ethERC20 = await upgrades.deployProxy(ethERC20Factory, [ tokenManagerEth.address ]) as EthErc20;
- await ethERC20.deployTransaction.wait();
- deployed.set( "EthErc20", { address: ethERC20.address, interface: ethERC20.interface } );
- console.log("Contract EthErc20 deployed to", ethERC20.address);
+ const ethERC20 = await upgrades.deployProxy(ethERC20Factory, [ await tokenManagerEth.getAddress() ]);
+ await ethERC20.waitForDeployment();
+ deployed.set( "EthErc20", { address: await ethERC20.getAddress(), interface: ethERC20.interface } );
+ console.log("Contract EthErc20 deployed to", await ethERC20.getAddress());
console.log( "\nWill set dependencies!\n" );
- await tokenManagerEth.setEthErc20Address( ethERC20.address );
- console.log( "Set EthErc20 address", ethERC20.address, "in TokenManagerEth", tokenManagerEth.address, "completed!\n" );
+ await tokenManagerEth.setEthErc20Address( await ethERC20.getAddress() );
+ console.log( "Set EthErc20 address", await ethERC20.getAddress(), "in TokenManagerEth", await tokenManagerEth.getAddress(), "completed!\n" );
const chainConnectorRole = await messageProxy.CHAIN_CONNECTOR_ROLE();
- await messageProxy.grantRole( chainConnectorRole, tokenManagerLinker.address );
- console.log( "Grant CHAIN_CONNECTOR_ROLE to TokenManagerLinker", tokenManagerLinker.address, "in MessageProxyForSchain", messageProxy.address, "completed!\n" );
+ await messageProxy.grantRole( chainConnectorRole, await tokenManagerLinker.getAddress() );
+ console.log( "Grant CHAIN_CONNECTOR_ROLE to TokenManagerLinker", await tokenManagerLinker.getAddress(), "in MessageProxyForSchain", messageProxyAddress, "completed!\n" );
const constantSetterRole = await communityLocker.CONSTANT_SETTER_ROLE();
- await communityLocker.grantRole(constantSetterRole, owner.address);
+ await communityLocker.grantRole(constantSetterRole, await owner.getAddress());
console.log("Grant CONSTANT_SETTER_ROLE to owner of schain");
const extraContracts = [
@@ -268,10 +267,10 @@ async function main() {
tokenManagerERC721WithMetadata
];
const extraContractRegistrarRole = await messageProxy.EXTRA_CONTRACT_REGISTRAR_ROLE();
- await messageProxy.grantRole(extraContractRegistrarRole, owner.address);
+ await messageProxy.grantRole(extraContractRegistrarRole, await owner.getAddress());
for (const extraContract of extraContracts) {
- await messageProxy.registerExtraContractForAll(extraContract.address)
- console.log("Contract with address ", extraContract.address, "registered as extra contract");
+ await messageProxy.registerExtraContractForAll(await extraContract.getAddress())
+ console.log("Contract with address ", await extraContract.getAddress(), "registered as extra contract");
}
const jsonObjectABI: {[k: string]: string | []} = { };
@@ -299,9 +298,6 @@ async function main() {
jsonObjectABI.ERC721OnChain_abi = getAbi(erc721OnChainFactory.interface);
const erc1155OnChainFactory = await ethers.getContractFactory("ERC1155OnChain");
jsonObjectABI.ERC1155OnChain_abi = getAbi(erc1155OnChainFactory.interface);
- const proxyAdmin = await getManifestAdmin(hre);
- jsonObjectABI.proxy_admin_address = proxyAdmin.address;
- jsonObjectABI.proxy_admin_abi = getAbi(proxyAdmin.interface);
await fs.writeFile( `data/proxySchain_${schainName}.json`, JSON.stringify( jsonObjectABI ) );
console.log( `Done, check proxySchain_${schainName}.json file in data folder.` );
diff --git a/migrations/deploySkaleManagerComponents.ts b/migrations/deploySkaleManagerComponents.ts
index 8ab8fe3f2..03d148e72 100644
--- a/migrations/deploySkaleManagerComponents.ts
+++ b/migrations/deploySkaleManagerComponents.ts
@@ -24,11 +24,12 @@
*/
import { promises as fs } from 'fs';
import { ethers } from "hardhat";
-import { getAbi, getContractFactory } from '@skalenetwork/upgrade-tools';
+import { getAbi } from '@skalenetwork/upgrade-tools';
import { Manifest } from "@openzeppelin/upgrades-core";
import { KeyStorageMock } from '../typechain';
import { Wallet } from 'ethers';
-import { getPublicKey, stringKeccak256 } from '../test/utils/helper';
+import { getPublicKey } from '../test/utils/helper';
+import axios from 'axios';
export function getContractKeyInAbiFile(contract: string) {
return contract.replace(/([a-z0-9])(?=[A-Z])/g, '$1_').toLowerCase();
@@ -38,6 +39,16 @@ export async function getManifestFile(): Promise {
return (await Manifest.forNetwork(ethers.provider)).file;
}
+async function getLatestVersionOfSkaleManager(): Promise {
+ try {
+ const response = await axios.get('https://raw.githubusercontent.com/skalenetwork/skale-manager/refs/heads/stable/VERSION');
+ return response.data.trim();
+ } catch (error) {
+ console.error('Failed to fetch the latest version of SkaleManager:', error);
+ throw error;
+ }
+}
+
async function main() {
const [ owner,] = await ethers.getSigners();
@@ -57,66 +68,88 @@ async function main() {
}
const schainName = process.env.CHAIN_NAME_SCHAIN;
+ const schainHash = ethers.id(schainName);
console.log("Deploy ContractManager");
- const contractManagerFactory = await getContractFactory("ContractManager");
+ const contractManagerFactory = await ethers.getContractFactory("ContractManager");
const contractManager = await contractManagerFactory.deploy();
- console.log("Contract ContractManager deployed to", contractManager.address);
+ const contractManagerAddress = await contractManager.getAddress();
+ console.log("Contract ContractManager deployed to", contractManagerAddress);
console.log("Deploy Schains");
- const schainsFactory = await getContractFactory("Schains");
+ const schainsFactory = await ethers.getContractFactory("Schains");
const schains = await schainsFactory.deploy();
- console.log("Contract Schains deployed to", schains.address);
+ const schainsAddress = await schains.getAddress();
+ console.log("Contract Schains deployed to", schainsAddress);
console.log("Deploy SchainsInternal");
- const schainsInternalFactory = await getContractFactory("SchainsInternal");
+ const schainsInternalFactory = await ethers.getContractFactory("SchainsInternal");
const schainsInternal = await schainsInternalFactory.deploy();
- console.log("Contract SchainsInternal deployed to", schainsInternal.address);
+ const schainsInternalAddress = await schainsInternal.getAddress();
+ console.log("Contract SchainsInternal deployed to", schainsInternalAddress);
console.log("Deploy Wallets");
- const walletsFactory = await getContractFactory("Wallets");
+ const walletsFactory = await ethers.getContractFactory("Wallets");
const wallets = await walletsFactory.deploy();
- console.log("Contract Wallets deployed to", wallets.address);
+ const walletsAddress = await wallets.getAddress();
+ console.log("Contract Wallets deployed to", walletsAddress);
console.log("Deploy SkaleVerifier");
- const skaleVerifierFactory = await getContractFactory("SkaleVerifierMock");
+ const skaleVerifierFactory = await ethers.getContractFactory("SkaleVerifierMock");
const skaleVerifier = await skaleVerifierFactory.deploy();
- console.log("Contract SkaleVerifier deployed to", skaleVerifier.address);
+ const skaleVerifierAddress = await skaleVerifier.getAddress();
+ console.log("Contract SkaleVerifier deployed to", skaleVerifierAddress);
console.log("Deploy KeyStorage");
- const keyStorageFactory = await getContractFactory("KeyStorageMock");
+ const keyStorageFactory = await ethers.getContractFactory("KeyStorageMock");
const keyStorage = await keyStorageFactory.deploy() as KeyStorageMock;
- console.log("Contract KeyStorage deployed to", keyStorage.address);
+ const keyStorageAddress = await keyStorage.getAddress();
+ console.log("Contract KeyStorage deployed to", keyStorageAddress);
console.log("Deploy Nodes");
- const nodesFactory = await getContractFactory("Nodes");
+ const nodesFactory = await ethers.getContractFactory("Nodes");
const nodes = await nodesFactory.deploy();
- console.log("Contract Nodes deployed to", nodes.address);
+ const nodesAddress = await nodes.getAddress();
+ console.log("Contract Nodes deployed to", nodesAddress);
+
+ console.log("Deploy SkaleManager");
+ const skaleManagerFactory = await ethers.getContractFactory("SkaleManagerMock");
+ const skaleManager = await skaleManagerFactory.deploy(contractManager);
+ const skaleManagerAddress = await skaleManager.getAddress();
+ console.log("Contract SkaleManager deployed to", skaleManagerAddress);
console.log("Will set dependencies");
- await schains.addContractManager( contractManager.address );
- console.log("Add ContractManager address", contractManager.address, "as ContractManager to Contract Schains", schains.address, "\n");
- await schainsInternal.addContractManager( contractManager.address );
- console.log("Add ContractManager address", contractManager.address, "as ContractManager to Contract SchainsInternal", schainsInternal.address, "\n");
- await wallets.addContractManager( contractManager.address );
- console.log("Add ContractManager address", contractManager.address, "as ContractManager to Contract Wallets", wallets.address, "\n");
- await contractManager.setContractsAddress( "Schains", schains.address );
- console.log("Set Schains", schains.address, "to ContractManager", contractManager.address, "\n");
- await contractManager.setContractsAddress( "SchainsInternal", schainsInternal.address );
- console.log("Set SchainsInternal", schainsInternal.address, "to ContractManager", contractManager.address, "\n");
- await contractManager.setContractsAddress( "Wallets", wallets.address );
- console.log("Set Wallets", wallets.address, "to ContractManager", contractManager.address, "\n");
- await contractManager.setContractsAddress( "SkaleVerifier", skaleVerifier.address );
- console.log("Set SkaleVerifier", skaleVerifier.address, "to ContractManager", contractManager.address, "\n");
- await contractManager.setContractsAddress( "KeyStorage", keyStorage.address );
- console.log("Set KeyStorage", keyStorage.address, "to ContractManager", contractManager.address, "\n");
- await contractManager.setContractsAddress( "Nodes", nodes.address );
- console.log("Set Nodes", nodes.address, "to ContractManager", contractManager.address, "\n");
+ const versionOfSkaleManager = await getLatestVersionOfSkaleManager();
+
+ await skaleManager.setVersion(versionOfSkaleManager);
+ console.log("Set version", versionOfSkaleManager, "to SkaleManager", skaleManagerAddress, "\n");
+ await contractManager.setContractsAddress("ContractManager", contractManager);
+ console.log("Set ContractManager", contractManagerAddress, "to ContractManager", contractManagerAddress, "\n");
+ await schains.addContractManager(contractManager);
+ console.log("Add ContractManager address", contractManagerAddress, "as ContractManager to Contract Schains", schainsAddress, "\n");
+ await schainsInternal.addContractManager(contractManager);
+ console.log("Add ContractManager address", contractManagerAddress, "as ContractManager to Contract SchainsInternal", schainsInternalAddress, "\n");
+ await wallets.addContractManager(contractManager);
+ console.log("Add ContractManager address", contractManagerAddress, "as ContractManager to Contract Wallets", walletsAddress, "\n");
+ await contractManager.setContractsAddress("Schains", schains);
+ console.log("Set Schains", schainsAddress, "to ContractManager", contractManagerAddress, "\n");
+ await contractManager.setContractsAddress("SchainsInternal", schainsInternal);
+ console.log("Set SchainsInternal", schainsInternalAddress, "to ContractManager", contractManagerAddress, "\n");
+ await contractManager.setContractsAddress("Wallets", wallets);
+ console.log("Set Wallets", walletsAddress, "to ContractManager", contractManagerAddress, "\n");
+ await contractManager.setContractsAddress("SkaleVerifier", skaleVerifier);
+ console.log("Set SkaleVerifier", skaleVerifierAddress, "to ContractManager", contractManagerAddress, "\n");
+ await contractManager.setContractsAddress("KeyStorage", keyStorage);
+ console.log("Set KeyStorage", keyStorageAddress, "to ContractManager", contractManagerAddress, "\n");
+ await contractManager.setContractsAddress("Nodes", nodes);
+ console.log("Set Nodes", nodesAddress, "to ContractManager", contractManagerAddress, "\n");
+ await contractManager.setContractsAddress("SkaleManager", skaleManager);
+ console.log("Set SkaleManager", skaleManagerAddress, "to ContractManager", contractManagerAddress, "\n");
const nodeAddress1 = new Wallet(process.env.PRIVATE_KEY_FOR_ETHEREUM).connect(ethers.provider);
const nodeAddress2 = new Wallet(process.env.PRIVATE_KEY_FOR_SCHAIN).connect(ethers.provider);
- await owner.sendTransaction({to: nodeAddress1.address, value: ethers.utils.parseEther("1")});
- await owner.sendTransaction({to: nodeAddress2.address, value: ethers.utils.parseEther("1")});
+ await owner.sendTransaction({to: nodeAddress1.address, value: ethers.parseEther("1")});
+ await owner.sendTransaction({to: nodeAddress2.address, value: ethers.parseEther("1")});
const nodeCreationParams1 = {
port: 1337,
@@ -142,7 +175,7 @@ async function main() {
console.log("Create Node 1 with address", nodeAddress2.address, "\n");
await schainsInternal.initializeSchain( schainName, owner.address, 1, 1 );
console.log("Initialize Schain", schainName, "with address", owner.address, "\n");
- await schainsInternal.connect(owner).addNodesToSchainsGroups(ethers.utils.id(schainName), [0, 1]);
+ await schainsInternal.connect(owner).addNodesToSchainsGroups(ethers.id(schainName), [0, 1]);
console.log("Add Nodes 0 and 1 to schain", schainName, "\n");
const BLSPublicKey = {
x: {
@@ -154,20 +187,22 @@ async function main() {
b: "14411459380456065006136894392078433460802915485975038137226267466736619639091"
}
};
- await keyStorage.setBlsCommonPublicKeyForSchain( stringKeccak256(schainName), BLSPublicKey );
- console.log("Set common public key in KeyStorage contract", keyStorage.address, "\n");
- await wallets.rechargeSchainWallet( stringKeccak256(schainName), { value: "10000000000000000000" } ); // originally it was 1000000000000000000 = 1ETH
- console.log("Recharge schain wallet in Wallets contract", wallets.address, "\n");
+ await keyStorage.setBlsCommonPublicKeyForSchain(schainHash, BLSPublicKey );
+ console.log("Set common public key in KeyStorage contract", keyStorageAddress, "\n");
+ await wallets.rechargeSchainWallet(schainHash, { value: "10000000000000000000" } ); // originally it was 1000000000000000000 = 1ETH
+ console.log("Recharge schain wallet in Wallets contract", walletsAddress, "\n");
const jsonObject = {
- contract_manager_address: contractManager.address,
+ contract_manager_address: contractManagerAddress,
contract_manager_abi: getAbi(contractManager.interface),
- schains_internal_address: schainsInternal.address,
+ schains_internal_address: schainsInternalAddress,
schains_internal_abi: getAbi(schainsInternal.interface),
- key_storage_address: keyStorage.address,
+ key_storage_address: keyStorageAddress,
key_storage_abi: getAbi(keyStorage.interface),
- wallets_address: wallets.address,
- wallets_abi: getAbi(wallets.interface)
+ wallets_address: walletsAddress,
+ wallets_abi: getAbi(wallets.interface),
+ skale_manager_address: skaleManagerAddress,
+ skale_manager_abi: getAbi(skaleManager.interface),
};
await fs.writeFile( "data/skaleManagerComponents.json", JSON.stringify( jsonObject ) );
diff --git a/migrations/generateManifest.ts b/migrations/generateManifest.ts
index 08cd6f346..4506cf827 100644
--- a/migrations/generateManifest.ts
+++ b/migrations/generateManifest.ts
@@ -135,7 +135,7 @@ export async function importAddresses(manifest: ManifestData, abi: {[ key in str
export async function manifestSetup(pathToManifest: string) {
const chainId = (await ethers.provider.getNetwork()).chainId;
- const manifestName = networkNames[chainId] ?? `unknown-${chainId}`;
+ const manifestName = networkNames[Number(chainId)] ?? `unknown-${chainId}`;
const correctManifestPath = `.openzeppelin/${manifestName}.json`;
if (pathToManifest === "" || pathToManifest === correctManifestPath) {
await fs.access(correctManifestPath);
@@ -148,12 +148,12 @@ export async function manifestSetup(pathToManifest: string) {
try {
await fs.unlink(correctManifestPath);
console.log("Current Manifest file removed");
- } catch (e) {
- console.log("Could not remove current manifest file");
+ } catch {
+ console.error("Could not remove current manifest file");
process.exit(1);
}
- } catch (e) {
- console.log("No current Manifest file detected");
+ } catch {
+ console.error("No current Manifest file detected");
}
try {
await fs.access( pathToManifest );
@@ -161,12 +161,12 @@ export async function manifestSetup(pathToManifest: string) {
try {
await fs.copyFile( pathToManifest, correctManifestPath );
console.log("New Manifest file setup");
- } catch (e) {
- console.log("Could not setup new Manifest file");
+ } catch {
+ console.error("Could not setup new Manifest file");
process.exit(1);
}
- } catch (e) {
- console.log("No new Manifest file detected");
+ } catch {
+ console.error("No new Manifest file detected");
process.exit(1);
}
}
diff --git a/migrations/hotfixUpgrade.ts b/migrations/hotfixUpgrade.ts
index 9b7f5ec16..abff0c071 100644
--- a/migrations/hotfixUpgrade.ts
+++ b/migrations/hotfixUpgrade.ts
@@ -52,15 +52,15 @@ async function main() {
const newImplementation = await (
await ethers.getContractFactory("MessageProxyForSchain")
).deploy();
- await newImplementation.deployTransaction.wait();
- console.log(`Deployed on address ${newImplementation.address}`)
+ await newImplementation.waitForDeployment();
+ console.log(`Deployed on address ${await newImplementation.getAddress()}`)
console.log("Upgrade a proxy");
const proxyAdmin = (new ethers.Contract(proxyAdminAddress, ProxyAdminArtifacts.abi, ethers.provider))
.connect((await ethers.getSigners())[0]) as ProxyAdmin;
- const upgradeTransaction = await proxyAdmin.upgrade(messageProxyAddress, newImplementation.address);
+ const upgradeTransaction = await proxyAdmin.upgrade(messageProxyAddress, await newImplementation.getAddress());
const receipt = await upgradeTransaction.wait();
- if (receipt.status === 1) {
+ if (receipt?.status === 1) {
console.log("Successfully upgraded");
} else {
console.log("Something went wrong");
diff --git a/migrations/submitTransactions.ts b/migrations/submitTransactions.ts
index 194fe30b1..15aa7bac7 100644
--- a/migrations/submitTransactions.ts
+++ b/migrations/submitTransactions.ts
@@ -1,12 +1,13 @@
import { createMultiSendTransaction } from "@skalenetwork/upgrade-tools";
import { promises as fs } from "fs";
-import { UnsignedTransaction } from "ethers";
+import { Transaction } from "ethers";
async function main() {
if (!process.env.TRANSACTIONS || !process.env.SAFE) {
console.log("Example of usage:");
console.log("SAFE=0x13fD1622F0E7e50A87B79cb296cbAf18362631C0",
"TRANSACTIONS=data/transactions-1.8.0-mainnet.json",
+ "CHAIN_ID=1",
"npx hardhat run migrations/submitTransactions.ts --network mainnet");
process.exit(1);
}
@@ -14,15 +15,19 @@ async function main() {
console.log("Private key is not set");
process.exit(1);
}
-
+ if (!process.env.CHAIN_ID) {
+ console.log("Chain ID is not set");
+ process.exit(1);
+ }
+ const chainId = BigInt(process.env.CHAIN_ID);
const safe = process.env.SAFE;
let privateKey = process.env.PRIVATE_KEY;
if (!privateKey.startsWith("0x")) {
privateKey = "0x" + privateKey;
}
- const safeTransactions = JSON.parse(await fs.readFile(process.env.TRANSACTIONS, "utf-8")) as UnsignedTransaction[];
+ const safeTransactions = JSON.parse(await fs.readFile(process.env.TRANSACTIONS, "utf-8")) as Transaction[];
- await createMultiSendTransaction(safe, safeTransactions);
+ await createMultiSendTransaction(safe, chainId, safeTransactions);
console.log("Done");
}
diff --git a/migrations/transferOwnership.ts b/migrations/transferOwnership.ts
index c7010cb2d..62591b64d 100644
--- a/migrations/transferOwnership.ts
+++ b/migrations/transferOwnership.ts
@@ -1,10 +1,9 @@
import { contracts, getContractKeyInAbiFile } from "./deployMainnet";
import { ethers } from "hardhat";
-import hre from "hardhat";
import { promises as fs } from "fs";
-import { getManifestAdmin } from "@openzeppelin/hardhat-upgrades/dist/admin";
+import {getAdminAddress } from '@openzeppelin/upgrades-core';
import chalk from "chalk";
-import { SafeMock } from "../typechain";
+import { AccessControlEnumerableUpgradeable, SafeMock } from "../typechain";
function stringValue(value: string | undefined) {
if (value) {
@@ -14,6 +13,13 @@ function stringValue(value: string | undefined) {
}
}
+async function getProxyAdmin(proxyAdminAddress: string) {
+ const abi = [
+ "function owner() view returns (address)"
+ ];
+ return new ethers.Contract(proxyAdminAddress, abi, ethers.provider);
+ }
+
export async function transferOwnership(contractNamesToTransfer: string[])
{
if (!process.env.ABI) {
@@ -25,7 +31,9 @@ export async function transferOwnership(contractNamesToTransfer: string[])
const newOwner = stringValue(process.env.NEW_OWNER);
const abi = JSON.parse(await fs.readFile(abiFilename, "utf-8"));
- const proxyAdmin = await getManifestAdmin(hre);
+ const addressOfAnyContract = abi[getContractKeyInAbiFile(contractNamesToTransfer[0]) + "_address"];
+ const proxyAdminAddress = await getAdminAddress(ethers.provider, addressOfAnyContract);
+ const proxyAdmin = await getProxyAdmin(proxyAdminAddress);
const [ deployer ] = await ethers.getSigners();
@@ -42,7 +50,7 @@ export async function transferOwnership(contractNamesToTransfer: string[])
const contractFactory = await ethers.getContractFactory(contractName);
const _contract = contractName;
const contractAddress = abi[getContractKeyInAbiFile(_contract) + "_address"];
- const contract = contractFactory.attach(contractAddress);
+ const contract = contractFactory.attach(contractAddress) as AccessControlEnumerableUpgradeable;
console.log(chalk.blue(`Grant access to ${contractName}`));
await (await contract.grantRole(await contract.DEFAULT_ADMIN_ROLE(), newOwner)).wait();
}
@@ -51,7 +59,7 @@ export async function transferOwnership(contractNamesToTransfer: string[])
const contractFactory = await ethers.getContractFactory(contractName);
const _contract = contractName;
const contractAddress = abi[getContractKeyInAbiFile(_contract) + "_address"];
- const contract = contractFactory.attach(contractAddress);
+ const contract = contractFactory.attach(contractAddress) as AccessControlEnumerableUpgradeable;
console.log(chalk.blue(`Revoke role on ${contractName}`));
await (await contract.revokeRole(await contract.DEFAULT_ADMIN_ROLE(), deployer.address)).wait();
}
@@ -59,8 +67,8 @@ export async function transferOwnership(contractNamesToTransfer: string[])
const safeMockFactory = await ethers.getContractFactory("SafeMock");
const safeMock = await safeMockFactory.attach(adminOwner) as SafeMock;
try {
- await (await safeMock.transferProxyAdminOwnership(proxyAdmin.address, deployer.address)).wait();
- } catch (e) {
+ await (await safeMock.transferProxyAdminOwnership(await proxyAdmin.getAddress(), deployer.address)).wait();
+ } catch {
console.log(chalk.red("Could not run transferProxyAdminOwnership in SafeMock"));
process.exit(1);
}
diff --git a/migrations/upgradeMainnet.ts b/migrations/upgradeMainnet.ts
index 0dad5177a..226646d10 100644
--- a/migrations/upgradeMainnet.ts
+++ b/migrations/upgradeMainnet.ts
@@ -1,30 +1,44 @@
import chalk from "chalk";
import { ethers } from "hardhat";
-import { promises as fs } from "fs";
-import { AutoSubmitter, Upgrader } from "@skalenetwork/upgrade-tools";
-import { SkaleABIFile } from "@skalenetwork/upgrade-tools/dist/src/types/SkaleABIFile";
-import { contracts, contractsToDeploy, getContractKeyInAbiFile } from "./deployMainnet";
+import { promises as fs } from 'fs';
+import { Interface, Transaction } from "ethers";
+import { getAbi, getVersion, Submitter, Upgrader } from "@skalenetwork/upgrade-tools";
+import { skaleContracts, Instance } from "@skalenetwork/skale-contracts-ethers-v6";
import { MessageProxyForMainnet } from "../typechain";
-import { Interface } from "@ethersproject/abi";
+import { contracts, getContractKeyInAbiFile } from "./deployMainnet";
+async function getImaMainnetInstance() {
+ if (!process.env.TARGET) {
+ console.log(chalk.red("Specify desired mainnet-ima instance"));
+ console.log(chalk.red("Set instance alias or MessageProxyForMainnet address to TARGET environment variable"));
+ process.exit(1);
+ }
+ const network = await skaleContracts.getNetworkByProvider(ethers.provider);
+ const project = network.getProject("mainnet-ima");
+ return await project.getInstance(process.env.TARGET);
+}
+
class ImaMainnetUpgrader extends Upgrader {
constructor(
targetVersion: string,
- abi: SkaleABIFile,
+ instance: Instance,
contractNamesToUpgrade: string[],
- submitter = new AutoSubmitter()) {
+ submitter?: Submitter) {
super(
- "proxyMainnet",
- targetVersion,
- abi,
- contractNamesToUpgrade,
- submitter);
+ {
+ contractNamesToUpgrade,
+ instance,
+ name: "proxyMainnet",
+ version: targetVersion,
+ },
+ submitter
+ );
}
- async getMessageProxyForMainnet() {
- return await ethers.getContractAt("MessageProxyForMainnet", this.abi.message_proxy_mainnet_address as string) as MessageProxyForMainnet;
+ getMessageProxyForMainnet = async () => {
+ return await this.instance.getContract("MessageProxyForMainnet") as MessageProxyForMainnet;
}
getDeployedVersion = async () => {
@@ -38,10 +52,10 @@ class ImaMainnetUpgrader extends Upgrader {
setVersion = async (newVersion: string) => {
const messageProxyForMainnet = await this.getMessageProxyForMainnet();
- this.transactions.push({
- to: messageProxyForMainnet.address,
+ this.transactions.push(Transaction.from({
+ to: await messageProxyForMainnet.getAddress(),
data: messageProxyForMainnet.interface.encodeFunctionData("setVersion", [newVersion])
- });
+ }));
}
// deployNewContracts = () => { };
@@ -89,22 +103,22 @@ class ImaMainnetUpgrader extends Upgrader {
contractManagerInterface,
ethers.provider
)
- for (const contractName of contractsToDeploy) {
+ for (const contractName of contracts) {
try {
const contractAddress = await contractManager.getContract(contractName);
console.log(`Address of ${contractName} is set to ${contractAddress}`);
} catch {
// getContract failed because the contract is not set
- const contractAddress = this.abi[`${getContractKeyInAbiFile(contractName)}_address`] as string;
- this.transactions.push(
+ const contractAddress = await this.instance.getContract(contractName);
+ this.transactions.push(Transaction.from(
{
- to: contractManager.address,
+ to: await contractManager.getAddress(),
data: contractManager.interface.encodeFunctionData(
"setContractsAddress",
[contractAddress]
)
}
- )
+ ))
console.log(`Set ${contractName} address to ${contractAddress}`);
}
}
@@ -118,22 +132,32 @@ class ImaMainnetUpgrader extends Upgrader {
}
}
-async function getImaMainnetAbiAndAddress(): Promise {
+async function updateAbi() {
if (!process.env.ABI) {
console.log(chalk.red("Set path to file with ABI and addresses to ABI environment variables"));
process.exit(1);
}
+ const network = await ethers.provider.getNetwork();
+ const version = await getVersion();
const abiFilename = process.env.ABI;
- return JSON.parse(await fs.readFile(abiFilename, "utf-8"));
+ const abi = JSON.parse(await fs.readFile(abiFilename, "utf-8"));
+ for (const contract of contracts) {
+ const contractInterface = (await ethers.getContractFactory(contract)).interface;
+ abi[getContractKeyInAbiFile(contract) + "_abi"] = getAbi(contractInterface);
+ }
+ const newAbiFilename = `mainnet-ima-${version}-${network.name}.json`;
+ await fs.writeFile(newAbiFilename, JSON.stringify(abi, null, 4));
+ console.log(chalk.green(`ABI updated and saved to ${newAbiFilename}`));
}
async function main() {
const upgrader = new ImaMainnetUpgrader(
"2.1.0",
- await getImaMainnetAbiAndAddress(),
+ await getImaMainnetInstance(),
contracts
);
await upgrader.upgrade();
+ await updateAbi();
}
if (require.main === module) {
diff --git a/migrations/upgradeSchain.ts b/migrations/upgradeSchain.ts
index 3c446c1fe..57f8ea942 100644
--- a/migrations/upgradeSchain.ts
+++ b/migrations/upgradeSchain.ts
@@ -1,29 +1,45 @@
import chalk from "chalk";
import { ethers } from "hardhat";
import { promises as fs } from "fs";
-import { AutoSubmitter, Upgrader } from "@skalenetwork/upgrade-tools";
-import { SkaleABIFile } from "@skalenetwork/upgrade-tools/dist/src/types/SkaleABIFile";
-import { contracts } from "./deploySchain";
+import { Transaction } from "ethers";
+import { getAbi, getVersion, Submitter, Upgrader } from "@skalenetwork/upgrade-tools";
+import { skaleContracts, Instance } from "@skalenetwork/skale-contracts-ethers-v6";
+import { contracts, getContractKeyInAbiFile } from "./deploySchain";
import { manifestSetup } from "./generateManifest";
import { MessageProxyForSchain } from "../typechain";
+
+async function getImaSchainInstance() {
+ if (!process.env.TARGET) {
+ console.log(chalk.red("Specify desired schain-ima instance"));
+ console.log(chalk.red("Set instance alias or MessageProxyForSchain address to TARGET environment variable"));
+ process.exit(1);
+ }
+ const network = await skaleContracts.getNetworkByProvider(ethers.provider);
+ const project = network.getProject("schain-ima");
+ return await project.getInstance(process.env.TARGET);
+}
class ImaSchainUpgrader extends Upgrader {
constructor(
targetVersion: string,
- abi: SkaleABIFile,
+ instance: Instance,
contractNamesToUpgrade: string[],
- submitter = new AutoSubmitter()) {
+ submitter?: Submitter) {
super(
- "proxySchain",
- targetVersion,
- abi,
- contractNamesToUpgrade,
- submitter);
+ {
+ contractNamesToUpgrade,
+ instance,
+ name: "proxySchain",
+ version: targetVersion,
+ },
+ submitter
+ );
}
async getMessageProxyForSchain() {
- return await ethers.getContractAt("MessageProxyForSchain", this.abi.message_proxy_chain_address as string) as MessageProxyForSchain;
+ return await this.instance.getContract("MessageProxyForSchain") as MessageProxyForSchain;
+
}
getDeployedVersion = async () => {
@@ -37,10 +53,10 @@ class ImaSchainUpgrader extends Upgrader {
setVersion = async (newVersion: string) => {
const messageProxyForSchain = await this.getMessageProxyForSchain();
- this.transactions.push({
- to: messageProxyForSchain.address,
+ this.transactions.push(Transaction.from({
+ to: await messageProxyForSchain.getAddress(),
data: messageProxyForSchain.interface.encodeFunctionData("setVersion", [newVersion])
- });
+ }));
}
// deployNewContracts = () => { };
@@ -55,13 +71,22 @@ class ImaSchainUpgrader extends Upgrader {
}
}
-async function getImaSchainAbiAndAddress(): Promise {
+async function updateAbi(contracts: string[]) {
if (!process.env.ABI) {
console.log(chalk.red("Set path to file with ABI and addresses to ABI environment variables"));
process.exit(1);
}
+ const network = await ethers.provider.getNetwork();
+ const version = await getVersion();
const abiFilename = process.env.ABI;
- return JSON.parse(await fs.readFile(abiFilename, "utf-8"));
+ const abi = JSON.parse(await fs.readFile(abiFilename, "utf-8"));
+ for (const contract of contracts) {
+ const contractInterface = (await ethers.getContractFactory(contract)).interface;
+ abi[getContractKeyInAbiFile(contract) + "_abi"] = getAbi(contractInterface);
+ }
+ const newAbiFilename = `schain-ima-${version}-${network.name}.json`;
+ await fs.writeFile(newAbiFilename, JSON.stringify(abi, null, 4));
+ console.log(chalk.green(`ABI updated and saved to ${newAbiFilename}`));
}
async function main() {
@@ -69,10 +94,11 @@ async function main() {
await manifestSetup(pathToManifest);
const upgrader = new ImaSchainUpgrader(
"2.1.0",
- await getImaSchainAbiAndAddress(),
+ await getImaSchainInstance(),
contracts
);
await upgrader.upgrade();
+ updateAbi(contracts);
}
if (require.main === module) {
diff --git a/package.json b/package.json
index c5fd351ac..173b16fdd 100644
--- a/package.json
+++ b/package.json
@@ -7,8 +7,8 @@
"compile": "npx hardhat compile",
"cleanCompile": "npx hardhat clean && yarn compile",
"deploy-to-both-chains": "yarn deploy-to-mainnet && yarn deploy-to-schain",
- "deploy-to-mainnet": "VERSION=$(cat ../VERSION) npx hardhat run migrations/deployMainnet.ts --network mainnet",
- "deploy-to-schain": "VERSION=$(cat ../VERSION) npx hardhat run migrations/deploySchain.ts --network schain",
+ "deploy-to-mainnet": "VERSION=$(cat ./VERSION) npx hardhat run migrations/deployMainnet.ts --network mainnet",
+ "deploy-to-schain": "VERSION=$(cat ./VERSION) npx hardhat run migrations/deploySchain.ts --network schain",
"deploy-skale-manager-components": "npx hardhat run migrations/deploySkaleManagerComponents.ts --network mainnet",
"eslint": "npx eslint .",
"lint": "npx solhint \"contracts/**/*.sol\"",
@@ -21,23 +21,24 @@
"no-hooks": "git config core.hooksPath .git/hooks"
},
"dependencies": {
- "@nomiclabs/hardhat-ethers": "^2.1.0",
+ "@nomicfoundation/hardhat-ethers": "^3.0.8",
"@openzeppelin/contracts-upgradeable": "^4.7.1",
- "@openzeppelin/hardhat-upgrades": "^1.14.0",
+ "@openzeppelin/hardhat-upgrades": "^3.1.1",
+ "@safe-global/api-kit": "2.5.4",
"@skalenetwork/etherbase-interfaces": "^0.0.1-develop.20",
"@skalenetwork/ima-interfaces": "2.0.0",
"@skalenetwork/skale-manager-interfaces": "2.0.0",
- "@skalenetwork/upgrade-tools": "^2.0.2",
+ "@skalenetwork/upgrade-tools": "3.0.0-develop.34",
"axios": "^0.21.4",
"dotenv": "^16.0.0",
- "ethers": "^5.7.2",
- "hardhat": "2.11.0 - 2.16.1"
+ "ethers": "^6.1.0",
+ "hardhat": "^2.22.15"
},
"devDependencies": {
- "@nomiclabs/hardhat-etherscan": "^3.1.0",
- "@nomiclabs/hardhat-waffle": "^2.0.2",
- "@typechain/ethers-v5": "^11.1.1",
- "@typechain/hardhat": "^7.0.0",
+ "@nomicfoundation/hardhat-chai-matchers": "^2.0.8",
+ "@nomicfoundation/hardhat-verify": "^1.1.1",
+ "@typechain/ethers-v6": "^0.5.1",
+ "@typechain/hardhat": "^9.1.0",
"@types/chai": "^4.2.12",
"@types/chai-almost": "^1.0.1",
"@types/chai-as-promised": "^7.1.3",
@@ -45,14 +46,13 @@
"@types/minimist": "^1.2.0",
"@types/mocha": "^9.1.0",
"@types/sinon-chai": "^3.2.5",
- "@typescript-eslint/eslint-plugin": "^6.2.1",
- "@typescript-eslint/parser": "^6.2.1",
+ "@typescript-eslint/eslint-plugin": "^8.14.0",
+ "@typescript-eslint/parser": "^8.14.0",
"chai": "^4.2.0",
"chai-almost": "^1.0.1",
"chai-as-promised": "^7.1.1",
"cspell": "^8.14.4",
"eslint": "^8.46.0",
- "ethereum-waffle": "^4.0.10",
"ganache": "7.9.2",
"solhint": "3.3.6",
"solidity-coverage": "^0.8.4",
diff --git a/scripts/test_deploy.sh b/scripts/test_deploy.sh
index 25d88d5e1..b232f2c4a 100755
--- a/scripts/test_deploy.sh
+++ b/scripts/test_deploy.sh
@@ -2,6 +2,8 @@
set -e
+trap 'npx ganache instances stop "$GANACHE"' EXIT
+
ACCOUNTS=accounts.json
GANACHE=$(npx ganache \
--😈 \
@@ -15,6 +17,7 @@ export PRIVATE_KEY_FOR_ETHEREUM=$PRIVATE_KEY
export PRIVATE_KEY_FOR_SCHAIN=$PRIVATE_KEY
yarn deploy-skale-manager-components
+export SKALE_MANAGER_ADDRESS=$(cat data/skaleManagerComponents.json | jq -r .skale_manager_address)
yarn deploy-to-both-chains
npx ganache instances stop "$GANACHE"
diff --git a/scripts/test_upgrade.sh b/scripts/test_upgrade.sh
index bfe5d9f78..8442ef58c 100755
--- a/scripts/test_upgrade.sh
+++ b/scripts/test_upgrade.sh
@@ -2,9 +2,11 @@
set -e
+trap 'npx ganache instances stop "$GANACHE"' EXIT
+
if [ -z "$GITHUB_WORKSPACE" ]
then
- GITHUB_WORKSPACE="$(dirname "$(dirname "$(dirname "$(realpath "$0")")")")"
+ GITHUB_WORKSPACE=$(git rev-parse --show-toplevel)
fi
if [ -z "$GITHUB_REPOSITORY" ]
@@ -41,7 +43,12 @@ VERSION="$DEPLOYED_VERSION" \
PRIVATE_KEY_FOR_ETHEREUM="$PRIVATE_KEY_FOR_ETHEREUM" \
PRIVATE_KEY_FOR_SCHAIN="$PRIVATE_KEY_FOR_SCHAIN" \
npx hardhat run migrations/deploySkaleManagerComponents.ts --network localhost
-VERSION="$DEPLOYED_VERSION" npx hardhat run migrations/deployMainnet.ts --network localhost
+# TODO: remove this line after upgrading to 2.2.0
+perl -0777 -i -pe 's/await contractManagerInst\.setContractsAddress\( "MessageProxyForMainnet",[^\}]*console\.log\( "Successfully registered MessageProxy in ContractManager" \);/await contractManagerInst.setContractsAddress( "MessageProxyForMainnet", deployed.get( "MessageProxyForMainnet" )?.address);\nawait contractManagerInst.setContractsAddress( "CommunityPool", deployed.get( "CommunityPool" )?.address);\nawait contractManagerInst.setContractsAddress( "Linker", deployed.get( "Linker" )?.address);\nfor (const contractName of contractsToDeploy) {\n const contract = deployed.get(contractName);\n if (contract === undefined) {\n throw new Error(`\${contractName} was not found`);\n }\n await contractManagerInst.setContractsAddress( contractName, contract.address);\n}\nconsole.log( "Successfully registered MessageProxy in ContractManager" );/s' migrations/deployMainnet.ts
+# end of TODO
+SKALE_MANAGER=$(cat data/skaleManagerComponents.json | jq -r .skale_manager_address)
+VERSION="$DEPLOYED_VERSION" TARGET=$SKALE_MANAGER npx hardhat run migrations/deployMainnet.ts --network localhost
+
CHAIN_NAME_SCHAIN="Test" \
VERSION="$DEPLOYED_VERSION" \
@@ -57,30 +64,34 @@ npx hardhat run migrations/changeManifest.ts --network localhost
cp .openzeppelin/unknown-*.json "$GITHUB_WORKSPACE/.openzeppelin"
cp ./data/skaleManagerComponents.json "$GITHUB_WORKSPACE/data/"
+cp "data/proxyMainnet.json" "$GITHUB_WORKSPACE/data"
cp "./data/ima-schain-$DEPLOYED_VERSION-manifest.json" "$GITHUB_WORKSPACE/data/"
-ABI_FILENAME_MAINNET="proxyMainnet.json"
-cp "data/$ABI_FILENAME_MAINNET" "$GITHUB_WORKSPACE/data"
cp "data/$ABI_FILENAME_SCHAIN" "$GITHUB_WORKSPACE/data"
cd "$GITHUB_WORKSPACE"
rm -r --interactive=never "$DEPLOYED_DIR"
-ABI="data/$ABI_FILENAME_MAINNET" \
+MESSAGE_PROXY_FOR_MAINNET=$(cat data/proxyMainnet.json | jq -r .message_proxy_mainnet_address)
TEST_UPGRADE=true \
+ABI="data/proxyMainnet.json" \
+TARGET="$MESSAGE_PROXY_FOR_MAINNET" \
ALLOW_NOT_ATOMIC_UPGRADE="OK" \
VERSION=$VERSION_TAG \
npx hardhat run migrations/upgradeMainnet.ts --network localhost
VERSION="$(git describe --tags | echo "$VERSION_TAG")"
echo "$VERSION"
-mv "data/proxyMainnet-$VERSION-localhost-abi.json" "data/proxyMainnet.json"
-ABI="data/$ABI_FILENAME_SCHAIN" \
-MANIFEST="data/ima-schain-$DEPLOYED_VERSION-manifest.json" \
-CHAIN_NAME_SCHAIN="Test" \
-ALLOW_NOT_ATOMIC_UPGRADE="OK" \
-VERSION=$VERSION_TAG \
-URL_W3_S_CHAIN="$URL_W3_S_CHAIN" \
-PRIVATE_KEY_FOR_SCHAIN="$PRIVATE_KEY_FOR_SCHAIN" \
-npx hardhat run migrations/upgradeSchain.ts --network schain
+MESSAGE_PROXY_FOR_SCHAIN=$(cat data/$ABI_FILENAME_SCHAIN | jq -r .message_proxy_chain_address)
+
+# TODO: uncomment upgrade schain test after fixing the issue related to skale-contracts
+# ABI="data/$ABI_FILENAME_SCHAIN" \
+# MANIFEST="data/ima-schain-$DEPLOYED_VERSION-manifest.json" \
+# CHAIN_NAME_SCHAIN="Test" \
+# ALLOW_NOT_ATOMIC_UPGRADE="OK" \
+# TARGET="$MESSAGE_PROXY_FOR_SCHAIN" \
+# VERSION=$VERSION_TAG \
+# URL_W3_S_CHAIN="$URL_W3_S_CHAIN" \
+# PRIVATE_KEY_FOR_SCHAIN="$PRIVATE_KEY_FOR_SCHAIN" \
+# npx hardhat run migrations/upgradeSchain.ts --network schain
npx ganache instances stop "$GANACHE"
diff --git a/test-tokens/hardhat.config.ts b/test-tokens/hardhat.config.ts
index 324f05be1..52dee95e6 100644
--- a/test-tokens/hardhat.config.ts
+++ b/test-tokens/hardhat.config.ts
@@ -37,7 +37,7 @@ function validateInteger( value, radix ) {
( !isNaN( parseInt( value, radix ) ) )
)
return true;
- } catch ( err ) {
+ } catch {
return false;
}
}
@@ -48,7 +48,7 @@ function toInteger( value, radix ) {
if( !validateInteger( value, radix ) )
return NaN;
return parseInt( value, radix );
- } catch ( err ) {
+ } catch {
return false;
}
}
@@ -77,7 +77,7 @@ function verifyArgumentIsArrayOfIntegers( joArg ) {
newValue[index] = toInteger( newValue[index], undefined );
}
return newValue;
- } catch ( err ) {
+ } catch {
console.log( "(OWASP) CRITICAL ERROR: value " + joArg.value + " of argument " + joArg.name + " must be valid integer array" );
process.exit( 126 );
}
diff --git a/test/CommunityLocker.ts b/test/CommunityLocker.ts
index 4725e9be0..0a88dfd22 100644
--- a/test/CommunityLocker.ts
+++ b/test/CommunityLocker.ts
@@ -24,14 +24,13 @@
*/
import chaiAsPromised from "chai-as-promised";
-import chai = require("chai");
+import chai from "chai";
import {
CommunityLocker,
MessageProxyForSchainWithoutSignature,
MessagesTester,
TokenManagerLinker,
} from "../typechain";
-import { stringKeccak256 } from "./utils/helper";
chai.should();
chai.use(chaiAsPromised);
@@ -40,11 +39,11 @@ import { deployMessages } from "./utils/deploy/messages";
import { deployCommunityLocker } from "./utils/deploy/schain/communityLocker";
import { ethers } from "hardhat";
-import { SignerWithAddress } from "@nomiclabs/hardhat-ethers/dist/src/signer-with-address";
+import { SignerWithAddress } from "@nomicfoundation/hardhat-ethers/signers";
import { expect } from "chai";
import { deployTokenManagerLinker } from "./utils/deploy/schain/tokenManagerLinker";
-import { BigNumber } from "ethers";
+import { BigNumberish } from "ethers";
import { currentTime, skipTime } from "./utils/time";
const schainName = "TestSchain";
@@ -58,7 +57,7 @@ describe("CommunityLocker", () => {
let messages: MessagesTester;
let communityLocker: CommunityLocker;
let fakeCommunityPool: string;
- const mainnetHash = stringKeccak256("Mainnet");
+ const mainnetHash = ethers.id("Mainnet");
before(async () => {
[deployer, user] = await ethers.getSigners();
@@ -66,33 +65,33 @@ describe("CommunityLocker", () => {
beforeEach(async () => {
messages = await deployMessages();
- fakeCommunityPool = messages.address;
+ fakeCommunityPool = user.address;
const messageProxyForSchainWithoutSignatureFactory = await ethers.getContractFactory("MessageProxyForSchainWithoutSignature");
messageProxyForSchain = await messageProxyForSchainWithoutSignatureFactory.deploy("MyChain") as MessageProxyForSchainWithoutSignature;
tokenManagerLinker = await deployTokenManagerLinker(messageProxyForSchain, deployer.address);
- communityLocker = await deployCommunityLocker(schainName, messageProxyForSchain.address, tokenManagerLinker, fakeCommunityPool);
+ communityLocker = await deployCommunityLocker(schainName, messageProxyForSchain, tokenManagerLinker, fakeCommunityPool);
})
it("should activate user", async () => {
- const schainHash = stringKeccak256("Schain");
+ const schainHash = ethers.id("Schain");
const data = await messages.encodeActivateUserMessage(deployer.address);
const fakeData = await messages.encodeTransferEthMessage(user.address, 1);
await communityLocker.postMessage(mainnetHash, fakeCommunityPool, data)
.should.be.eventually.rejectedWith("Sender is not a message proxy");
- await messageProxyForSchain.postMessage(communityLocker.address, mainnetHash, deployer.address, data)
+ await messageProxyForSchain.postMessage(communityLocker, mainnetHash, deployer.address, data)
.should.be.eventually.rejectedWith("Sender must be CommunityPool");
- await messageProxyForSchain.postMessage(communityLocker.address, schainHash, fakeCommunityPool, data)
+ await messageProxyForSchain.postMessage(communityLocker, schainHash, fakeCommunityPool, data)
.should.be.eventually.rejectedWith("Source chain name must be Mainnet");
- await messageProxyForSchain.postMessage(communityLocker.address, mainnetHash, fakeCommunityPool, fakeData)
+ await messageProxyForSchain.postMessage(communityLocker, mainnetHash, fakeCommunityPool, fakeData)
.should.be.eventually.rejectedWith("The message should contain a status of user");
expect(await communityLocker.activeUsers(deployer.address)).to.be.equal(false);
- await messageProxyForSchain.postMessage(communityLocker.address, mainnetHash, fakeCommunityPool, data);
- await messageProxyForSchain.postMessage(communityLocker.address, mainnetHash, fakeCommunityPool, data)
+ await messageProxyForSchain.postMessage(communityLocker, mainnetHash, fakeCommunityPool, data);
+ await messageProxyForSchain.postMessage(communityLocker, mainnetHash, fakeCommunityPool, data)
.should.be.eventually.rejectedWith("Active user statuses must be different");
expect(await communityLocker.activeUsers(deployer.address)).to.be.equal(true);
});
@@ -100,38 +99,38 @@ describe("CommunityLocker", () => {
it("should activate and then lock user", async () => {
const activateData = await messages.encodeActivateUserMessage(user.address);
const lockData = await messages.encodeLockUserMessage(user.address);
- await messageProxyForSchain.postMessage(communityLocker.address, mainnetHash, fakeCommunityPool, activateData);
+ await messageProxyForSchain.postMessage(communityLocker, mainnetHash, fakeCommunityPool, activateData);
expect(await communityLocker.activeUsers(user.address)).to.be.equal(true);
- await messageProxyForSchain.postMessage(communityLocker.address, mainnetHash, fakeCommunityPool, lockData);
+ await messageProxyForSchain.postMessage(communityLocker, mainnetHash, fakeCommunityPool, lockData);
expect(await communityLocker.activeUsers(user.address)).to.be.equal(false);
});
it("should set time limit per message", async () => {
- expect(await communityLocker.timeLimitPerMessage(mainnetHash)).to.be.equal(300);
+ expect(await communityLocker.timeLimitPerMessage(mainnetHash)).to.be.equal(300n);
await communityLocker.setTimeLimitPerMessage("Mainnet", 0)
.should.be.eventually.rejectedWith("Not enough permissions to set constant");
await communityLocker.grantRole(await communityLocker.CONSTANT_SETTER_ROLE(), deployer.address);
await communityLocker.setTimeLimitPerMessage("Mainnet", 0);
- expect(await communityLocker.timeLimitPerMessage(mainnetHash)).to.be.equal(0);
+ expect(await communityLocker.timeLimitPerMessage(mainnetHash)).to.be.equal(0n);
});
it("should set time limit per message for schain", async () => {
const anotherSchainName = "Schain Sierra";
- const schainHash = ethers.utils.id(anotherSchainName);
- expect(await communityLocker.timeLimitPerMessage(schainHash)).to.be.equal(0);
+ const schainHash = ethers.id(anotherSchainName);
+ expect(await communityLocker.timeLimitPerMessage(schainHash)).to.be.equal(0n);
await communityLocker.setTimeLimitPerMessage(anotherSchainName, 1200)
.should.be.eventually.rejectedWith("Not enough permissions to set constant");
await communityLocker.grantRole(await communityLocker.CONSTANT_SETTER_ROLE(), deployer.address);
await communityLocker.setTimeLimitPerMessage(schainName, 1200)
.should.be.eventually.rejectedWith("Incorrect chain");
await communityLocker.setTimeLimitPerMessage(anotherSchainName, 1200);
- expect(await communityLocker.timeLimitPerMessage(schainHash)).to.be.equal(1200);
+ expect(await communityLocker.timeLimitPerMessage(schainHash)).to.be.equal(1200n);
});
it("should set gasprice", async () => {
- const newBLSSignature: [BigNumber, BigNumber] = [
- BigNumber.from("0x2dedd4eaeac95881fbcaa4146f95a438494545c607bd57d560aa1d13d2679db8"),
- BigNumber.from("0x2e9a10a0baf75ccdbd2b5cf81491673108917ade57dea40d350d4cbebd7b0965")
+ const newBLSSignature: [BigNumberish, BigNumberish] = [
+ "0x2dedd4eaeac95881fbcaa4146f95a438494545c607bd57d560aa1d13d2679db8",
+ "0x2e9a10a0baf75ccdbd2b5cf81491673108917ade57dea40d350d4cbebd7b0965"
];
const sign = {
blsSignature: newBLSSignature,
@@ -142,8 +141,8 @@ describe("CommunityLocker", () => {
const time = await currentTime();
await communityLocker.setGasPrice(100, time + 200, sign).should.be.eventually.rejectedWith("Timestamp should not be in the future");
await communityLocker.setGasPrice(100, time, sign);
- expect(await communityLocker.mainnetGasPrice()).to.be.equal(100);
- expect(await communityLocker.gasPriceTimestamp()).to.be.equal(time);
+ expect(await communityLocker.mainnetGasPrice()).to.be.equal(100n);
+ expect(await communityLocker.gasPriceTimestamp()).to.be.equal(BigInt(time));
skipTime(60);
@@ -151,7 +150,7 @@ describe("CommunityLocker", () => {
await communityLocker.setGasPrice(101, time, sign).should.be.eventually.rejectedWith("Gas price timestamp already updated");
await communityLocker.setGasPrice(101, time + 70, sign).should.be.eventually.rejectedWith("Timestamp should not be in the future");
await communityLocker.setGasPrice(101, time + 40, sign);
- expect(await communityLocker.mainnetGasPrice()).to.be.equal(101);
- expect(await communityLocker.gasPriceTimestamp()).to.be.equal(time + 40);
+ expect(await communityLocker.mainnetGasPrice()).to.be.equal(101n);
+ expect(await communityLocker.gasPriceTimestamp()).to.be.equal(BigInt(time + 40));
});
});
diff --git a/test/CommunityPool.ts b/test/CommunityPool.ts
index 80100176f..5f57afeb3 100644
--- a/test/CommunityPool.ts
+++ b/test/CommunityPool.ts
@@ -8,10 +8,10 @@ import {
MessagesTester
} from "../typechain";
-import { stringKeccak256, getBalance } from "./utils/helper";
+import { getBalance } from "./utils/helper";
-import chai = require("chai");
-import chaiAlmost = require("chai-almost");
+import chai, { assert } from "chai";
+import chaiAlmost from "chai-almost";
chai.should();
chai.use(chaiAsPromised);
@@ -28,11 +28,12 @@ import { deployCommunityPool } from "./utils/deploy/mainnet/communityPool";
import { deployCommunityPoolTester } from "./utils/deploy/test/communityPoolTester";
import { ethers } from "hardhat";
-import { SignerWithAddress } from "@nomiclabs/hardhat-ethers/signers";
-import { BigNumber } from "ethers";
+import { SignerWithAddress } from "@nomicfoundation/hardhat-ethers/signers";
+import { BigNumberish, toNumber } from "ethers";
import { expect } from "chai";
import { deployMessages } from "./utils/deploy/messages";
+
describe("CommunityPool", () => {
let deployer: SignerWithAddress;
let user: SignerWithAddress;
@@ -46,7 +47,7 @@ describe("CommunityPool", () => {
const contractManagerAddress = "0x0000000000000000000000000000000000000000";
const schainName = "Schain";
const schainName2 = "Schain2";
- let minTransactionGas: BigNumber;
+ let minTransactionGas: BigNumberish;
before(async () => {
[deployer, user, node] = await ethers.getSigners();
@@ -70,7 +71,7 @@ describe("CommunityPool", () => {
it("should add link to contract on schain", async () => {
const fakeContractOnSchain = user.address;
const nullAddress = "0x0000000000000000000000000000000000000000";
- const schainHash = stringKeccak256(schainName);
+ const schainHash = ethers.id(schainName);
await communityPool.getSchainContract(schainHash)
.should.be.eventually.rejectedWith("Destination contract must be defined");
@@ -84,7 +85,7 @@ describe("CommunityPool", () => {
await communityPool.addSchainContract(schainName, fakeContractOnSchain);
- expect(await communityPool.hasSchainContract(schainName)).to.be.true;
+ assert(await communityPool.hasSchainContract(schainName));
await communityPool.addSchainContract(schainName, fakeContractOnSchain)
.should.be.eventually.rejectedWith("SKALE chain is already set");
});
@@ -93,14 +94,14 @@ describe("CommunityPool", () => {
const fakeContractOnSchain = user.address;
await initializeSchain(contractManager, schainName, user.address, 1, 1);
await communityPool.connect(user).addSchainContract(schainName, fakeContractOnSchain);
- expect(await communityPool.hasSchainContract(schainName)).to.be.true;
+ assert(await communityPool.hasSchainContract(schainName));
await communityPool.removeSchainContract(schainName)
.should.be.eventually.rejectedWith("Not authorized caller");
await initializeSchain(contractManager, schainName, deployer.address, 1, 1);
await communityPool.removeSchainContract(schainName);
- expect(await communityPool.hasSchainContract(schainName)).to.be.false;
+ assert.isFalse(await communityPool.hasSchainContract(schainName));
await communityPool.removeSchainContract(schainName)
.should.be.eventually.rejectedWith("SKALE chain is not set");
});
@@ -110,9 +111,9 @@ describe("CommunityPool", () => {
const LINKER_ROLE = await communityPool.LINKER_ROLE();
await communityPool.grantRole(LINKER_ROLE, user.address);
await communityPool.connect(user).addSchainContract(schainName, fakeContractOnSchain);
- expect(await communityPool.hasSchainContract(schainName)).to.be.true;
+ assert(await communityPool.hasSchainContract(schainName));
await communityPool.connect(user).removeSchainContract(schainName);
- expect(await communityPool.hasSchainContract(schainName)).to.be.false;
+ assert.isFalse(await communityPool.hasSchainContract(schainName));
await communityPool.connect(user).removeSchainContract(schainName)
.should.be.eventually.rejectedWith("SKALE chain is not set");
});
@@ -129,114 +130,116 @@ describe("CommunityPool", () => {
it("should not allow to withdraw from user wallet if CommunityPool is not registered for all chains", async () => {
const extraContractRegistrarRole = await messageProxy.EXTRA_CONTRACT_REGISTRAR_ROLE();
await messageProxy.grantRole(extraContractRegistrarRole, deployer.address);
- await messageProxy.registerExtraContractForAll(communityPool.address);
+ await messageProxy.registerExtraContractForAll(communityPool);
const tx = await messageProxy.addConnectedChain(schainName);
- const wei = minTransactionGas.mul(tx.gasPrice as BigNumber);
+ const wei = BigInt(minTransactionGas) * tx.gasPrice;
await communityPool.connect(user).rechargeUserWallet(schainName, user.address, { value: wei.toString() });
- await messageProxy.removeExtraContractForAll(communityPool.address);
+ await messageProxy.removeExtraContractForAll(communityPool);
await communityPool.connect(user).withdrawFunds(schainName, wei.toString())
.should.be.eventually.rejectedWith("Sender contract is not registered");
});
describe("when chain connected and contract registered", async () => {
- let gasPrice: BigNumber;
+ let gasPrice: BigNumberish;
beforeEach(async () => {
- await messageProxy.registerExtraContract(schainName, communityPool.address);
- gasPrice = ((await messageProxy.addConnectedChain(schainName)).gasPrice) as BigNumber;
+ await messageProxy.registerExtraContract(schainName, communityPool);
+ gasPrice = ((await messageProxy.addConnectedChain(schainName)).gasPrice) as BigNumberish;
});
it("should not allow to withdraw from user wallet if CommunityPool is not registered", async () => {
- const amount = minTransactionGas.mul(gasPrice);
+ const amount = BigInt(minTransactionGas) * BigInt(gasPrice);
await communityPool.connect(user).rechargeUserWallet(schainName, user.address, { value: amount.toString() });
- await messageProxy.removeExtraContract(schainName, communityPool.address);
+ await messageProxy.removeExtraContract(schainName, communityPool);
await communityPool.connect(user).withdrawFunds(schainName, amount.toString())
.should.be.eventually.rejectedWith("Sender contract is not registered");
});
it("should revert if user recharged not enough money for most costly transaction", async () => {
- const amount = minTransactionGas.mul(gasPrice).sub(1);
+ const amount = BigInt(minTransactionGas) * BigInt(gasPrice) - 1n;
await communityPool.connect(user).rechargeUserWallet(schainName, user.address, { value: amount.toString(), gasPrice })
.should.be.eventually.rejectedWith("Not enough ETH for transaction");
});
it("should revert if gasprice was not set for getRecommendedRechargeAmount call", async () => {
- await communityPool.getRecommendedRechargeAmount(ethers.utils.id(schainName), user.address)
+ await communityPool.getRecommendedRechargeAmount(ethers.id(schainName), user.address)
.should.be.eventually.rejectedWith("Gas price is not set");
});
it("should get recommended recharge amount if gasprice was set", async () => {
const multiplierNumerator = await communityPool.multiplierNumerator();
const multiplierDivider = await communityPool.multiplierDivider();
- const amount = await communityPool.getRecommendedRechargeAmount(ethers.utils.id(schainName), user.address, { gasPrice });
- expect(amount).to.be.equal(minTransactionGas.mul(gasPrice).mul(multiplierNumerator).div(multiplierDivider));
+ const amount = await communityPool.getRecommendedRechargeAmount(ethers.id(schainName), user.address, { gasPrice });
+ expect(amount).to.be.equal(BigInt(minTransactionGas) * BigInt(gasPrice) * multiplierNumerator / multiplierDivider);
});
it("should recharge wallet if user passed enough money", async () => {
- const amount = minTransactionGas.mul(gasPrice);
+ const amount = BigInt(minTransactionGas) * BigInt(gasPrice);
await communityPool.connect(user).rechargeUserWallet(schainName, user.address, { value: amount.toString(), gasPrice });
let userBalance = await communityPool.getBalance(user.address, schainName);
userBalance.should.be.deep.equal(amount);
await communityPool.connect(user).rechargeUserWallet(schainName, user.address, { value: amount.toString(), gasPrice });
userBalance = await communityPool.getBalance(user.address, schainName);
- userBalance.should.be.deep.equal(amount.mul(2));
- expect(BigNumber.from(await messageProxy.getOutgoingMessagesCounter(schainName)).toString()).to.be.equal(BigNumber.from(1).toString());
+ userBalance.should.be.deep.equal(amount * 2n);
+ expect(await messageProxy.getOutgoingMessagesCounter(schainName)).to.be.equal(1);
});
- it("should recharge wallet if user passed enough money with basefee", async () => {
- const blockNumber = await ethers.provider.getBlockNumber();
- const baseFeePerGas = (await ethers.provider.getBlock(blockNumber)).baseFeePerGas;
- const baseFeeCandidate = (baseFeePerGas ? baseFeePerGas : new BigNumber(1, "hex"));
- const basefee = baseFeeCandidate.toNumber() === 0 ? BigNumber.from(1) : baseFeeCandidate;
- const amount = minTransactionGas.mul(basefee);
- //
- // comment this check until issue https://github.com/NomicFoundation/hardhat/issues/1688 would be fixed
- //
- // const amount = await communityPool.getRecommendedRechargeAmount(ethers.utils.id(schainName), user.address));
- //
- await communityPool.connect(user).rechargeUserWallet(schainName, user.address, { value: amount.sub(1).toString(), gasPrice: basefee.toNumber()}).should.be.eventually.rejectedWith("Not enough ETH for transaction");
- await communityPool.connect(user).rechargeUserWallet(schainName, user.address, { value: amount.toString(), gasPrice: basefee.toNumber()});
- let userBalance = await communityPool.getBalance(user.address, schainName);
- userBalance.should.be.deep.equal(amount);
- await communityPool.connect(user).rechargeUserWallet(schainName, user.address, { value: amount.toString(), gasPrice: basefee.toNumber()});
- userBalance = await communityPool.getBalance(user.address, schainName);
- userBalance.should.be.deep.equal(amount.mul(2));
- expect(BigNumber.from(await messageProxy.getOutgoingMessagesCounter(schainName)).toString()).to.be.equal(BigNumber.from(1).toString());
- });
+ it("should reject if user tries to withdraw more than he has", async () => {
+ const amount = BigInt(minTransactionGas) * BigInt(gasPrice);
+ await communityPool.connect(user).rechargeUserWallet(schainName, user.address, { value: amount.toString(), gasPrice });
+ await communityPool.connect(user).withdrawFunds(schainName, amount + 1n, { gasPrice })
+ .should.be.eventually.rejectedWith("Balance is too low");
+ });
- it("should allow to withdraw money", async () => {
- const amount = minTransactionGas.mul(gasPrice).toNumber();
- await communityPool.connect(user).rechargeUserWallet(schainName, user.address, { value: (amount + 1).toString(), gasPrice });
- expect(BigNumber.from(await messageProxy.getOutgoingMessagesCounter(schainName)).toString()).to.be.equal(BigNumber.from(1).toString());
+ it("should reject if user passes not enough money for transaction", async () => {
+ const tooSmallAmount = 1n;
+ await communityPool
+ .connect(user)
+ .rechargeUserWallet(schainName, user.address, { value: tooSmallAmount, gasPrice })
+ .should.be.eventually.rejectedWith("Not enough ETH for transaction");
+ });
- await communityPool.connect(user).withdrawFunds(schainName, amount + 2)
- .should.be.eventually.rejectedWith("Balance is too low");
+ it("should recharge wallet if user passed enough money", async () => {
+ const amount = await communityPool.getRecommendedRechargeAmount(ethers.id(schainName), user.address, { gasPrice: gasPrice });
+ await communityPool.connect(user).rechargeUserWallet(schainName, user.address, { value: amount.toString(), gasPrice: gasPrice});
+ expect(await messageProxy.getOutgoingMessagesCounter(schainName)).to.be.equal(1n);
+ let userBalance = await communityPool.getBalance(user.address, schainName);
+ userBalance.should.be.deep.equal(amount);
+ await communityPool.connect(user).rechargeUserWallet(schainName, user.address, { value: amount.toString(), gasPrice: gasPrice});
+ userBalance = await communityPool.getBalance(user.address, schainName);
+ userBalance.should.be.deep.equal(amount * 2n);
+ expect(await messageProxy.getOutgoingMessagesCounter(schainName)).to.be.equal(1n);
+ });
- const balanceBefore = await getBalance(user.address);
- const tx = await (await communityPool.connect(user).withdrawFunds(schainName, amount, { gasPrice })).wait();
- const balanceAfter = await getBalance(user.address);
- const transactionFee = tx.gasUsed.mul(gasPrice).toNumber();
- (balanceAfter + transactionFee / 1e18).should.be.almost(balanceBefore + amount / 1e18);
+ it("should recharge wallet, withdraw all money and check outgoingMessageCounter", async () => {
+ const amount = await communityPool.getRecommendedRechargeAmount(ethers.id(schainName), user.address, { gasPrice });
+ await communityPool.connect(user).rechargeUserWallet(schainName, user.address, { value: amount.toString(), gasPrice });
+ expect(await messageProxy.getOutgoingMessagesCounter(schainName)).to.be.equal(1n);
- await communityPool.connect(user).withdrawFunds(schainName, 1, { gasPrice });
+ await communityPool.connect(user).withdrawFunds(schainName, amount.toString(), { gasPrice });
+ expect(await messageProxy.getOutgoingMessagesCounter(schainName)).to.be.equal(2n);
+ });
- expect(BigNumber.from(await messageProxy.getOutgoingMessagesCounter(schainName)).toString()).deep.equal(BigNumber.from(2).toString());
+ it("should allow to withdraw money", async () => {
+ const amount = await communityPool.getRecommendedRechargeAmount(ethers.id(schainName), user.address, { gasPrice });
+ await communityPool.connect(user).rechargeUserWallet(schainName, user.address, { value: amount.toString(), gasPrice });
+ await communityPool.connect(user).withdrawFunds(schainName, amount.toString(), { gasPrice });
});
});
it("should recharge wallet for couple chains", async () => {
- const schainHash = stringKeccak256(schainName);
- const schainHash2 = stringKeccak256(schainName2);
+ const schainHash = ethers.id(schainName);
+ const schainHash2 = ethers.id(schainName2);
const activateUserData = await messages.encodeActivateUserMessage(user.address);
await communityPool.addSchainContract(schainName2, mockContractOnSchain);
for (const schain of [schainName, schainName2]) {
- await messageProxy.registerExtraContract(schain, communityPool.address);
+ await messageProxy.registerExtraContract(schain, communityPool);
await messageProxy.addConnectedChain(schain);
}
- const gasPrice = BigNumber.from(1e9);
- const wei = minTransactionGas.mul(gasPrice);
- const wei2 = minTransactionGas.mul(gasPrice).mul(2);
+ const gasPrice = BigInt(1e9);
+ const wei = BigInt(minTransactionGas) * gasPrice;
+ const wei2 = BigInt(minTransactionGas) * gasPrice * 2n;
const res1 = await communityPool.connect(user).rechargeUserWallet(schainName, user.address, { value: wei.toString(), gasPrice });
const res2 = await communityPool.connect(user).rechargeUserWallet(schainName2, user.address, { value: wei2.toString(), gasPrice });
const userBalance = await communityPool.getBalance(user.address, schainName);
@@ -246,58 +249,55 @@ describe("CommunityPool", () => {
await expect(res1)
.to.emit(messageProxy, "OutgoingMessage")
- .withArgs(schainHash, 0, communityPool.address, mockContractOnSchain, activateUserData);
+ .withArgs(schainHash, 0, communityPool, mockContractOnSchain, activateUserData);
await expect(res2)
.to.emit(messageProxy, "OutgoingMessage")
- .withArgs(schainHash2, 0, communityPool.address, mockContractOnSchain, activateUserData);
-
- const res3 = await (await communityPool.connect(user).rechargeUserWallet(schainName, user.address, { value: wei.toString(), gasPrice })).wait();
- expect(res3.events).to.be.empty;
- });
-
- it("should allow to withdraw money", async () => {
- await messageProxy.registerExtraContract(schainName, communityPool.address);
- const gasPrice = (await messageProxy.addConnectedChain(schainName)).gasPrice as BigNumber;
- const wei = minTransactionGas.mul(gasPrice).toNumber();
- await communityPool.connect(user).rechargeUserWallet(schainName, user.address, { value: wei.toString(), gasPrice });
+ .withArgs(schainHash2, 0, communityPool, mockContractOnSchain, activateUserData);
+
+ const res3 = await communityPool.connect(user).rechargeUserWallet(
+ schainName,
+ user.address,
+ { value: wei.toString(), gasPrice: gasPrice }
+ );
+ await expect(res3).to.not.emit(messageProxy, "OutgoingMessage");
});
it("should set new minimal transaction gas", async () => {
- const newMinTransactionGas = BigNumber.from(100);
+ const newMinTransactionGas = 100;
const CONSTANT_SETTER_ROLE = await communityPool.CONSTANT_SETTER_ROLE();
await communityPool.grantRole(CONSTANT_SETTER_ROLE, deployer.address);
- expect(BigNumber.from(await communityPool.minTransactionGas()).toString()).to.be.equal(BigNumber.from(1000000).toString());
+ expect(await communityPool.minTransactionGas()).to.be.equal(1000000);
await communityPool.connect(user).setMinTransactionGas(newMinTransactionGas)
.should.be.eventually.rejectedWith("CONSTANT_SETTER_ROLE is required");
await communityPool.setMinTransactionGas(newMinTransactionGas);
- expect(BigNumber.from(await communityPool.minTransactionGas()).toString()).to.be.equal(newMinTransactionGas.toString());
+ expect(await communityPool.minTransactionGas()).to.be.equal(newMinTransactionGas);
});
it("should set new multiplier", async () => {
- const newMultipliermultiplierNumeratorr = BigNumber.from(5);
- const newMultiplierDivider = BigNumber.from(4);
+ const newMultipliermultiplierNumeratorr = 5;
+ const newMultiplierDivider = 4;
const CONSTANT_SETTER_ROLE = await communityPool.CONSTANT_SETTER_ROLE();
await communityPool.grantRole(CONSTANT_SETTER_ROLE, deployer.address);
- expect(BigNumber.from(await communityPool.multiplierNumerator()).toString()).to.be.equal(BigNumber.from(3).toString());
- expect(BigNumber.from(await communityPool.multiplierDivider()).toString()).to.be.equal(BigNumber.from(2).toString());
+ expect(await communityPool.multiplierNumerator()).to.be.equal(3);
+ expect(await communityPool.multiplierDivider()).to.be.equal(2);
await communityPool.connect(user).setMultiplier(newMultipliermultiplierNumeratorr, newMultiplierDivider)
.should.be.eventually.rejectedWith("CONSTANT_SETTER_ROLE is required");
await communityPool.setMultiplier(newMultipliermultiplierNumeratorr, 0).should.be.eventually.rejectedWith("Divider is zero");
await communityPool.setMultiplier(newMultipliermultiplierNumeratorr, newMultiplierDivider);
- expect(BigNumber.from(await communityPool.multiplierNumerator()).toString()).to.be.equal(BigNumber.from(newMultipliermultiplierNumeratorr).toString());
- expect(BigNumber.from(await communityPool.multiplierDivider()).toString()).to.be.equal(BigNumber.from(newMultiplierDivider).toString());
+ expect(await communityPool.multiplierNumerator()).to.be.equal(newMultipliermultiplierNumeratorr);
+ expect(await communityPool.multiplierDivider()).to.be.equal(newMultiplierDivider);
});
it("should set rejected when call refundGasByUser not from messageProxy contract", async () => {
- const schainHash = stringKeccak256("Schain");
+ const schainHash = ethers.id("Schain");
await communityPool.connect(deployer).refundGasByUser(schainHash, node.address, user.address, 0)
.should.be.eventually.rejectedWith("Sender is not a MessageProxy");
});
it("should set rejected when call refundGasBySchainWallet not from messageProxy contract", async () => {
- const schainHash = stringKeccak256("Schain");
+ const schainHash = ethers.id("Schain");
await communityPool.connect(deployer).refundGasBySchainWallet(schainHash, node.address, 0)
.should.be.eventually.rejectedWith("Sender is not a MessageProxy");
});
@@ -309,7 +309,7 @@ describe("CommunityPool", () => {
let communityPoolTester: CommunityPool;
let mockContractOnSchain: string;
const schainNameRGBU = "SchainRGBU";
- const schainHashRGBU = stringKeccak256("SchainRGBU");
+ const schainHashRGBU = ethers.id("SchainRGBU");
beforeEach(async () => {
messageProxyTester = await deployMessageProxyForMainnetTester(contractManager);
@@ -322,9 +322,9 @@ describe("CommunityPool", () => {
it("should be rejected with Node address must be set", async () => {
const tx = await messageProxyTester.addConnectedChain(schainNameRGBU);
- await messageProxyTester.registerExtraContract(schainNameRGBU, communityPoolTester.address);
- const gasPrice = tx.gasPrice as BigNumber;
- const wei = minTransactionGas.mul(gasPrice).mul(2);
+ await messageProxyTester.registerExtraContract(schainNameRGBU, communityPoolTester);
+ const gasPrice = tx.gasPrice as BigNumberish;
+ const wei = BigInt(minTransactionGas) * BigInt(gasPrice) * 2n;
await communityPoolTester.connect(user).rechargeUserWallet(schainNameRGBU, user.address, { value: wei.toString() });
await messageProxyTester.connect(deployer).refundGasByUser(schainHashRGBU, "0x0000000000000000000000000000000000000000", user.address, 0)
.should.be.eventually.rejectedWith("Node address must be set");
@@ -333,38 +333,41 @@ describe("CommunityPool", () => {
it("should refund node", async () => {
const balanceBefore = await getBalance(node.address);
const tx = await messageProxyTester.addConnectedChain(schainNameRGBU);
- await messageProxyTester.registerExtraContract(schainNameRGBU, communityPoolTester.address);
- const gasPrice = tx.gasPrice as BigNumber;
- const wei = minTransactionGas.mul(gasPrice).mul(2);
+ await messageProxyTester.registerExtraContract(schainNameRGBU, communityPoolTester);
+ const gasPrice = tx.gasPrice as BigNumberish;
+ const wei = BigInt(minTransactionGas) * BigInt(gasPrice) * 2n;
await communityPoolTester.connect(user).rechargeUserWallet(schainNameRGBU, user.address, { value: wei.toString() });
await messageProxyTester.connect(deployer).refundGasByUser(schainHashRGBU, node.address, user.address, 1000000, { gasPrice });
const balanceAfter = await getBalance(node.address);
- (balanceAfter).should.be.almost(balanceBefore + (1000000 * BigNumber.from(gasPrice).toNumber()) / 1e18);
+ const calculatedBalanceAfter = balanceBefore + (1000000 * toNumber(gasPrice)) / 1e18;
+ balanceAfter.should.be.almost(calculatedBalanceAfter);
});
it("should lock user", async () => {
const tx = await messageProxyTester.addConnectedChain(schainNameRGBU);
- await messageProxyTester.registerExtraContract(schainNameRGBU, communityPoolTester.address);
- const gasPrice = tx.gasPrice as BigNumber;
- const wei = minTransactionGas.mul(gasPrice);
- expect(await communityPoolTester.activeUsers(user.address, schainHashRGBU)).to.be.false;
+ await messageProxyTester.registerExtraContract(schainNameRGBU, communityPoolTester);
+ const gasPrice = tx.gasPrice as BigNumberish;
+ const wei = BigInt(minTransactionGas) * BigInt(gasPrice);
+ assert.isFalse(await communityPoolTester.activeUsers(user.address, schainHashRGBU));
await communityPoolTester.connect(user).rechargeUserWallet(schainNameRGBU, user.address, { value: wei.toString() });
- expect(await communityPoolTester.activeUsers(user.address, schainHashRGBU)).to.be.true;
+ assert(await communityPoolTester.activeUsers(user.address, schainHashRGBU));
await messageProxyTester.connect(deployer).refundGasByUser(schainHashRGBU, node.address, user.address, 1000000, { gasPrice });
- expect(await communityPoolTester.activeUsers(user.address, schainHashRGBU)).to.be.false;
+ assert.isFalse(await communityPoolTester.activeUsers(user.address, schainHashRGBU));
});
it("should lock user with extra low balance", async () => {
const tx = await messageProxyTester.addConnectedChain(schainNameRGBU);
- await messageProxyTester.registerExtraContract(schainNameRGBU, communityPoolTester.address);
- let gasPrice = tx.gasPrice as BigNumber;
- const wei = minTransactionGas.mul(gasPrice);
- gasPrice = gasPrice?.mul(2);
- expect(await communityPoolTester.activeUsers(user.address, schainHashRGBU)).to.be.false;
+ await messageProxyTester.registerExtraContract(schainNameRGBU, communityPoolTester);
+ const gasPrice = tx.gasPrice as BigNumberish;
+ const wei = BigInt(minTransactionGas) * BigInt(gasPrice);
+ const gasPriceDuringGasSpikes = BigInt(gasPrice) * 2n;
+ assert.isFalse(await communityPoolTester.activeUsers(user.address, schainHashRGBU));
await communityPoolTester.connect(user).rechargeUserWallet(schainNameRGBU, user.address, { value: wei.toString() });
- expect(await communityPoolTester.activeUsers(user.address, schainHashRGBU)).to.be.true;
- await messageProxyTester.connect(deployer).refundGasByUser(schainHashRGBU, node.address, user.address, 1000000, { gasPrice });
- expect(await communityPoolTester.activeUsers(user.address, schainHashRGBU)).to.be.false;
+ assert(await communityPoolTester.activeUsers(user.address, schainHashRGBU));
+ await messageProxyTester
+ .connect(deployer)
+ .refundGasByUser(schainHashRGBU, node.address, user.address, 1000000, { gasPrice: gasPriceDuringGasSpikes });
+ assert.isFalse(await communityPoolTester.activeUsers(user.address, schainHashRGBU));
});
});
});
diff --git a/test/DepositBoxERC1155.ts b/test/DepositBoxERC1155.ts
index 6bfd6e7f1..27e5d77a2 100644
--- a/test/DepositBoxERC1155.ts
+++ b/test/DepositBoxERC1155.ts
@@ -34,10 +34,10 @@ import {
MessagesTester,
CommunityPool
} from "../typechain";
-import { stringKeccak256, getPublicKey, getBalance } from "./utils/helper";
+import { getPublicKey, getBalance } from "./utils/helper";
-import chai = require("chai");
-import chaiAlmost = require("chai-almost");
+import chai from "chai";
+import chaiAlmost from "chai-almost";
chai.should();
chai.use(chaiAsPromised);
@@ -55,15 +55,15 @@ import { deployERC1155OnChain } from "./utils/deploy/erc1155OnChain";
import { deployCommunityPool } from "./utils/deploy/mainnet/communityPool";
import { ethers } from "hardhat";
-import { SignerWithAddress } from "@nomiclabs/hardhat-ethers/dist/src/signer-with-address";
-import { BigNumber, Wallet } from "ethers";
+import { SignerWithAddress } from "@nomicfoundation/hardhat-ethers/signers";
+import { BigNumberish, HDNodeWallet, Wallet } from "ethers";
import { expect } from "chai";
import { createNode } from "./utils/skale-manager-utils/nodes";
-const BlsSignature: [BigNumber, BigNumber] = [
- BigNumber.from("178325537405109593276798394634841698946852714038246117383766698579865918287"),
- BigNumber.from("493565443574555904019191451171395204672818649274520396086461475162723833781")
+const BlsSignature: [BigNumberish, BigNumberish] = [
+ "178325537405109593276798394634841698946852714038246117383766698579865918287",
+ "493565443574555904019191451171395204672818649274520396086461475162723833781"
];
const HashA = "3080491942974172654518861600747466851589809241462384879086673256057179400078";
const HashB = "15163860114293529009901628456926790077787470245128337652112878212941459329347";
@@ -74,7 +74,7 @@ describe("DepositBoxERC1155", () => {
let user: SignerWithAddress;
let user2: SignerWithAddress;
let richGuy: SignerWithAddress;
- let nodeAddress: Wallet;
+ let nodeAddress: HDNodeWallet;
let depositBoxERC1155: DepositBoxERC1155;
let contractManager: ContractManager;
@@ -84,18 +84,19 @@ describe("DepositBoxERC1155", () => {
let messages: MessagesTester;
const contractManagerAddress = "0x0000000000000000000000000000000000000000";
const schainName = "Schain";
- const schainHash = stringKeccak256(schainName);
+ const schainHash = ethers.id(schainName);
before(async () => {
[deployer, user, user2, richGuy] = await ethers.getSigners();
nodeAddress = Wallet.createRandom().connect(ethers.provider);
- const balanceRichGuy = await richGuy.getBalance();
- await richGuy.sendTransaction({to: nodeAddress.address, value: balanceRichGuy.sub(ethers.utils.parseEther("1"))});
+ const balanceRichGuy = await ethers.provider.getBalance(richGuy.address);
+
+ await richGuy.sendTransaction({to: nodeAddress.address, value: balanceRichGuy - BigInt(ethers.parseEther("1"))});
});
after(async () => {
- const balanceNode = await nodeAddress.getBalance();
- await nodeAddress.sendTransaction({to: richGuy.address, value: balanceNode.sub(ethers.utils.parseEther("1"))});
+ const balanceNode = await ethers.provider.getBalance(nodeAddress.address);
+ await nodeAddress.sendTransaction({to: richGuy.address, value: balanceNode - BigInt(ethers.parseEther("1"))});
});
beforeEach(async () => {
@@ -105,7 +106,7 @@ describe("DepositBoxERC1155", () => {
depositBoxERC1155 = await deployDepositBoxERC1155(contractManager, linker, messageProxy);
communityPool = await deployCommunityPool(contractManager, linker, messageProxy);
messages = await deployMessages();
- await messageProxy.grantRole(await messageProxy.CHAIN_CONNECTOR_ROLE(), linker.address);
+ await messageProxy.grantRole(await messageProxy.CHAIN_CONNECTOR_ROLE(), linker);
await messageProxy.grantRole(await messageProxy.EXTRA_CONTRACT_REGISTRAR_ROLE(), deployer.address);
await initializeSchain(contractManager, schainName, user.address, 1, 1);
const nodeCreationParams = {
@@ -120,9 +121,9 @@ describe("DepositBoxERC1155", () => {
await createNode(contractManager, nodeAddress.address, nodeCreationParams);
await addNodesToSchain(contractManager, schainName, [0]);
await rechargeSchainWallet(contractManager, schainName, user2.address, "1000000000000000000");
- await messageProxy.registerExtraContractForAll(depositBoxERC1155.address);
- await messageProxy.registerExtraContract(schainName, communityPool.address);
- await messageProxy.registerExtraContract(schainName, linker.address);
+ await messageProxy.registerExtraContractForAll(depositBoxERC1155);
+ await messageProxy.registerExtraContract(schainName, communityPool);
+ await messageProxy.registerExtraContract(schainName, linker);
});
describe("tests with `ERC1155`", async () => {
@@ -151,13 +152,13 @@ describe("DepositBoxERC1155", () => {
const fakeERC1155Contract = deployer.address;
await depositBoxERC1155.connect(user).addERC1155TokenByOwner(schainName, fakeERC1155Contract)
.should.be.eventually.rejectedWith("Given address is not a contract");
- await depositBoxERC1155.connect(deployer).addERC1155TokenByOwner(schainName, erc1155.address)
+ await depositBoxERC1155.connect(deployer).addERC1155TokenByOwner(schainName, erc1155)
.should.be.eventually.rejectedWith("Sender is not an Schain owner");
- await depositBoxERC1155.connect(user).addERC1155TokenByOwner(schainName, erc1155.address);
- await depositBoxERC1155.connect(user).addERC1155TokenByOwner(schainName, erc1155.address).should.be.eventually.rejectedWith("ERC1155 Token was already added");
- expect(await depositBoxERC1155.getSchainToERC1155(schainName, erc1155.address)).to.be.equal(true);
- expect((await depositBoxERC1155.getSchainToAllERC1155(schainName, 0, 1))[0]).to.be.equal(erc1155.address);
+ await depositBoxERC1155.connect(user).addERC1155TokenByOwner(schainName, erc1155);
+ await depositBoxERC1155.connect(user).addERC1155TokenByOwner(schainName, erc1155).should.be.eventually.rejectedWith("ERC1155 Token was already added");
+ expect(await depositBoxERC1155.getSchainToERC1155(schainName, erc1155)).to.be.equal(true);
+ expect((await depositBoxERC1155.getSchainToAllERC1155(schainName, 0, 1))[0]).to.be.equal(erc1155);
expect((await depositBoxERC1155.getSchainToAllERC1155(schainName, 0, 1)).length).to.be.equal(1);
expect((await depositBoxERC1155.getSchainToAllERC1155Length(schainName)).toString()).to.be.equal("1");
await depositBoxERC1155.getSchainToAllERC1155(schainName, 1, 0).should.be.eventually.rejectedWith("Range is incorrect");
@@ -168,7 +169,7 @@ describe("DepositBoxERC1155", () => {
it("should rejected with `DepositBox was not approved for ERC1155 token`", async () => {
// preparation
const error = "DepositBox was not approved for ERC1155 token";
- const contractHere = erc1155.address;
+ const contractHere = erc1155;
const id = 5;
const amount = 7;
// the wei should be MORE than (55000 * 1000000000)
@@ -187,7 +188,7 @@ describe("DepositBoxERC1155", () => {
it("should invoke `depositERC1155` without mistakes", async () => {
// preparation
- const contractHere = erc1155.address;
+ const contractHere = erc1155;
const id = 5;
const amount = 7;
const id2 = 10;
@@ -199,7 +200,7 @@ describe("DepositBoxERC1155", () => {
.connect(deployer)
.connectSchain(schainName, [deployer.address, deployer.address, deployer.address]);
// transfer tokenId from `deployer` to `depositBoxERC1155`
- await erc1155.connect(deployer).setApprovalForAll(depositBoxERC1155.address, true);
+ await erc1155.connect(deployer).setApprovalForAll(depositBoxERC1155, true);
// execution
await depositBoxERC1155
.connect(deployer)
@@ -213,13 +214,13 @@ describe("DepositBoxERC1155", () => {
.depositERC1155(schainName, contractHere, id2, amount2)).wait();
// console.log("Gas for depositERC1155:", res.receipt.gasUsed);
// expectation
- expect(BigNumber.from(await erc1155.balanceOf(depositBoxERC1155.address, id)).toNumber()).to.equal(amount);
- expect(BigNumber.from(await erc1155.balanceOf(depositBoxERC1155.address, id2)).toNumber()).to.equal(amount2);
+ expect(await erc1155.balanceOf(depositBoxERC1155, id)).to.equal(amount);
+ expect(await erc1155.balanceOf(depositBoxERC1155, id2)).to.equal(amount2);
});
it("should invoke `depositERC1155Direct` without mistakes", async () => {
// preparation
- const contractHere = erc1155.address;
+ const contractHere = erc1155;
const to = user.address;
const id = 5;
const amount = 7;
@@ -232,7 +233,7 @@ describe("DepositBoxERC1155", () => {
.connect(deployer)
.connectSchain(schainName, [deployer.address, deployer.address, deployer.address]);
// transfer tokenId from `deployer` to `depositBoxERC1155`
- await erc1155.connect(deployer).setApprovalForAll(depositBoxERC1155.address, true);
+ await erc1155.connect(deployer).setApprovalForAll(depositBoxERC1155, true);
// execution
await depositBoxERC1155
.connect(deployer)
@@ -244,22 +245,22 @@ describe("DepositBoxERC1155", () => {
.connect(deployer)
.depositERC1155Direct(schainName, contractHere, id, amount, to)
.should.emit(messageProxy, "OutgoingMessage")
- .withArgs(schainHash, 0, depositBoxERC1155.address, deployer.address, data1);
+ .withArgs(schainHash, 0, depositBoxERC1155, deployer.address, data1);
await depositBoxERC1155
.connect(deployer)
.depositERC1155Direct(schainName, contractHere, id2, amount2, to)
.should.emit(messageProxy, "OutgoingMessage")
- .withArgs(schainHash, 1, depositBoxERC1155.address, deployer.address, data2);
+ .withArgs(schainHash, 1, depositBoxERC1155, deployer.address, data2);
// console.log("Gas for depositERC1155:", res.receipt.gasUsed);
// expectation
- expect(BigNumber.from(await erc1155.balanceOf(depositBoxERC1155.address, id)).toNumber()).to.equal(amount);
- expect(BigNumber.from(await erc1155.balanceOf(depositBoxERC1155.address, id2)).toNumber()).to.equal(amount2);
+ expect(await erc1155.balanceOf(depositBoxERC1155, id)).to.equal(amount);
+ expect(await erc1155.balanceOf(depositBoxERC1155, id2)).to.equal(amount2);
});
it("should rejected with `DepositBox was not approved for ERC1155 token Batch`", async () => {
// preparation
const error = "DepositBox was not approved for ERC1155 token Batch";
- const contractHere = erc1155.address;
+ const contractHere = erc1155;
const ids = [1, 2, 3];
const amounts = [3, 2, 1];
// the wei should be MORE than (55000 * 1000000000)
@@ -278,7 +279,7 @@ describe("DepositBoxERC1155", () => {
it("should invoke `depositERC1155Batch` without mistakes", async () => {
// preparation
- const contractHere = erc1155.address;
+ const contractHere = erc1155;
const ids = [1, 2, 3];
const amounts = [3, 2, 1];
const ids2 = [5, 4, 99];
@@ -290,7 +291,7 @@ describe("DepositBoxERC1155", () => {
.connect(deployer)
.connectSchain(schainName, [deployer.address, deployer.address, deployer.address]);
// transfer tokenId from `deployer` to `depositBoxERC1155`
- await erc1155.connect(deployer).setApprovalForAll(depositBoxERC1155.address, true);
+ await erc1155.connect(deployer).setApprovalForAll(depositBoxERC1155, true);
// execution
await depositBoxERC1155
.connect(deployer)
@@ -304,15 +305,15 @@ describe("DepositBoxERC1155", () => {
.depositERC1155Batch(schainName, contractHere, ids2, amounts2)).wait();
// console.log("Gas for depositERC1155:", res.receipt.gasUsed);
// expectation
- const balanceIds = await erc1155.balanceOfBatch([depositBoxERC1155.address, depositBoxERC1155.address, depositBoxERC1155.address], ids);
- const balanceIds2 = await erc1155.balanceOfBatch([depositBoxERC1155.address, depositBoxERC1155.address, depositBoxERC1155.address], ids2);
+ const balanceIds = await erc1155.balanceOfBatch([depositBoxERC1155, depositBoxERC1155, depositBoxERC1155], ids);
+ const balanceIds2 = await erc1155.balanceOfBatch([depositBoxERC1155, depositBoxERC1155, depositBoxERC1155], ids2);
const balanceIdsNumber: number[] = [];
const balanceIds2Number: number[] = [];
balanceIds.forEach(element => {
- balanceIdsNumber.push(BigNumber.from(element).toNumber())
+ balanceIdsNumber.push(Number(element))
});
balanceIds2.forEach(element => {
- balanceIds2Number.push(BigNumber.from(element).toNumber())
+ balanceIds2Number.push(Number(element))
});
expect(balanceIdsNumber).to.deep.equal(amounts);
expect(balanceIds2Number).to.deep.equal(amounts2);
@@ -320,7 +321,7 @@ describe("DepositBoxERC1155", () => {
it("should invoke `depositERC1155BatchDirect` without mistakes", async () => {
// preparation
- const contractHere = erc1155.address;
+ const contractHere = erc1155;
const to = user.address;
const ids = [1, 2, 3];
const amounts = [3, 2, 1];
@@ -333,7 +334,7 @@ describe("DepositBoxERC1155", () => {
.connect(deployer)
.connectSchain(schainName, [deployer.address, deployer.address, deployer.address]);
// transfer tokenId from `deployer` to `depositBoxERC1155`
- await erc1155.connect(deployer).setApprovalForAll(depositBoxERC1155.address, true);
+ await erc1155.connect(deployer).setApprovalForAll(depositBoxERC1155, true);
// execution
await depositBoxERC1155
.connect(deployer)
@@ -345,23 +346,23 @@ describe("DepositBoxERC1155", () => {
.connect(deployer)
.depositERC1155BatchDirect(schainName, contractHere, ids, amounts, to)
.should.emit(messageProxy, "OutgoingMessage")
- .withArgs(schainHash, 0, depositBoxERC1155.address, deployer.address, data1);
+ .withArgs(schainHash, 0, depositBoxERC1155, deployer.address, data1);
await depositBoxERC1155
.connect(deployer)
.depositERC1155BatchDirect(schainName, contractHere, ids2, amounts2, to)
.should.emit(messageProxy, "OutgoingMessage")
- .withArgs(schainHash, 1, depositBoxERC1155.address, deployer.address, data2);
+ .withArgs(schainHash, 1, depositBoxERC1155, deployer.address, data2);
// console.log("Gas for depositERC1155:", res.receipt.gasUsed);
// expectation
- const balanceIds = await erc1155.balanceOfBatch([depositBoxERC1155.address, depositBoxERC1155.address, depositBoxERC1155.address], ids);
- const balanceIds2 = await erc1155.balanceOfBatch([depositBoxERC1155.address, depositBoxERC1155.address, depositBoxERC1155.address], ids2);
+ const balanceIds = await erc1155.balanceOfBatch([depositBoxERC1155, depositBoxERC1155, depositBoxERC1155], ids);
+ const balanceIds2 = await erc1155.balanceOfBatch([depositBoxERC1155, depositBoxERC1155, depositBoxERC1155], ids2);
const balanceIdsNumber: number[] = [];
const balanceIds2Number: number[] = [];
balanceIds.forEach(element => {
- balanceIdsNumber.push(BigNumber.from(element).toNumber())
+ balanceIdsNumber.push(Number(element))
});
balanceIds2.forEach(element => {
- balanceIds2Number.push(BigNumber.from(element).toNumber())
+ balanceIds2Number.push(Number(element))
});
expect(balanceIdsNumber).to.deep.equal(amounts);
expect(balanceIds2Number).to.deep.equal(amounts2);
@@ -373,31 +374,31 @@ describe("DepositBoxERC1155", () => {
.connect(deployer)
.connectSchain(schainName, [deployer.address, deployer.address, deployer.address]);
await erc1155.connect(deployer).mint(deployer.address, 4, 100, "0x");
- await erc1155.connect(deployer).setApprovalForAll(depositBoxERC1155.address, true);
+ await erc1155.connect(deployer).setApprovalForAll(depositBoxERC1155, true);
await depositBoxERC1155.connect(user).disableWhitelist(schainName);
await depositBoxERC1155
.connect(deployer)
- .depositERC1155(schainName, erc1155.address, 4, 50);
- await depositBoxERC1155.connect(user).getFunds(schainName, erc1155.address, user.address, [4], [50]).should.be.eventually.rejectedWith("Schain is not killed");
+ .depositERC1155(schainName, erc1155, 4, 50);
+ await depositBoxERC1155.connect(user).getFunds(schainName, erc1155, user.address, [4], [50]).should.be.eventually.rejectedWith("Schain is not killed");
await linker.connect(deployer).kill(schainName);
await linker.connect(user).kill(schainName);
- await depositBoxERC1155.connect(user).getFunds(schainName, erc1155.address, user.address, [4], [60]).should.be.eventually.rejectedWith("Incorrect amount");
- await depositBoxERC1155.connect(user).getFunds(schainName, erc1155.address, user.address, [4], [50]);
- expect(BigNumber.from(await erc1155.balanceOf(user.address, 4)).toString()).to.equal("50");
+ await depositBoxERC1155.connect(user).getFunds(schainName, erc1155, user.address, [4], [60]).should.be.eventually.rejectedWith("Incorrect amount");
+ await depositBoxERC1155.connect(user).getFunds(schainName, erc1155, user.address, [4], [50]);
+ expect(await erc1155.balanceOf(user.address, 4)).to.equal("50");
});
it("should add erc token by schain owner", async () => {
const fakeERC1155Contract = deployer.address;
await depositBoxERC1155.connect(user).addERC1155TokenByOwner(schainName, fakeERC1155Contract)
.should.be.eventually.rejectedWith("Given address is not a contract");
- await depositBoxERC1155.connect(user).addERC1155TokenByOwner(schainName, erc1155.address);
- expect(await depositBoxERC1155.getSchainToERC1155(schainName, erc1155.address)).to.be.equal(true);
+ await depositBoxERC1155.connect(user).addERC1155TokenByOwner(schainName, erc1155);
+ expect(await depositBoxERC1155.getSchainToERC1155(schainName, erc1155)).to.be.equal(true);
});
it("should not allow to add token by schain owner if schain killed", async () => {
await linker.connect(deployer).kill(schainName);
await linker.connect(user).kill(schainName);
- await depositBoxERC1155.connect(user).addERC1155TokenByOwner(schainName, erc1155.address)
+ await depositBoxERC1155.connect(user).addERC1155TokenByOwner(schainName, erc1155)
.should.be.eventually.rejectedWith("Schain is killed");
});
});
@@ -411,7 +412,7 @@ describe("DepositBoxERC1155", () => {
it("should transfer ERC1155 token", async () => {
// preparation
- const contractHere = erc1155.address;
+ const contractHere = erc1155;
const id = 5;
const amount = 7;
const to = user.address;
@@ -428,7 +429,7 @@ describe("DepositBoxERC1155", () => {
const message = {
data: await messages.encodeTransferErc1155Message(contractHere, to, id, amount),
- destinationContract: depositBoxERC1155.address,
+ destinationContract: depositBoxERC1155,
sender: senderFromSchain
};
@@ -444,9 +445,9 @@ describe("DepositBoxERC1155", () => {
// mint some ERC1155 of for `deployer` address
await erc1155.connect(deployer).mint(deployer.address, id, amount, "0x");
- await erc1155.connect(deployer).setApprovalForAll(depositBoxERC1155.address, true);
+ await erc1155.connect(deployer).setApprovalForAll(depositBoxERC1155, true);
// transfer tokenId from `deployer` to `depositBoxERC1155`
- // await erc1155.connect(deployer).transferFrom(deployer.address, depositBoxERC1155.address, tokenId);
+ // await erc1155.connect(deployer).transferFrom(deployer.address, depositBoxERC1155, tokenId);
// get data from `receiveERC1155`
await depositBoxERC1155.connect(user2).disableWhitelist(schainName);
await depositBoxERC1155
@@ -461,12 +462,12 @@ describe("DepositBoxERC1155", () => {
balance.should.be.almost(balanceBefore);
// console.log("Gas for postMessage ERC1155:", res.receipt.gasUsed);
// expectation
- (BigNumber.from(await erc1155.balanceOf(user.address, id)).toNumber()).should.be.equal(amount);
+ (await erc1155.balanceOf(user.address, id)).should.be.equal(amount);
});
it("should transfer ERC1155 token Batch", async () => {
// preparation
- const contractHere = erc1155.address;
+ const contractHere = erc1155;
const ids = [5, 6, 7];
const amounts = [100, 100, 100];
const to = user.address;
@@ -483,7 +484,7 @@ describe("DepositBoxERC1155", () => {
const message = {
data: await messages.encodeTransferErc1155BatchMessage(contractHere, to, ids, amounts),
- destinationContract: depositBoxERC1155.address,
+ destinationContract: depositBoxERC1155,
sender: senderFromSchain
};
@@ -499,9 +500,9 @@ describe("DepositBoxERC1155", () => {
// mint some ERC1155 of for `deployer` address
await erc1155.connect(deployer).mintBatch(deployer.address, ids, amounts, "0x");
- await erc1155.connect(deployer).setApprovalForAll(depositBoxERC1155.address, true);
+ await erc1155.connect(deployer).setApprovalForAll(depositBoxERC1155, true);
// transfer tokenId from `deployer` to `depositBoxERC1155`
- // await erc1155.connect(deployer).transferFrom(deployer.address, depositBoxERC1155.address, tokenId);
+ // await erc1155.connect(deployer).transferFrom(deployer.address, depositBoxERC1155, tokenId);
// get data from `receiveERC1155`
await depositBoxERC1155.connect(user2).disableWhitelist(schainName);
await depositBoxERC1155
@@ -519,7 +520,7 @@ describe("DepositBoxERC1155", () => {
const balanceIds = await erc1155.balanceOfBatch([user.address, user.address, user.address], ids);
const balanceIdsNumber: number[] = [];
balanceIds.forEach(element => {
- balanceIdsNumber.push(BigNumber.from(element).toNumber())
+ balanceIdsNumber.push(Number(element))
});
expect(balanceIdsNumber).to.deep.equal(amounts);
});
diff --git a/test/DepositBoxERC20.ts b/test/DepositBoxERC20.ts
index cf51b696e..ca5183d4d 100644
--- a/test/DepositBoxERC20.ts
+++ b/test/DepositBoxERC20.ts
@@ -33,9 +33,9 @@ import {
ERC20OnChain,
CommunityPool
} from "../typechain";
-import { stringFromHex, getPublicKey, stringKeccak256 } from "./utils/helper";
+import { getPublicKey } from "./utils/helper";
-import chai = require("chai");
+import chai from "chai";
chai.should();
chai.use(chaiAsPromised);
@@ -52,16 +52,16 @@ import { deployERC20OnChain } from "./utils/deploy/erc20OnChain";
import { deployCommunityPool } from "./utils/deploy/mainnet/communityPool";
import { ethers } from "hardhat";
-import { SignerWithAddress } from "@nomiclabs/hardhat-ethers/dist/src/signer-with-address";
-import { BigNumber, Wallet } from "ethers";
+import { SignerWithAddress } from "@nomicfoundation/hardhat-ethers/signers";
+import { BigNumberish, HDNodeWallet, Wallet } from "ethers";
-import { assert, expect } from "chai";
+import { expect } from "chai";
import { createNode } from "./utils/skale-manager-utils/nodes";
import { currentTime, skipTime } from "./utils/time";
-const BlsSignature: [BigNumber, BigNumber] = [
- BigNumber.from("178325537405109593276798394634841698946852714038246117383766698579865918287"),
- BigNumber.from("493565443574555904019191451171395204672818649274520396086461475162723833781")
+const BlsSignature: [BigNumberish, BigNumberish] = [
+ "178325537405109593276798394634841698946852714038246117383766698579865918287",
+ "493565443574555904019191451171395204672818649274520396086461475162723833781"
];
const HashA = "3080491942974172654518861600747466851589809241462384879086673256057179400078";
const HashB = "15163860114293529009901628456926790077787470245128337652112878212941459329347";
@@ -73,7 +73,7 @@ describe("DepositBoxERC20", () => {
let user: SignerWithAddress;
let user2: SignerWithAddress;
let richGuy: SignerWithAddress;
- let nodeAddress: Wallet;
+ let nodeAddress: HDNodeWallet;
let depositBoxERC20: DepositBoxERC20;
let contractManager: ContractManager;
@@ -83,18 +83,18 @@ describe("DepositBoxERC20", () => {
let messages: MessagesTester;
const contractManagerAddress = "0x0000000000000000000000000000000000000000";
const schainName = "Schain";
- const schainHash = stringKeccak256(schainName);
+ const schainHash = ethers.id(schainName);
before(async () => {
[deployer, schainOwner, user, user2, richGuy] = await ethers.getSigners();
nodeAddress = Wallet.createRandom().connect(ethers.provider);
- const balanceRichGuy = await richGuy.getBalance();
- await richGuy.sendTransaction({to: nodeAddress.address, value: balanceRichGuy.sub(ethers.utils.parseEther("1"))});
+ const balanceRichGuy = await ethers.provider.getBalance(richGuy.address);
+ await richGuy.sendTransaction({to: nodeAddress.address, value: balanceRichGuy - ethers.parseEther("1")});
});
after(async () => {
- const balanceNode = await nodeAddress.getBalance();
- await nodeAddress.sendTransaction({to: richGuy.address, value: balanceNode.sub(ethers.utils.parseEther("1"))});
+ const balanceNode = await ethers.provider.getBalance(nodeAddress.address);
+ await nodeAddress.sendTransaction({to: richGuy.address, value: balanceNode - ethers.parseEther("1")});
});
beforeEach(async () => {
@@ -103,7 +103,7 @@ describe("DepositBoxERC20", () => {
linker = await deployLinker(contractManager, messageProxy);
depositBoxERC20 = await deployDepositBoxERC20(contractManager, linker, messageProxy);
communityPool = await deployCommunityPool(contractManager, linker, messageProxy);
- await messageProxy.grantRole(await messageProxy.CHAIN_CONNECTOR_ROLE(), linker.address);
+ await messageProxy.grantRole(await messageProxy.CHAIN_CONNECTOR_ROLE(), linker);
await messageProxy.grantRole(await messageProxy.EXTRA_CONTRACT_REGISTRAR_ROLE(), deployer.address);
await initializeSchain(contractManager, schainName, schainOwner.address, 1, 1);
const nodeCreationParams = {
@@ -118,9 +118,9 @@ describe("DepositBoxERC20", () => {
await createNode(contractManager, nodeAddress.address, nodeCreationParams);
await addNodesToSchain(contractManager, schainName, [0]);
await rechargeSchainWallet(contractManager, schainName, user2.address, "1000000000000000000");
- await messageProxy.registerExtraContractForAll(depositBoxERC20.address);
- await messageProxy.registerExtraContract(schainName, communityPool.address);
- await messageProxy.registerExtraContract(schainName, linker.address);
+ await messageProxy.registerExtraContractForAll(depositBoxERC20);
+ await messageProxy.registerExtraContract(schainName, communityPool);
+ await messageProxy.registerExtraContract(schainName, linker);
messages = await deployMessages();
});
@@ -141,12 +141,12 @@ describe("DepositBoxERC20", () => {
const error = "Whitelist is enabled";
await depositBoxERC20.connect(schainOwner).enableWhitelist(schainName);
await erc20.connect(deployer).mint(user.address, "1000000000");
- await erc20.connect(deployer).approve(depositBoxERC20.address, "1000000");
+ await erc20.connect(deployer).approve(depositBoxERC20, "1000000");
// set `DepositBox` contract to avoid the `Not allowed` error in LockAndDataForMainnet.sol
// execution/expectation
await depositBoxERC20
.connect(deployer)
- .depositERC20(schainName, erc20.address, 100)
+ .depositERC20(schainName, erc20, 100)
.should.be.eventually.rejectedWith(error);
});
@@ -158,7 +158,7 @@ describe("DepositBoxERC20", () => {
// execution/expectation
await depositBoxERC20
.connect(deployer)
- .depositERC20(schainName, erc20.address, 100)
+ .depositERC20(schainName, erc20, 100)
.should.be.eventually.rejectedWith(error);
});
@@ -167,18 +167,18 @@ describe("DepositBoxERC20", () => {
// mint some quantity of ERC20 tokens for `deployer` address
const amount = 10;
await erc20.connect(deployer).mint(deployer.address, amount);
- await erc20.connect(deployer).approve(depositBoxERC20.address, amount);
+ await erc20.connect(deployer).approve(depositBoxERC20, amount);
// execution
await depositBoxERC20
.connect(deployer)
- .depositERC20(schainName, erc20.address, 1).should.be.eventually.rejectedWith("Whitelist is enabled");
+ .depositERC20(schainName, erc20, 1).should.be.eventually.rejectedWith("Whitelist is enabled");
await depositBoxERC20.connect(schainOwner).disableWhitelist(schainName);
await depositBoxERC20
.connect(deployer)
- .depositERC20(schainName, erc20.address, 1);
+ .depositERC20(schainName, erc20, 1);
await depositBoxERC20
.connect(deployer)
- .depositERC20(schainName, erc20.address, 1);
+ .depositERC20(schainName, erc20, 1);
});
it("should invoke `depositERC20Direct` without mistakes", async () => {
@@ -186,25 +186,25 @@ describe("DepositBoxERC20", () => {
// mint some quantity of ERC20 tokens for `deployer` address
const amount = 10;
await erc20.connect(deployer).mint(deployer.address, amount);
- await erc20.connect(deployer).approve(depositBoxERC20.address, amount);
+ await erc20.connect(deployer).approve(depositBoxERC20, amount);
// execution
await depositBoxERC20
.connect(deployer)
- .depositERC20Direct(schainName, erc20.address, 1, user.address).should.be.eventually.rejectedWith("Whitelist is enabled");
+ .depositERC20Direct(schainName, erc20, 1, user.address).should.be.eventually.rejectedWith("Whitelist is enabled");
await depositBoxERC20.connect(schainOwner).disableWhitelist(schainName);
- const data1 = await messages.encodeTransferErc20AndTokenInfoMessage(erc20.address, user.address, 1, amount, { name: "D2-token", symbol: "D2", decimals: 18 });
- const data2 = await messages.encodeTransferErc20AndTotalSupplyMessage(erc20.address, user.address, 1, amount);
+ const data1 = await messages.encodeTransferErc20AndTokenInfoMessage(erc20, user.address, 1, amount, { name: "D2-token", symbol: "D2", decimals: 18 });
+ const data2 = await messages.encodeTransferErc20AndTotalSupplyMessage(erc20, user.address, 1, amount);
await depositBoxERC20
.connect(deployer)
- .depositERC20Direct(schainName, erc20.address, 1, user.address)
+ .depositERC20Direct(schainName, erc20, 1, user.address)
.should.emit(messageProxy, "OutgoingMessage")
- .withArgs(schainHash, 0, depositBoxERC20.address, deployer.address, data1);
+ .withArgs(schainHash, 0, depositBoxERC20, deployer.address, data1);
await depositBoxERC20
.connect(deployer)
- .depositERC20Direct(schainName, erc20.address, 1, user.address)
+ .depositERC20Direct(schainName, erc20, 1, user.address)
.should.emit(messageProxy, "OutgoingMessage")
- .withArgs(schainHash, 1, depositBoxERC20.address, deployer.address, data2);
+ .withArgs(schainHash, 1, depositBoxERC20, deployer.address, data2);
});
it("should rejected with `Amount is incorrect`", async () => {
@@ -212,39 +212,39 @@ describe("DepositBoxERC20", () => {
// mint some quantity of ERC20 tokens for `deployer` address
const amount = 10;
await erc20.connect(deployer).mint(deployer.address, amount);
- await erc20.connect(deployer).approve(depositBoxERC20.address, amount + 1);
+ await erc20.connect(deployer).approve(depositBoxERC20, amount + 1);
await depositBoxERC20.connect(schainOwner).disableWhitelist(schainName);
await depositBoxERC20
.connect(deployer)
- .depositERC20(schainName, erc20.address, amount + 1)
+ .depositERC20(schainName, erc20, amount + 1)
.should.be.eventually.rejectedWith("Amount is incorrect");
});
});
it("should get funds after kill", async () => {
await erc20.connect(deployer).mint(deployer.address, "1000000000");
- await erc20.connect(deployer).approve(depositBoxERC20.address, "1000000");
+ await erc20.connect(deployer).approve(depositBoxERC20, "1000000");
await depositBoxERC20.connect(schainOwner).disableWhitelist(schainName);
await depositBoxERC20
.connect(deployer)
- .depositERC20(schainName, erc20.address, 1);
- await depositBoxERC20.connect(schainOwner).getFunds(schainName, erc20.address, schainOwner.address, 1).should.be.eventually.rejectedWith("Schain is not killed");
+ .depositERC20(schainName, erc20, 1);
+ await depositBoxERC20.connect(schainOwner).getFunds(schainName, erc20, schainOwner.address, 1).should.be.eventually.rejectedWith("Schain is not killed");
await linker.connect(deployer).kill(schainName);
await linker.connect(schainOwner).kill(schainName);
- await depositBoxERC20.connect(schainOwner).getFunds(schainName, erc20.address, schainOwner.address, 2).should.be.eventually.rejectedWith("Incorrect amount");
- await depositBoxERC20.connect(schainOwner).getFunds(schainName, erc20.address, schainOwner.address, 1);
- expect(BigNumber.from(await erc20.balanceOf(schainOwner.address)).toString()).to.equal("1");
+ await depositBoxERC20.connect(schainOwner).getFunds(schainName, erc20, schainOwner.address, 2).should.be.eventually.rejectedWith("Incorrect amount");
+ await depositBoxERC20.connect(schainOwner).getFunds(schainName, erc20, schainOwner.address, 1);
+ expect(await erc20.balanceOf(schainOwner.address)).to.equal("1");
});
it("should add erc token by schain owner", async () => {
const fakeERC20Contract = deployer.address;
await depositBoxERC20.connect(schainOwner).addERC20TokenByOwner(schainName, fakeERC20Contract)
.should.be.eventually.rejectedWith("Given address is not a contract");
- await depositBoxERC20.connect(schainOwner).addERC20TokenByOwner(schainName, erc20.address);
- await depositBoxERC20.connect(schainOwner).addERC20TokenByOwner(schainName, erc20.address).should.be.eventually.rejectedWith("ERC20 Token was already added");
- expect(await depositBoxERC20.getSchainToERC20(schainName, erc20.address)).to.be.equal(true);
- expect((await depositBoxERC20.getSchainToAllERC20(schainName, 0, 1))[0]).to.be.equal(erc20.address);
+ await depositBoxERC20.connect(schainOwner).addERC20TokenByOwner(schainName, erc20);
+ await depositBoxERC20.connect(schainOwner).addERC20TokenByOwner(schainName, erc20).should.be.eventually.rejectedWith("ERC20 Token was already added");
+ expect(await depositBoxERC20.getSchainToERC20(schainName, erc20)).to.be.equal(true);
+ expect((await depositBoxERC20.getSchainToAllERC20(schainName, 0, 1))[0]).to.be.equal(erc20);
expect((await depositBoxERC20.getSchainToAllERC20(schainName, 0, 1)).length).to.be.equal(1);
expect((await depositBoxERC20.getSchainToAllERC20Length(schainName)).toString()).to.be.equal("1");
await depositBoxERC20.getSchainToAllERC20(schainName, 1, 0).should.be.eventually.rejectedWith("Range is incorrect");
@@ -254,7 +254,7 @@ describe("DepositBoxERC20", () => {
it("should not allow to add token by schain owner if schain killed", async () => {
await linker.connect(deployer).kill(schainName);
await linker.connect(schainOwner).kill(schainName);
- await depositBoxERC20.connect(schainOwner).addERC20TokenByOwner(schainName, erc20.address)
+ await depositBoxERC20.connect(schainOwner).addERC20TokenByOwner(schainName, erc20)
.should.be.eventually.rejectedWith("Schain is killed");
});
@@ -269,25 +269,25 @@ describe("DepositBoxERC20", () => {
await erc20TWFR.connect(deployer).mint(deployer.address, amount);
await erc20IT.connect(deployer).mint(deployer.address, amount);
await erc20.connect(deployer).mint(deployer.address, amount);
- await erc20TWR.connect(deployer).approve(depositBoxERC20.address, amount);
- await erc20TWFR.connect(deployer).approve(depositBoxERC20.address, amount);
- await erc20IT.connect(deployer).approve(depositBoxERC20.address, amount);
- await erc20.connect(deployer).approve(depositBoxERC20.address, amount);
+ await erc20TWR.connect(deployer).approve(depositBoxERC20, amount);
+ await erc20TWFR.connect(deployer).approve(depositBoxERC20, amount);
+ await erc20IT.connect(deployer).approve(depositBoxERC20, amount);
+ await erc20.connect(deployer).approve(depositBoxERC20, amount);
// execution
await depositBoxERC20.connect(schainOwner).disableWhitelist(schainName);
await depositBoxERC20
.connect(deployer)
- .depositERC20(schainName, erc20.address, 1);
+ .depositERC20(schainName, erc20, 1);
await depositBoxERC20
.connect(deployer)
- .depositERC20(schainName, erc20TWR.address, 1);
+ .depositERC20(schainName, erc20TWR, 1);
await depositBoxERC20
.connect(deployer)
- .depositERC20(schainName, erc20IT.address, 1)
+ .depositERC20(schainName, erc20IT, 1)
.should.be.eventually.rejectedWith("SafeERC20: low-level call failed");
await depositBoxERC20
.connect(deployer)
- .depositERC20(schainName, erc20TWFR.address, 1)
+ .depositERC20(schainName, erc20TWFR, 1)
.should.be.eventually.rejectedWith("SafeERC20: ERC20 operation did not succeed");
});
});
@@ -303,8 +303,8 @@ describe("DepositBoxERC20", () => {
it("should transfer ERC20 token", async () => {
// preparation
- const ercOnSchain = erc20.address;
- const fakeErc20OnSchain = erc20Clone.address;
+ const ercOnSchain = erc20;
+ const fakeErc20OnSchain = erc20Clone;
const amount = 10;
const to = user.address;
const senderFromSchain = deployer.address;
@@ -319,25 +319,25 @@ describe("DepositBoxERC20", () => {
const message = {
data: await messages.encodeTransferErc20Message(ercOnSchain, to, amount),
- destinationContract: depositBoxERC20.address,
+ destinationContract: depositBoxERC20,
sender: senderFromSchain
};
const messageWithWrongTokenAddress = {
data: await messages.encodeTransferErc20Message(user2.address, to, amount),
- destinationContract: depositBoxERC20.address,
+ destinationContract: depositBoxERC20,
sender: senderFromSchain
};
const messageWithNotMintedToken = {
data: await messages.encodeTransferErc20Message(fakeErc20OnSchain, to, amount),
- destinationContract: depositBoxERC20.address,
+ destinationContract: depositBoxERC20,
sender: senderFromSchain
};
await initializeSchain(contractManager, schainName, schainOwner.address, 1, 1);
await setCommonPublicKey(contractManager, schainName);
- await depositBoxERC20.connect(user).depositERC20(schainName, erc20.address, amount)
+ await depositBoxERC20.connect(user).depositERC20(schainName, erc20, amount)
.should.be.eventually.rejectedWith("Unconnected chain");
await linker
@@ -351,31 +351,42 @@ describe("DepositBoxERC20", () => {
await depositBoxERC20.connect(schainOwner).disableWhitelist(schainName);
await erc20.connect(deployer).mint(user.address, amount * 2);
- await depositBoxERC20.connect(user).depositERC20(schainName, erc20.address, amount)
+ await depositBoxERC20.connect(user).depositERC20(schainName, erc20, amount)
.should.be.eventually.rejectedWith("DepositBox was not approved for ERC20 token");
- await erc20.connect(user).approve(depositBoxERC20.address, amount * 2);
+ await erc20.connect(user).approve(depositBoxERC20, amount * 2);
- await depositBoxERC20.connect(user).depositERC20(schainName, erc20.address, amount);
+ await depositBoxERC20.connect(user).depositERC20(schainName, erc20, amount);
+
+ const tx = await messageProxy
+ .connect(nodeAddress)
+ .postIncomingMessages(
+ schainName, 0,
+ [
+ messageWithWrongTokenAddress,
+ messageWithNotMintedToken
+ ],
+ sign
+ );
+
+ await expect(tx)
+ .to.emit(messageProxy, "PostMessageError")
+ .withArgs(0n, ethers.toUtf8Bytes("Given address is not a contract"));
+
+ await expect(tx)
+ .to.emit(messageProxy, "PostMessageError")
+ .withArgs(1n, ethers.toUtf8Bytes("Not enough money"));
- const res = await (await messageProxy.connect(nodeAddress).postIncomingMessages(schainName, 0, [messageWithWrongTokenAddress, messageWithNotMintedToken], sign)).wait();
- if (res.events) {
- assert.equal(res.events[0].event, "PostMessageError");
- assert.equal(stringFromHex(res.events[0].args?.message), "Given address is not a contract");
- assert.equal(res.events[1].event, "PostMessageError");
- assert.equal(stringFromHex(res.events[1].args?.message), "Not enough money");
- } else {
- assert(false, "No events were emitted");
- }
- const balanceBefore = await deployer.getBalance();
+ const balanceBefore = await ethers.provider.getBalance(deployer.address);
await messageProxy.connect(nodeAddress).postIncomingMessages(schainName, 2, [message], sign);
- const balance = await deployer.getBalance();
+ const balance = await ethers.provider.getBalance(deployer.address);
balance.should.be.least(balanceBefore);
balance.should.be.closeTo(balanceBefore, 10);
- await depositBoxERC20.connect(user).depositERC20(schainName, erc20.address, amount);
+ await depositBoxERC20.connect(user).depositERC20(schainName, erc20, amount);
await messageProxy.connect(nodeAddress).postIncomingMessages(schainName, 3, [message], sign);
- expect(BigNumber.from(await depositBoxERC20.transferredAmount(schainHash, erc20.address)).toString()).to.be.equal(BigNumber.from(0).toString());
+ const transferredAmount = await depositBoxERC20.transferredAmount(schainHash, erc20);
+ expect(transferredAmount).to.be.equal(0n);
(await erc20.balanceOf(user.address)).toString().should.be.equal((amount * 2).toString());
@@ -397,20 +408,20 @@ describe("DepositBoxERC20", () => {
};
const message = {
- data: await messages.encodeTransferErc20Message(erc20.address, to, amount),
- destinationContract: depositBoxERC20.address,
+ data: await messages.encodeTransferErc20Message(erc20, to, amount),
+ destinationContract: depositBoxERC20,
sender: senderFromSchain
};
const messageTWR = {
- data: await messages.encodeTransferErc20Message(erc20TWR.address, to, amount),
- destinationContract: depositBoxERC20.address,
+ data: await messages.encodeTransferErc20Message(erc20TWR, to, amount),
+ destinationContract: depositBoxERC20,
sender: senderFromSchain
};
await initializeSchain(contractManager, schainName, schainOwner.address, 1, 1);
await setCommonPublicKey(contractManager, schainName);
- await depositBoxERC20.connect(user).depositERC20(schainName, erc20.address, amount)
+ await depositBoxERC20.connect(user).depositERC20(schainName, erc20, amount)
.should.be.eventually.rejectedWith("Unconnected chain");
await linker
@@ -425,23 +436,25 @@ describe("DepositBoxERC20", () => {
await erc20.connect(deployer).mint(user.address, amount * 2);
await erc20TWR.connect(deployer).mint(user.address, amount * 2);
- await erc20.connect(user).approve(depositBoxERC20.address, amount * 2);
- await erc20TWR.connect(user).approve(depositBoxERC20.address, amount * 2);
+ await erc20.connect(user).approve(depositBoxERC20, amount * 2);
+ await erc20TWR.connect(user).approve(depositBoxERC20, amount * 2);
- await depositBoxERC20.connect(user).depositERC20(schainName, erc20.address, amount);
- await depositBoxERC20.connect(user).depositERC20(schainName, erc20TWR.address, amount);
+ await depositBoxERC20.connect(user).depositERC20(schainName, erc20, amount);
+ await depositBoxERC20.connect(user).depositERC20(schainName, erc20TWR, amount);
- const balanceBefore = await deployer.getBalance();
+ const balanceBefore = await ethers.provider.getBalance(deployer.address);
await messageProxy.connect(nodeAddress).postIncomingMessages(schainName, 0, [message, messageTWR], sign);
- const balance = await deployer.getBalance();
+ const balance = await ethers.provider.getBalance(deployer.address);
balance.should.be.least(balanceBefore);
balance.should.be.closeTo(balanceBefore, 10);
- await depositBoxERC20.connect(user).depositERC20(schainName, erc20.address, amount);
- await depositBoxERC20.connect(user).depositERC20(schainName, erc20TWR.address, amount);
+ await depositBoxERC20.connect(user).depositERC20(schainName, erc20, amount);
+ await depositBoxERC20.connect(user).depositERC20(schainName, erc20TWR, amount);
await messageProxy.connect(nodeAddress).postIncomingMessages(schainName, 2, [message, messageTWR], sign);
- expect(BigNumber.from(await depositBoxERC20.transferredAmount(schainHash, erc20.address)).toString()).to.be.equal(BigNumber.from(0).toString());
- expect(BigNumber.from(await depositBoxERC20.transferredAmount(schainHash, erc20TWR.address)).toString()).to.be.equal(BigNumber.from(0).toString());
+ const transferredAmount = await depositBoxERC20.transferredAmount(schainHash, erc20);
+ expect(transferredAmount).to.be.equal(0);
+ const transferredAmountTWR = await depositBoxERC20.transferredAmount(schainHash, erc20TWR);
+ expect(transferredAmountTWR).to.be.equal(0);
(await erc20.balanceOf(user.address)).toString().should.be.equal((amount * 2).toString());
(await erc20TWR.balanceOf(user.address)).toString().should.be.equal((amount * 2).toString());
@@ -455,7 +468,7 @@ describe("DepositBoxERC20", () => {
const bigAmount = 10;
const timeDelay = 24 * 60 * 60;
const arbitrageDuration = 30 * 24 * 60 * 60;
- const ethDeposit = ethers.utils.parseEther("1");
+ const ethDeposit = ethers.parseEther("1");
const randomSignature = {
blsSignature: BlsSignature,
counter: Counter,
@@ -482,17 +495,17 @@ describe("DepositBoxERC20", () => {
await token.mint(user.address, depositedAmount);
await token2.mint(user.address, depositedAmount);
- await token.connect(user).approve(depositBoxERC20.address, depositedAmount);
- await depositBoxERC20.connect(user).depositERC20(schainName, token.address, depositedAmount);
+ await token.connect(user).approve(depositBoxERC20, depositedAmount);
+ await depositBoxERC20.connect(user).depositERC20(schainName, token, depositedAmount);
- await token2.connect(user).approve(depositBoxERC20.address, depositedAmount);
- await depositBoxERC20.connect(user).depositERC20(schainName, token2.address, depositedAmount);
+ await token2.connect(user).approve(depositBoxERC20, depositedAmount);
+ await depositBoxERC20.connect(user).depositERC20(schainName, token2, depositedAmount);
await expect(
- depositBoxERC20.connect(schainOwner).setBigTransferValue(schainName, token.address, bigAmount)
+ depositBoxERC20.connect(schainOwner).setBigTransferValue(schainName, token, bigAmount)
).to.emit(depositBoxERC20, "BigTransferThresholdIsChanged")
- .withArgs(schainHash, token.address, 0, bigAmount);
- await depositBoxERC20.connect(schainOwner).setBigTransferValue(schainName, token2.address, bigAmount);
+ .withArgs(schainHash, token, 0, bigAmount);
+ await depositBoxERC20.connect(schainOwner).setBigTransferValue(schainName, token2, bigAmount);
await expect(
depositBoxERC20.connect(schainOwner).setBigTransferDelay(schainName, timeDelay)
).to.emit(depositBoxERC20, "BigTransferDelayIsChanged")
@@ -509,15 +522,15 @@ describe("DepositBoxERC20", () => {
const balanceBefore = await token.balanceOf(user.address);
const message = {
- data: await messages.encodeTransferErc20Message(token.address, user.address, bigAmount),
- destinationContract: depositBoxERC20.address,
+ data: await messages.encodeTransferErc20Message(token, user.address, bigAmount),
+ destinationContract: depositBoxERC20,
sender: deployer.address
};
await expect(
messageProxy.connect(nodeAddress).postIncomingMessages(schainName, 0, [message], randomSignature)
).to.emit(depositBoxERC20, "TransferDelayed")
- .withArgs(0, user.address, token.address, bigAmount);
+ .withArgs(0, user.address, token, bigAmount);
(await token.balanceOf(user.address)).should.be.equal(balanceBefore);
@@ -530,31 +543,31 @@ describe("DepositBoxERC20", () => {
await depositBoxERC20.connect(user).retrieve();
- (await token.balanceOf(user.address)).should.be.equal(balanceBefore.add(bigAmount));
+ (await token.balanceOf(user.address)).should.be.equal(balanceBefore + BigInt(bigAmount));
});
it("should allow to perform arbitrage", async () => {
const smallTransferOfToken1 = {
- data: await messages.encodeTransferErc20Message(token.address, user.address, amount),
- destinationContract: depositBoxERC20.address,
+ data: await messages.encodeTransferErc20Message(token, user.address, amount),
+ destinationContract: depositBoxERC20,
sender: deployer.address
};
const bigTransferOfToken1 = {
- data: await messages.encodeTransferErc20Message(token.address, user.address, bigAmount),
- destinationContract: depositBoxERC20.address,
+ data: await messages.encodeTransferErc20Message(token, user.address, bigAmount),
+ destinationContract: depositBoxERC20,
sender: deployer.address
};
const smallTransferOfToken2 = {
- data: await messages.encodeTransferErc20Message(token2.address, user.address, amount),
- destinationContract: depositBoxERC20.address,
+ data: await messages.encodeTransferErc20Message(token2, user.address, amount),
+ destinationContract: depositBoxERC20,
sender: deployer.address
};
const bigTransferOfToken2 = {
- data: await messages.encodeTransferErc20Message(token2.address, user.address, bigAmount),
- destinationContract: depositBoxERC20.address,
+ data: await messages.encodeTransferErc20Message(token2, user.address, bigAmount),
+ destinationContract: depositBoxERC20,
sender: deployer.address
};
@@ -578,18 +591,18 @@ describe("DepositBoxERC20", () => {
randomSignature
);
- (await depositBoxERC20.getDelayedAmount(user.address, token.address))
+ (await depositBoxERC20.getDelayedAmount(user.address, token))
.should.be.equal(4 * bigAmount);
- (await depositBoxERC20.getDelayedAmount(user.address, token2.address))
+ (await depositBoxERC20.getDelayedAmount(user.address, token2))
.should.be.equal(bigAmount);
- (await depositBoxERC20.getNextUnlockTimestamp(user.address, token.address))
+ (await depositBoxERC20.getNextUnlockTimestamp(user.address, token))
.should.be.equal((await currentTime()) + timeDelay);
- (await depositBoxERC20.getNextUnlockTimestamp(user.address, token2.address))
+ (await depositBoxERC20.getNextUnlockTimestamp(user.address, token2))
.should.be.equal((await currentTime()) + timeDelay);
// 2 small transfers of token 1 and 2 small transfers of token 2 must be processed without delay
- (await token.balanceOf(user.address)).should.be.equal(token1BalanceBefore.add(2 * amount));
- (await token2.balanceOf(user.address)).should.be.equal(token2BalanceBefore.add(2 * amount));
+ (await token.balanceOf(user.address)).should.be.equal(token1BalanceBefore + BigInt(2 * amount));
+ (await token2.balanceOf(user.address)).should.be.equal(token2BalanceBefore + BigInt(2 * amount));
// #0 - big transfer of token 1
// #1 - big transfer of token 1
@@ -614,9 +627,9 @@ describe("DepositBoxERC20", () => {
// transfer #2 and #3 must be unlocked
await depositBoxERC20.retrieveFor(user.address);
(await token.balanceOf(user.address))
- .should.be.equal(token1BalanceBefore.add(2 * amount + bigAmount));
+ .should.be.equal(token1BalanceBefore + BigInt(2 * amount + bigAmount));
(await token2.balanceOf(user.address))
- .should.be.equal(token2BalanceBefore.add(2 * amount + bigAmount));
+ .should.be.equal(token2BalanceBefore + BigInt(2 * amount + bigAmount));
await depositBoxERC20.rejectTransfer(suspicionsTransfers[0])
.should.be.rejectedWith("Sender is not an Schain owner");
@@ -631,18 +644,18 @@ describe("DepositBoxERC20", () => {
await depositBoxERC20.connect(schainOwner).validateTransfer(suspicionsTransfers[1])
.should.be.rejectedWith("Arbitrage has to be active");
(await token.balanceOf(user.address))
- .should.be.equal(token1BalanceBefore.add(2 * amount + 2 * bigAmount));
+ .should.be.equal(token1BalanceBefore + BigInt(2 * amount + 2 * bigAmount));
await skipTime(arbitrageDuration);
await depositBoxERC20.connect(user).retrieve();
(await token.balanceOf(user.address))
- .should.be.equal(token1BalanceBefore.add(2 * amount + 3 * bigAmount));
+ .should.be.equal(token1BalanceBefore + BigInt(2 * amount + 3 * bigAmount));
});
it("should not stuck after big amount of competed transfers", async () => {
const bigTransfer = {
- data: await messages.encodeTransferErc20Message(token.address, user.address, bigAmount),
- destinationContract: depositBoxERC20.address,
+ data: await messages.encodeTransferErc20Message(token, user.address, bigAmount),
+ destinationContract: depositBoxERC20,
sender: deployer.address
};
@@ -650,7 +663,7 @@ describe("DepositBoxERC20", () => {
const amountOfCompetedTransfers = 15;
// send `amountOfCompetedTransfers` + 1 big transfer
- const batch = (await messageProxy.MESSAGES_LENGTH()).toNumber();
+ const batch = Number(await messageProxy.MESSAGES_LENGTH());
const fullBatches = Math.floor((amountOfCompetedTransfers + 1) / batch);
const rest = amountOfCompetedTransfers + 1 - fullBatches * batch;
for (let i = 0; i < fullBatches; ++i) {
@@ -677,35 +690,35 @@ describe("DepositBoxERC20", () => {
await depositBoxERC20.connect(schainOwner).validateTransfer(completedTransfer);
}
- (await token.balanceOf(user.address)).should.be.equal(token1BalanceBefore.add(bigAmount * amountOfCompetedTransfers));
+ (await token.balanceOf(user.address)).should.be.equal(token1BalanceBefore + BigInt(bigAmount * amountOfCompetedTransfers));
await skipTime(timeDelay);
// first retrieve removes already completed transfers after an arbitrage from the queue
await depositBoxERC20.retrieveFor(user.address);
- (await token.balanceOf(user.address)).should.be.equal(token1BalanceBefore.add(bigAmount * amountOfCompetedTransfers));
+ (await token.balanceOf(user.address)).should.be.equal(token1BalanceBefore + BigInt(bigAmount * amountOfCompetedTransfers));
// second retrieve withdraws the rest
await depositBoxERC20.retrieveFor(user.address);
- (await token.balanceOf(user.address)).should.be.equal(token1BalanceBefore.add(bigAmount * (amountOfCompetedTransfers + 1)));
+ (await token.balanceOf(user.address)).should.be.equal(token1BalanceBefore + BigInt(bigAmount * (amountOfCompetedTransfers + 1)));
});
it("should not stuck if a token reverts transfer", async () => {
const bigTransfer = {
- data: await messages.encodeTransferErc20Message(token.address, user.address, bigAmount),
- destinationContract: depositBoxERC20.address,
+ data: await messages.encodeTransferErc20Message(token, user.address, bigAmount),
+ destinationContract: depositBoxERC20,
sender: deployer.address
};
const badToken = await (await ethers.getContractFactory("RevertableERC20")).deploy("Test", "TST");
await badToken.mint(user.address, bigAmount);
- await badToken.connect(user).approve(depositBoxERC20.address, bigAmount);
- await depositBoxERC20.connect(user).depositERC20(schainName, badToken.address, bigAmount);
+ await badToken.connect(user).approve(depositBoxERC20, bigAmount);
+ await depositBoxERC20.connect(user).depositERC20(schainName, badToken, bigAmount);
const badTokenBigTransfer = {
- data: await messages.encodeTransferErc20Message(badToken.address, user.address, bigAmount),
- destinationContract: depositBoxERC20.address,
+ data: await messages.encodeTransferErc20Message(badToken, user.address, bigAmount),
+ destinationContract: depositBoxERC20,
sender: deployer.address
};
@@ -724,7 +737,7 @@ describe("DepositBoxERC20", () => {
depositBoxERC20.retrieveFor(user.address)
).to.emit(depositBoxERC20, "TransferSkipped")
.withArgs(0);
- (await token.balanceOf(user.address)).should.be.equal(balanceBefore.add(bigAmount));
+ (await token.balanceOf(user.address)).should.be.equal(balanceBefore + BigInt(bigAmount));
});
it("should not allow to set too big delays", async () => {
@@ -742,8 +755,8 @@ describe("DepositBoxERC20", () => {
it("should disable delay for trusted receivers", async () => {
const bigTransfer = {
- data: await messages.encodeTransferErc20Message(token.address, user.address, bigAmount),
- destinationContract: depositBoxERC20.address,
+ data: await messages.encodeTransferErc20Message(token, user.address, bigAmount),
+ destinationContract: depositBoxERC20,
sender: deployer.address
};
@@ -778,14 +791,14 @@ describe("DepositBoxERC20", () => {
);
(await token.balanceOf(user.address)).should.be.equal(bigAmount);
- (await depositBoxERC20.getDelayedAmount(user.address, token.address))
+ (await depositBoxERC20.getDelayedAmount(user.address, token))
.should.be.equal(bigAmount);
})
it("should reduce delay", async () => {
const bigTransfer = {
- data: await messages.encodeTransferErc20Message(token.address, user.address, bigAmount),
- destinationContract: depositBoxERC20.address,
+ data: await messages.encodeTransferErc20Message(token, user.address, bigAmount),
+ destinationContract: depositBoxERC20,
sender: deployer.address
};
@@ -796,7 +809,7 @@ describe("DepositBoxERC20", () => {
randomSignature
);
- (await depositBoxERC20.getNextUnlockTimestamp(user.address, token.address))
+ (await depositBoxERC20.getNextUnlockTimestamp(user.address, token))
.should.be.equal(await currentTime() + timeDelay);
@@ -810,16 +823,16 @@ describe("DepositBoxERC20", () => {
randomSignature
);
- (await depositBoxERC20.getNextUnlockTimestamp(user.address, token.address))
+ (await depositBoxERC20.getNextUnlockTimestamp(user.address, token))
.should.be.equal(await currentTime() + lowerDelay);
- (await depositBoxERC20.getDelayedAmount(user.address, token.address))
+ (await depositBoxERC20.getDelayedAmount(user.address, token))
.should.be.equal(2 * bigAmount);
});
it("should process correctly in non linear order", async () => {
const bigTransfer = {
- data: await messages.encodeTransferErc20Message(token.address, user.address, bigAmount),
- destinationContract: depositBoxERC20.address,
+ data: await messages.encodeTransferErc20Message(token, user.address, bigAmount),
+ destinationContract: depositBoxERC20,
sender: deployer.address
};
@@ -837,14 +850,14 @@ describe("DepositBoxERC20", () => {
await depositBoxERC20.escalate(0);
- (await depositBoxERC20.getNextUnlockTimestamp(user.address, token.address))
+ (await depositBoxERC20.getNextUnlockTimestamp(user.address, token))
.should.be.equal(lockedUntil);
await skipTime(timeDelay);
await depositBoxERC20.retrieveFor(user.address);
- (await depositBoxERC20.getDelayedAmount(user.address, token.address))
+ (await depositBoxERC20.getDelayedAmount(user.address, token))
.should.be.equal(bigAmount);
await messageProxy.connect(nodeAddress).postIncomingMessages(
@@ -857,15 +870,15 @@ describe("DepositBoxERC20", () => {
);
lockedUntil = await currentTime() + timeDelay;
- (await depositBoxERC20.getNextUnlockTimestamp(user.address, token.address))
+ (await depositBoxERC20.getNextUnlockTimestamp(user.address, token))
.should.be.equal(lockedUntil);
- (await depositBoxERC20.getDelayedAmount(user.address, token.address))
+ (await depositBoxERC20.getDelayedAmount(user.address, token))
.should.be.equal(2 * bigAmount);
await skipTime(timeDelay);
await depositBoxERC20.retrieveFor(user.address);
- (await depositBoxERC20.getDelayedAmount(user.address, token.address))
+ (await depositBoxERC20.getDelayedAmount(user.address, token))
.should.be.equal(bigAmount);
(await token.balanceOf(user.address))
.should.be.equal(2 * bigAmount);
diff --git a/test/DepositBoxERC721.ts b/test/DepositBoxERC721.ts
index 25d971dce..2b09e0914 100644
--- a/test/DepositBoxERC721.ts
+++ b/test/DepositBoxERC721.ts
@@ -34,10 +34,10 @@ import {
MessagesTester,
CommunityPool
} from "../typechain";
-import { stringFromHex, stringKeccak256, getBalance, getPublicKey } from "./utils/helper";
+import { getBalance, getPublicKey } from "./utils/helper";
-import chai = require("chai");
-import chaiAlmost = require("chai-almost");
+import chai from "chai";
+import chaiAlmost from "chai-almost";
chai.should();
chai.use(chaiAsPromised);
@@ -55,15 +55,15 @@ import { deployERC721OnChain } from "./utils/deploy/erc721OnChain";
import { deployCommunityPool } from "./utils/deploy/mainnet/communityPool";
import { ethers } from "hardhat";
-import { SignerWithAddress } from "@nomiclabs/hardhat-ethers/dist/src/signer-with-address";
-import { BigNumber, Wallet } from "ethers";
+import { SignerWithAddress } from "@nomicfoundation/hardhat-ethers/signers";
+import { BigNumberish, HDNodeWallet, Wallet } from "ethers";
-import { assert, expect } from "chai";
+import { expect } from "chai";
import { createNode } from "./utils/skale-manager-utils/nodes";
-const BlsSignature: [BigNumber, BigNumber] = [
- BigNumber.from("178325537405109593276798394634841698946852714038246117383766698579865918287"),
- BigNumber.from("493565443574555904019191451171395204672818649274520396086461475162723833781")
+const BlsSignature: [BigNumberish, BigNumberish] = [
+ "178325537405109593276798394634841698946852714038246117383766698579865918287",
+ "493565443574555904019191451171395204672818649274520396086461475162723833781"
];
const HashA = "3080491942974172654518861600747466851589809241462384879086673256057179400078";
const HashB = "15163860114293529009901628456926790077787470245128337652112878212941459329347";
@@ -74,7 +74,7 @@ describe("DepositBoxERC721", () => {
let user: SignerWithAddress;
let user2: SignerWithAddress;
let richGuy: SignerWithAddress;
- let nodeAddress: Wallet;
+ let nodeAddress: HDNodeWallet;
let depositBoxERC721: DepositBoxERC721;
let contractManager: ContractManager;
@@ -84,18 +84,18 @@ describe("DepositBoxERC721", () => {
let messages: MessagesTester;
const contractManagerAddress = "0x0000000000000000000000000000000000000000";
const schainName = "Schain";
- const schainHash = stringKeccak256(schainName);
+ const schainHash = ethers.id(schainName);
before(async () => {
[deployer, user, user2, richGuy] = await ethers.getSigners();
nodeAddress = Wallet.createRandom().connect(ethers.provider);
- const balanceRichGuy = await richGuy.getBalance();
- await richGuy.sendTransaction({to: nodeAddress.address, value: balanceRichGuy.sub(ethers.utils.parseEther("1"))});
+ const balanceRichGuy = await ethers.provider.getBalance(richGuy.address);
+ await richGuy.sendTransaction({to: nodeAddress.address, value: balanceRichGuy - BigInt(ethers.parseEther("1"))});
});
after(async () => {
- const balanceNode = await nodeAddress.getBalance();
- await nodeAddress.sendTransaction({to: richGuy.address, value: balanceNode.sub(ethers.utils.parseEther("1"))});
+ const balanceNode = await ethers.provider.getBalance(nodeAddress.address);
+ await nodeAddress.sendTransaction({to: richGuy.address, value: balanceNode - BigInt(ethers.parseEther("1"))});
});
beforeEach(async () => {
@@ -105,7 +105,7 @@ describe("DepositBoxERC721", () => {
depositBoxERC721 = await deployDepositBoxERC721(contractManager, linker, messageProxy);
communityPool = await deployCommunityPool(contractManager, linker, messageProxy);
messages = await deployMessages();
- await messageProxy.grantRole(await messageProxy.CHAIN_CONNECTOR_ROLE(), linker.address);
+ await messageProxy.grantRole(await messageProxy.CHAIN_CONNECTOR_ROLE(), linker);
await messageProxy.grantRole(await messageProxy.EXTRA_CONTRACT_REGISTRAR_ROLE(), deployer.address);
await initializeSchain(contractManager, schainName, user.address, 1, 1);
const nodeCreationParams = {
@@ -120,9 +120,9 @@ describe("DepositBoxERC721", () => {
await createNode(contractManager, nodeAddress.address, nodeCreationParams);
await addNodesToSchain(contractManager, schainName, [0]);
await rechargeSchainWallet(contractManager, schainName, user2.address, "1000000000000000000");
- await messageProxy.registerExtraContractForAll(depositBoxERC721.address);
- await messageProxy.registerExtraContract(schainName, communityPool.address);
- await messageProxy.registerExtraContract(schainName, linker.address);
+ await messageProxy.registerExtraContractForAll(depositBoxERC721);
+ await messageProxy.registerExtraContract(schainName, communityPool);
+ await messageProxy.registerExtraContract(schainName, linker);
});
describe("tests with `ERC721`", async () => {
@@ -147,14 +147,14 @@ describe("DepositBoxERC721", () => {
// preparation
const amount = 10;
- await depositBoxERC721.connect(user).depositERC721(schainName, erc721.address, amount)
+ await depositBoxERC721.connect(user).depositERC721(schainName, erc721, amount)
.should.be.eventually.rejectedWith("Unconnected chain");
});
it("should rejected with `DepositBox was not approved for ERC721 token`", async () => {
// preparation
const error = "DepositBox was not approved for ERC721 token";
- const contractHere = erc721OnChain.address;
+ const contractHere = erc721OnChain;
const tokenId = 10;
// the wei should be MORE than (55000 * 1000000000)
// GAS_AMOUNT_POST_MESSAGE * AVERAGE_TX_PRICE constants in DepositBox.sol
@@ -172,7 +172,7 @@ describe("DepositBoxERC721", () => {
it("should invoke `depositERC721` without mistakes", async () => {
// preparation
- const contractHere = erc721OnChain.address;
+ const contractHere = erc721OnChain;
const tokenId = 10;
const tokenId2 = 11;
// the wei should be MORE than (55000 * 1000000000)
@@ -182,8 +182,8 @@ describe("DepositBoxERC721", () => {
.connect(deployer)
.connectSchain(schainName, [deployer.address, deployer.address, deployer.address]);
// transfer tokenId from `deployer` to `depositBoxERC721`
- await erc721OnChain.connect(deployer).approve(depositBoxERC721.address, tokenId);
- await erc721OnChain.connect(deployer).approve(depositBoxERC721.address, tokenId2);
+ await erc721OnChain.connect(deployer).approve(depositBoxERC721, tokenId);
+ await erc721OnChain.connect(deployer).approve(depositBoxERC721, tokenId2);
// execution
await depositBoxERC721
.connect(deployer)
@@ -197,13 +197,13 @@ describe("DepositBoxERC721", () => {
.depositERC721(schainName, contractHere, tokenId2)).wait();
// console.log("Gas for depositERC721:", res.receipt.gasUsed);
// expectation
- expect(await erc721OnChain.ownerOf(tokenId)).to.equal(depositBoxERC721.address);
- expect(await erc721OnChain.ownerOf(tokenId2)).to.equal(depositBoxERC721.address);
+ expect(await erc721OnChain.ownerOf(tokenId)).to.equal(depositBoxERC721);
+ expect(await erc721OnChain.ownerOf(tokenId2)).to.equal(depositBoxERC721);
});
it("should invoke `depositERC721Direct` without mistakes", async () => {
// preparation
- const contractHere = erc721OnChain.address;
+ const contractHere = erc721OnChain;
const to = user.address;
const tokenId = 10;
const tokenId2 = 11;
@@ -214,8 +214,8 @@ describe("DepositBoxERC721", () => {
.connect(deployer)
.connectSchain(schainName, [deployer.address, deployer.address, deployer.address]);
// transfer tokenId from `deployer` to `depositBoxERC721`
- await erc721OnChain.connect(deployer).approve(depositBoxERC721.address, tokenId);
- await erc721OnChain.connect(deployer).approve(depositBoxERC721.address, tokenId2);
+ await erc721OnChain.connect(deployer).approve(depositBoxERC721, tokenId);
+ await erc721OnChain.connect(deployer).approve(depositBoxERC721, tokenId2);
// execution
await depositBoxERC721
.connect(deployer)
@@ -227,16 +227,16 @@ describe("DepositBoxERC721", () => {
.connect(deployer)
.depositERC721Direct(schainName, contractHere, tokenId, to)
.should.emit(messageProxy, "OutgoingMessage")
- .withArgs(schainHash, 0, depositBoxERC721.address, deployer.address, data1);
+ .withArgs(schainHash, 0, depositBoxERC721, deployer.address, data1);
await depositBoxERC721
.connect(deployer)
.depositERC721Direct(schainName, contractHere, tokenId2, to)
.should.emit(messageProxy, "OutgoingMessage")
- .withArgs(schainHash, 1, depositBoxERC721.address, deployer.address, data2);
+ .withArgs(schainHash, 1, depositBoxERC721, deployer.address, data2);
// console.log("Gas for depositERC721:", res.receipt.gasUsed);
// expectation
- expect(await erc721OnChain.ownerOf(tokenId)).to.equal(depositBoxERC721.address);
- expect(await erc721OnChain.ownerOf(tokenId2)).to.equal(depositBoxERC721.address);
+ expect(await erc721OnChain.ownerOf(tokenId)).to.equal(depositBoxERC721);
+ expect(await erc721OnChain.ownerOf(tokenId2)).to.equal(depositBoxERC721);
});
});
@@ -247,16 +247,16 @@ describe("DepositBoxERC721", () => {
await linker
.connect(deployer)
.connectSchain(schainName, [deployer.address, deployer.address, deployer.address]);
- await erc721OnChain.connect(deployer).approve(depositBoxERC721.address, tokenId);
+ await erc721OnChain.connect(deployer).approve(depositBoxERC721, tokenId);
await depositBoxERC721.connect(user).disableWhitelist(schainName);
await depositBoxERC721
.connect(deployer)
- .depositERC721(schainName, erc721OnChain.address, tokenId);
- await depositBoxERC721.connect(user).getFunds(schainName, erc721OnChain.address, user.address, tokenId).should.be.eventually.rejectedWith("Schain is not killed");
+ .depositERC721(schainName, erc721OnChain, tokenId);
+ await depositBoxERC721.connect(user).getFunds(schainName, erc721OnChain, user.address, tokenId).should.be.eventually.rejectedWith("Schain is not killed");
await linker.connect(deployer).kill(schainName);
await linker.connect(user).kill(schainName);
- await depositBoxERC721.connect(user).getFunds(schainName, erc721OnChain.address, user.address, tokenId2).should.be.eventually.rejectedWith("Incorrect tokenId");
- await depositBoxERC721.connect(user).getFunds(schainName, erc721OnChain.address, user.address, tokenId);
+ await depositBoxERC721.connect(user).getFunds(schainName, erc721OnChain, user.address, tokenId2).should.be.eventually.rejectedWith("Incorrect tokenId");
+ await depositBoxERC721.connect(user).getFunds(schainName, erc721OnChain, user.address, tokenId);
expect(await erc721OnChain.ownerOf(tokenId)).to.equal(user.address);
});
@@ -264,13 +264,13 @@ describe("DepositBoxERC721", () => {
const fakeERC721Contract = deployer.address;
await depositBoxERC721.connect(user).addERC721TokenByOwner(schainName, fakeERC721Contract)
.should.be.eventually.rejectedWith("Given address is not a contract");
- await depositBoxERC721.connect(deployer).addERC721TokenByOwner(schainName, erc721.address)
+ await depositBoxERC721.connect(deployer).addERC721TokenByOwner(schainName, erc721)
.should.be.eventually.rejectedWith("Sender is not an Schain owner");
- await depositBoxERC721.connect(user).addERC721TokenByOwner(schainName, erc721.address);
- await depositBoxERC721.connect(user).addERC721TokenByOwner(schainName, erc721.address).should.be.eventually.rejectedWith("ERC721 Token was already added");
- expect(await depositBoxERC721.getSchainToERC721(schainName, erc721.address)).to.be.equal(true);
- expect((await depositBoxERC721.getSchainToAllERC721(schainName, 0, 1))[0]).to.be.equal(erc721.address);
+ await depositBoxERC721.connect(user).addERC721TokenByOwner(schainName, erc721);
+ await depositBoxERC721.connect(user).addERC721TokenByOwner(schainName, erc721).should.be.eventually.rejectedWith("ERC721 Token was already added");
+ expect(await depositBoxERC721.getSchainToERC721(schainName, erc721)).to.be.equal(true);
+ expect((await depositBoxERC721.getSchainToAllERC721(schainName, 0, 1))[0]).to.be.equal(erc721);
expect((await depositBoxERC721.getSchainToAllERC721(schainName, 0, 1)).length).to.be.equal(1);
expect((await depositBoxERC721.getSchainToAllERC721Length(schainName)).toString()).to.be.equal("1");
await depositBoxERC721.getSchainToAllERC721(schainName, 1, 0).should.be.eventually.rejectedWith("Range is incorrect");
@@ -282,7 +282,7 @@ describe("DepositBoxERC721", () => {
let erc721: ERC721OnChain;
let weiAmount: string;
let sign: {
- blsSignature: [BigNumber, BigNumber],
+ blsSignature: [BigNumberish, BigNumberish],
counter: number,
hashA: string,
hashB: string,
@@ -317,13 +317,13 @@ describe("DepositBoxERC721", () => {
const senderFromSchain = deployer.address;
const message = {
- data: await messages.encodeTransferErc721Message(erc721.address, to, tokenId),
- destinationContract: depositBoxERC721.address,
+ data: await messages.encodeTransferErc721Message(erc721, to, tokenId),
+ destinationContract: depositBoxERC721,
sender: senderFromSchain
};
await erc721.connect(deployer).mint(deployer.address, tokenId);
- await erc721.connect(deployer).transferFrom(deployer.address, depositBoxERC721.address, tokenId);
+ await erc721.connect(deployer).transferFrom(deployer.address, depositBoxERC721, tokenId);
const balanceBefore = await getBalance(deployer.address);
await messageProxy.connect(nodeAddress).postIncomingMessages(schainName, 0, [message], sign);
@@ -342,20 +342,17 @@ describe("DepositBoxERC721", () => {
const messageWithWrongTokenAddress = {
data: await messages.encodeTransferErc721Message(user2.address, to, tokenId),
- destinationContract: depositBoxERC721.address,
+ destinationContract: depositBoxERC721,
sender: senderFromSchain
};
await erc721.connect(deployer).mint(deployer.address, tokenId);
- await erc721.connect(deployer).transferFrom(deployer.address, depositBoxERC721.address, tokenId);
-
- const res = await (await messageProxy.connect(nodeAddress).postIncomingMessages(schainName, 0, [messageWithWrongTokenAddress], sign)).wait();
- if (res.events) {
- assert.equal(res.events[0].event, "PostMessageError");
- assert.equal(stringFromHex(res.events[0].args?.message), "Given address is not a contract");
- } else {
- assert(false, "No events were emitted");
- }
+ await erc721.connect(deployer).transferFrom(deployer.address, depositBoxERC721, tokenId);
+
+ const tx = await messageProxy.connect(nodeAddress).postIncomingMessages(schainName, 0, [messageWithWrongTokenAddress], sign);
+ await expect(tx)
+ .to.emit(messageProxy, "PostMessageError")
+ .withArgs(0n, ethers.toUtf8Bytes("Given address is not a contract"));
});
it("should revert `Incorrect tokenId`", async () => {
@@ -364,20 +361,17 @@ describe("DepositBoxERC721", () => {
const senderFromSchain = deployer.address;
const messageWithWrongTokenAddress = {
- data: await messages.encodeTransferErc721Message(erc721.address, to, tokenId),
- destinationContract: depositBoxERC721.address,
+ data: await messages.encodeTransferErc721Message(erc721, to, tokenId),
+ destinationContract: depositBoxERC721,
sender: senderFromSchain
};
await erc721.connect(deployer).mint(deployer.address, tokenId);
- const res = await (await messageProxy.connect(nodeAddress).postIncomingMessages(schainName, 0, [messageWithWrongTokenAddress], sign)).wait();
- if (res.events) {
- assert.equal(res.events[0].event, "PostMessageError");
- assert.equal(stringFromHex(res.events[0].args?.message), "Incorrect tokenId");
- } else {
- assert(false, "No events were emitted");
- }
+ const tx = await messageProxy.connect(nodeAddress).postIncomingMessages(schainName, 0, [messageWithWrongTokenAddress], sign);
+ await expect(tx)
+ .to.emit(messageProxy, "PostMessageError")
+ .withArgs(0n, ethers.toUtf8Bytes("Incorrect tokenId"));
});
it("should transfer ERC721 token", async () => {
@@ -388,23 +382,23 @@ describe("DepositBoxERC721", () => {
const senderFromSchain = deployer.address;
const message = {
- data: await messages.encodeTransferErc721Message(erc721.address, to, tokenId),
- destinationContract: depositBoxERC721.address,
+ data: await messages.encodeTransferErc721Message(erc721, to, tokenId),
+ destinationContract: depositBoxERC721,
sender: senderFromSchain
};
await erc721.mint(deployer.address, tokenId);
- await erc721.approve(depositBoxERC721.address, tokenId);
+ await erc721.approve(depositBoxERC721, tokenId);
await depositBoxERC721
- .depositERC721(schainName, erc721.address, tokenId);
+ .depositERC721(schainName, erc721, tokenId);
const balanceBefore = await getBalance(deployer.address);
await messageProxy.connect(nodeAddress).postIncomingMessages(schainName, 0, [message], sign);
const balance = await getBalance(deployer.address);
balance.should.not.be.lessThan(balanceBefore);
balance.should.be.almost(balanceBefore);
- expect(await depositBoxERC721.transferredAmount(erc721.address, tokenId)).to.be.equal(zeroHash);
+ expect(await depositBoxERC721.transferredAmount(erc721, tokenId)).to.be.equal(zeroHash);
(await erc721.ownerOf(tokenId)).should.be.equal(user.address);
});
diff --git a/test/DepositBoxERC721WithMetadata.ts b/test/DepositBoxERC721WithMetadata.ts
index 3d9d67463..31695346e 100644
--- a/test/DepositBoxERC721WithMetadata.ts
+++ b/test/DepositBoxERC721WithMetadata.ts
@@ -34,10 +34,10 @@ import {
MessagesTester,
CommunityPool
} from "../typechain";
-import { stringFromHex, stringKeccak256, getBalance, getPublicKey } from "./utils/helper";
+import { getBalance, getPublicKey } from "./utils/helper";
-import chai = require("chai");
-import chaiAlmost = require("chai-almost");
+import chai from "chai";
+import chaiAlmost from "chai-almost";
chai.should();
chai.use(chaiAsPromised);
@@ -55,15 +55,15 @@ import { deployERC721OnChain } from "./utils/deploy/erc721OnChain";
import { deployCommunityPool } from "./utils/deploy/mainnet/communityPool";
import { ethers } from "hardhat";
-import { SignerWithAddress } from "@nomiclabs/hardhat-ethers/dist/src/signer-with-address";
-import { BigNumber, Wallet } from "ethers";
+import { SignerWithAddress } from "@nomicfoundation/hardhat-ethers/signers";
+import { BigNumberish, HDNodeWallet, Wallet } from "ethers";
-import { assert, expect } from "chai";
+import { expect } from "chai";
import { createNode } from "./utils/skale-manager-utils/nodes";
-const BlsSignature: [BigNumber, BigNumber] = [
- BigNumber.from("178325537405109593276798394634841698946852714038246117383766698579865918287"),
- BigNumber.from("493565443574555904019191451171395204672818649274520396086461475162723833781")
+const BlsSignature: [BigNumberish, BigNumberish] = [
+ "178325537405109593276798394634841698946852714038246117383766698579865918287",
+ "493565443574555904019191451171395204672818649274520396086461475162723833781"
];
const HashA = "3080491942974172654518861600747466851589809241462384879086673256057179400078";
const HashB = "15163860114293529009901628456926790077787470245128337652112878212941459329347";
@@ -74,7 +74,7 @@ describe("DepositBoxERC721WithMetadata", () => {
let user: SignerWithAddress;
let user2: SignerWithAddress;
let richGuy: SignerWithAddress;
- let nodeAddress: Wallet;
+ let nodeAddress: HDNodeWallet;
let depositBoxERC721WithMetadata: DepositBoxERC721WithMetadata;
let contractManager: ContractManager;
@@ -84,18 +84,18 @@ describe("DepositBoxERC721WithMetadata", () => {
let messages: MessagesTester;
const contractManagerAddress = "0x0000000000000000000000000000000000000000";
const schainName = "Schain";
- const schainHash = stringKeccak256(schainName);
+ const schainHash = ethers.id(schainName);
before(async () => {
[deployer, user, user2, richGuy] = await ethers.getSigners();
nodeAddress = Wallet.createRandom().connect(ethers.provider);
- const balanceRichGuy = await richGuy.getBalance();
- await richGuy.sendTransaction({to: nodeAddress.address, value: balanceRichGuy.sub(ethers.utils.parseEther("1"))});
+ const balanceRichGuy = await ethers.provider.getBalance(richGuy.address);
+ await richGuy.sendTransaction({to: nodeAddress.address, value: balanceRichGuy - BigInt(ethers.parseEther("1"))});
});
after(async () => {
- const balanceNode = await nodeAddress.getBalance();
- await nodeAddress.sendTransaction({to: richGuy.address, value: balanceNode.sub(ethers.utils.parseEther("1"))});
+ const balanceNode = await ethers.provider.getBalance(nodeAddress.address);
+ await nodeAddress.sendTransaction({to: richGuy.address, value: balanceNode - BigInt(ethers.parseEther("1"))});
});
beforeEach(async () => {
@@ -105,7 +105,7 @@ describe("DepositBoxERC721WithMetadata", () => {
depositBoxERC721WithMetadata = await deployDepositBoxERC721WithMetadata(contractManager, linker, messageProxy);
communityPool = await deployCommunityPool(contractManager, linker, messageProxy);
messages = await deployMessages();
- await messageProxy.grantRole(await messageProxy.CHAIN_CONNECTOR_ROLE(), linker.address);
+ await messageProxy.grantRole(await messageProxy.CHAIN_CONNECTOR_ROLE(), linker);
await messageProxy.grantRole(await messageProxy.EXTRA_CONTRACT_REGISTRAR_ROLE(), deployer.address);
await initializeSchain(contractManager, schainName, user.address, 1, 1);
const nodeCreationParams = {
@@ -120,9 +120,9 @@ describe("DepositBoxERC721WithMetadata", () => {
await createNode(contractManager, nodeAddress.address, nodeCreationParams);
await addNodesToSchain(contractManager, schainName, [0]);
await rechargeSchainWallet(contractManager, schainName, user2.address, "1000000000000000000");
- await messageProxy.registerExtraContractForAll(depositBoxERC721WithMetadata.address);
- await messageProxy.registerExtraContract(schainName, communityPool.address);
- await messageProxy.registerExtraContract(schainName, linker.address);
+ await messageProxy.registerExtraContractForAll(depositBoxERC721WithMetadata);
+ await messageProxy.registerExtraContract(schainName, communityPool);
+ await messageProxy.registerExtraContract(schainName, linker);
});
describe("tests with `ERC721`", async () => {
@@ -151,14 +151,14 @@ describe("DepositBoxERC721WithMetadata", () => {
// preparation
const amount = 10;
- await depositBoxERC721WithMetadata.connect(user).depositERC721(schainName, erc721.address, amount)
+ await depositBoxERC721WithMetadata.connect(user).depositERC721(schainName, erc721, amount)
.should.be.eventually.rejectedWith("Unconnected chain");
});
it("should rejected with `DepositBox was not approved for ERC721 token`", async () => {
// preparation
const error = "DepositBox was not approved for ERC721 token";
- const contractHere = erc721OnChain.address;
+ const contractHere = erc721OnChain;
const tokenId = 10;
// the wei should be MORE than (55000 * 1000000000)
// GAS_AMOUNT_POST_MESSAGE * AVERAGE_TX_PRICE constants in DepositBox.sol
@@ -176,7 +176,7 @@ describe("DepositBoxERC721WithMetadata", () => {
it("should invoke `depositERC721` without mistakes", async () => {
// preparation
- const contractHere = erc721OnChain.address;
+ const contractHere = erc721OnChain;
const tokenId = 10;
const tokenId2 = 11;
// the wei should be MORE than (55000 * 1000000000)
@@ -186,8 +186,8 @@ describe("DepositBoxERC721WithMetadata", () => {
.connect(deployer)
.connectSchain(schainName, [deployer.address, deployer.address, deployer.address]);
// transfer tokenId from `deployer` to `depositBoxERC721WithMetadata`
- await erc721OnChain.connect(deployer).approve(depositBoxERC721WithMetadata.address, tokenId);
- await erc721OnChain.connect(deployer).approve(depositBoxERC721WithMetadata.address, tokenId2);
+ await erc721OnChain.connect(deployer).approve(depositBoxERC721WithMetadata, tokenId);
+ await erc721OnChain.connect(deployer).approve(depositBoxERC721WithMetadata, tokenId2);
// execution
await depositBoxERC721WithMetadata
.connect(deployer)
@@ -201,13 +201,13 @@ describe("DepositBoxERC721WithMetadata", () => {
.depositERC721(schainName, contractHere, tokenId2)).wait();
// console.log("Gas for depositERC721:", res.receipt.gasUsed);
// expectation
- expect(await erc721OnChain.ownerOf(tokenId)).to.equal(depositBoxERC721WithMetadata.address);
- expect(await erc721OnChain.ownerOf(tokenId2)).to.equal(depositBoxERC721WithMetadata.address);
+ expect(await erc721OnChain.ownerOf(tokenId)).to.equal(depositBoxERC721WithMetadata);
+ expect(await erc721OnChain.ownerOf(tokenId2)).to.equal(depositBoxERC721WithMetadata);
});
it("should invoke `depositERC721Direct` without mistakes", async () => {
// preparation
- const contractHere = erc721OnChain.address;
+ const contractHere = erc721OnChain;
const to = user.address;
const tokenId = 10;
const tokenId2 = 11;
@@ -218,8 +218,8 @@ describe("DepositBoxERC721WithMetadata", () => {
.connect(deployer)
.connectSchain(schainName, [deployer.address, deployer.address, deployer.address]);
// transfer tokenId from `deployer` to `depositBoxERC721`
- await erc721OnChain.connect(deployer).approve(depositBoxERC721WithMetadata.address, tokenId);
- await erc721OnChain.connect(deployer).approve(depositBoxERC721WithMetadata.address, tokenId2);
+ await erc721OnChain.connect(deployer).approve(depositBoxERC721WithMetadata, tokenId);
+ await erc721OnChain.connect(deployer).approve(depositBoxERC721WithMetadata, tokenId2);
// execution
await depositBoxERC721WithMetadata
.connect(deployer)
@@ -231,16 +231,16 @@ describe("DepositBoxERC721WithMetadata", () => {
.connect(deployer)
.depositERC721Direct(schainName, contractHere, tokenId, to)
.should.emit(messageProxy, "OutgoingMessage")
- .withArgs(schainHash, 0, depositBoxERC721WithMetadata.address, deployer.address, data1);
+ .withArgs(schainHash, 0, depositBoxERC721WithMetadata, deployer.address, data1);
await depositBoxERC721WithMetadata
.connect(deployer)
.depositERC721Direct(schainName, contractHere, tokenId2, to)
.should.emit(messageProxy, "OutgoingMessage")
- .withArgs(schainHash, 1, depositBoxERC721WithMetadata.address, deployer.address, data2);
+ .withArgs(schainHash, 1, depositBoxERC721WithMetadata, deployer.address, data2);
// console.log("Gas for depositERC721:", res.receipt.gasUsed);
// expectation
- expect(await erc721OnChain.ownerOf(tokenId)).to.equal(depositBoxERC721WithMetadata.address);
- expect(await erc721OnChain.ownerOf(tokenId2)).to.equal(depositBoxERC721WithMetadata.address);
+ expect(await erc721OnChain.ownerOf(tokenId)).to.equal(depositBoxERC721WithMetadata);
+ expect(await erc721OnChain.ownerOf(tokenId2)).to.equal(depositBoxERC721WithMetadata);
});
});
@@ -251,16 +251,16 @@ describe("DepositBoxERC721WithMetadata", () => {
await linker
.connect(deployer)
.connectSchain(schainName, [deployer.address, deployer.address, deployer.address]);
- await erc721OnChain.connect(deployer).approve(depositBoxERC721WithMetadata.address, tokenId);
+ await erc721OnChain.connect(deployer).approve(depositBoxERC721WithMetadata, tokenId);
await depositBoxERC721WithMetadata.connect(user).disableWhitelist(schainName);
await depositBoxERC721WithMetadata
.connect(deployer)
- .depositERC721(schainName, erc721OnChain.address, tokenId);
- await depositBoxERC721WithMetadata.connect(user).getFunds(schainName, erc721OnChain.address, user.address, tokenId).should.be.eventually.rejectedWith("Schain is not killed");
+ .depositERC721(schainName, erc721OnChain, tokenId);
+ await depositBoxERC721WithMetadata.connect(user).getFunds(schainName, erc721OnChain, user.address, tokenId).should.be.eventually.rejectedWith("Schain is not killed");
await linker.connect(deployer).kill(schainName);
await linker.connect(user).kill(schainName);
- await depositBoxERC721WithMetadata.connect(user).getFunds(schainName, erc721OnChain.address, user.address, tokenId2).should.be.eventually.rejectedWith("Incorrect tokenId");
- await depositBoxERC721WithMetadata.connect(user).getFunds(schainName, erc721OnChain.address, user.address, tokenId);
+ await depositBoxERC721WithMetadata.connect(user).getFunds(schainName, erc721OnChain, user.address, tokenId2).should.be.eventually.rejectedWith("Incorrect tokenId");
+ await depositBoxERC721WithMetadata.connect(user).getFunds(schainName, erc721OnChain, user.address, tokenId);
expect(await erc721OnChain.ownerOf(tokenId)).to.equal(user.address);
});
@@ -268,13 +268,13 @@ describe("DepositBoxERC721WithMetadata", () => {
const fakeERC721Contract = deployer.address;
await depositBoxERC721WithMetadata.connect(user).addERC721TokenByOwner(schainName, fakeERC721Contract)
.should.be.eventually.rejectedWith("Given address is not a contract");
- await depositBoxERC721WithMetadata.connect(deployer).addERC721TokenByOwner(schainName, erc721.address)
+ await depositBoxERC721WithMetadata.connect(deployer).addERC721TokenByOwner(schainName, erc721)
.should.be.eventually.rejectedWith("Sender is not an Schain owner");
- await depositBoxERC721WithMetadata.connect(user).addERC721TokenByOwner(schainName, erc721.address);
- await depositBoxERC721WithMetadata.connect(user).addERC721TokenByOwner(schainName, erc721.address).should.be.eventually.rejectedWith("ERC721 Token was already added");
- expect(await depositBoxERC721WithMetadata.getSchainToERC721(schainName, erc721.address)).to.be.equal(true);
- expect((await depositBoxERC721WithMetadata.getSchainToAllERC721(schainName, 0, 1))[0]).to.be.equal(erc721.address);
+ await depositBoxERC721WithMetadata.connect(user).addERC721TokenByOwner(schainName, erc721);
+ await depositBoxERC721WithMetadata.connect(user).addERC721TokenByOwner(schainName, erc721).should.be.eventually.rejectedWith("ERC721 Token was already added");
+ expect(await depositBoxERC721WithMetadata.getSchainToERC721(schainName, erc721)).to.be.equal(true);
+ expect((await depositBoxERC721WithMetadata.getSchainToAllERC721(schainName, 0, 1))[0]).to.be.equal(erc721);
expect((await depositBoxERC721WithMetadata.getSchainToAllERC721(schainName, 0, 1)).length).to.be.equal(1);
expect((await depositBoxERC721WithMetadata.getSchainToAllERC721Length(schainName)).toString()).to.be.equal("1");
await depositBoxERC721WithMetadata.getSchainToAllERC721(schainName, 1, 0).should.be.eventually.rejectedWith("Range is incorrect");
@@ -286,7 +286,7 @@ describe("DepositBoxERC721WithMetadata", () => {
let erc721: ERC721OnChain;
let weiAmount: string;
let sign: {
- blsSignature: [BigNumber, BigNumber],
+ blsSignature: [BigNumberish, BigNumberish],
counter: number,
hashA: string,
hashB: string,
@@ -322,14 +322,14 @@ describe("DepositBoxERC721WithMetadata", () => {
const senderFromSchain = deployer.address;
const message = {
- data: await messages.encodeTransferErc721MessageWithMetadata(erc721.address, to, tokenId, tokenURI),
- destinationContract: depositBoxERC721WithMetadata.address,
+ data: await messages.encodeTransferErc721MessageWithMetadata(erc721, to, tokenId, tokenURI),
+ destinationContract: depositBoxERC721WithMetadata,
sender: senderFromSchain
};
await erc721.connect(deployer).mint(deployer.address, tokenId);
await erc721.connect(deployer).setTokenURI(tokenId, tokenURI);
- await erc721.connect(deployer).transferFrom(deployer.address, depositBoxERC721WithMetadata.address, tokenId);
+ await erc721.connect(deployer).transferFrom(deployer.address, depositBoxERC721WithMetadata, tokenId);
const balanceBefore = await getBalance(deployer.address);
await messageProxy.connect(nodeAddress).postIncomingMessages(schainName, 0, [message], sign);
@@ -350,21 +350,18 @@ describe("DepositBoxERC721WithMetadata", () => {
const messageWithWrongTokenAddress = {
data: await messages.encodeTransferErc721MessageWithMetadata(user2.address, to, tokenId, tokenURI),
- destinationContract: depositBoxERC721WithMetadata.address,
+ destinationContract: depositBoxERC721WithMetadata,
sender: senderFromSchain
};
await erc721.connect(deployer).mint(deployer.address, tokenId);
await erc721.connect(deployer).setTokenURI(tokenId, tokenURI);
- await erc721.connect(deployer).transferFrom(deployer.address, depositBoxERC721WithMetadata.address, tokenId);
-
- const res = await (await messageProxy.connect(nodeAddress).postIncomingMessages(schainName, 0, [messageWithWrongTokenAddress], sign)).wait();
- if (res.events) {
- assert.equal(res.events[0].event, "PostMessageError");
- assert.equal(stringFromHex(res.events[0].args?.message), "Given address is not a contract");
- } else {
- assert(false, "No events were emitted");
- }
+ await erc721.connect(deployer).transferFrom(deployer.address, depositBoxERC721WithMetadata, tokenId);
+
+ const tx = await messageProxy.connect(nodeAddress).postIncomingMessages(schainName, 0, [messageWithWrongTokenAddress], sign);
+ await expect(tx)
+ .to.emit(messageProxy, "PostMessageError")
+ .withArgs(0n, ethers.toUtf8Bytes("Given address is not a contract"));
});
it("should revert `Incorrect tokenId`", async () => {
@@ -374,21 +371,18 @@ describe("DepositBoxERC721WithMetadata", () => {
const senderFromSchain = deployer.address;
const messageWithWrongTokenAddress = {
- data: await messages.encodeTransferErc721MessageWithMetadata(erc721.address, to, tokenId, tokenURI),
- destinationContract: depositBoxERC721WithMetadata.address,
+ data: await messages.encodeTransferErc721MessageWithMetadata(erc721, to, tokenId, tokenURI),
+ destinationContract: depositBoxERC721WithMetadata,
sender: senderFromSchain
};
await erc721.connect(deployer).mint(deployer.address, tokenId);
await erc721.connect(deployer).setTokenURI(tokenId, tokenURI);
- const res = await (await messageProxy.connect(nodeAddress).postIncomingMessages(schainName, 0, [messageWithWrongTokenAddress], sign)).wait();
- if (res.events) {
- assert.equal(res.events[0].event, "PostMessageError");
- assert.equal(stringFromHex(res.events[0].args?.message), "Incorrect tokenId");
- } else {
- assert(false, "No events were emitted");
- }
+ const tx = await messageProxy.connect(nodeAddress).postIncomingMessages(schainName, 0, [messageWithWrongTokenAddress], sign);
+ await expect(tx)
+ .to.emit(messageProxy, "PostMessageError")
+ .withArgs(0n, ethers.toUtf8Bytes("Incorrect tokenId"));
});
it("should transfer ERC721 token", async () => {
@@ -400,24 +394,24 @@ describe("DepositBoxERC721WithMetadata", () => {
const senderFromSchain = deployer.address;
const message = {
- data: await messages.encodeTransferErc721MessageWithMetadata(erc721.address, to, tokenId, tokenURI),
- destinationContract: depositBoxERC721WithMetadata.address,
+ data: await messages.encodeTransferErc721MessageWithMetadata(erc721, to, tokenId, tokenURI),
+ destinationContract: depositBoxERC721WithMetadata,
sender: senderFromSchain
};
await erc721.mint(deployer.address, tokenId);
await erc721.connect(deployer).setTokenURI(tokenId, tokenURI);
- await erc721.approve(depositBoxERC721WithMetadata.address, tokenId);
+ await erc721.approve(depositBoxERC721WithMetadata, tokenId);
await depositBoxERC721WithMetadata
- .depositERC721(schainName, erc721.address, tokenId);
+ .depositERC721(schainName, erc721, tokenId);
const balanceBefore = await getBalance(deployer.address);
await messageProxy.connect(nodeAddress).postIncomingMessages(schainName, 0, [message], sign);
const balance = await getBalance(deployer.address);
balance.should.not.be.lessThan(balanceBefore);
balance.should.be.almost(balanceBefore);
- expect(await depositBoxERC721WithMetadata.transferredAmount(erc721.address, tokenId)).to.be.equal(zeroHash);
+ expect(await depositBoxERC721WithMetadata.transferredAmount(erc721, tokenId)).to.be.equal(zeroHash);
(await erc721.ownerOf(tokenId)).should.be.equal(user.address);
(await erc721.tokenURI(tokenId)).should.be.equal(tokenURI);
diff --git a/test/DepositBoxEth.ts b/test/DepositBoxEth.ts
index 617d9c740..3e38e659d 100644
--- a/test/DepositBoxEth.ts
+++ b/test/DepositBoxEth.ts
@@ -33,10 +33,10 @@ import {
MessagesTester,
CommunityPool
} from "../typechain";
-import { stringKeccak256, getBalance, getPublicKey } from "./utils/helper";
+import { getBalance, getPublicKey } from "./utils/helper";
-import chai = require("chai");
-import chaiAlmost = require("chai-almost");
+import chai from "chai";
+import chaiAlmost from "chai-almost";
chai.should();
chai.use(chaiAsPromised);
@@ -54,30 +54,33 @@ import { deployCommunityPool } from "./utils/deploy/mainnet/communityPool";
import { deployFallbackEthTester } from "./utils/deploy/test/fallbackEthTester";
import { ethers } from "hardhat";
-import { SignerWithAddress } from "@nomiclabs/hardhat-ethers/dist/src/signer-with-address";
-import { BigNumber, ContractTransaction, Wallet } from "ethers";
+import { SignerWithAddress } from "@nomicfoundation/hardhat-ethers/signers";
+import { BigNumberish, ContractTransactionResponse, HDNodeWallet, Wallet } from "ethers";
-import { assert, expect } from "chai";
+import { expect } from "chai";
import { createNode } from "./utils/skale-manager-utils/nodes";
-const BlsSignature: [BigNumber, BigNumber] = [
- BigNumber.from("178325537405109593276798394634841698946852714038246117383766698579865918287"),
- BigNumber.from("493565443574555904019191451171395204672818649274520396086461475162723833781")
+const BlsSignature: [BigNumberish, BigNumberish] = [
+ "178325537405109593276798394634841698946852714038246117383766698579865918287",
+ "493565443574555904019191451171395204672818649274520396086461475162723833781"
];
const HashA = "3080491942974172654518861600747466851589809241462384879086673256057179400078";
const HashB = "15163860114293529009901628456926790077787470245128337652112878212941459329347";
const Counter = 0;
-const weiTolerance = ethers.utils.parseEther("0.002").toNumber();
+const weiTolerance = Number(ethers.parseEther("0.002"));
-async function reimbursed(transaction: ContractTransaction, operation?: string) {
+async function reimbursed(transaction: ContractTransactionResponse, operation?: string) {
const receipt = await transaction.wait();
+ if (!receipt) {
+ throw new Error("Transaction failed");
+ }
const sender = transaction.from;
- const balanceBefore = await ethers.provider.getBalance(sender, receipt.blockNumber - 1);
+ const balanceBefore = await ethers.provider.getBalance(sender, (receipt.blockNumber ?? 1) - 1);
const balanceAfter = await ethers.provider.getBalance(sender, receipt.blockNumber);
- if (balanceAfter.lt(balanceBefore)) {
- const shortageEth = balanceBefore.sub(balanceAfter);
- const shortageGas = shortageEth.div(receipt.effectiveGasPrice);
+ if (balanceAfter < balanceBefore) {
+ const shortageEth = balanceBefore - balanceAfter;
+ const shortageGas = shortageEth / transaction.gasPrice;
console.log("Reimbursement failed.")
console.log(`${shortageGas.toString()} gas units was not reimbursed`);
@@ -95,7 +98,7 @@ describe("DepositBoxEth", () => {
let user: SignerWithAddress;
let user2: SignerWithAddress;
let richGuy: SignerWithAddress;
- let nodeAddress: Wallet;
+ let nodeAddress: HDNodeWallet;
let depositBoxEth: DepositBoxEth;
let contractManager: ContractManager;
@@ -105,18 +108,18 @@ describe("DepositBoxEth", () => {
let messages: MessagesTester;
const contractManagerAddress = "0x0000000000000000000000000000000000000000";
const schainName = "Schain";
- const schainHash = stringKeccak256(schainName);
+ const schainHash = ethers.id(schainName);
before(async () => {
[deployer, user, user2, richGuy] = await ethers.getSigners();
nodeAddress = Wallet.createRandom().connect(ethers.provider);
- const balanceRichGuy = await richGuy.getBalance();
- await richGuy.sendTransaction({to: nodeAddress.address, value: balanceRichGuy.sub(ethers.utils.parseEther("1"))});
+ const balanceRichGuy = await ethers.provider.getBalance(richGuy.address);
+ await richGuy.sendTransaction({to: nodeAddress.address, value: balanceRichGuy - BigInt(ethers.parseEther("1"))});
});
after(async () => {
- const balanceNode = await nodeAddress.getBalance();
- await nodeAddress.sendTransaction({to: richGuy.address, value: balanceNode.sub(ethers.utils.parseEther("1"))});
+ const balanceNode = await ethers.provider.getBalance(nodeAddress.address);
+ await nodeAddress.sendTransaction({to: richGuy.address, value: balanceNode - BigInt(ethers.parseEther("1"))});
});
beforeEach(async () => {
@@ -126,7 +129,7 @@ describe("DepositBoxEth", () => {
depositBoxEth = await deployDepositBoxEth(contractManager, linker, messageProxy);
communityPool = await deployCommunityPool(contractManager, linker, messageProxy);
messages = await deployMessages();
- await messageProxy.grantRole(await messageProxy.CHAIN_CONNECTOR_ROLE(), linker.address);
+ await messageProxy.grantRole(await messageProxy.CHAIN_CONNECTOR_ROLE(), linker);
await messageProxy.grantRole(await messageProxy.EXTRA_CONTRACT_REGISTRAR_ROLE(), deployer.address);
await initializeSchain(contractManager, schainName, user.address, 1, 1);
const nodeCreationParams = {
@@ -141,9 +144,9 @@ describe("DepositBoxEth", () => {
await createNode(contractManager, nodeAddress.address, nodeCreationParams);
await addNodesToSchain(contractManager, schainName, [0]);
await rechargeSchainWallet(contractManager, schainName, user2.address, "1000000000000000000");
- await messageProxy.registerExtraContractForAll(depositBoxEth.address);
- await messageProxy.registerExtraContract(schainName, communityPool.address);
- await messageProxy.registerExtraContract(schainName, linker.address);
+ await messageProxy.registerExtraContractForAll(depositBoxEth);
+ await messageProxy.registerExtraContract(schainName, communityPool);
+ await messageProxy.registerExtraContract(schainName, linker);
});
describe("tests for `deposit` function", async () => {
@@ -184,7 +187,7 @@ describe("DepositBoxEth", () => {
.connect(deployer)
.deposit(schainName, { value: wei });
- const lockAndDataBalance = await ethers.provider.getBalance(depositBoxEth.address);
+ const lockAndDataBalance = await ethers.provider.getBalance(depositBoxEth);
// expectation
expect(lockAndDataBalance).to.equal(wei);
});
@@ -206,9 +209,9 @@ describe("DepositBoxEth", () => {
.connect(deployer)
.depositDirect(schainName, user.address, { value: wei })
.should.emit(messageProxy, "OutgoingMessage")
- .withArgs(schainHash, 0, depositBoxEth.address, deployer.address, data);
+ .withArgs(schainHash, 0, depositBoxEth, deployer.address, data);
- const lockAndDataBalance = await ethers.provider.getBalance(depositBoxEth.address);
+ const lockAndDataBalance = await ethers.provider.getBalance(depositBoxEth);
// expectation
expect(lockAndDataBalance).to.equal(wei);
});
@@ -217,7 +220,7 @@ describe("DepositBoxEth", () => {
// preparation
const error = "Use deposit function";
// execution/expectation
- await deployer.sendTransaction({to: depositBoxEth.address, value: ethers.utils.parseEther("1") })
+ await deployer.sendTransaction({to: depositBoxEth, value: ethers.parseEther("1") })
.should.be.eventually.rejectedWith(error);
});
@@ -238,7 +241,8 @@ describe("DepositBoxEth", () => {
await depositBoxEth.connect(user).getFunds(schainName, user.address, wei).should.be.eventually.rejectedWith("Sender is not an Schain owner");
const userBalanceBefore = await ethers.provider.getBalance(user.address);
await depositBoxEth.connect(user2).getFunds(schainName, user.address, wei);
- expect(BigNumber.from(await ethers.provider.getBalance(user.address)).toString()).to.equal(BigNumber.from(userBalanceBefore).add(BigNumber.from(wei)).toString());
+ const userBalance = await ethers.provider.getBalance(user.address);
+ expect(userBalance).to.equal(userBalanceBefore + BigInt(wei));
});
});
@@ -253,7 +257,7 @@ describe("DepositBoxEth", () => {
// execution/expectation
await depositBoxEth
.connect(user)
- .postMessage(stringKeccak256(schainName), sender, bytesData)
+ .postMessage(schainHash, sender, bytesData)
.should.be.eventually.rejectedWith(error);
});
@@ -275,7 +279,7 @@ describe("DepositBoxEth", () => {
const message = {
data: bytesData,
- destinationContract: depositBoxEth.address,
+ destinationContract: depositBoxEth,
sender: senderFromSchain
};
// redeploy depositBoxEth with `developer` address instead `messageProxyForMainnet.address`
@@ -289,16 +293,10 @@ describe("DepositBoxEth", () => {
.rechargeUserWallet(schainName, user.address, { value: wei });
// execution
- const res = await (await messageProxy.connect(nodeAddress).postIncomingMessages(schainName, 0, [message], sign)).wait();
- if (res.events) {
- assert.equal(res.events[0].event, "PostMessageError");
- assert.equal(res.events[0].args?.msgCounter.toString(), "0");
- const messageError = res.events[0].args?.message.toString();
- assert.equal(Buffer.from(messageError.slice(2), 'hex').toString(), error);
- } else {
- assert(false, "No events were emitted");
- }
- // assert.equal(res.logs[0].args.message, "PostMessageError");
+ const tx = await messageProxy.connect(nodeAddress).postIncomingMessages(schainName, 0, [message], sign);
+ await expect(tx)
+ .to.emit(messageProxy, "PostMessageError")
+ .withArgs(0n, ethers.toUtf8Bytes(error));
});
it("should rejected with message `Not enough money to finish this transaction` when "
@@ -319,7 +317,7 @@ describe("DepositBoxEth", () => {
const message = {
data: bytesData,
- destinationContract: depositBoxEth.address,
+ destinationContract: depositBoxEth,
sender: senderFromSchain
};
// redeploy depositBoxEth with `developer` address instead `messageProxyForMainnet.address`
@@ -333,16 +331,10 @@ describe("DepositBoxEth", () => {
.connect(user)
.rechargeUserWallet(schainName, user.address, { value: wei });
// execution
- const res = await (await messageProxy.connect(nodeAddress).postIncomingMessages(schainName, 0, [message], sign)).wait();
-
- if (res.events) {
- assert.equal(res.events[0].event, "PostMessageError");
- assert.equal(res.events[0].args?.msgCounter.toString(), "0");
- const messageError = res.events[0].args?.message.toString();
- assert.equal(Buffer.from(messageError.slice(2), 'hex').toString(), error);
- } else {
- assert(false, "No events were emitted");
- }
+ const tx = await messageProxy.connect(nodeAddress).postIncomingMessages(schainName, 0, [message], sign);
+ await expect(tx)
+ .to.emit(messageProxy, "PostMessageError")
+ .withArgs(0n, ethers.toUtf8Bytes(error));
});
it("should rejected with message `Not enough money to finish this transaction`", async () => {
@@ -371,23 +363,17 @@ describe("DepositBoxEth", () => {
const message = {
data: bytesData,
- destinationContract: depositBoxEth.address,
+ destinationContract: depositBoxEth,
sender: senderFromSchain
};
// redeploy depositBoxEth with `developer` address instead `messageProxyForMainnet.address`
// to avoid `Incorrect sender` error
// await lockAndDataForMainnet.setContract("MessageProxy", deployer);
// execution
- const res = await (await messageProxy.connect(nodeAddress).postIncomingMessages(schainName, 0, [message], sign)).wait();
-
- if (res.events) {
- assert.equal(res.events[0].event, "PostMessageError");
- assert.equal(res.events[0].args?.msgCounter.toString(), "0");
- const messageError = res.events[0].args?.message.toString();
- assert.equal(Buffer.from(messageError.slice(2), 'hex').toString(), error);
- } else {
- assert(false, "No events were emitted");
- }
+ const tx = await messageProxy.connect(nodeAddress).postIncomingMessages(schainName, 0, [message], sign);
+ await expect(tx)
+ .to.emit(messageProxy, "PostMessageError")
+ .withArgs(0n, ethers.toUtf8Bytes(error));
});
it("should rejected with message `null`", async () => {
@@ -414,7 +400,7 @@ describe("DepositBoxEth", () => {
const message = {
data: bytesData,
- destinationContract: depositBoxEth.address,
+ destinationContract: depositBoxEth,
sender: senderFromSchain,
};
// redeploy depositBoxEth with `developer` address instead `messageProxyForMainnet.address`
@@ -425,15 +411,10 @@ describe("DepositBoxEth", () => {
.connect(deployer)
.deposit(schainName, { value: wei });
// execution
- const res = await (await messageProxy.connect(nodeAddress).postIncomingMessages(schainName, 0, [message], sign)).wait();
-
- if (res.events) {
- assert.equal(res.events[0].event, "PostMessageError");
- assert.equal(res.events[0].args?.msgCounter.toString(), "0");
- assert.equal(res.events[0].args?.message, "0x");
- } else {
- assert(false, "No events were emitted");
- }
+ const tx = await messageProxy.connect(nodeAddress).postIncomingMessages(schainName, 0, [message], sign);
+ await expect(tx)
+ .to.emit(messageProxy, "PostMessageError")
+ .withArgs(0n, ethers.toUtf8Bytes(""));
});
it("should transfer eth", async () => {
@@ -453,7 +434,7 @@ describe("DepositBoxEth", () => {
const message = {
data: bytesData,
- destinationContract: depositBoxEth.address,
+ destinationContract: depositBoxEth,
sender: senderFromSchain,
};
@@ -472,7 +453,7 @@ describe("DepositBoxEth", () => {
.connect(deployer)
.deposit(schainName, { value: wei });
- expect(BigNumber.from(await depositBoxEth.transferredAmount(schainHash)).toString()).to.be.equal(BigNumber.from(wei).toString());
+ expect(await depositBoxEth.transferredAmount(schainHash)).to.be.equal(wei);
const balanceBefore = await getBalance(deployer.address);
await messageProxy.connect(nodeAddress).postIncomingMessages(schainName, 0, [message], sign);
@@ -502,7 +483,7 @@ describe("DepositBoxEth", () => {
const message = {
data: bytesData,
- destinationContract: depositBoxEth.address,
+ destinationContract: depositBoxEth,
sender: senderFromSchain,
};
@@ -524,7 +505,7 @@ describe("DepositBoxEth", () => {
.connect(deployer)
.deposit(schainName, { value: wei });
- expect(BigNumber.from(await depositBoxEth.transferredAmount(schainHash)).toString()).to.be.equal(BigNumber.from(wei).mul(2).toString());
+ expect(await depositBoxEth.transferredAmount(schainHash)).to.be.equal(BigInt(wei) * 2n);
const balanceBefore = await getBalance(deployer.address);
await messageProxy.connect(nodeAddress).postIncomingMessages(schainName, 0, [message], sign);
@@ -532,12 +513,12 @@ describe("DepositBoxEth", () => {
balance.should.not.be.lessThan(balanceBefore);
balance.should.be.almost(balanceBefore);
- expect(BigNumber.from(await depositBoxEth.approveTransfers(user.address)).toString()).to.equal(BigNumber.from(wei).toString());
+ expect(await depositBoxEth.approveTransfers(user.address)).to.equal(BigInt(wei));
await depositBoxEth.connect(user2).getMyEth()
.should.be.eventually.rejectedWith("User has insufficient ETH");
- expect(BigNumber.from(await depositBoxEth.approveTransfers(user.address)).toString()).to.equal(BigNumber.from(wei).toString());
+ expect(await depositBoxEth.approveTransfers(user.address)).to.equal(wei);
expect(await depositBoxEth.activeEthTransfers(schainHash)).to.be.equal(false);
await depositBoxEth.connect(user2).enableActiveEthTransfers(schainName).should.be.rejectedWith("Sender is not an Schain owner");
@@ -550,11 +531,11 @@ describe("DepositBoxEth", () => {
const userBalanceBefore = await ethers.provider.getBalance(user.address);
await messageProxy.connect(nodeAddress).postIncomingMessages(schainName, 1, [message], sign);
- expect(BigNumber.from(await ethers.provider.getBalance(user.address)).toString()).to.equal(BigNumber.from(userBalanceBefore).add(BigNumber.from(wei)).toString());
+ expect(await ethers.provider.getBalance(user.address)).to.equal(userBalanceBefore + BigInt(wei));
- expect(BigNumber.from(await depositBoxEth.approveTransfers(user.address)).toString()).to.equal(BigNumber.from(wei).toString());
+ expect(await depositBoxEth.approveTransfers(user.address)).to.equal(wei);
await depositBoxEth.connect(user).getMyEth();
- expect(BigNumber.from(await depositBoxEth.approveTransfers(user.address)).toString()).to.equal(BigNumber.from(0).toString());
+ expect(await depositBoxEth.approveTransfers(user.address)).to.equal("0");
await depositBoxEth.connect(user).getMyEth()
.should.be.eventually.rejectedWith("User has insufficient ETH");
});
@@ -565,7 +546,7 @@ describe("DepositBoxEth", () => {
const wei = "30000000000000000";
const fallbackEthTester = await deployFallbackEthTester(depositBoxEth, communityPool, schainName);
- const bytesData = await messages.encodeTransferEthMessage(fallbackEthTester.address, wei);
+ const bytesData = await messages.encodeTransferEthMessage(fallbackEthTester, wei);
await setCommonPublicKey(contractManager, schainName);
@@ -578,7 +559,7 @@ describe("DepositBoxEth", () => {
const message = {
data: bytesData,
- destinationContract: depositBoxEth.address,
+ destinationContract: depositBoxEth,
sender: senderFromSchain,
};
@@ -600,16 +581,16 @@ describe("DepositBoxEth", () => {
.connect(deployer)
.deposit(schainName, { value: wei });
- expect(BigNumber.from(await depositBoxEth.transferredAmount(schainHash)).toString()).to.be.equal(BigNumber.from(wei).mul(2).toString());
+ expect(await depositBoxEth.transferredAmount(schainHash)).to.be.equal(BigInt(wei) * 2n);
await reimbursed(await messageProxy.connect(nodeAddress).postIncomingMessages(schainName, 0, [message], sign));
- expect(BigNumber.from(await depositBoxEth.approveTransfers(fallbackEthTester.address)).toString()).to.equal(BigNumber.from(wei).toString());
+ expect(await depositBoxEth.approveTransfers(fallbackEthTester)).to.equal(wei);
await depositBoxEth.connect(user2).getMyEth()
.should.be.eventually.rejectedWith("User has insufficient ETH");
- expect(BigNumber.from(await depositBoxEth.approveTransfers(fallbackEthTester.address)).toString()).to.equal(BigNumber.from(wei).toString());
+ expect(await depositBoxEth.approveTransfers(fallbackEthTester)).to.equal(wei);
expect(await depositBoxEth.activeEthTransfers(schainHash)).to.be.equal(false);
await depositBoxEth.connect(user2).enableActiveEthTransfers(schainName).should.be.rejectedWith("Sender is not an Schain owner");
@@ -619,23 +600,18 @@ describe("DepositBoxEth", () => {
await depositBoxEth.connect(deployer).enableActiveEthTransfers(schainName).should.be.eventually.rejectedWith("Active eth transfers enabled");
expect(await depositBoxEth.activeEthTransfers(schainHash)).to.be.equal(true);
- await ethers.provider.getBalance(fallbackEthTester.address);
+ await ethers.provider.getBalance(fallbackEthTester);
+
+ const tx = await messageProxy.connect(nodeAddress).postIncomingMessages(schainName, 1, [message], sign);
- const res = await (await messageProxy.connect(nodeAddress).postIncomingMessages(schainName, 1, [message], sign)).wait();
+ await expect(tx)
+ .to.emit(messageProxy, "PostMessageError")
+ .withArgs(1n, ethers.toUtf8Bytes("Address: unable to send value, recipient may have reverted"));
- if (res.events) {
- assert.equal(res.events[0].event, "PostMessageError");
- assert.equal(res.events[0].args?.msgCounter.toString(), "1");
- const messageError = res.events[0].args?.message.toString();
- const error = "Address: unable to send value, recipient may have reverted";
- assert.equal(Buffer.from(messageError.slice(2), 'hex').toString(), error);
- } else {
- assert(false, "No events were emitted");
- }
- expect(BigNumber.from(await depositBoxEth.approveTransfers(fallbackEthTester.address)).toString()).to.equal(BigNumber.from(wei).toString());
+ expect(await depositBoxEth.approveTransfers(fallbackEthTester)).to.equal(wei);
await fallbackEthTester.connect(user).getMyEth();
- expect(BigNumber.from(await depositBoxEth.approveTransfers(fallbackEthTester.address)).toString()).to.equal(BigNumber.from(0).toString());
+ expect(await depositBoxEth.approveTransfers(fallbackEthTester)).to.equal("0");
await fallbackEthTester.connect(user).getMyEth()
.should.be.eventually.rejectedWith("User has insufficient ETH");
});
diff --git a/test/ERC20OnChain.ts b/test/ERC20OnChain.ts
index a2c495725..7ed00c242 100644
--- a/test/ERC20OnChain.ts
+++ b/test/ERC20OnChain.ts
@@ -1,5 +1,5 @@
import chaiAsPromised from "chai-as-promised";
-import chai = require("chai");
+import chai from "chai";
import {
ERC20OnChain
} from "../typechain";
@@ -10,8 +10,7 @@ chai.use(chaiAsPromised);
import { deployERC20OnChain } from "./utils/deploy/erc20OnChain";
import { ethers } from "hardhat";
-import { SignerWithAddress } from "@nomiclabs/hardhat-ethers/dist/src/signer-with-address";
-import { BigNumber } from "ethers";
+import { SignerWithAddress } from "@nomicfoundation/hardhat-ethers/signers";
describe("ERC20OnChain", () => {
@@ -36,7 +35,7 @@ describe("ERC20OnChain", () => {
await eRC20OnChain.connect(deployer).mint(account, value);
// expectation
const balance = await eRC20OnChain.balanceOf(account);
- parseInt(BigNumber.from(balance).toString(), 10).should.be.equal(value);
+ balance.should.be.equal(value);
});
it("should invoke `burn`", async () => {
@@ -49,7 +48,7 @@ describe("ERC20OnChain", () => {
await eRC20OnChain.connect(deployer).burn(amount);
// expectation
const balance = await eRC20OnChain.balanceOf(deployer.address);
- parseInt(BigNumber.from(balance).toString(), 10).should.be.equal(mintAmount - amount);
+ balance.should.be.equal(mintAmount - amount);
});
it("should invoke `burnFrom`", async () => {
@@ -65,6 +64,6 @@ describe("ERC20OnChain", () => {
await eRC20OnChain.connect(deployer).burnFrom(account, amount);
// expectation
const balance = await eRC20OnChain.balanceOf(account);
- parseInt(BigNumber.from(balance).toString(), 10).should.be.equal(mintAmount - amount);
+ balance.should.be.equal(mintAmount - amount);
});
});
diff --git a/test/ERC721OnChain.ts b/test/ERC721OnChain.ts
index 0a4692394..0a6d6d052 100644
--- a/test/ERC721OnChain.ts
+++ b/test/ERC721OnChain.ts
@@ -1,5 +1,5 @@
import chaiAsPromised from "chai-as-promised";
-import chai = require("chai");
+import chai from "chai";
import {
ERC721OnChain
} from "../typechain";
@@ -10,7 +10,7 @@ chai.use(chaiAsPromised);
import { deployERC721OnChain } from "./utils/deploy/erc721OnChain";
import { ethers } from "hardhat";
-import { SignerWithAddress } from "@nomiclabs/hardhat-ethers/dist/src/signer-with-address";
+import { SignerWithAddress } from "@nomicfoundation/hardhat-ethers/signers";
import { expect } from "chai";
@@ -52,7 +52,7 @@ describe("ERC721OnChain", () => {
it("should reject with `ERC721Burnable: caller is not owner nor approved` when invoke `burn`", async () => {
// preparation
- const error = "ERC721: caller is not token owner nor approved";
+ const error = "ERC721: caller is not token owner or approved";
const tokenId = 55;
const account = user;
// mint to avoid `owner query for nonexistent token` error
@@ -70,7 +70,7 @@ describe("ERC721OnChain", () => {
// execution
const res = await (await eRC721OnChain.connect(deployer).setTokenURI(tokenId, tokenURI)).wait();
// expectation
- expect(res.status).to.be.equal(1);
+ expect(res?.status).to.be.equal(1);
});
});
diff --git a/test/Linker.ts b/test/Linker.ts
index 74993c43b..fd2dab703 100644
--- a/test/Linker.ts
+++ b/test/Linker.ts
@@ -24,7 +24,7 @@
*/
import chaiAsPromised from "chai-as-promised";
-import chai = require("chai");
+import chai from "chai";
import {
ContractManager,
DepositBoxEth,
@@ -33,7 +33,6 @@ import {
Linker,
MessageProxyForMainnet,
} from "../typechain";
-import { stringKeccak256 } from "./utils/helper";
chai.should();
@@ -49,10 +48,9 @@ import { deployContractManager } from "./utils/skale-manager-utils/contractManag
import { initializeSchain } from "./utils/skale-manager-utils/schainsInternal";
import { ethers } from "hardhat";
-import { SignerWithAddress } from "@nomiclabs/hardhat-ethers/dist/src/signer-with-address";
+import { SignerWithAddress } from "@nomicfoundation/hardhat-ethers/signers";
import { expect } from "chai";
-const schainName = "TestSchain";
describe("Linker", () => {
let deployer: SignerWithAddress;
@@ -65,6 +63,8 @@ describe("Linker", () => {
let messageProxy: MessageProxyForMainnet;
let linker: Linker;
const contractManagerAddress = "0x0000000000000000000000000000000000000000";
+ const schainName = "TestSchain";
+ const schainHash = ethers.id(schainName);
before(async () => {
[deployer, user] = await ethers.getSigners();
@@ -78,16 +78,16 @@ describe("Linker", () => {
depositBoxEth = await deployDepositBoxEth(contractManager, linker, messageProxy);
depositBoxERC20 = await deployDepositBoxERC20(contractManager, linker, messageProxy);
depositBoxERC721 = await deployDepositBoxERC721(contractManager, linker, messageProxy);
- await linker.removeMainnetContract(depositBoxEth.address);
- await linker.removeMainnetContract(depositBoxERC20.address);
- await linker.removeMainnetContract(depositBoxERC721.address);
- await linker.removeMainnetContract(linker.address);
+ await linker.removeMainnetContract(depositBoxEth);
+ await linker.removeMainnetContract(depositBoxERC20);
+ await linker.removeMainnetContract(depositBoxERC721);
+ await linker.removeMainnetContract(linker);
await linker.grantRole(await linker.LINKER_ROLE(), deployer.address);
- await linker.grantRole(await linker.LINKER_ROLE(), linker.address);
- await messageProxy.grantRole(await messageProxy.CHAIN_CONNECTOR_ROLE(), linker.address);
+ await linker.grantRole(await linker.LINKER_ROLE(), linker);
+ await messageProxy.grantRole(await messageProxy.CHAIN_CONNECTOR_ROLE(), linker);
await messageProxy.grantRole(await messageProxy.EXTRA_CONTRACT_REGISTRAR_ROLE(), deployer.address);
await initializeSchain(contractManager, schainName, deployer.address, 1, 1);
- await messageProxy.registerExtraContractForAll(linker.address);
+ await messageProxy.registerExtraContractForAll(linker);
});
it("should connect schain", async () => {
@@ -107,11 +107,11 @@ describe("Linker", () => {
const nullAddress = "0x0000000000000000000000000000000000000000";
const tokenManagerAddress = user.address;
- expect(await linker.hasMainnetContract(depositBoxEth.address)).to.equal(false);
+ expect(await linker.hasMainnetContract(depositBoxEth)).to.equal(false);
- await linker.connect(deployer).registerMainnetContract(depositBoxEth.address);
+ await linker.connect(deployer).registerMainnetContract(depositBoxEth);
- expect(await linker.hasMainnetContract(depositBoxEth.address)).to.equal(true);
+ expect(await linker.hasMainnetContract(depositBoxEth)).to.equal(true);
await linker.connect(deployer).connectSchain(schainName, [])
.should.be.eventually.rejectedWith("Incorrect number of addresses");
@@ -134,20 +134,20 @@ describe("Linker", () => {
const nullAddress = "0x0000000000000000000000000000000000000000";
const tokenManagerAddress = user.address;
- expect(await linker.hasMainnetContract(depositBoxEth.address)).to.equal(false);
- expect(await linker.hasMainnetContract(depositBoxERC20.address)).to.equal(false);
- expect(await linker.hasMainnetContract(depositBoxERC721.address)).to.equal(false);
- expect(await linker.hasMainnetContract(linker.address)).to.equal(false);
+ expect(await linker.hasMainnetContract(depositBoxEth)).to.equal(false);
+ expect(await linker.hasMainnetContract(depositBoxERC20)).to.equal(false);
+ expect(await linker.hasMainnetContract(depositBoxERC721)).to.equal(false);
+ expect(await linker.hasMainnetContract(linker)).to.equal(false);
- await linker.connect(deployer).registerMainnetContract(depositBoxEth.address);
- await linker.connect(deployer).registerMainnetContract(depositBoxERC20.address);
- await linker.connect(deployer).registerMainnetContract(depositBoxERC721.address);
- await linker.connect(deployer).registerMainnetContract(linker.address);
+ await linker.connect(deployer).registerMainnetContract(depositBoxEth);
+ await linker.connect(deployer).registerMainnetContract(depositBoxERC20);
+ await linker.connect(deployer).registerMainnetContract(depositBoxERC721);
+ await linker.connect(deployer).registerMainnetContract(linker);
- expect(await linker.hasMainnetContract(depositBoxEth.address)).to.equal(true);
- expect(await linker.hasMainnetContract(depositBoxERC20.address)).to.equal(true);
- expect(await linker.hasMainnetContract(depositBoxERC721.address)).to.equal(true);
- expect(await linker.hasMainnetContract(linker.address)).to.equal(true);
+ expect(await linker.hasMainnetContract(depositBoxEth)).to.equal(true);
+ expect(await linker.hasMainnetContract(depositBoxERC20)).to.equal(true);
+ expect(await linker.hasMainnetContract(depositBoxERC721)).to.equal(true);
+ expect(await linker.hasMainnetContract(linker)).to.equal(true);
await linker.connect(deployer).connectSchain(schainName, [])
.should.be.eventually.rejectedWith("Incorrect number of addresses");
@@ -174,10 +174,10 @@ describe("Linker", () => {
it("should invoke `disconnectSchain` without mistakes", async () => {
const tokenManagerAddress = user.address;
- await linker.connect(deployer).registerMainnetContract(depositBoxEth.address);
- await linker.connect(deployer).registerMainnetContract(depositBoxERC20.address);
- await linker.connect(deployer).registerMainnetContract(depositBoxERC721.address);
- await linker.connect(deployer).registerMainnetContract(linker.address);
+ await linker.connect(deployer).registerMainnetContract(depositBoxEth);
+ await linker.connect(deployer).registerMainnetContract(depositBoxERC20);
+ await linker.connect(deployer).registerMainnetContract(depositBoxERC721);
+ await linker.connect(deployer).registerMainnetContract(linker);
await linker.connect(deployer).connectSchain(schainName, [tokenManagerAddress, tokenManagerAddress, tokenManagerAddress, tokenManagerAddress]);
@@ -193,17 +193,17 @@ describe("Linker", () => {
const nullAddress = "0x0000000000000000000000000000000000000000";
const tokenManagerAddress = user.address;
- expect(await linker.hasMainnetContract(depositBoxEth.address)).to.equal(false);
- expect(await linker.hasMainnetContract(depositBoxERC20.address)).to.equal(false);
- expect(await linker.hasMainnetContract(depositBoxERC721.address)).to.equal(false);
+ expect(await linker.hasMainnetContract(depositBoxEth)).to.equal(false);
+ expect(await linker.hasMainnetContract(depositBoxERC20)).to.equal(false);
+ expect(await linker.hasMainnetContract(depositBoxERC721)).to.equal(false);
- await linker.connect(deployer).registerMainnetContract(depositBoxEth.address);
- await linker.connect(deployer).registerMainnetContract(depositBoxERC20.address);
- await linker.connect(deployer).registerMainnetContract(depositBoxERC721.address);
+ await linker.connect(deployer).registerMainnetContract(depositBoxEth);
+ await linker.connect(deployer).registerMainnetContract(depositBoxERC20);
+ await linker.connect(deployer).registerMainnetContract(depositBoxERC721);
- expect(await linker.hasMainnetContract(depositBoxEth.address)).to.equal(true);
- expect(await linker.hasMainnetContract(depositBoxERC20.address)).to.equal(true);
- expect(await linker.hasMainnetContract(depositBoxERC721.address)).to.equal(true);
+ expect(await linker.hasMainnetContract(depositBoxEth)).to.equal(true);
+ expect(await linker.hasMainnetContract(depositBoxERC20)).to.equal(true);
+ expect(await linker.hasMainnetContract(depositBoxERC721)).to.equal(true);
expect(await linker.hasMainnetContract(nullAddress)).to.equal(false);
expect(await linker.hasMainnetContract(tokenManagerAddress)).to.equal(false);
@@ -227,42 +227,43 @@ describe("Linker", () => {
expect(await linker.hasMainnetContract(nullAddress)).to.equal(false);
- await linker.connect(deployer).removeMainnetContract(depositBoxEth.address);
- await linker.connect(deployer).removeMainnetContract(depositBoxERC20.address);
- await linker.connect(deployer).removeMainnetContract(depositBoxERC721.address);
+ await linker.connect(deployer).removeMainnetContract(depositBoxEth);
+ await linker.connect(deployer).removeMainnetContract(depositBoxERC20);
+ await linker.connect(deployer).removeMainnetContract(depositBoxERC721);
- expect(await linker.hasMainnetContract(depositBoxEth.address)).to.equal(false);
- expect(await linker.hasMainnetContract(depositBoxERC20.address)).to.equal(false);
- expect(await linker.hasMainnetContract(depositBoxERC721.address)).to.equal(false);
+ expect(await linker.hasMainnetContract(depositBoxEth)).to.equal(false);
+ expect(await linker.hasMainnetContract(depositBoxERC20)).to.equal(false);
+ expect(await linker.hasMainnetContract(depositBoxERC721)).to.equal(false);
});
it("should kill schain by schain owner first", async () => {
// schain owner is user
+
await initializeSchain(contractManager, schainName, user.address, 1, 1);
await linker.connect(deployer).connectSchain(schainName, []);
- expect(await linker.isNotKilled(stringKeccak256(schainName))).to.equal(true);
- expect(await linker.statuses(stringKeccak256(schainName))).to.equal(0);
+ expect(await linker.isNotKilled(schainHash)).to.equal(true);
+ expect(await linker.statuses(schainHash)).to.equal(0);
await linker.connect(user).kill(schainName);
- expect(await linker.isNotKilled(stringKeccak256(schainName))).to.equal(true);
- expect(await linker.statuses(stringKeccak256(schainName))).to.equal(1);
+ expect(await linker.isNotKilled(schainHash)).to.equal(true);
+ expect(await linker.statuses(schainHash)).to.equal(1);
await linker.connect(user).kill(schainName).should.be.eventually.rejectedWith("Already killed or incorrect sender");
await linker.connect(deployer).kill(schainName);
- expect(await linker.isNotKilled(stringKeccak256(schainName))).to.equal(false);
- expect(await linker.statuses(stringKeccak256(schainName))).to.equal(3);
+ expect(await linker.isNotKilled(schainHash)).to.equal(false);
+ expect(await linker.statuses(schainHash)).to.equal(3);
});
it("should kill schain by deployer first", async () => {
// schain owner is user
await initializeSchain(contractManager, schainName, user.address, 1, 1);
await linker.connect(deployer).connectSchain(schainName, []);
- expect(await linker.isNotKilled(stringKeccak256(schainName))).to.equal(true);
- expect(await linker.statuses(stringKeccak256(schainName))).to.equal(0);
+ expect(await linker.isNotKilled(schainHash)).to.equal(true);
+ expect(await linker.statuses(schainHash)).to.equal(0);
await linker.connect(deployer).kill(schainName);
- expect(await linker.isNotKilled(stringKeccak256(schainName))).to.equal(true);
- expect(await linker.statuses(stringKeccak256(schainName))).to.equal(2);
+ expect(await linker.isNotKilled(schainHash)).to.equal(true);
+ expect(await linker.statuses(schainHash)).to.equal(2);
await linker.connect(user).kill(schainName);
- expect(await linker.isNotKilled(stringKeccak256(schainName))).to.equal(false);
- expect(await linker.statuses(stringKeccak256(schainName))).to.equal(3);
+ expect(await linker.isNotKilled(schainHash)).to.equal(false);
+ expect(await linker.statuses(schainHash)).to.equal(3);
});
});
diff --git a/test/MessageProxy.ts b/test/MessageProxy.ts
index 3b346610d..aab09698a 100644
--- a/test/MessageProxy.ts
+++ b/test/MessageProxy.ts
@@ -24,7 +24,7 @@
*/
import chaiAsPromised from "chai-as-promised";
-import chai = require("chai");
+import chai from "chai";
import {
DepositBoxEth,
ContractManager,
@@ -38,9 +38,10 @@ import {
KeyStorageMock,
CommunityPool,
EtherbaseMock,
- SchainsInternal
+ SchainsInternal,
+ Wallets
} from "../typechain/";
-import { getPublicKey, stringKeccak256 } from "./utils/helper";
+import { getPublicKey } from "./utils/helper";
import { deployLinker } from "./utils/deploy/mainnet/linker";
import { deployMessageProxyForMainnet } from "./utils/deploy/mainnet/messageProxyForMainnet";
import { deployDepositBoxEth } from "./utils/deploy/mainnet/depositBoxEth";
@@ -52,8 +53,8 @@ import { deployMessageProxyCaller } from "./utils/deploy/test/messageProxyCaller
import { deployMessages } from "./utils/deploy/messages";
import { deployKeyStorageMock } from "./utils/deploy/test/keyStorageMock";
import { ethers } from "hardhat";
-import { SignerWithAddress } from "@nomiclabs/hardhat-ethers/dist/src/signer-with-address";
-import { BigNumber, Wallet } from "ethers";
+import { SignerWithAddress } from "@nomicfoundation/hardhat-ethers/signers";
+import { BigNumberish, HDNodeWallet, Wallet } from "ethers";
import { expect } from "chai";
import { MessageProxyForSchainTester } from "../typechain";
import { deployMessageProxyForSchainTester } from "./utils/deploy/test/messageProxyForSchainTester";
@@ -70,7 +71,7 @@ describe("MessageProxy", () => {
let customer: SignerWithAddress;
let agent: SignerWithAddress;
let richGuy: SignerWithAddress;
- let nodeAddress: Wallet;
+ let nodeAddress: HDNodeWallet;
let keyStorage: KeyStorageMock;
let messageProxyForSchain: MessageProxyForSchainTester;
@@ -86,11 +87,11 @@ describe("MessageProxy", () => {
const contractManagerAddress = "0x0000000000000000000000000000000000000000";
const zeroBytes32 = "0x0000000000000000000000000000000000000000000000000000000000000000"
const schainName = "Schain";
- const schainHash = stringKeccak256(schainName);
+ const schainHash = ethers.id(schainName);
- const BlsSignature: [BigNumber, BigNumber] = [
- BigNumber.from("178325537405109593276798394634841698946852714038246117383766698579865918287"),
- BigNumber.from("493565443574555904019191451171395204672818649274520396086461475162723833781"),
+ const BlsSignature: [BigNumberish, BigNumberish] = [
+ "178325537405109593276798394634841698946852714038246117383766698579865918287",
+ "493565443574555904019191451171395204672818649274520396086461475162723833781"
];
const HashA = "3080491942974172654518861600747466851589809241462384879086673256057179400078";
const HashB = "15163860114293529009901628456926790077787470245128337652112878212941459329347";
@@ -99,17 +100,17 @@ describe("MessageProxy", () => {
before(async () => {
[deployer, user, client, customer, agent, richGuy] = await ethers.getSigners();
nodeAddress = Wallet.createRandom().connect(ethers.provider);
- const balanceRichGuy = await richGuy.getBalance();
- await richGuy.sendTransaction({to: nodeAddress.address, value: balanceRichGuy.sub(ethers.utils.parseEther("1"))});
+ const balanceRichGuy = await ethers.provider.getBalance(richGuy.address);
+ await richGuy.sendTransaction({to: nodeAddress.address, value: balanceRichGuy - BigInt(ethers.parseEther("1"))});
});
after(async () => {
- const balanceNode = await nodeAddress.getBalance();
- await nodeAddress.sendTransaction({to: richGuy.address, value: balanceNode.sub(ethers.utils.parseEther("1"))});
+ const balanceNode = await ethers.provider.getBalance(nodeAddress.address);
+ await nodeAddress.sendTransaction({to: richGuy.address, value: balanceNode - BigInt(ethers.parseEther("1"))});
});
describe("MessageProxy for mainnet", async () => {
- let gasPrice: BigNumber;
+ let gasPrice: BigNumberish;
beforeEach(async () => {
contractManager = await deployContractManager(contractManagerAddress);
messageProxyForMainnet = await deployMessageProxyForMainnet(contractManager);
@@ -120,24 +121,24 @@ describe("MessageProxy", () => {
communityPool = await deployCommunityPool(contractManager, imaLinker, messageProxyForMainnet);
await messageProxyForMainnet.grantRole(await messageProxyForMainnet.EXTRA_CONTRACT_REGISTRAR_ROLE(), deployer.address);
await messageProxyForMainnet.grantRole(await messageProxyForMainnet.CHAIN_CONNECTOR_ROLE(), deployer.address);
- const registerTx = await messageProxyForMainnet.registerExtraContract(schainName, caller.address);
+ const registerTx = await messageProxyForMainnet.registerExtraContract(schainName, caller);
if (registerTx.gasPrice) {
gasPrice = registerTx.gasPrice;
}
});
it("should set constants", async () => {
- const headerMessageGasCostPrevious = (await messageProxyForMainnet.headerMessageGasCost()).toNumber();
- const messageGasCostPrevious = (await messageProxyForMainnet.messageGasCost()).toNumber();
- const gasLimitPrevious = (await messageProxyForMainnet.gasLimit()).toNumber();
+ const headerMessageGasCostPrevious = await messageProxyForMainnet.headerMessageGasCost();
+ const messageGasCostPrevious = await messageProxyForMainnet.messageGasCost();
+ const gasLimitPrevious = await messageProxyForMainnet.gasLimit();
const headerMessageGasCostNew = 5;
const messageGasCostNew = 6;
const gasLimitNew = 7;
- expect((await messageProxyForMainnet.headerMessageGasCost()).toNumber()).to.equal(headerMessageGasCostPrevious);
- expect((await messageProxyForMainnet.messageGasCost()).toNumber()).to.equal(messageGasCostPrevious);
- expect((await messageProxyForMainnet.gasLimit()).toNumber()).to.equal(gasLimitPrevious);
+ expect(await messageProxyForMainnet.headerMessageGasCost()).to.equal(headerMessageGasCostPrevious);
+ expect(await messageProxyForMainnet.messageGasCost()).to.equal(messageGasCostPrevious);
+ expect(await messageProxyForMainnet.gasLimit()).to.equal(gasLimitPrevious);
await messageProxyForMainnet.connect(user).setNewHeaderMessageGasCost(
headerMessageGasCostNew
@@ -156,17 +157,17 @@ describe("MessageProxy", () => {
await messageProxyForMainnet.connect(user).setNewMessageGasCost(messageGasCostNew);
await messageProxyForMainnet.connect(user).setNewGasLimit(gasLimitNew);
- expect((await messageProxyForMainnet.headerMessageGasCost()).toNumber()).to.equal(headerMessageGasCostNew);
- expect((await messageProxyForMainnet.messageGasCost()).toNumber()).to.equal(messageGasCostNew);
- expect((await messageProxyForMainnet.gasLimit()).toNumber()).to.equal(gasLimitNew);
+ expect(await messageProxyForMainnet.headerMessageGasCost()).to.equal(headerMessageGasCostNew);
+ expect(await messageProxyForMainnet.messageGasCost()).to.equal(messageGasCostNew);
+ expect(await messageProxyForMainnet.gasLimit()).to.equal(gasLimitNew);
await messageProxyForMainnet.connect(user).setNewHeaderMessageGasCost(headerMessageGasCostPrevious);
await messageProxyForMainnet.connect(user).setNewMessageGasCost(messageGasCostPrevious);
await messageProxyForMainnet.connect(user).setNewGasLimit(gasLimitPrevious);
- expect((await messageProxyForMainnet.headerMessageGasCost()).toNumber()).to.equal(headerMessageGasCostPrevious);
- expect((await messageProxyForMainnet.messageGasCost()).toNumber()).to.equal(messageGasCostPrevious);
- expect((await messageProxyForMainnet.gasLimit()).toNumber()).to.equal(gasLimitPrevious);
+ expect(await messageProxyForMainnet.headerMessageGasCost()).to.equal(headerMessageGasCostPrevious);
+ expect(await messageProxyForMainnet.messageGasCost()).to.equal(messageGasCostPrevious);
+ expect(await messageProxyForMainnet.gasLimit()).to.equal(gasLimitPrevious);
});
@@ -213,48 +214,42 @@ describe("MessageProxy", () => {
});
it("should post outgoing message twice", async () => {
- const contractAddress = messageProxyForMainnet.address;
+ const contractAddress = messageProxyForMainnet;
const amount = 4;
const bytesData = await messages.encodeTransferEthMessage(user.address, amount);
await caller
- .postOutgoingMessageTester(messageProxyForMainnet.address, schainHash, contractAddress, bytesData)
+ .postOutgoingMessageTester(messageProxyForMainnet, schainHash, contractAddress, bytesData)
.should.be.rejectedWith("Destination chain is not initialized");
await messageProxyForMainnet.connect(deployer).addConnectedChain(schainName);
- const message1 = caller.postOutgoingMessageTester(messageProxyForMainnet.address, schainHash, contractAddress, bytesData);
+ const message1 = caller.postOutgoingMessageTester(messageProxyForMainnet, schainHash, contractAddress, bytesData);
await expect(message1)
.to.emit(messageProxyForMainnet, 'PreviousMessageReference')
.withArgs(0, 0);
- let outgoingMessagesCounter = BigNumber.from(
- await messageProxyForMainnet.getOutgoingMessagesCounter(schainName)
- );
- outgoingMessagesCounter.should.be.deep.equal(BigNumber.from(1));
- const lastOutgoingMessageBlockId = BigNumber.from(
- await messageProxyForMainnet.getLastOutgoingMessageBlockId(schainName)
- );
+ let outgoingMessagesCounter = await messageProxyForMainnet.getOutgoingMessagesCounter(schainName);
+ outgoingMessagesCounter.should.be.equal(1);
+ const lastOutgoingMessageBlockId = await messageProxyForMainnet.getLastOutgoingMessageBlockId(schainName);
- const message2 = caller.postOutgoingMessageTester(messageProxyForMainnet.address, schainHash, contractAddress, bytesData);
+ const message2 = caller.postOutgoingMessageTester(messageProxyForMainnet, schainHash, contractAddress, bytesData);
await expect(message2)
.to.emit(messageProxyForMainnet, 'PreviousMessageReference')
.withArgs(1, lastOutgoingMessageBlockId);
- outgoingMessagesCounter = BigNumber.from(
- await messageProxyForMainnet.getOutgoingMessagesCounter(schainName)
- );
- outgoingMessagesCounter.should.be.deep.equal(BigNumber.from(2));
+ outgoingMessagesCounter = await messageProxyForMainnet.getOutgoingMessagesCounter(schainName);
+ outgoingMessagesCounter.should.be.equal(2);
});
it("should pause with a role and unpause", async () => {
- const contractAddress = messageProxyForMainnet.address;
+ const contractAddress = messageProxyForMainnet;
const amount = 4;
const bytesData = await messages.encodeTransferEthMessage(user.address, amount);
const schainOwner = user;
await caller
- .postOutgoingMessageTester(messageProxyForMainnet.address, schainHash, contractAddress, bytesData)
+ .postOutgoingMessageTester(messageProxyForMainnet, schainHash, contractAddress, bytesData)
.should.be.rejectedWith("Destination chain is not initialized");
const schainsInternal = (await ethers.getContractFactory("SchainsInternal")).attach(await contractManager.getContract("SchainsInternal")) as SchainsInternal;
@@ -264,10 +259,9 @@ describe("MessageProxy", () => {
await messageProxyForMainnet.connect(deployer).addConnectedChain(schainName);
await caller
- .postOutgoingMessageTester(messageProxyForMainnet.address, schainHash, contractAddress, bytesData);
- let outgoingMessagesCounter = BigNumber.from(
- await messageProxyForMainnet.getOutgoingMessagesCounter(schainName));
- outgoingMessagesCounter.should.be.deep.equal(BigNumber.from(1));
+ .postOutgoingMessageTester(messageProxyForMainnet, schainHash, contractAddress, bytesData);
+ let outgoingMessagesCounter = await messageProxyForMainnet.getOutgoingMessagesCounter(schainName);
+ outgoingMessagesCounter.should.be.equal(1);
(await messageProxyForMainnet.isPaused(schainHash)).should.be.deep.equal(false);
@@ -293,7 +287,7 @@ describe("MessageProxy", () => {
pausedInfo.should.be.equal(true);
await caller
- .postOutgoingMessageTester(messageProxyForMainnet.address, schainHash, contractAddress, bytesData)
+ .postOutgoingMessageTester(messageProxyForMainnet, schainHash, contractAddress, bytesData)
.should.be.rejectedWith("IMA is paused");
await messageProxyForMainnet.connect(client).resume(schainName).should.be.rejectedWith("Incorrect sender");
@@ -309,10 +303,9 @@ describe("MessageProxy", () => {
pausedInfo.should.be.equal(false);
await caller
- .postOutgoingMessageTester(messageProxyForMainnet.address, schainHash, contractAddress, bytesData);
- outgoingMessagesCounter = BigNumber.from(
- await messageProxyForMainnet.getOutgoingMessagesCounter(schainName));
- outgoingMessagesCounter.should.be.deep.equal(BigNumber.from(2));
+ .postOutgoingMessageTester(messageProxyForMainnet, schainHash, contractAddress, bytesData);
+ outgoingMessagesCounter = await messageProxyForMainnet.getOutgoingMessagesCounter(schainName);
+ outgoingMessagesCounter.should.be.equal(2);
await messageProxyForMainnet.connect(client).pause(schainName);
@@ -322,26 +315,26 @@ describe("MessageProxy", () => {
pausedInfo.should.be.equal(true);
await caller
- .postOutgoingMessageTester(messageProxyForMainnet.address, schainHash, contractAddress, bytesData)
+ .postOutgoingMessageTester(messageProxyForMainnet, schainHash, contractAddress, bytesData)
.should.be.rejectedWith("IMA is paused");
await messageProxyForMainnet.connect(deployer).resume(schainName);
await messageProxyForMainnet.connect(schainOwner).resume(schainName).should.be.rejectedWith("Already unpaused");
await caller
- .postOutgoingMessageTester(messageProxyForMainnet.address, schainHash, contractAddress, bytesData);
- outgoingMessagesCounter = BigNumber.from(
- await messageProxyForMainnet.getOutgoingMessagesCounter(schainName));
- outgoingMessagesCounter.should.be.deep.equal(BigNumber.from(3));
+ .postOutgoingMessageTester(messageProxyForMainnet, schainHash, contractAddress, bytesData);
+ outgoingMessagesCounter = await messageProxyForMainnet.getOutgoingMessagesCounter(schainName);
+ outgoingMessagesCounter.should.be.equal(3);
});
it("should allow schain owner to send message", async () => {
const message = "0xd2";
const schainOwner = user;
- const schainsInternal = (await ethers.getContractFactory("SchainsInternal")).attach(await contractManager.getContract("SchainsInternal")) as SchainsInternal;
+ const SchainsInternalFactory = await ethers.getContractFactory("SchainsInternal");
+ const schainsInternal = SchainsInternalFactory.attach(await contractManager.getContract("SchainsInternal")) as SchainsInternal;
const otherSchainName = "something else";
- const otherSchainHash = stringKeccak256(otherSchainName);
+ const otherSchainHash = ethers.id(otherSchainName);
await schainsInternal.initializeSchain(schainName, schainOwner.address, 0, 0);
await messageProxyForMainnet.addConnectedChain(schainName);
@@ -377,20 +370,20 @@ describe("MessageProxy", () => {
await addNodesToSchain(contractManager, schainName, [0]);
await rechargeSchainWallet(contractManager, schainName, deployer.address, "1000000000000000000");
await setCommonPublicKey(contractManager, schainName);
- await messageProxyForMainnet.registerExtraContract(schainName, communityPool.address);
+ await messageProxyForMainnet.registerExtraContract(schainName, communityPool);
await depositBox.addSchainContract(schainName, deployer.address);
await communityPool.addSchainContract(schainName, deployer.address);
const minTransactionGas = await communityPool.minTransactionGas();
- const amountWei = minTransactionGas.mul(gasPrice);
+ const amountWei = minTransactionGas * BigInt(gasPrice);
const message1 = {
- destinationContract: depositBox.address,
+ destinationContract: depositBox,
sender: deployer.address,
data: await messages.encodeTransferEthMessage(client.address, 0),
};
const message2 = {
- destinationContract: depositBox.address,
+ destinationContract: depositBox,
sender: deployer.address,
data: await messages.encodeTransferEthMessage(customer.address, 7),
};
@@ -445,9 +438,8 @@ describe("MessageProxy", () => {
outgoingMessages,
sign
);
- const incomingMessagesCounter = BigNumber.from(
- await messageProxyForMainnet.getIncomingMessagesCounter(schainName));
- incomingMessagesCounter.should.be.deep.equal(BigNumber.from(4));
+ const incomingMessagesCounter = await messageProxyForMainnet.getIncomingMessagesCounter(schainName);
+ incomingMessagesCounter.should.be.equal(4);
});
it("should post incoming message and reimburse from CommunityPool", async () => {
@@ -466,15 +458,15 @@ describe("MessageProxy", () => {
await addNodesToSchain(contractManager, schainName, [0]);
await rechargeSchainWallet(contractManager, schainName, deployer.address, "1000000000000000000");
await setCommonPublicKey(contractManager, schainName);
- await messageProxyForMainnet.registerExtraContract(schainName, communityPool.address);
+ await messageProxyForMainnet.registerExtraContract(schainName, communityPool);
await depositBox.addSchainContract(schainName, deployer.address);
const minTransactionGas = await communityPool.minTransactionGas();
- const amountWei = minTransactionGas.mul(gasPrice).mul(2);
+ const amountWei = minTransactionGas * BigInt(gasPrice) * 2n;
- await messageProxyForMainnet.registerExtraContract(schainName, depositBox.address);
+ await messageProxyForMainnet.registerExtraContract(schainName, depositBox);
const message1 = {
- destinationContract: depositBox.address,
+ destinationContract: depositBox,
sender: deployer.address,
data: await messages.encodeTransferEthMessage(client.address, 1),
};
@@ -488,12 +480,12 @@ describe("MessageProxy", () => {
};
await messageProxyForMainnet.connect(deployer).addConnectedChain(schainName);
- await communityPool.connect(deployer).addSchainContract(schainName, communityPool.address);
+ await communityPool.connect(deployer).addSchainContract(schainName, communityPool);
await communityPool.connect(client).rechargeUserWallet(schainName, client.address, {value: amountWei.toString()});
const testWalletsFactory = await ethers.getContractFactory("Wallets");
- const testWallets = testWalletsFactory.attach(await contractManager.getContract("Wallets"));
+ const testWallets = testWalletsFactory.attach(await contractManager.getContract("Wallets")) as Wallets;
let balance = await testWallets.getSchainBalance(schainHash);
let userBalance = await communityPool.getBalance(client.address, schainName);
@@ -518,7 +510,7 @@ describe("MessageProxy", () => {
newBalance.should.be.lt(balance);
newUserBalance.should.be.deep.equal(userBalance);
- await messageProxyForMainnet.addReimbursedContract(schainName, depositBox.address);
+ await messageProxyForMainnet.addReimbursedContract(schainName, depositBox);
balance = newBalance;
userBalance = newUserBalance;
@@ -537,7 +529,7 @@ describe("MessageProxy", () => {
newUserBalance = await communityPool.getBalance(client.address, schainName);
newBalance.should.be.deep.equal(balance);
- newUserBalance.toNumber().should.be.lessThan(userBalance.toNumber());
+ newUserBalance.should.be.lessThan(userBalance);
});
it("should not post incoming messages when IMA bridge is paused", async () => {
@@ -555,21 +547,21 @@ describe("MessageProxy", () => {
await createNode(contractManager, nodeAddress.address, nodeCreationParams);
await addNodesToSchain(contractManager, schainName, [0]);
await setCommonPublicKey(contractManager, schainName);
- await messageProxyForMainnet.registerExtraContract(schainName, communityPool.address);
+ await messageProxyForMainnet.registerExtraContract(schainName, communityPool);
await depositBox.addSchainContract(schainName, deployer.address);
await communityPool.addSchainContract(schainName, deployer.address);
await rechargeSchainWallet(contractManager, schainName, deployer.address, "1000000000000000000");
const minTransactionGas = await communityPool.minTransactionGas();
- const amountWei = minTransactionGas.mul(gasPrice);
+ const amountWei = minTransactionGas * BigInt(gasPrice);
const message1 = {
- destinationContract: depositBox.address,
+ destinationContract: depositBox,
sender: deployer.address,
data: await messages.encodeTransferEthMessage(client.address, 0),
};
const message2 = {
- destinationContract: depositBox.address,
+ destinationContract: depositBox,
sender: deployer.address,
data: await messages.encodeTransferEthMessage(customer.address, 7),
};
@@ -624,9 +616,8 @@ describe("MessageProxy", () => {
outgoingMessages,
sign
);
- let incomingMessagesCounter = BigNumber.from(
- await messageProxyForMainnet.getIncomingMessagesCounter(schainName));
- incomingMessagesCounter.should.be.deep.equal(BigNumber.from(4));
+ let incomingMessagesCounter = await messageProxyForMainnet.getIncomingMessagesCounter(schainName);
+ incomingMessagesCounter.should.be.equal(4);
const pauseableRole = await messageProxyForMainnet.PAUSABLE_ROLE();
@@ -654,9 +645,8 @@ describe("MessageProxy", () => {
sign
);
- incomingMessagesCounter = BigNumber.from(
- await messageProxyForMainnet.getIncomingMessagesCounter(schainName));
- incomingMessagesCounter.should.be.deep.equal(BigNumber.from(6));
+ incomingMessagesCounter = await messageProxyForMainnet.getIncomingMessagesCounter(schainName);
+ incomingMessagesCounter.should.be.equal(6);
});
it("should not post incoming messages with incorrect address", async () => {
@@ -675,20 +665,20 @@ describe("MessageProxy", () => {
await addNodesToSchain(contractManager, schainName, [0]);
await rechargeSchainWallet(contractManager, schainName, deployer.address, "1000000000000000000");
await setCommonPublicKey(contractManager, schainName);
- await messageProxyForMainnet.registerExtraContract(schainName, communityPool.address);
+ await messageProxyForMainnet.registerExtraContract(schainName, communityPool);
await depositBox.addSchainContract(schainName, deployer.address);
await communityPool.addSchainContract(schainName, deployer.address);
const minTransactionGas = await communityPool.minTransactionGas();
- const amountWei = minTransactionGas.mul(gasPrice);
+ const amountWei = minTransactionGas * BigInt(gasPrice);
const message1 = {
- destinationContract: depositBox.address,
+ destinationContract: depositBox,
sender: deployer.address,
data: await messages.encodeTransferEthMessage(client.address, 0),
};
const message2 = {
- destinationContract: depositBox.address,
+ destinationContract: depositBox,
sender: deployer.address,
data: await messages.encodeTransferEthMessage(customer.address, 7),
};
@@ -752,13 +742,12 @@ describe("MessageProxy", () => {
outgoingMessages,
sign
);
- const incomingMessagesCounter = BigNumber.from(
- await messageProxyForMainnet.getIncomingMessagesCounter(schainName));
- incomingMessagesCounter.should.be.deep.equal(BigNumber.from(4));
+ const incomingMessagesCounter = await messageProxyForMainnet.getIncomingMessagesCounter(schainName);
+ incomingMessagesCounter.should.be.equal(4);
});
it("should get outgoing messages counter", async () => {
- const contractAddress = depositBox.address;
+ const contractAddress = depositBox;
const amount = 5;
const addressTo = client.address;
const bytesData = await messages.encodeTransferEthMessage(addressTo, amount);
@@ -768,16 +757,14 @@ describe("MessageProxy", () => {
await messageProxyForMainnet.connect(deployer).addConnectedChain(schainName);
- const outgoingMessagesCounter0 = BigNumber.from(
- await messageProxyForMainnet.getOutgoingMessagesCounter(schainName));
- outgoingMessagesCounter0.should.be.deep.equal(BigNumber.from(0));
+ const outgoingMessagesCounter0 = await messageProxyForMainnet.getOutgoingMessagesCounter(schainName);
+ outgoingMessagesCounter0.should.be.equal(0);
await caller
- .postOutgoingMessageTester(messageProxyForMainnet.address, schainHash, contractAddress, bytesData);
+ .postOutgoingMessageTester(messageProxyForMainnet, schainHash, contractAddress, bytesData);
- const outgoingMessagesCounter = BigNumber.from(
- await messageProxyForMainnet.getOutgoingMessagesCounter(schainName));
- outgoingMessagesCounter.should.be.deep.equal(BigNumber.from(1));
+ const outgoingMessagesCounter = await messageProxyForMainnet.getOutgoingMessagesCounter(schainName);
+ outgoingMessagesCounter.should.be.equal(1);
});
it("should get incoming messages counter", async () => {
@@ -799,14 +786,14 @@ describe("MessageProxy", () => {
const message1 = {
amount: 3,
data: "0x11",
- destinationContract: depositBox.address,
+ destinationContract: depositBox,
sender: deployer.address,
to: client.address
};
const message2 = {
amount: 7,
data: "0x22",
- destinationContract: depositBox.address,
+ destinationContract: depositBox,
sender: user.address,
to: customer.address
};
@@ -823,9 +810,8 @@ describe("MessageProxy", () => {
await messageProxyForMainnet.connect(deployer).addConnectedChain(schainName);
- const incomingMessagesCounter0 = BigNumber.from(
- await messageProxyForMainnet.getIncomingMessagesCounter(schainName));
- incomingMessagesCounter0.should.be.deep.equal(BigNumber.from(0));
+ const incomingMessagesCounter0 = await messageProxyForMainnet.getIncomingMessagesCounter(schainName);
+ incomingMessagesCounter0.should.be.equal(0);
await messageProxyForMainnet
.connect(nodeAddress)
@@ -835,9 +821,8 @@ describe("MessageProxy", () => {
outgoingMessages,
sign
);
- const incomingMessagesCounter = BigNumber.from(
- await messageProxyForMainnet.getIncomingMessagesCounter(schainName));
- incomingMessagesCounter.should.be.deep.equal(BigNumber.from(2));
+ const incomingMessagesCounter = await messageProxyForMainnet.getIncomingMessagesCounter(schainName);
+ incomingMessagesCounter.should.be.equal(2);
});
it("should get outgoing messages counter", async () => {
@@ -868,14 +853,14 @@ describe("MessageProxy", () => {
const message1 = {
amount: 3,
data: "0x11",
- destinationContract: depositBox.address,
+ destinationContract: depositBox,
sender: deployer.address,
to: client.address
};
const message2 = {
amount: 7,
data: "0x22",
- destinationContract: depositBox.address,
+ destinationContract: depositBox,
sender: user.address,
to: customer.address
};
@@ -906,9 +891,9 @@ describe("MessageProxy", () => {
const outgoingMessagesCounter0 = await messageProxyForMainnet.getOutgoingMessagesCounter(schainName);
outgoingMessagesCounter0.should.be.equal(0);
- await caller.postOutgoingMessageTester(messageProxyForMainnet.address,
+ await caller.postOutgoingMessageTester(messageProxyForMainnet,
schainHash,
- depositBox.address,
+ depositBox,
bytesData,
);
@@ -940,7 +925,7 @@ describe("MessageProxy", () => {
const message1 = {
amount: 0,
data: "0x11",
- destinationContract: receiverMock.address,
+ destinationContract: receiverMock,
sender: deployer.address,
to: client.address
};
@@ -953,10 +938,10 @@ describe("MessageProxy", () => {
hashB: HashB,
};
- await messageProxyForMainnet.registerExtraContract(schainName, receiverMock.address);
+ await messageProxyForMainnet.registerExtraContract(schainName, receiverMock);
let a = await receiverMock.a();
- expect(a.toNumber()).be.equal(0);
+ expect(a).be.equal(0);
const res = await (await messageProxyForMainnet
.connect(nodeAddress)
@@ -968,8 +953,8 @@ describe("MessageProxy", () => {
)).wait();
a = await receiverMock.a();
- expect(a.toNumber()).be.equal(0);
- expect(res.gasUsed.toNumber()).to.be.greaterThan(1000000);
+ expect(a).be.equal(0);
+ expect(res?.gasUsed).to.be.greaterThan(1000000);
});
@@ -992,13 +977,13 @@ describe("MessageProxy", () => {
const testCallReceiverContract = await ethers.getContractFactory("TestCallReceiverContract");
const receiverMock = await testCallReceiverContract.deploy();
- await messageProxyForMainnet.registerExtraContract(schainName, receiverMock.address);
+ await messageProxyForMainnet.registerExtraContract(schainName, receiverMock);
const startingCounter = 0;
const message1 = {
amount: 0,
- data: ethers.utils.defaultAbiCoder.encode(["uint"], [1]),
- destinationContract: receiverMock.address,
+ data: ethers.AbiCoder.defaultAbiCoder().encode(["uint"], [1]),
+ destinationContract: receiverMock,
sender: deployer.address,
to: client.address
};
@@ -1010,9 +995,9 @@ describe("MessageProxy", () => {
hashB: HashB,
};
- const sixtyFourTimesA = ethers.utils.hexlify(Array(64).fill("A".charCodeAt(0)));
+ const sixtyFourTimesA = ethers.hexlify(new Uint8Array(Array(64).fill("A".charCodeAt(0))));
const event = {
- msgCounter: BigNumber.from(0),
+ msgCounter: 0,
message: sixtyFourTimesA
}
await expect(
@@ -1048,14 +1033,14 @@ describe("MessageProxy", () => {
const testCallReceiverContract = await ethers.getContractFactory("TestCallReceiverContract");
const receiverMock = await testCallReceiverContract.deploy();
- await messageProxyForMainnet.registerExtraContract(schainName, receiverMock.address);
+ await messageProxyForMainnet.registerExtraContract(schainName, receiverMock);
const startingCounter = 0;
const message1 = {
amount: 0,
- data: ethers.utils.defaultAbiCoder.encode(["uint"], [2]),
- destinationContract: receiverMock.address,
+ data: ethers.AbiCoder.defaultAbiCoder().encode(["uint"], [2]),
+ destinationContract: receiverMock,
sender: deployer.address,
to: client.address
};
@@ -1069,7 +1054,7 @@ describe("MessageProxy", () => {
const panicErrorCodeDivideByZero = "12";
const event = {
- msgCounter: BigNumber.from(0),
+ msgCounter: 0,
message: "0x" + panicErrorCodeDivideByZero.padStart(64, "0")
}
await expect(
@@ -1098,184 +1083,184 @@ describe("MessageProxy", () => {
describe("register and remove extra contracts", async () => {
it("should register extra contract", async () => {
const fakeContractOnSchain = deployer.address;
- await messageProxyForMainnet.connect(user).registerExtraContract(schainName, depositBox.address)
+ await messageProxyForMainnet.connect(user).registerExtraContract(schainName, depositBox)
.should.be.eventually.rejectedWith("Not enough permissions to register extra contract");
await messageProxyForMainnet.registerExtraContract(schainName, fakeContractOnSchain)
.should.be.eventually.rejectedWith("Given address is not a contract");
expect((await messageProxyForMainnet.getContractRegisteredLength(schainHash)).toString()).to.be.equal("1");
- expect(await messageProxyForMainnet.isContractRegistered(schainHash, depositBox.address)).to.be.equal(false);
- await messageProxyForMainnet.registerExtraContract(schainName, depositBox.address);
- expect(await messageProxyForMainnet.isContractRegistered(schainHash, depositBox.address)).to.be.equal(true);
+ expect(await messageProxyForMainnet.isContractRegistered(schainHash, depositBox)).to.be.equal(false);
+ await messageProxyForMainnet.registerExtraContract(schainName, depositBox);
+ expect(await messageProxyForMainnet.isContractRegistered(schainHash, depositBox)).to.be.equal(true);
expect((await messageProxyForMainnet.getContractRegisteredLength(schainHash)).toString()).to.be.equal("2");
expect((await messageProxyForMainnet.getContractRegisteredRange(schainHash, 0, 1)).length).to.be.equal(1);
- expect((await messageProxyForMainnet.getContractRegisteredRange(schainHash, 0, 2))[1]).to.be.equal(depositBox.address);
+ expect((await messageProxyForMainnet.getContractRegisteredRange(schainHash, 0, 2))[1]).to.be.equal(depositBox);
await messageProxyForMainnet.getContractRegisteredRange(schainHash, 0, 11).should.be.eventually.rejectedWith("Range is incorrect");
await messageProxyForMainnet.getContractRegisteredRange(schainHash, 1, 0).should.be.eventually.rejectedWith("Range is incorrect");
- await messageProxyForMainnet.registerExtraContract(schainName, depositBox.address)
+ await messageProxyForMainnet.registerExtraContract(schainName, depositBox)
.should.be.eventually.rejectedWith("Extra contract is already registered");
});
it("should register extra contract for all", async () => {
const fakeContractOnSchain = deployer.address;
- await messageProxyForMainnet.connect(user).registerExtraContractForAll(depositBox.address)
+ await messageProxyForMainnet.connect(user).registerExtraContractForAll(depositBox)
.should.be.eventually.rejectedWith("EXTRA_CONTRACT_REGISTRAR_ROLE is required");
await messageProxyForMainnet.registerExtraContractForAll(fakeContractOnSchain)
.should.be.eventually.rejectedWith("Given address is not a contract");
expect((await messageProxyForMainnet.getContractRegisteredLength(zeroBytes32)).toString()).to.be.equal("0");
- expect(await messageProxyForMainnet.isContractRegistered(zeroBytes32, depositBox.address)).to.be.equal(false);
- await messageProxyForMainnet.registerExtraContractForAll(depositBox.address);
- expect(await messageProxyForMainnet.isContractRegistered(zeroBytes32, depositBox.address)).to.be.equal(true);
+ expect(await messageProxyForMainnet.isContractRegistered(zeroBytes32, depositBox)).to.be.equal(false);
+ await messageProxyForMainnet.registerExtraContractForAll(depositBox);
+ expect(await messageProxyForMainnet.isContractRegistered(zeroBytes32, depositBox)).to.be.equal(true);
expect((await messageProxyForMainnet.getContractRegisteredLength(zeroBytes32)).toString()).to.be.equal("1");
expect((await messageProxyForMainnet.getContractRegisteredRange(zeroBytes32, 0, 1)).length).to.be.equal(1);
- expect((await messageProxyForMainnet.getContractRegisteredRange(zeroBytes32, 0, 1))[0]).to.be.equal(depositBox.address);
+ expect((await messageProxyForMainnet.getContractRegisteredRange(zeroBytes32, 0, 1))[0]).to.be.equal(depositBox);
await messageProxyForMainnet.getContractRegisteredRange(zeroBytes32, 0, 11).should.be.eventually.rejectedWith("Range is incorrect");
await messageProxyForMainnet.getContractRegisteredRange(zeroBytes32, 1, 0).should.be.eventually.rejectedWith("Range is incorrect");
- await messageProxyForMainnet.registerExtraContract(schainName, depositBox.address)
+ await messageProxyForMainnet.registerExtraContract(schainName, depositBox)
.should.be.eventually.rejectedWith("Extra contract is already registered for all chains");
- await messageProxyForMainnet.registerExtraContractForAll(depositBox.address)
+ await messageProxyForMainnet.registerExtraContractForAll(depositBox)
.should.be.eventually.rejectedWith("Extra contract is already registered");
});
it("should register reimbursed contract", async () => {
const fakeContractOnSchain = deployer.address;
- await messageProxyForMainnet.connect(user).addReimbursedContract(schainName, depositBox.address)
+ await messageProxyForMainnet.connect(user).addReimbursedContract(schainName, depositBox)
.should.be.eventually.rejectedWith("Not enough permissions to add reimbursed contract");
await messageProxyForMainnet.addReimbursedContract(schainName, fakeContractOnSchain)
.should.be.eventually.rejectedWith("Given address is not a contract");
- await messageProxyForMainnet.addReimbursedContract(schainName, depositBox.address)
+ await messageProxyForMainnet.addReimbursedContract(schainName, depositBox)
.should.be.eventually.rejectedWith("Contract is not registered");
expect((await messageProxyForMainnet.getReimbursedContractsLength(schainHash)).toString()).to.be.equal("0");
- expect(await messageProxyForMainnet.isReimbursedContract(schainHash, depositBox.address)).to.be.equal(false);
- await messageProxyForMainnet.registerExtraContract(schainName, depositBox.address);
- await messageProxyForMainnet.addReimbursedContract(schainName, depositBox.address);
- expect(await messageProxyForMainnet.isReimbursedContract(schainHash, depositBox.address)).to.be.equal(true);
+ expect(await messageProxyForMainnet.isReimbursedContract(schainHash, depositBox)).to.be.equal(false);
+ await messageProxyForMainnet.registerExtraContract(schainName, depositBox);
+ await messageProxyForMainnet.addReimbursedContract(schainName, depositBox);
+ expect(await messageProxyForMainnet.isReimbursedContract(schainHash, depositBox)).to.be.equal(true);
expect((await messageProxyForMainnet.getReimbursedContractsLength(schainHash)).toString()).to.be.equal("1");
expect((await messageProxyForMainnet.getReimbursedContractsRange(schainHash, 0, 1)).length).to.be.equal(1);
- expect((await messageProxyForMainnet.getReimbursedContractsRange(schainHash, 0, 1))[0]).to.be.equal(depositBox.address);
+ expect((await messageProxyForMainnet.getReimbursedContractsRange(schainHash, 0, 1))[0]).to.be.equal(depositBox);
await messageProxyForMainnet.getReimbursedContractsRange(schainHash, 0, 11).should.be.eventually.rejectedWith("Range is incorrect");
await messageProxyForMainnet.getReimbursedContractsRange(schainHash, 1, 0).should.be.eventually.rejectedWith("Range is incorrect");
- await messageProxyForMainnet.addReimbursedContract(schainName, depositBox.address)
+ await messageProxyForMainnet.addReimbursedContract(schainName, depositBox)
.should.be.eventually.rejectedWith("Reimbursed contract is already added");
});
it("should remove extra contract", async () => {
const fakeContractOnSchain = deployer.address;
- await messageProxyForMainnet.connect(user).removeExtraContract(schainName, depositBox.address)
+ await messageProxyForMainnet.connect(user).removeExtraContract(schainName, depositBox)
.should.be.eventually.rejectedWith("Not enough permissions to register extra contract");
await messageProxyForMainnet.removeExtraContract(schainName, fakeContractOnSchain)
.should.be.eventually.rejectedWith("Extra contract is not registered");
expect((await messageProxyForMainnet.getContractRegisteredLength(schainHash)).toString()).to.be.equal("1");
await expect(
- messageProxyForMainnet.registerExtraContract(schainName, depositBox.address)
+ messageProxyForMainnet.registerExtraContract(schainName, depositBox)
).to.emit(
messageProxyForMainnet,
"ExtraContractRegistered"
- ).withArgs(schainHash, depositBox.address);
+ ).withArgs(schainHash, depositBox);
expect((await messageProxyForMainnet.getContractRegisteredLength(schainHash)).toString()).to.be.equal("2");
await expect(
- messageProxyForMainnet.removeExtraContract(schainName, depositBox.address)
+ messageProxyForMainnet.removeExtraContract(schainName, depositBox)
).to.emit(
messageProxyForMainnet,
"ExtraContractRemoved"
- ).withArgs(schainHash, depositBox.address);
+ ).withArgs(schainHash, depositBox);
expect((await messageProxyForMainnet.getContractRegisteredLength(schainHash)).toString()).to.be.equal("1");
- await messageProxyForMainnet.removeExtraContract(schainName, depositBox.address)
+ await messageProxyForMainnet.removeExtraContract(schainName, depositBox)
.should.be.eventually.rejectedWith("Extra contract is not registered");
- expect(await messageProxyForMainnet.isContractRegistered(schainHash, depositBox.address)).to.be.equal(false);
+ expect(await messageProxyForMainnet.isContractRegistered(schainHash, depositBox)).to.be.equal(false);
});
it("should remove extra contract for all", async () => {
const fakeContractOnSchain = deployer.address;
- await messageProxyForMainnet.connect(user).removeExtraContractForAll(depositBox.address)
+ await messageProxyForMainnet.connect(user).removeExtraContractForAll(depositBox)
.should.be.eventually.rejectedWith("EXTRA_CONTRACT_REGISTRAR_ROLE is required");
await messageProxyForMainnet.removeExtraContractForAll(fakeContractOnSchain)
.should.be.eventually.rejectedWith("Extra contract is not registered");
expect((await messageProxyForMainnet.getContractRegisteredLength(zeroBytes32)).toString()).to.be.equal("0");
await expect(
- messageProxyForMainnet.registerExtraContractForAll(depositBox.address)
+ messageProxyForMainnet.registerExtraContractForAll(depositBox)
).to.emit(
messageProxyForMainnet,
"ExtraContractRegistered"
- ).withArgs(zeroBytes32, depositBox.address);
+ ).withArgs(zeroBytes32, depositBox);
expect((await messageProxyForMainnet.getContractRegisteredLength(zeroBytes32)).toString()).to.be.equal("1");
await expect(
- messageProxyForMainnet.removeExtraContractForAll(depositBox.address)
+ messageProxyForMainnet.removeExtraContractForAll(depositBox)
).to.emit(
messageProxyForMainnet,
"ExtraContractRemoved"
- ).withArgs(zeroBytes32, depositBox.address);
+ ).withArgs(zeroBytes32, depositBox);
expect((await messageProxyForMainnet.getContractRegisteredLength(zeroBytes32)).toString()).to.be.equal("0");
- await messageProxyForMainnet.removeExtraContractForAll(depositBox.address)
+ await messageProxyForMainnet.removeExtraContractForAll(depositBox)
.should.be.eventually.rejectedWith("Extra contract is not registered");
});
it("should remove reimbursed contract", async () => {
const fakeContractOnSchain = deployer.address;
- await messageProxyForMainnet.connect(user).removeReimbursedContract(schainName, depositBox.address)
+ await messageProxyForMainnet.connect(user).removeReimbursedContract(schainName, depositBox)
.should.be.eventually.rejectedWith("Not enough permissions to remove reimbursed contract");
await messageProxyForMainnet.removeReimbursedContract(schainName, fakeContractOnSchain)
.should.be.eventually.rejectedWith("Reimbursed contract is not added");
expect((await messageProxyForMainnet.getReimbursedContractsLength(schainHash)).toString()).to.be.equal("0");
- await messageProxyForMainnet.registerExtraContract(schainName, depositBox.address);
+ await messageProxyForMainnet.registerExtraContract(schainName, depositBox);
await expect(
- messageProxyForMainnet.addReimbursedContract(schainName, depositBox.address)
+ messageProxyForMainnet.addReimbursedContract(schainName, depositBox)
).to.emit(
messageProxyForMainnet,
"ReimbursedContractAdded"
- ).withArgs(schainHash, depositBox.address);
+ ).withArgs(schainHash, depositBox);
expect((await messageProxyForMainnet.getReimbursedContractsLength(schainHash)).toString()).to.be.equal("1");
await expect(
- messageProxyForMainnet.removeReimbursedContract(schainName, depositBox.address)
+ messageProxyForMainnet.removeReimbursedContract(schainName, depositBox)
).to.emit(
messageProxyForMainnet,
"ReimbursedContractRemoved"
- ).withArgs(schainHash, depositBox.address);
+ ).withArgs(schainHash, depositBox);
expect((await messageProxyForMainnet.getReimbursedContractsLength(schainHash)).toString()).to.be.equal("0");
- await messageProxyForMainnet.removeReimbursedContract(schainName, depositBox.address)
+ await messageProxyForMainnet.removeReimbursedContract(schainName, depositBox)
.should.be.eventually.rejectedWith("Reimbursed contract is not added");
- expect(await messageProxyForMainnet.isReimbursedContract(schainHash, depositBox.address)).to.be.equal(false);
+ expect(await messageProxyForMainnet.isReimbursedContract(schainHash, depositBox)).to.be.equal(false);
});
it("should remove reimbursed contract when remove extra contract", async () => {
const fakeContractOnSchain = deployer.address;
- await messageProxyForMainnet.connect(user).removeReimbursedContract(schainName, depositBox.address)
+ await messageProxyForMainnet.connect(user).removeReimbursedContract(schainName, depositBox)
.should.be.eventually.rejectedWith("Not enough permissions to remove reimbursed contract");
await messageProxyForMainnet.removeReimbursedContract(schainName, fakeContractOnSchain)
.should.be.eventually.rejectedWith("Reimbursed contract is not added");
expect((await messageProxyForMainnet.getReimbursedContractsLength(schainHash)).toString()).to.be.equal("0");
- await messageProxyForMainnet.registerExtraContract(schainName, depositBox.address);
+ await messageProxyForMainnet.registerExtraContract(schainName, depositBox);
await expect(
- messageProxyForMainnet.addReimbursedContract(schainName, depositBox.address)
+ messageProxyForMainnet.addReimbursedContract(schainName, depositBox)
).to.emit(
messageProxyForMainnet,
"ReimbursedContractAdded"
- ).withArgs(schainHash, depositBox.address);
+ ).withArgs(schainHash, depositBox);
expect((await messageProxyForMainnet.getReimbursedContractsLength(schainHash)).toString()).to.be.equal("1");
await expect(
- messageProxyForMainnet.removeExtraContract(schainName, depositBox.address)
+ messageProxyForMainnet.removeExtraContract(schainName, depositBox)
).to.emit(
messageProxyForMainnet,
"ReimbursedContractRemoved"
- ).withArgs(schainHash, depositBox.address);
+ ).withArgs(schainHash, depositBox);
expect((await messageProxyForMainnet.getReimbursedContractsLength(schainHash)).toString()).to.be.equal("0");
- await messageProxyForMainnet.removeReimbursedContract(schainName, depositBox.address)
+ await messageProxyForMainnet.removeReimbursedContract(schainName, depositBox)
.should.be.eventually.rejectedWith("Reimbursed contract is not added");
- expect(await messageProxyForMainnet.isReimbursedContract(schainHash, depositBox.address)).to.be.equal(false);
+ expect(await messageProxyForMainnet.isReimbursedContract(schainHash, depositBox)).to.be.equal(false);
});
});
@@ -1285,22 +1270,22 @@ describe("MessageProxy", () => {
beforeEach(async () => {
keyStorage = await deployKeyStorageMock();
- messageProxyForSchain = await deployMessageProxyForSchainTester(keyStorage.address, "Base schain");
+ messageProxyForSchain = await deployMessageProxyForSchainTester(keyStorage, "Base schain");
messages = await deployMessages();
caller = await deployMessageProxyCaller();
const chainConnectorRole = await messageProxyForSchain.CHAIN_CONNECTOR_ROLE();
await messageProxyForSchain.connect(deployer).grantRole(chainConnectorRole, deployer.address);
const extraContractRegistrarRole = await messageProxyForSchain.EXTRA_CONTRACT_REGISTRAR_ROLE();
await messageProxyForSchain.connect(deployer).grantRole(extraContractRegistrarRole, deployer.address);
- await messageProxyForSchain.registerExtraContract(schainName, caller.address);
+ await messageProxyForSchain.registerExtraContract(schainName, caller);
});
it("should set constants", async () => {
- const gasLimitPrevious = (await messageProxyForSchain.gasLimit()).toNumber();
+ const gasLimitPrevious = await messageProxyForSchain.gasLimit();
const gasLimitNew = 7;
- expect((await messageProxyForSchain.gasLimit()).toNumber()).to.equal(gasLimitPrevious);
+ expect(await messageProxyForSchain.gasLimit()).to.equal(gasLimitPrevious);
await messageProxyForSchain.connect(user).setNewGasLimit(
gasLimitNew
@@ -1311,11 +1296,11 @@ describe("MessageProxy", () => {
await messageProxyForSchain.connect(user).setNewGasLimit(gasLimitNew);
- expect((await messageProxyForSchain.gasLimit()).toNumber()).to.equal(gasLimitNew);
+ expect(await messageProxyForSchain.gasLimit()).to.equal(gasLimitNew);
await messageProxyForSchain.connect(user).setNewGasLimit(gasLimitPrevious);
- expect((await messageProxyForSchain.gasLimit()).toNumber()).to.equal(gasLimitPrevious);
+ expect(await messageProxyForSchain.gasLimit()).to.equal(gasLimitPrevious);
});
@@ -1352,20 +1337,19 @@ describe("MessageProxy", () => {
});
it("should post outgoing message", async () => {
- const contractAddress = messageProxyForSchain.address;
+ const contractAddress = messageProxyForSchain;
const amount = 4;
const addressTo = user.address;
const bytesData = await messages.encodeTransferEthMessage(addressTo, amount);
await caller
- .postOutgoingMessageTesterOnSchain(messageProxyForSchain.address, schainHash, contractAddress, bytesData)
+ .postOutgoingMessageTesterOnSchain(messageProxyForSchain, schainHash, contractAddress, bytesData)
.should.be.rejectedWith("Destination chain is not initialized");
await messageProxyForSchain.connect(deployer).addConnectedChain(schainName);
await caller
- .postOutgoingMessageTesterOnSchain(messageProxyForSchain.address, schainHash, contractAddress, bytesData);
- const outgoingMessagesCounter = BigNumber.from(
- await messageProxyForSchain.getOutgoingMessagesCounter(schainName));
- outgoingMessagesCounter.should.be.deep.equal(BigNumber.from(1));
+ .postOutgoingMessageTesterOnSchain(messageProxyForSchain, schainHash, contractAddress, bytesData);
+ const outgoingMessagesCounter = await messageProxyForSchain.getOutgoingMessagesCounter(schainName);
+ outgoingMessagesCounter.should.be.equal(1);
});
// l_sergiy: this test should be rewritten in respect to new pre-BLS hash computation algorithm
@@ -1502,18 +1486,16 @@ describe("MessageProxy", () => {
await messageProxyForSchain.connect(deployer).addConnectedChain(schainName);
// chain should be inited:
- BigNumber.from(await messageProxyForSchain.getOutgoingMessagesCounter(schainName)).should.be.deep.equal(BigNumber.from(0));
+ (await messageProxyForSchain.getOutgoingMessagesCounter(schainName)).should.be.equal(0);
- const outgoingMessagesCounter0 = BigNumber.from(
- await messageProxyForSchain.getOutgoingMessagesCounter(schainName));
- outgoingMessagesCounter0.should.be.deep.equal(BigNumber.from(0));
+ const outgoingMessagesCounter0 = await messageProxyForSchain.getOutgoingMessagesCounter(schainName);
+ outgoingMessagesCounter0.should.be.equal(0);
await caller
- .postOutgoingMessageTesterOnSchain(messageProxyForSchain.address, schainHash, messages.address, bytesData);
+ .postOutgoingMessageTesterOnSchain(messageProxyForSchain, schainHash, messages.getAddress(), bytesData);
- const outgoingMessagesCounter = BigNumber.from(
- await messageProxyForSchain.getOutgoingMessagesCounter(schainName));
- outgoingMessagesCounter.should.be.deep.equal(BigNumber.from(1));
+ const outgoingMessagesCounter = await messageProxyForSchain.getOutgoingMessagesCounter(schainName);
+ outgoingMessagesCounter.should.be.equal(1);
});
it("should set version of contracts on schain", async () => {
@@ -1546,7 +1528,7 @@ describe("MessageProxy", () => {
await messageProxyForSchainWithoutSignature.connect(deployer).grantRole(chainConnectorRole, deployer.address);
const extraContractRegistrarRole = await messageProxyForSchainWithoutSignature.EXTRA_CONTRACT_REGISTRAR_ROLE();
await messageProxyForSchainWithoutSignature.connect(deployer).grantRole(extraContractRegistrarRole, deployer.address);
- await messageProxyForSchainWithoutSignature.registerExtraContract(schainName, caller.address);
+ await messageProxyForSchainWithoutSignature.registerExtraContract(schainName, caller);
const receiverMockFactory = await ethers.getContractFactory("ReceiverGasLimitSchainMock");
receiverMock = await receiverMockFactory.deploy() as ReceiverGasLimitSchainMock;
@@ -1557,17 +1539,17 @@ describe("MessageProxy", () => {
const message1 = {
amount: 0,
data: "0x11",
- destinationContract: receiverMock.address,
+ destinationContract: receiverMock,
sender: deployer.address,
to: client.address
};
const outgoingMessages = [message1];
- await messageProxyForSchainWithoutSignature.registerExtraContract("Mainnet", receiverMock.address);
+ await messageProxyForSchainWithoutSignature.registerExtraContract("Mainnet", receiverMock);
let a = await receiverMock.a();
- expect(a.toNumber()).be.equal(0);
+ expect(a).be.equal(0);
const res = await (await messageProxyForSchainWithoutSignature
.connect(deployer)
@@ -1579,8 +1561,8 @@ describe("MessageProxy", () => {
)).wait();
a = await receiverMock.a();
- expect(a.toNumber()).be.equal(0);
- expect(res.gasUsed.toNumber()).to.be.greaterThan(1000000);
+ expect(a).be.equal(0);
+ expect(res?.gasUsed).to.be.greaterThan(1000000);
});
@@ -1589,7 +1571,7 @@ describe("MessageProxy", () => {
const message1 = {
amount: 0,
data: "0x11",
- destinationContract: receiverMock.address,
+ destinationContract: receiverMock,
sender: deployer.address,
to: client.address
};
@@ -1597,14 +1579,15 @@ describe("MessageProxy", () => {
const etherbase = await (await ethers.getContractFactory("EtherbaseMock")).deploy() as EtherbaseMock;
await etherbase.initialize(deployer.address);
- await etherbase.grantRole(await etherbase.ETHER_MANAGER_ROLE(), messageProxyForSchainWithoutSignature.address);
+ await etherbase.grantRole(await etherbase.ETHER_MANAGER_ROLE(), messageProxyForSchainWithoutSignature);
- await messageProxyForSchainWithoutSignature.registerExtraContract("Mainnet", receiverMock.address);
- await messageProxyForSchainWithoutSignature.setEtherbase(etherbase.address);
+ await messageProxyForSchainWithoutSignature.registerExtraContract("Mainnet", receiverMock);
+ await messageProxyForSchainWithoutSignature.setEtherbase(etherbase);
- const smallBalance = ethers.utils.parseEther("0.02");
+ const smallBalance = ethers.parseEther("0.02");
// left small amount of eth on agent balance to emulate PoW.
- await agent.sendTransaction({to: etherbase.address, value: (await agent.getBalance()).sub(smallBalance)});
+ let agentBalance = await ethers.provider.getBalance(agent);
+ await agent.sendTransaction({to: etherbase, value: agentBalance - smallBalance});
await messageProxyForSchainWithoutSignature
.connect(agent)
@@ -1615,10 +1598,11 @@ describe("MessageProxy", () => {
randomSignature
);
- (await agent.getBalance())
- .should.be.closeTo(
- await messageProxyForSchainWithoutSignature.MINIMUM_BALANCE(),
- ethers.utils.parseEther("0.001").toNumber());
+ agentBalance = await ethers.provider.getBalance(agent);
+ agentBalance.should.be.closeTo(
+ await messageProxyForSchainWithoutSignature.MINIMUM_BALANCE(),
+ ethers.parseEther("0.001")
+ );
await etherbase.retrieve(agent.address);
});
@@ -1628,7 +1612,7 @@ describe("MessageProxy", () => {
const message1 = {
amount: 0,
data: "0x11",
- destinationContract: receiverMock.address,
+ destinationContract: receiverMock,
sender: deployer.address,
to: client.address
};
@@ -1636,16 +1620,17 @@ describe("MessageProxy", () => {
const etherbase = await (await ethers.getContractFactory("EtherbaseMock")).deploy() as EtherbaseMock;
await etherbase.initialize(deployer.address);
- await etherbase.grantRole(await etherbase.ETHER_MANAGER_ROLE(), messageProxyForSchainWithoutSignature.address);
+ await etherbase.grantRole(await etherbase.ETHER_MANAGER_ROLE(), messageProxyForSchainWithoutSignature);
- await messageProxyForSchainWithoutSignature.registerExtraContract("Mainnet", receiverMock.address);
- await messageProxyForSchainWithoutSignature.setEtherbase(etherbase.address);
+ await messageProxyForSchainWithoutSignature.registerExtraContract("Mainnet", receiverMock);
+ await messageProxyForSchainWithoutSignature.setEtherbase(etherbase);
- const etherbaseBalance = ethers.utils.parseEther("0.5");
- const smallBalance = ethers.utils.parseEther("0.02");
- const rest = (await agent.getBalance()).sub(smallBalance).sub(etherbaseBalance);
+ const etherbaseBalance = ethers.parseEther("0.5");
+ const smallBalance = ethers.parseEther("0.02");
+ let agentBalance = await ethers.provider.getBalance(agent);
+ const rest = agentBalance - smallBalance - etherbaseBalance;
// left small amount of eth on agent balance to emulate PoW.
- await agent.sendTransaction({to: etherbase.address, value: etherbaseBalance});
+ await agent.sendTransaction({to: etherbase, value: etherbaseBalance});
await agent.sendTransaction({to: deployer.address, value: rest});
await messageProxyForSchainWithoutSignature
@@ -1657,10 +1642,11 @@ describe("MessageProxy", () => {
randomSignature
);
- (await ethers.provider.getBalance(etherbase.address))
+ (await ethers.provider.getBalance(etherbase))
.should.be.equal(0);
- (await agent.getBalance())
- .should.be.gt(etherbaseBalance);
+
+ agentBalance = await ethers.provider.getBalance(agent);
+ agentBalance.should.be.gt(etherbaseBalance);
await deployer.sendTransaction({to: agent.address, value: rest});
});
@@ -1674,102 +1660,102 @@ describe("MessageProxy", () => {
describe("register and remove extra contracts", async () => {
it("should register extra contract", async () => {
const fakeContractOnSchain = deployer.address;
- await messageProxyForSchain.connect(user).registerExtraContract(schainName, messages.address)
+ await messageProxyForSchain.connect(user).registerExtraContract(schainName, messages.getAddress())
.should.be.eventually.rejectedWith("EXTRA_CONTRACT_REGISTRAR_ROLE is required");
await messageProxyForSchain.registerExtraContract(schainName, fakeContractOnSchain)
.should.be.eventually.rejectedWith("Given address is not a contract");
expect((await messageProxyForSchain.getContractRegisteredLength(schainHash)).toString()).to.be.equal("1");
- expect(await messageProxyForSchain.isContractRegistered(schainHash, messages.address)).to.be.equal(false);
- await messageProxyForSchain.registerExtraContract(schainName, messages.address);
- expect(await messageProxyForSchain.isContractRegistered(schainHash, messages.address)).to.be.equal(true);
+ expect(await messageProxyForSchain.isContractRegistered(schainHash, messages.getAddress())).to.be.equal(false);
+ await messageProxyForSchain.registerExtraContract(schainName, messages.getAddress());
+ expect(await messageProxyForSchain.isContractRegistered(schainHash, messages.getAddress())).to.be.equal(true);
expect((await messageProxyForSchain.getContractRegisteredLength(schainHash)).toString()).to.be.equal("2");
expect((await messageProxyForSchain.getContractRegisteredRange(schainHash, 0, 1)).length).to.be.equal(1);
- expect((await messageProxyForSchain.getContractRegisteredRange(schainHash, 0, 2))[1]).to.be.equal(messages.address);
+ expect((await messageProxyForSchain.getContractRegisteredRange(schainHash, 0, 2))[1]).to.be.equal(messages);
await messageProxyForSchain.getContractRegisteredRange(schainHash, 0, 11).should.be.eventually.rejectedWith("Range is incorrect");
await messageProxyForSchain.getContractRegisteredRange(schainHash, 1, 0).should.be.eventually.rejectedWith("Range is incorrect");
- await messageProxyForSchain.registerExtraContract(schainName, messages.address)
+ await messageProxyForSchain.registerExtraContract(schainName, messages.getAddress())
.should.be.eventually.rejectedWith("Extra contract is already registered");
});
it("should register extra contract for all", async () => {
const fakeContractOnSchain = deployer.address;
- await messageProxyForSchain.connect(user).registerExtraContractForAll(messages.address)
+ await messageProxyForSchain.connect(user).registerExtraContractForAll(messages.getAddress())
.should.be.eventually.rejectedWith("EXTRA_CONTRACT_REGISTRAR_ROLE is required");
await messageProxyForSchain.registerExtraContractForAll(fakeContractOnSchain)
.should.be.eventually.rejectedWith("Given address is not a contract");
expect((await messageProxyForSchain.getContractRegisteredLength(zeroBytes32)).toString()).to.be.equal("0");
- expect(await messageProxyForSchain.isContractRegistered(zeroBytes32, messages.address)).to.be.equal(false);
- await messageProxyForSchain.registerExtraContractForAll(messages.address);
+ expect(await messageProxyForSchain.isContractRegistered(zeroBytes32, messages.getAddress())).to.be.equal(false);
+ await messageProxyForSchain.registerExtraContractForAll(messages.getAddress());
- expect(await messageProxyForSchain.isContractRegistered(zeroBytes32, messages.address)).to.be.equal(true);
+ expect(await messageProxyForSchain.isContractRegistered(zeroBytes32, messages.getAddress())).to.be.equal(true);
expect((await messageProxyForSchain.getContractRegisteredLength(zeroBytes32)).toString()).to.be.equal("1");
expect((await messageProxyForSchain.getContractRegisteredRange(zeroBytes32, 0, 1)).length).to.be.equal(1);
- expect((await messageProxyForSchain.getContractRegisteredRange(zeroBytes32, 0, 1))[0]).to.be.equal(messages.address);
+ expect((await messageProxyForSchain.getContractRegisteredRange(zeroBytes32, 0, 1))[0]).to.be.equal(messages);
await messageProxyForSchain.getContractRegisteredRange(zeroBytes32, 0, 11).should.be.eventually.rejectedWith("Range is incorrect");
await messageProxyForSchain.getContractRegisteredRange(zeroBytes32, 1, 0).should.be.eventually.rejectedWith("Range is incorrect");
- await messageProxyForSchain.registerExtraContract(schainName, messages.address)
+ await messageProxyForSchain.registerExtraContract(schainName, messages.getAddress())
.should.be.eventually.rejectedWith("Extra contract is already registered for all chains");
- await messageProxyForSchain.registerExtraContractForAll(messages.address)
+ await messageProxyForSchain.registerExtraContractForAll(messages.getAddress())
.should.be.eventually.rejectedWith("Extra contract is already registered");
});
it("should remove extra contract", async () => {
const fakeContractOnSchain = deployer.address;
- await messageProxyForSchain.connect(user).removeExtraContract(schainName, messages.address)
+ await messageProxyForSchain.connect(user).removeExtraContract(schainName, messages.getAddress())
.should.be.eventually.rejectedWith("EXTRA_CONTRACT_REGISTRAR_ROLE is required");
await messageProxyForSchain.removeExtraContract(schainName, fakeContractOnSchain)
.should.be.eventually.rejectedWith("Extra contract is not registered");
expect((await messageProxyForSchain.getContractRegisteredLength(schainHash)).toString()).to.be.equal("1");
await expect(
- messageProxyForSchain.registerExtraContract(schainName, messages.address)
+ messageProxyForSchain.registerExtraContract(schainName, messages.getAddress())
).to.emit(
messageProxyForSchain,
"ExtraContractRegistered"
- ).withArgs(schainHash, messages.address);
+ ).withArgs(schainHash, messages.getAddress());
expect((await messageProxyForSchain.getContractRegisteredLength(schainHash)).toString()).to.be.equal("2");
await expect(
- messageProxyForSchain.removeExtraContract(schainName, messages.address)
+ messageProxyForSchain.removeExtraContract(schainName, messages.getAddress())
).to.emit(
messageProxyForSchain,
"ExtraContractRemoved"
- ).withArgs(schainHash, messages.address);
+ ).withArgs(schainHash, messages.getAddress());
expect((await messageProxyForSchain.getContractRegisteredLength(schainHash)).toString()).to.be.equal("1");
- await messageProxyForSchain.removeExtraContract(schainName, messages.address)
+ await messageProxyForSchain.removeExtraContract(schainName, messages.getAddress())
.should.be.eventually.rejectedWith("Extra contract is not registered");
- expect(await messageProxyForSchain.isContractRegistered(schainHash, messages.address)).to.be.equal(false);
+ expect(await messageProxyForSchain.isContractRegistered(schainHash, messages.getAddress())).to.be.equal(false);
});
it("should remove extra contract for all", async () => {
const fakeContractOnSchain = deployer.address;
- await messageProxyForSchain.connect(user).removeExtraContractForAll(messages.address)
+ await messageProxyForSchain.connect(user).removeExtraContractForAll(messages.getAddress())
.should.be.eventually.rejectedWith("EXTRA_CONTRACT_REGISTRAR_ROLE is required");
await messageProxyForSchain.removeExtraContractForAll(fakeContractOnSchain)
.should.be.eventually.rejectedWith("Extra contract is not registered");
expect((await messageProxyForSchain.getContractRegisteredLength(zeroBytes32)).toString()).to.be.equal("0");
await expect(
- messageProxyForSchain.registerExtraContractForAll(messages.address)
+ messageProxyForSchain.registerExtraContractForAll(messages.getAddress())
).to.emit(
messageProxyForSchain,
"ExtraContractRegistered"
- ).withArgs(zeroBytes32, messages.address);
+ ).withArgs(zeroBytes32, messages.getAddress());
expect((await messageProxyForSchain.getContractRegisteredLength(zeroBytes32)).toString()).to.be.equal("1");
await expect(
- messageProxyForSchain.removeExtraContractForAll(messages.address)
+ messageProxyForSchain.removeExtraContractForAll(messages.getAddress())
).to.emit(
messageProxyForSchain,
"ExtraContractRemoved"
- ).withArgs(zeroBytes32, messages.address);
+ ).withArgs(zeroBytes32, messages.getAddress());
expect((await messageProxyForSchain.getContractRegisteredLength(zeroBytes32)).toString()).to.be.equal("0");
- await messageProxyForSchain.removeExtraContractForAll(messages.address)
+ await messageProxyForSchain.removeExtraContractForAll(messages.getAddress())
.should.be.eventually.rejectedWith("Extra contract is not registered");
});
});
diff --git a/test/TokenManagerERC1155.ts b/test/TokenManagerERC1155.ts
index 8c72b7d6d..f9bf5ea39 100644
--- a/test/TokenManagerERC1155.ts
+++ b/test/TokenManagerERC1155.ts
@@ -24,7 +24,7 @@
*/
import chaiAsPromised from "chai-as-promised";
-import chai = require("chai");
+import chai from "chai";
import {
ERC1155OnChain,
TokenManagerERC1155,
@@ -34,7 +34,7 @@ import {
CommunityLocker
} from "../typechain";
-import { stringKeccak256 } from "./utils/helper";
+
import { skipTime } from "./utils/time";
chai.should();
@@ -48,8 +48,7 @@ import { deployMessages } from "./utils/deploy/messages";
import { deployCommunityLocker } from "./utils/deploy/schain/communityLocker";
import { ethers } from "hardhat";
-import { SignerWithAddress } from "@nomiclabs/hardhat-ethers/dist/src/signer-with-address";
-import { BigNumber } from "ethers";
+import { SignerWithAddress } from "@nomicfoundation/hardhat-ethers/signers";
import { expect } from "chai";
import { deployKeyStorageMock } from "./utils/deploy/test/keyStorageMock";
@@ -60,13 +59,13 @@ describe("TokenManagerERC1155", () => {
let schainOwner: SignerWithAddress;
const schainName = "V-chain";
- const schainId = stringKeccak256(schainName);
+ const schainId = ethers.id(schainName);
const id = 1;
const amount = 4;
const ids = [1, 2, 3, 4];
const amounts = [4, 3, 2, 1];
const mainnetName = "Mainnet";
- const mainnetId = stringKeccak256("Mainnet");
+ const mainnetId = ethers.id("Mainnet");
let to: string;
let token: ERC1155OnChain;
let fakeDepositBox: string;
@@ -86,23 +85,23 @@ describe("TokenManagerERC1155", () => {
beforeEach(async () => {
const keyStorage = await deployKeyStorageMock();
- messageProxyForSchain = await deployMessageProxyForSchainTester(keyStorage.address, schainName);
+ messageProxyForSchain = await deployMessageProxyForSchainTester(keyStorage, schainName);
tokenManagerLinker = await deployTokenManagerLinker(messageProxyForSchain, deployer.address);
messages = await deployMessages();
- fakeDepositBox = messages.address;
- fakeCommunityPool = messages.address;
+ fakeDepositBox = user.address;
+ fakeCommunityPool = user.address;
- communityLocker = await deployCommunityLocker(schainName, messageProxyForSchain.address, tokenManagerLinker, fakeCommunityPool);
+ communityLocker = await deployCommunityLocker(schainName, messageProxyForSchain, tokenManagerLinker, fakeCommunityPool);
tokenManagerERC1155 =
await deployTokenManagerERC1155(
schainName,
- messageProxyForSchain.address,
+ messageProxyForSchain,
tokenManagerLinker,
communityLocker,
fakeDepositBox
);
- await tokenManagerLinker.registerTokenManager(tokenManagerERC1155.address);
+ await tokenManagerLinker.registerTokenManager(tokenManagerERC1155);
await tokenManagerERC1155.grantRole(await tokenManagerERC1155.TOKEN_REGISTRAR_ROLE(), schainOwner.address);
await tokenManagerERC1155.grantRole(await tokenManagerERC1155.AUTOMATIC_DEPLOY_ROLE(), schainOwner.address);
@@ -114,16 +113,16 @@ describe("TokenManagerERC1155", () => {
to = user.address;
const data = await messages.encodeActivateUserMessage(user.address);
- await messageProxyForSchain.postMessage(communityLocker.address, mainnetId, fakeCommunityPool, data);
+ await messageProxyForSchain.postMessage(communityLocker, mainnetId, fakeCommunityPool, data);
const extraContractRegistrarRole = await messageProxyForSchain.EXTRA_CONTRACT_REGISTRAR_ROLE();
await messageProxyForSchain.connect(deployer).grantRole(extraContractRegistrarRole, deployer.address);
- await messageProxyForSchain.registerExtraContractForAll(tokenManagerERC1155.address);
+ await messageProxyForSchain.registerExtraContractForAll(tokenManagerERC1155);
});
it("should change depositBox address", async () => {
const newDepositBox = user.address;
- expect(await tokenManagerERC1155.depositBox()).to.equal(messages.address);
+ expect(await tokenManagerERC1155.depositBox()).to.equal(fakeDepositBox);
await tokenManagerERC1155.connect(user).changeDepositBoxAddress(newDepositBox)
.should.be.eventually.rejectedWith("DEFAULT_ADMIN_ROLE is required");
await tokenManagerERC1155.changeDepositBoxAddress(newDepositBox);
@@ -132,61 +131,57 @@ describe("TokenManagerERC1155", () => {
it("should successfully call exitToMainERC1155", async () => {
// should be "No token clone on schain" if chains were different
- await tokenManagerERC1155.connect(user).exitToMainERC1155(token.address, id, amount)
+ await tokenManagerERC1155.connect(user).exitToMainERC1155(token, id, amount)
.should.be.eventually.rejectedWith("Not allowed ERC1155 Token");
- await tokenManagerERC1155.connect(schainOwner).addERC1155TokenByOwner(mainnetName, token.address, tokenClone.address);
- await tokenManagerERC1155.connect(user).exitToMainERC1155(token.address, id, amount)
+ await tokenManagerERC1155.connect(schainOwner).addERC1155TokenByOwner(mainnetName, token, tokenClone);
+ await tokenManagerERC1155.connect(user).exitToMainERC1155(token, id, amount)
.should.be.eventually.rejectedWith("Not allowed ERC1155 Token");
await tokenClone.connect(deployer).mint(user.address, id, amount, "0x");
- await tokenManagerERC1155.connect(user).exitToMainERC1155(token.address, id, amount)
+ await tokenManagerERC1155.connect(user).exitToMainERC1155(token, id, amount)
.should.be.eventually.rejectedWith("Not allowed ERC1155 Token");
- await tokenClone.connect(user).setApprovalForAll(tokenManagerERC1155.address, true);
- await tokenManagerERC1155.connect(user).exitToMainERC1155(token.address, id, amount);
+ await tokenClone.connect(user).setApprovalForAll(tokenManagerERC1155, true);
+ await tokenManagerERC1155.connect(user).exitToMainERC1155(token, id, amount);
- const outgoingMessagesCounterMainnet = BigNumber.from(
- await messageProxyForSchain.getOutgoingMessagesCounter("Mainnet")
- );
- outgoingMessagesCounterMainnet.should.be.deep.equal(BigNumber.from(1));
+ const outgoingMessagesCounterMainnet = await messageProxyForSchain.getOutgoingMessagesCounter("Mainnet");
+ outgoingMessagesCounterMainnet.should.be.equal(1);
});
it("should successfully call exitToMainERC1155Batch", async () => {
// should be "No token clone on schain" if chains were different
- await tokenManagerERC1155.connect(user).exitToMainERC1155Batch(token.address, ids, amounts)
+ await tokenManagerERC1155.connect(user).exitToMainERC1155Batch(token, ids, amounts)
.should.be.eventually.rejectedWith("Not allowed ERC1155 Token");
- await tokenManagerERC1155.connect(schainOwner).addERC1155TokenByOwner(mainnetName, token.address, tokenClone.address);
- await tokenManagerERC1155.connect(user).exitToMainERC1155Batch(token.address, ids, amounts)
+ await tokenManagerERC1155.connect(schainOwner).addERC1155TokenByOwner(mainnetName, token, tokenClone);
+ await tokenManagerERC1155.connect(user).exitToMainERC1155Batch(token, ids, amounts)
.should.be.eventually.rejectedWith("Not allowed ERC1155 Token");
await tokenClone.connect(deployer).mintBatch(user.address, ids, amounts, "0x");
- await tokenManagerERC1155.connect(user).exitToMainERC1155Batch(token.address, ids, amounts)
+ await tokenManagerERC1155.connect(user).exitToMainERC1155Batch(token, ids, amounts)
.should.be.eventually.rejectedWith("Not allowed ERC1155 Token");
- await tokenClone.connect(user).setApprovalForAll(tokenManagerERC1155.address, true);
- await tokenManagerERC1155.connect(user).exitToMainERC1155Batch(token.address, ids, amounts);
+ await tokenClone.connect(user).setApprovalForAll(tokenManagerERC1155, true);
+ await tokenManagerERC1155.connect(user).exitToMainERC1155Batch(token, ids, amounts);
- const outgoingMessagesCounterMainnet = BigNumber.from(
- await messageProxyForSchain.getOutgoingMessagesCounter("Mainnet")
- );
- outgoingMessagesCounterMainnet.should.be.deep.equal(BigNumber.from(1));
+ const outgoingMessagesCounterMainnet = await messageProxyForSchain.getOutgoingMessagesCounter("Mainnet");
+ outgoingMessagesCounterMainnet.should.be.equal(1);
});
it("should successfully call addERC1155TokenByOwner", async () => {
- await tokenManagerERC1155.connect(user).addERC1155TokenByOwner(mainnetName, token.address, tokenClone.address)
+ await tokenManagerERC1155.connect(user).addERC1155TokenByOwner(mainnetName, token, tokenClone)
.should.be.eventually.rejectedWith("TOKEN_REGISTRAR_ROLE is required");
- await tokenManagerERC1155.connect(schainOwner).addERC1155TokenByOwner(mainnetName, token.address, deployer.address)
+ await tokenManagerERC1155.connect(schainOwner).addERC1155TokenByOwner(mainnetName, token, deployer.address)
.should.be.eventually.rejectedWith("Given address is not a contract");
- await tokenManagerERC1155.connect(schainOwner).addERC1155TokenByOwner(mainnetName, token.address, tokenClone.address);
+ await tokenManagerERC1155.connect(schainOwner).addERC1155TokenByOwner(mainnetName, token, tokenClone);
- await tokenManagerERC1155.connect(schainOwner).addERC1155TokenByOwner(mainnetName, token2.address, tokenClone.address)
+ await tokenManagerERC1155.connect(schainOwner).addERC1155TokenByOwner(mainnetName, token2, tokenClone)
.should.be.eventually.rejectedWith("Clone was already added");
- await tokenManagerERC1155.connect(schainOwner).addERC1155TokenByOwner(mainnetName, token.address, tokenClone2.address)
+ await tokenManagerERC1155.connect(schainOwner).addERC1155TokenByOwner(mainnetName, token, tokenClone2)
.should.be.eventually.rejectedWith("Could not relink clone");
});
@@ -199,20 +194,20 @@ describe("TokenManagerERC1155", () => {
let tokenManagerERC11552: TokenManagerERC1155;
let communityLocker2: CommunityLocker;
const newSchainName = "NewChain";
- const newSchainId = stringKeccak256(newSchainName);
+ const newSchainId = ethers.id(newSchainName);
beforeEach(async () => {
erc1155OnOriginChain = await deployERC1155OnChain("NewToken");
erc1155OnTargetChain = await deployERC1155OnChain("NewToke1n");
const keyStorage2 = await deployKeyStorageMock();
- messageProxyForSchain2 = await deployMessageProxyForSchainTester(keyStorage2.address, newSchainName);
+ messageProxyForSchain2 = await deployMessageProxyForSchainTester(keyStorage2, newSchainName);
tokenManagerLinker2 = await deployTokenManagerLinker(messageProxyForSchain2, deployer.address);
- communityLocker2 = await deployCommunityLocker(newSchainName, messageProxyForSchain2.address, tokenManagerLinker2, fakeCommunityPool);
- tokenManagerERC11552 = await deployTokenManagerERC1155(newSchainName, messageProxyForSchain2.address, tokenManagerLinker2, communityLocker2, fakeDepositBox);
- await erc1155OnTargetChain.connect(deployer).grantRole(await erc1155OnTargetChain.MINTER_ROLE(), tokenManagerERC11552.address);
- await tokenManagerLinker2.registerTokenManager(tokenManagerERC11552.address);
- await messageProxyForSchain2.registerExtraContractForAll(tokenManagerERC11552.address);
+ communityLocker2 = await deployCommunityLocker(newSchainName, messageProxyForSchain2, tokenManagerLinker2, fakeCommunityPool);
+ tokenManagerERC11552 = await deployTokenManagerERC1155(newSchainName, messageProxyForSchain2, tokenManagerLinker2, communityLocker2, fakeDepositBox);
+ await erc1155OnTargetChain.connect(deployer).grantRole(await erc1155OnTargetChain.MINTER_ROLE(), tokenManagerERC11552);
+ await tokenManagerLinker2.registerTokenManager(tokenManagerERC11552);
+ await messageProxyForSchain2.registerExtraContractForAll(tokenManagerERC11552);
});
it("should invoke `transferToSchainERC1155` without mistakes", async () => {
@@ -221,29 +216,28 @@ describe("TokenManagerERC1155", () => {
await messageProxyForSchain.connect(deployer).addConnectedChain(newSchainName);
await erc1155OnOriginChain.connect(deployer).mint(user.address, id, amount, "0x");
- await erc1155OnOriginChain.connect(user).setApprovalForAll(tokenManagerERC1155.address, true);
+ await erc1155OnOriginChain.connect(user).setApprovalForAll(tokenManagerERC1155, true);
await tokenManagerERC1155
.connect(user)
- .transferToSchainERC1155(newSchainName, erc1155OnOriginChain.address, id, amount)
+ .transferToSchainERC1155(newSchainName, erc1155OnOriginChain, id, amount)
.should.be.eventually.rejectedWith("Incorrect Token Manager address");
await tokenManagerERC1155
.connect(user)
- .transferToSchainERC1155("Mainnet", erc1155OnOriginChain.address, id, amount)
+ .transferToSchainERC1155("Mainnet", erc1155OnOriginChain, id, amount)
.should.be.eventually.rejectedWith("This function is not for transferring to Mainnet");
- await tokenManagerERC1155.addTokenManager(newSchainName, tokenManagerERC11552.address);
+ await tokenManagerERC1155.addTokenManager(newSchainName, tokenManagerERC11552);
// execution:
await tokenManagerERC1155
.connect(user)
- .transferToSchainERC1155(newSchainName, erc1155OnOriginChain.address, id, amount);
+ .transferToSchainERC1155(newSchainName, erc1155OnOriginChain, id, amount);
// expectation:
- const outgoingMessagesCounter = BigNumber.from(
- await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName));
- outgoingMessagesCounter.should.be.deep.equal(BigNumber.from(1));
+ const outgoingMessagesCounter = await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName);
+ outgoingMessagesCounter.should.be.equal(1);
});
it("should reject `transferToSchainERC1155` when executing earlier then allowed", async () => {
@@ -252,32 +246,32 @@ describe("TokenManagerERC1155", () => {
await messageProxyForSchain.connect(deployer).addConnectedChain(newSchainName);
await erc1155OnOriginChain.connect(deployer).mint(user.address, id, 5, "0x");
- await erc1155OnOriginChain.connect(user).setApprovalForAll(tokenManagerERC1155.address, true);
+ await erc1155OnOriginChain.connect(user).setApprovalForAll(tokenManagerERC1155, true);
await tokenManagerERC1155
.connect(user)
- .transferToSchainERC1155(newSchainName, erc1155OnOriginChain.address, id, 1)
+ .transferToSchainERC1155(newSchainName, erc1155OnOriginChain, id, 1)
.should.be.eventually.rejectedWith("Incorrect Token Manager address");
await tokenManagerERC1155
.connect(user)
- .transferToSchainERC1155("Mainnet", erc1155OnOriginChain.address, id, 1)
+ .transferToSchainERC1155("Mainnet", erc1155OnOriginChain, id, 1)
.should.be.eventually.rejectedWith("This function is not for transferring to Mainnet");
- await tokenManagerERC1155.addTokenManager(newSchainName, tokenManagerERC11552.address);
+ await tokenManagerERC1155.addTokenManager(newSchainName, tokenManagerERC11552);
await tokenManagerERC1155
.connect(user)
- .transferToSchainERC1155(newSchainName, erc1155OnOriginChain.address, id, 1);
+ .transferToSchainERC1155(newSchainName, erc1155OnOriginChain, id, 1);
- BigNumber.from(await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName)).should.be.deep.equal(BigNumber.from(1));
+ (await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName)).should.be.equal(1);
await tokenManagerERC1155
.connect(user)
- .transferToSchainERC1155(newSchainName, erc1155OnOriginChain.address, id, 1);
+ .transferToSchainERC1155(newSchainName, erc1155OnOriginChain, id, 1);
- BigNumber.from(await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName)).should.be.deep.equal(BigNumber.from(2));
+ (await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName)).should.be.equal(2);
await communityLocker.grantRole(await communityLocker.CONSTANT_SETTER_ROLE(), deployer.address);
@@ -285,52 +279,52 @@ describe("TokenManagerERC1155", () => {
await tokenManagerERC1155
.connect(user)
- .transferToSchainERC1155(newSchainName, erc1155OnOriginChain.address, id, 1)
+ .transferToSchainERC1155(newSchainName, erc1155OnOriginChain, id, 1)
.should.be.eventually.rejectedWith("Exceeded message rate limit");
- BigNumber.from(await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName)).should.be.deep.equal(BigNumber.from(2));
+ (await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName)).should.be.equal(2);
await skipTime(90);
await tokenManagerERC1155
.connect(user)
- .transferToSchainERC1155(newSchainName, erc1155OnOriginChain.address, id, 1)
+ .transferToSchainERC1155(newSchainName, erc1155OnOriginChain, id, 1)
.should.be.eventually.rejectedWith("Exceeded message rate limit");
- BigNumber.from(await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName)).should.be.deep.equal(BigNumber.from(2));
+ (await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName)).should.be.equal(2);
await skipTime(20);
await tokenManagerERC1155
.connect(user)
- .transferToSchainERC1155(newSchainName, erc1155OnOriginChain.address, id, 1);
+ .transferToSchainERC1155(newSchainName, erc1155OnOriginChain, id, 1);
- BigNumber.from(await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName)).should.be.deep.equal(BigNumber.from(3));
+ (await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName)).should.be.equal(3);
await communityLocker.setTimeLimitPerMessage(newSchainName, 0);
await tokenManagerERC1155
.connect(user)
- .transferToSchainERC1155(newSchainName, erc1155OnOriginChain.address, id, 1);
+ .transferToSchainERC1155(newSchainName, erc1155OnOriginChain, id, 1);
- BigNumber.from(await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName)).should.be.deep.equal(BigNumber.from(4));
+ (await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName)).should.be.equal(4);
await communityLocker.setTimeLimitPerMessage(newSchainName, 100);
await tokenManagerERC1155
.connect(user)
- .transferToSchainERC1155(newSchainName, erc1155OnOriginChain.address, id, 1)
+ .transferToSchainERC1155(newSchainName, erc1155OnOriginChain, id, 1)
.should.be.eventually.rejectedWith("Exceeded message rate limit");
- BigNumber.from(await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName)).should.be.deep.equal(BigNumber.from(4));
+ (await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName)).should.be.equal(4);
await skipTime(110);
await tokenManagerERC1155
.connect(user)
- .transferToSchainERC1155(newSchainName, erc1155OnOriginChain.address, id, 1);
+ .transferToSchainERC1155(newSchainName, erc1155OnOriginChain, id, 1);
- BigNumber.from(await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName)).should.be.deep.equal(BigNumber.from(5));
+ (await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName)).should.be.equal(5);
});
it("should invoke `transferToSchainERC1155` and receive tokens without mistakes", async () => {
@@ -339,27 +333,27 @@ describe("TokenManagerERC1155", () => {
await messageProxyForSchain.connect(deployer).addConnectedChain(newSchainName);
await erc1155OnOriginChain.connect(deployer).mint(user.address, id, amount, "0x");
- await erc1155OnOriginChain.connect(user).setApprovalForAll(tokenManagerERC1155.address, true);
+ await erc1155OnOriginChain.connect(user).setApprovalForAll(tokenManagerERC1155, true);
await tokenManagerERC1155
.connect(user)
- .transferToSchainERC1155(newSchainName, erc1155OnOriginChain.address, id, amount)
+ .transferToSchainERC1155(newSchainName, erc1155OnOriginChain, id, amount)
.should.be.eventually.rejectedWith("Incorrect Token Manager address");
await tokenManagerERC1155
.connect(user)
- .transferToSchainERC1155("Mainnet", erc1155OnOriginChain.address, id, amount)
+ .transferToSchainERC1155("Mainnet", erc1155OnOriginChain, id, amount)
.should.be.eventually.rejectedWith("This function is not for transferring to Mainnet");
- await tokenManagerERC1155.addTokenManager(newSchainName, tokenManagerERC11552.address);
+ await tokenManagerERC1155.addTokenManager(newSchainName, tokenManagerERC11552);
// execution:
await tokenManagerERC1155
.connect(user)
- .transferToSchainERC1155(newSchainName, erc1155OnOriginChain.address, id, amount);
+ .transferToSchainERC1155(newSchainName, erc1155OnOriginChain, id, amount);
const data = await messages.encodeTransferErc1155AndTokenInfoMessage(
- erc1155OnOriginChain.address,
+ erc1155OnOriginChain,
user.address,
id,
amount,
@@ -369,25 +363,26 @@ describe("TokenManagerERC1155", () => {
);
// expectation:
- const outgoingMessagesCounter = BigNumber.from(
- await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName));
- outgoingMessagesCounter.should.be.deep.equal(BigNumber.from(1));
+ const outgoingMessagesCounter = await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName);
+ outgoingMessagesCounter.should.be.equal(1);
// receive:
// registration:
await messageProxyForSchain2.connect(deployer).addConnectedChain(schainName);
- await tokenManagerERC11552.addTokenManager(schainName, tokenManagerERC1155.address);
+ await tokenManagerERC11552.addTokenManager(schainName, tokenManagerERC1155);
- await messageProxyForSchain2.postMessage(tokenManagerERC11552.address, schainId, tokenManagerERC1155.address, data).should.be.eventually.rejectedWith("Automatic deploy is disabled");
+ await messageProxyForSchain2
+ .postMessage(tokenManagerERC11552, schainId, tokenManagerERC1155, data)
+ .should.be.eventually.rejectedWith("Automatic deploy is disabled");
await tokenManagerERC11552.enableAutomaticDeploy();
- await messageProxyForSchain2.postMessage(tokenManagerERC11552.address, schainId, tokenManagerERC1155.address, data);
+ await messageProxyForSchain2.postMessage(tokenManagerERC11552, schainId, tokenManagerERC1155, data);
- const addressERC1155OnSchain = await tokenManagerERC11552.clonesErc1155(schainId, erc1155OnOriginChain.address);
- const targetErc1155OnChain = await (await ethers.getContractFactory("ERC1155OnChain")).attach(addressERC1155OnSchain) as ERC1155OnChain;
- expect((await targetErc1155OnChain.functions.balanceOf(user.address, id)).toString()).to.be.equal(amount.toString());
+ const addressERC1155OnSchain = await tokenManagerERC11552.clonesErc1155(schainId, erc1155OnOriginChain);
+ const targetErc1155OnChain = (await ethers.getContractFactory("ERC1155OnChain")).attach(addressERC1155OnSchain) as ERC1155OnChain;
+ expect((await targetErc1155OnChain.balanceOf(user.address, id)).toString()).to.be.equal(amount.toString());
});
@@ -397,27 +392,27 @@ describe("TokenManagerERC1155", () => {
await messageProxyForSchain.connect(deployer).addConnectedChain(newSchainName);
await erc1155OnOriginChain.connect(deployer).mint(user.address, id, amount, "0x");
- await erc1155OnOriginChain.connect(user).setApprovalForAll(tokenManagerERC1155.address, true);
+ await erc1155OnOriginChain.connect(user).setApprovalForAll(tokenManagerERC1155, true);
await tokenManagerERC1155
.connect(user)
- .transferToSchainERC1155(newSchainName, erc1155OnOriginChain.address, id, amount)
+ .transferToSchainERC1155(newSchainName, erc1155OnOriginChain, id, amount)
.should.be.eventually.rejectedWith("Incorrect Token Manager address");
await tokenManagerERC1155
.connect(user)
- .transferToSchainERC1155("Mainnet", erc1155OnOriginChain.address, id, amount)
+ .transferToSchainERC1155("Mainnet", erc1155OnOriginChain, id, amount)
.should.be.eventually.rejectedWith("This function is not for transferring to Mainnet");
- await tokenManagerERC1155.addTokenManager(newSchainName, tokenManagerERC11552.address);
+ await tokenManagerERC1155.addTokenManager(newSchainName, tokenManagerERC11552);
// execution:
await tokenManagerERC1155
.connect(user)
- .transferToSchainERC1155(newSchainName, erc1155OnOriginChain.address, id, amount);
+ .transferToSchainERC1155(newSchainName, erc1155OnOriginChain, id, amount);
let data = await messages.encodeTransferErc1155AndTokenInfoMessage(
- erc1155OnOriginChain.address,
+ erc1155OnOriginChain,
user.address,
id,
amount,
@@ -427,25 +422,26 @@ describe("TokenManagerERC1155", () => {
);
// expectation:
- const outgoingMessagesCounter = BigNumber.from(
- await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName));
- outgoingMessagesCounter.should.be.deep.equal(BigNumber.from(1));
+ const outgoingMessagesCounter = await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName);
+ outgoingMessagesCounter.should.be.equal(1);
// receive:
// registration:
await messageProxyForSchain2.connect(deployer).addConnectedChain(schainName);
- await tokenManagerERC11552.addTokenManager(schainName, tokenManagerERC1155.address);
+ await tokenManagerERC11552.addTokenManager(schainName, tokenManagerERC1155);
- await messageProxyForSchain2.postMessage(tokenManagerERC11552.address, schainId, tokenManagerERC1155.address, data).should.be.eventually.rejectedWith("Automatic deploy is disabled");
+ await messageProxyForSchain2
+ .postMessage(tokenManagerERC11552, schainId, tokenManagerERC1155, data)
+ .should.be.eventually.rejectedWith("Automatic deploy is disabled");
await tokenManagerERC11552.enableAutomaticDeploy();
- await messageProxyForSchain2.postMessage(tokenManagerERC11552.address, schainId, tokenManagerERC1155.address, data);
+ await messageProxyForSchain2.postMessage(tokenManagerERC11552, schainId, tokenManagerERC1155, data);
- const addressERC1155OnSchain = await tokenManagerERC11552.clonesErc1155(schainId, erc1155OnOriginChain.address);
- const targetErc1155OnChain = await (await ethers.getContractFactory("ERC1155OnChain")).attach(addressERC1155OnSchain) as ERC1155OnChain;
- expect((await targetErc1155OnChain.functions.balanceOf(user.address, id)).toString()).to.be.equal(amount.toString());
+ const addressERC1155OnSchain = await tokenManagerERC11552.clonesErc1155(schainId, erc1155OnOriginChain);
+ const targetErc1155OnChain = (await ethers.getContractFactory("ERC1155OnChain")).attach(addressERC1155OnSchain) as ERC1155OnChain;
+ expect((await targetErc1155OnChain.balanceOf(user.address, id)).toString()).to.be.equal(amount.toString());
const amount2 = 77;
@@ -453,20 +449,20 @@ describe("TokenManagerERC1155", () => {
await tokenManagerERC1155
.connect(user)
- .transferToSchainERC1155(newSchainName, erc1155OnOriginChain.address, id, amount2);
+ .transferToSchainERC1155(newSchainName, erc1155OnOriginChain, id, amount2);
data = await messages.encodeTransferErc1155Message(
- erc1155OnOriginChain.address,
+ erc1155OnOriginChain,
user.address,
id,
amount2
);
- await messageProxyForSchain2.postMessage(tokenManagerERC11552.address, schainId, tokenManagerERC1155.address, data);
+ await messageProxyForSchain2.postMessage(tokenManagerERC11552, schainId, tokenManagerERC1155, data);
const amountSum = 81;
- expect((await targetErc1155OnChain.functions.balanceOf(user.address, id)).toString()).to.be.equal(amountSum.toString());
+ expect((await targetErc1155OnChain.balanceOf(user.address, id)).toString()).to.be.equal(amountSum.toString());
});
@@ -476,27 +472,27 @@ describe("TokenManagerERC1155", () => {
await messageProxyForSchain.connect(deployer).addConnectedChain(newSchainName);
await erc1155OnOriginChain.connect(deployer).mint(user.address, id, amount, "0x");
- await erc1155OnOriginChain.connect(user).setApprovalForAll(tokenManagerERC1155.address, true);
+ await erc1155OnOriginChain.connect(user).setApprovalForAll(tokenManagerERC1155, true);
await tokenManagerERC1155
.connect(user)
- .transferToSchainERC1155(newSchainName, erc1155OnOriginChain.address, id, amount)
+ .transferToSchainERC1155(newSchainName, erc1155OnOriginChain, id, amount)
.should.be.eventually.rejectedWith("Incorrect Token Manager address");
await tokenManagerERC1155
.connect(user)
- .transferToSchainERC1155("Mainnet", erc1155OnOriginChain.address, id, amount)
+ .transferToSchainERC1155("Mainnet", erc1155OnOriginChain, id, amount)
.should.be.eventually.rejectedWith("This function is not for transferring to Mainnet");
- await tokenManagerERC1155.addTokenManager(newSchainName, tokenManagerERC11552.address);
+ await tokenManagerERC1155.addTokenManager(newSchainName, tokenManagerERC11552);
// execution:
await tokenManagerERC1155
.connect(user)
- .transferToSchainERC1155(newSchainName, erc1155OnOriginChain.address, id, amount);
+ .transferToSchainERC1155(newSchainName, erc1155OnOriginChain, id, amount);
let data = await messages.encodeTransferErc1155AndTokenInfoMessage(
- erc1155OnOriginChain.address,
+ erc1155OnOriginChain,
user.address,
id,
amount,
@@ -506,24 +502,29 @@ describe("TokenManagerERC1155", () => {
);
// expectation:
- const outgoingMessagesCounter = BigNumber.from(
- await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName));
- outgoingMessagesCounter.should.be.deep.equal(BigNumber.from(1));
+ const outgoingMessagesCounter = await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName);
+ outgoingMessagesCounter.should.be.equal(1);
// receive:
// registration:
- await tokenManagerERC11552.connect(schainOwner).addERC1155TokenByOwner(schainName, erc1155OnOriginChain.address, erc1155OnTargetChain.address).should.be.eventually.rejectedWith("TOKEN_REGISTRAR_ROLE is required");
+ await tokenManagerERC11552
+ .connect(schainOwner)
+ .addERC1155TokenByOwner(schainName, erc1155OnOriginChain, erc1155OnTargetChain)
+ .should.be.eventually.rejectedWith("TOKEN_REGISTRAR_ROLE is required");
await tokenManagerERC11552.connect(deployer).grantRole(await tokenManagerERC11552.TOKEN_REGISTRAR_ROLE(), schainOwner.address);
- await tokenManagerERC11552.connect(schainOwner).addERC1155TokenByOwner(schainName, erc1155OnOriginChain.address, erc1155OnTargetChain.address).should.be.eventually.rejectedWith("Chain is not connected");
+ await tokenManagerERC11552
+ .connect(schainOwner)
+ .addERC1155TokenByOwner(schainName, erc1155OnOriginChain, erc1155OnTargetChain)
+ .should.be.eventually.rejectedWith("Chain is not connected");
await messageProxyForSchain2.connect(deployer).addConnectedChain(schainName);
- await tokenManagerERC11552.connect(schainOwner).addERC1155TokenByOwner(schainName, erc1155OnOriginChain.address, erc1155OnTargetChain.address);
- await tokenManagerERC11552.addTokenManager(schainName, tokenManagerERC1155.address);
+ await tokenManagerERC11552.connect(schainOwner).addERC1155TokenByOwner(schainName, erc1155OnOriginChain, erc1155OnTargetChain);
+ await tokenManagerERC11552.addTokenManager(schainName, tokenManagerERC1155);
- await messageProxyForSchain2.postMessage(tokenManagerERC11552.address, schainId, tokenManagerERC1155.address, data);
+ await messageProxyForSchain2.postMessage(tokenManagerERC11552, schainId, tokenManagerERC1155, data);
- expect((await erc1155OnTargetChain.functions.balanceOf(user.address, id)).toString()).to.be.equal(amount.toString());
+ expect((await erc1155OnTargetChain.balanceOf(user.address, id)).toString()).to.be.equal(amount.toString());
const amount2 = 77;
@@ -531,20 +532,20 @@ describe("TokenManagerERC1155", () => {
await tokenManagerERC1155
.connect(user)
- .transferToSchainERC1155(newSchainName, erc1155OnOriginChain.address, id, amount2);
+ .transferToSchainERC1155(newSchainName, erc1155OnOriginChain, id, amount2);
data = await messages.encodeTransferErc1155Message(
- erc1155OnOriginChain.address,
+ erc1155OnOriginChain,
user.address,
id,
amount2
);
- await messageProxyForSchain2.postMessage(tokenManagerERC11552.address, schainId, tokenManagerERC1155.address, data);
+ await messageProxyForSchain2.postMessage(tokenManagerERC11552, schainId, tokenManagerERC1155, data);
const amountSum = 81;
- expect((await erc1155OnTargetChain.functions.balanceOf(user.address, id)).toString()).to.be.equal(amountSum.toString());
+ expect((await erc1155OnTargetChain.balanceOf(user.address, id)).toString()).to.be.equal(amountSum.toString());
});
@@ -554,27 +555,27 @@ describe("TokenManagerERC1155", () => {
await messageProxyForSchain.connect(deployer).addConnectedChain(newSchainName);
await erc1155OnOriginChain.connect(deployer).mint(user.address, id, amount, "0x");
- await erc1155OnOriginChain.connect(user).setApprovalForAll(tokenManagerERC1155.address, true);
+ await erc1155OnOriginChain.connect(user).setApprovalForAll(tokenManagerERC1155, true);
await tokenManagerERC1155
.connect(user)
- .transferToSchainERC1155(newSchainName, erc1155OnOriginChain.address, id, amount)
+ .transferToSchainERC1155(newSchainName, erc1155OnOriginChain, id, amount)
.should.be.eventually.rejectedWith("Incorrect Token Manager address");
await tokenManagerERC1155
.connect(user)
- .transferToSchainERC1155("Mainnet", erc1155OnOriginChain.address, id, amount)
+ .transferToSchainERC1155("Mainnet", erc1155OnOriginChain, id, amount)
.should.be.eventually.rejectedWith("This function is not for transferring to Mainnet");
- await tokenManagerERC1155.addTokenManager(newSchainName, tokenManagerERC11552.address);
+ await tokenManagerERC1155.addTokenManager(newSchainName, tokenManagerERC11552);
// execution:
await tokenManagerERC1155
.connect(user)
- .transferToSchainERC1155(newSchainName, erc1155OnOriginChain.address, id, amount);
+ .transferToSchainERC1155(newSchainName, erc1155OnOriginChain, id, amount);
let data = await messages.encodeTransferErc1155AndTokenInfoMessage(
- erc1155OnOriginChain.address,
+ erc1155OnOriginChain,
user.address,
id,
amount,
@@ -584,57 +585,56 @@ describe("TokenManagerERC1155", () => {
);
// expectation:
- const outgoingMessagesCounter = BigNumber.from(
- await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName));
- outgoingMessagesCounter.should.be.deep.equal(BigNumber.from(1));
+ const outgoingMessagesCounter = await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName);
+ outgoingMessagesCounter.should.be.equal(1);
// receive:
// registration:
await messageProxyForSchain2.connect(deployer).addConnectedChain(schainName);
- await tokenManagerERC11552.addTokenManager(schainName, tokenManagerERC1155.address);
+ await tokenManagerERC11552.addTokenManager(schainName, tokenManagerERC1155);
- await messageProxyForSchain2.postMessage(tokenManagerERC11552.address, schainId, tokenManagerERC1155.address, data).should.be.eventually.rejectedWith("Automatic deploy is disabled");
+ await messageProxyForSchain2.postMessage(tokenManagerERC11552, schainId, tokenManagerERC1155, data).should.be.eventually.rejectedWith("Automatic deploy is disabled");
await tokenManagerERC11552.enableAutomaticDeploy();
- await messageProxyForSchain2.postMessage(tokenManagerERC11552.address, schainId, tokenManagerERC1155.address, data);
+ await messageProxyForSchain2.postMessage(tokenManagerERC11552, schainId, tokenManagerERC1155, data);
- const addressERC1155OnSchain = await tokenManagerERC11552.clonesErc1155(schainId, erc1155OnOriginChain.address);
+ const addressERC1155OnSchain = await tokenManagerERC11552.clonesErc1155(schainId, erc1155OnOriginChain);
const targetErc1155OnChain = await (await ethers.getContractFactory("ERC1155OnChain")).attach(addressERC1155OnSchain) as ERC1155OnChain;
- expect((await targetErc1155OnChain.functions.balanceOf(user.address, id)).toString()).to.be.equal(amount.toString());
+ expect((await targetErc1155OnChain.balanceOf(user.address, id)).toString()).to.be.equal(amount.toString());
await tokenManagerERC11552
.connect(user)
- .transferToSchainERC1155(newSchainName, erc1155OnOriginChain.address, id, amount)
+ .transferToSchainERC1155(newSchainName, erc1155OnOriginChain, id, amount)
.should.be.eventually.rejectedWith("Incorrect Token Manager address");
await tokenManagerERC11552
.connect(user)
- .transferToSchainERC1155("Mainnet", erc1155OnOriginChain.address, id, amount)
+ .transferToSchainERC1155("Mainnet", erc1155OnOriginChain, id, amount)
.should.be.eventually.rejectedWith("This function is not for transferring to Mainnet");
await tokenManagerERC11552
.connect(user)
- .transferToSchainERC1155(schainName, erc1155OnOriginChain.address, id, amount)
+ .transferToSchainERC1155(schainName, erc1155OnOriginChain, id, amount)
.should.be.eventually.rejectedWith("Not allowed ERC1155 Token");
- await targetErc1155OnChain.connect(user).setApprovalForAll(tokenManagerERC11552.address, true);
+ await targetErc1155OnChain.connect(user).setApprovalForAll(tokenManagerERC11552, true);
await tokenManagerERC11552
.connect(user)
- .transferToSchainERC1155(schainName, erc1155OnOriginChain.address, id, amount);
+ .transferToSchainERC1155(schainName, erc1155OnOriginChain, id, amount);
data = await messages.encodeTransferErc1155Message(
- erc1155OnOriginChain.address,
+ erc1155OnOriginChain,
user.address,
id,
amount
);
- await messageProxyForSchain.postMessage(tokenManagerERC1155.address, newSchainId, tokenManagerERC11552.address, data);
+ await messageProxyForSchain.postMessage(tokenManagerERC1155, newSchainId, tokenManagerERC11552, data);
- expect((await erc1155OnOriginChain.functions.balanceOf(user.address, id)).toString()).to.be.equal(amount.toString());
+ expect((await erc1155OnOriginChain.balanceOf(user.address, id)).toString()).to.be.equal(amount.toString());
});
@@ -644,27 +644,27 @@ describe("TokenManagerERC1155", () => {
await messageProxyForSchain.connect(deployer).addConnectedChain(newSchainName);
await erc1155OnOriginChain.connect(deployer).mint(user.address, id, amount, "0x");
- await erc1155OnOriginChain.connect(user).setApprovalForAll(tokenManagerERC1155.address, true);
+ await erc1155OnOriginChain.connect(user).setApprovalForAll(tokenManagerERC1155, true);
await tokenManagerERC1155
.connect(user)
- .transferToSchainERC1155(newSchainName, erc1155OnOriginChain.address, id, amount)
+ .transferToSchainERC1155(newSchainName, erc1155OnOriginChain, id, amount)
.should.be.eventually.rejectedWith("Incorrect Token Manager address");
await tokenManagerERC1155
.connect(user)
- .transferToSchainERC1155("Mainnet", erc1155OnOriginChain.address, id, amount)
+ .transferToSchainERC1155("Mainnet", erc1155OnOriginChain, id, amount)
.should.be.eventually.rejectedWith("This function is not for transferring to Mainnet");
- await tokenManagerERC1155.addTokenManager(newSchainName, tokenManagerERC11552.address);
+ await tokenManagerERC1155.addTokenManager(newSchainName, tokenManagerERC11552);
// execution:
await tokenManagerERC1155
.connect(user)
- .transferToSchainERC1155(newSchainName, erc1155OnOriginChain.address, id, amount);
+ .transferToSchainERC1155(newSchainName, erc1155OnOriginChain, id, amount);
let data = await messages.encodeTransferErc1155AndTokenInfoMessage(
- erc1155OnOriginChain.address,
+ erc1155OnOriginChain,
user.address,
id,
amount,
@@ -674,51 +674,52 @@ describe("TokenManagerERC1155", () => {
);
// expectation:
- const outgoingMessagesCounter = BigNumber.from(
- await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName));
- outgoingMessagesCounter.should.be.deep.equal(BigNumber.from(1));
+ const outgoingMessagesCounter = await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName);
+ outgoingMessagesCounter.should.be.equal(1);
// receive:
// registration:
await messageProxyForSchain2.connect(deployer).addConnectedChain(schainName);
- await tokenManagerERC11552.addTokenManager(schainName, tokenManagerERC1155.address);
+ await tokenManagerERC11552.addTokenManager(schainName, tokenManagerERC1155);
await tokenManagerERC11552.connect(deployer).grantRole(await tokenManagerERC11552.TOKEN_REGISTRAR_ROLE(), schainOwner.address);
- await tokenManagerERC11552.connect(schainOwner).addERC1155TokenByOwner(schainName, erc1155OnOriginChain.address, erc1155OnTargetChain.address);
+ await tokenManagerERC11552
+ .connect(schainOwner)
+ .addERC1155TokenByOwner(schainName, erc1155OnOriginChain, erc1155OnTargetChain);
- await messageProxyForSchain2.postMessage(tokenManagerERC11552.address, schainId, tokenManagerERC1155.address, data);
+ await messageProxyForSchain2.postMessage(tokenManagerERC11552, schainId, tokenManagerERC1155, data);
await tokenManagerERC11552
.connect(user)
- .transferToSchainERC1155(newSchainName, erc1155OnOriginChain.address, id, amount)
+ .transferToSchainERC1155(newSchainName, erc1155OnOriginChain, id, amount)
.should.be.eventually.rejectedWith("Incorrect Token Manager address");
await tokenManagerERC11552
.connect(user)
- .transferToSchainERC1155("Mainnet", erc1155OnOriginChain.address, id, amount)
+ .transferToSchainERC1155("Mainnet", erc1155OnOriginChain, id, amount)
.should.be.eventually.rejectedWith("This function is not for transferring to Mainnet");
await tokenManagerERC11552
.connect(user)
- .transferToSchainERC1155(schainName, erc1155OnOriginChain.address, id, amount)
+ .transferToSchainERC1155(schainName, erc1155OnOriginChain, id, amount)
.should.be.eventually.rejectedWith("Not allowed ERC1155 Token");
- await erc1155OnTargetChain.connect(user).setApprovalForAll(tokenManagerERC11552.address, true);
+ await erc1155OnTargetChain.connect(user).setApprovalForAll(tokenManagerERC11552, true);
await tokenManagerERC11552
.connect(user)
- .transferToSchainERC1155(schainName, erc1155OnOriginChain.address, id, amount);
+ .transferToSchainERC1155(schainName, erc1155OnOriginChain, id, amount);
data = await messages.encodeTransferErc1155Message(
- erc1155OnOriginChain.address,
+ erc1155OnOriginChain,
user.address,
id,
amount
);
- await messageProxyForSchain.postMessage(tokenManagerERC1155.address, newSchainId, tokenManagerERC11552.address, data);
- expect((await erc1155OnOriginChain.functions.balanceOf(user.address, id)).toString()).to.be.equal(amount.toString());
+ await messageProxyForSchain.postMessage(tokenManagerERC1155, newSchainId, tokenManagerERC11552, data);
+ expect((await erc1155OnOriginChain.balanceOf(user.address, id)).toString()).to.be.equal(amount.toString());
});
@@ -729,27 +730,27 @@ describe("TokenManagerERC1155", () => {
await messageProxyForSchain.connect(deployer).addConnectedChain(newSchainName);
await erc1155OnOriginChain.connect(deployer).mint(user.address, id, amount, "0x");
- await erc1155OnOriginChain.connect(user).setApprovalForAll(tokenManagerERC1155.address, true);
+ await erc1155OnOriginChain.connect(user).setApprovalForAll(tokenManagerERC1155, true);
await tokenManagerERC1155
.connect(user)
- .transferToSchainERC1155(newSchainName, erc1155OnOriginChain.address, id, amount)
+ .transferToSchainERC1155(newSchainName, erc1155OnOriginChain, id, amount)
.should.be.eventually.rejectedWith("Incorrect Token Manager address");
await tokenManagerERC1155
.connect(user)
- .transferToSchainERC1155("Mainnet", erc1155OnOriginChain.address, id, amount)
+ .transferToSchainERC1155("Mainnet", erc1155OnOriginChain, id, amount)
.should.be.eventually.rejectedWith("This function is not for transferring to Mainnet");
- await tokenManagerERC1155.addTokenManager(newSchainName, tokenManagerERC11552.address);
+ await tokenManagerERC1155.addTokenManager(newSchainName, tokenManagerERC11552);
// execution:
await tokenManagerERC1155
.connect(user)
- .transferToSchainERC1155(newSchainName, erc1155OnOriginChain.address, id, amount);
+ .transferToSchainERC1155(newSchainName, erc1155OnOriginChain, id, amount);
let data = await messages.encodeTransferErc1155AndTokenInfoMessage(
- erc1155OnOriginChain.address,
+ erc1155OnOriginChain,
user.address,
id,
amount,
@@ -759,73 +760,74 @@ describe("TokenManagerERC1155", () => {
);
// expectation:
- const outgoingMessagesCounter = BigNumber.from(
- await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName));
- outgoingMessagesCounter.should.be.deep.equal(BigNumber.from(1));
+ const outgoingMessagesCounter = await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName);
+ outgoingMessagesCounter.should.be.equal(1);
// receive:
// registration:
await messageProxyForSchain2.connect(deployer).addConnectedChain(schainName);
- await tokenManagerERC11552.addTokenManager(schainName, tokenManagerERC1155.address);
+ await tokenManagerERC11552.addTokenManager(schainName, tokenManagerERC1155);
- await messageProxyForSchain2.postMessage(tokenManagerERC11552.address, schainId, tokenManagerERC1155.address, data).should.be.eventually.rejectedWith("Automatic deploy is disabled");
+ await messageProxyForSchain2
+ .postMessage(tokenManagerERC11552, schainId, tokenManagerERC1155, data)
+ .should.be.eventually.rejectedWith("Automatic deploy is disabled");
await tokenManagerERC11552.enableAutomaticDeploy();
- await messageProxyForSchain2.postMessage(tokenManagerERC11552.address, schainId, tokenManagerERC1155.address, data);
+ await messageProxyForSchain2.postMessage(tokenManagerERC11552, schainId, tokenManagerERC1155, data);
- const addressERC1155OnSchain = await tokenManagerERC11552.clonesErc1155(schainId, erc1155OnOriginChain.address);
+ const addressERC1155OnSchain = await tokenManagerERC11552.clonesErc1155(schainId, erc1155OnOriginChain);
const targetErc1155OnChain = await (await ethers.getContractFactory("ERC1155OnChain")).attach(addressERC1155OnSchain) as ERC1155OnChain;
- expect((await targetErc1155OnChain.functions.balanceOf(user.address, id)).toString()).to.be.equal(amount.toString());
+ expect((await targetErc1155OnChain.balanceOf(user.address, id)).toString()).to.be.equal(amount.toString());
await tokenManagerERC11552
.connect(user)
- .transferToSchainERC1155(newSchainName, erc1155OnOriginChain.address, id, amount)
+ .transferToSchainERC1155(newSchainName, erc1155OnOriginChain, id, amount)
.should.be.eventually.rejectedWith("Incorrect Token Manager address");
await tokenManagerERC11552
.connect(user)
- .transferToSchainERC1155("Mainnet", erc1155OnOriginChain.address, id, amount)
+ .transferToSchainERC1155("Mainnet", erc1155OnOriginChain, id, amount)
.should.be.eventually.rejectedWith("This function is not for transferring to Mainnet");
await tokenManagerERC11552
.connect(user)
- .transferToSchainERC1155(schainName, erc1155OnOriginChain.address, id, amount)
+ .transferToSchainERC1155(schainName, erc1155OnOriginChain, id, amount)
.should.be.eventually.rejectedWith("Not allowed ERC1155 Token");
- await targetErc1155OnChain.connect(user).setApprovalForAll(tokenManagerERC11552.address, true);
+ await targetErc1155OnChain.connect(user).setApprovalForAll(tokenManagerERC11552, true);
await tokenManagerERC11552
.connect(user)
- .transferToSchainERC1155(schainName, erc1155OnOriginChain.address, id, amount);
+ .transferToSchainERC1155(schainName, erc1155OnOriginChain, id, amount);
data = await messages.encodeTransferErc1155Message(
- erc1155OnOriginChain.address,
+ erc1155OnOriginChain,
user.address,
id,
amount
);
- await messageProxyForSchain.postMessage(tokenManagerERC1155.address, newSchainId, tokenManagerERC11552.address, data);
- expect((await erc1155OnOriginChain.functions.balanceOf(user.address, id)).toString()).to.be.equal(amount.toString());
+ await messageProxyForSchain.postMessage(tokenManagerERC1155, newSchainId, tokenManagerERC11552, data);
+ expect((await erc1155OnOriginChain.balanceOf(user.address, id)).toString()).to.be.equal(amount.toString());
- await erc1155OnOriginChain.connect(user).setApprovalForAll(tokenManagerERC1155.address, true);
+ await erc1155OnOriginChain.connect(user).setApprovalForAll(tokenManagerERC1155, true);
await tokenManagerERC1155
.connect(user)
- .transferToSchainERC1155(newSchainName, erc1155OnOriginChain.address, id, amount);
+ .transferToSchainERC1155(newSchainName, erc1155OnOriginChain, id, amount);
data = await messages.encodeTransferErc1155Message(
- erc1155OnOriginChain.address,
+ erc1155OnOriginChain,
user.address,
id,
amount
);
- await messageProxyForSchain2.postMessage(tokenManagerERC11552.address, schainId, tokenManagerERC1155.address, data);
+ await messageProxyForSchain2.postMessage(tokenManagerERC11552, schainId, tokenManagerERC1155, data);
- expect((await targetErc1155OnChain.functions.balanceOf(user.address, id)).toString()).to.be.equal(amount.toString());
+ expect((await targetErc1155OnChain.balanceOf(user.address, id)).toString()).to.be.equal(amount.toString());
const amount2 = 77;
@@ -833,51 +835,51 @@ describe("TokenManagerERC1155", () => {
await tokenManagerERC1155
.connect(user)
- .transferToSchainERC1155(newSchainName, erc1155OnOriginChain.address, id, amount2);
+ .transferToSchainERC1155(newSchainName, erc1155OnOriginChain, id, amount2);
data = await messages.encodeTransferErc1155Message(
- erc1155OnOriginChain.address,
+ erc1155OnOriginChain,
user.address,
id,
amount2
);
- await messageProxyForSchain2.postMessage(tokenManagerERC11552.address, schainId, tokenManagerERC1155.address, data);
+ await messageProxyForSchain2.postMessage(tokenManagerERC11552, schainId, tokenManagerERC1155, data);
const amountSum = 81;
- expect((await targetErc1155OnChain.functions.balanceOf(user.address, id)).toString()).to.be.equal(amountSum.toString());
+ expect((await targetErc1155OnChain.balanceOf(user.address, id)).toString()).to.be.equal(amountSum.toString());
- await targetErc1155OnChain.connect(user).setApprovalForAll(tokenManagerERC11552.address, true);
+ await targetErc1155OnChain.connect(user).setApprovalForAll(tokenManagerERC11552, true);
await tokenManagerERC11552
.connect(user)
- .transferToSchainERC1155(schainName, erc1155OnOriginChain.address, id, amount);
+ .transferToSchainERC1155(schainName, erc1155OnOriginChain, id, amount);
data = await messages.encodeTransferErc1155Message(
- erc1155OnOriginChain.address,
+ erc1155OnOriginChain,
user.address,
id,
amount
);
- await messageProxyForSchain.postMessage(tokenManagerERC1155.address, newSchainId, tokenManagerERC11552.address, data);
- expect((await erc1155OnOriginChain.functions.balanceOf(user.address, id)).toString()).to.be.equal(amount.toString());
+ await messageProxyForSchain.postMessage(tokenManagerERC1155, newSchainId, tokenManagerERC11552, data);
+ expect((await erc1155OnOriginChain.balanceOf(user.address, id)).toString()).to.be.equal(amount.toString());
await tokenManagerERC11552
.connect(user)
- .transferToSchainERC1155(schainName, erc1155OnOriginChain.address, id, amount2);
+ .transferToSchainERC1155(schainName, erc1155OnOriginChain, id, amount2);
data = await messages.encodeTransferErc1155Message(
- erc1155OnOriginChain.address,
+ erc1155OnOriginChain,
user.address,
id,
amount2
);
- await messageProxyForSchain.postMessage(tokenManagerERC1155.address, newSchainId, tokenManagerERC11552.address, data);
+ await messageProxyForSchain.postMessage(tokenManagerERC1155, newSchainId, tokenManagerERC11552, data);
- expect((await erc1155OnOriginChain.functions.balanceOf(user.address, id)).toString()).to.be.equal(amountSum.toString());
+ expect((await erc1155OnOriginChain.balanceOf(user.address, id)).toString()).to.be.equal(amountSum.toString());
});
@@ -887,27 +889,27 @@ describe("TokenManagerERC1155", () => {
await messageProxyForSchain.connect(deployer).addConnectedChain(newSchainName);
await erc1155OnOriginChain.connect(deployer).mint(user.address, id, amount, "0x");
- await erc1155OnOriginChain.connect(user).setApprovalForAll(tokenManagerERC1155.address, true);
+ await erc1155OnOriginChain.connect(user).setApprovalForAll(tokenManagerERC1155, true);
await tokenManagerERC1155
.connect(user)
- .transferToSchainERC1155(newSchainName, erc1155OnOriginChain.address, id, amount)
+ .transferToSchainERC1155(newSchainName, erc1155OnOriginChain, id, amount)
.should.be.eventually.rejectedWith("Incorrect Token Manager address");
await tokenManagerERC1155
.connect(user)
- .transferToSchainERC1155("Mainnet", erc1155OnOriginChain.address, id, amount)
+ .transferToSchainERC1155("Mainnet", erc1155OnOriginChain, id, amount)
.should.be.eventually.rejectedWith("This function is not for transferring to Mainnet");
- await tokenManagerERC1155.addTokenManager(newSchainName, tokenManagerERC11552.address);
+ await tokenManagerERC1155.addTokenManager(newSchainName, tokenManagerERC11552);
// execution:
await tokenManagerERC1155
.connect(user)
- .transferToSchainERC1155(newSchainName, erc1155OnOriginChain.address, id, amount);
+ .transferToSchainERC1155(newSchainName, erc1155OnOriginChain, id, amount);
let data = await messages.encodeTransferErc1155AndTokenInfoMessage(
- erc1155OnOriginChain.address,
+ erc1155OnOriginChain,
user.address,
id,
amount,
@@ -917,68 +919,67 @@ describe("TokenManagerERC1155", () => {
);
// expectation:
- const outgoingMessagesCounter = BigNumber.from(
- await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName));
- outgoingMessagesCounter.should.be.deep.equal(BigNumber.from(1));
+ const outgoingMessagesCounter = await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName);
+ outgoingMessagesCounter.should.be.equal(1);
// receive:
// registration:
await messageProxyForSchain2.connect(deployer).addConnectedChain(schainName);
- await tokenManagerERC11552.addTokenManager(schainName, tokenManagerERC1155.address);
+ await tokenManagerERC11552.addTokenManager(schainName, tokenManagerERC1155);
await tokenManagerERC11552.connect(deployer).grantRole(await tokenManagerERC11552.TOKEN_REGISTRAR_ROLE(), schainOwner.address);
- await tokenManagerERC11552.connect(schainOwner).addERC1155TokenByOwner(schainName, erc1155OnOriginChain.address, erc1155OnTargetChain.address);
+ await tokenManagerERC11552.connect(schainOwner).addERC1155TokenByOwner(schainName, erc1155OnOriginChain, erc1155OnTargetChain);
- await messageProxyForSchain2.postMessage(tokenManagerERC11552.address, schainId, tokenManagerERC1155.address, data);
+ await messageProxyForSchain2.postMessage(tokenManagerERC11552, schainId, tokenManagerERC1155, data);
await tokenManagerERC11552
.connect(user)
- .transferToSchainERC1155(newSchainName, erc1155OnOriginChain.address, id, amount)
+ .transferToSchainERC1155(newSchainName, erc1155OnOriginChain, id, amount)
.should.be.eventually.rejectedWith("Incorrect Token Manager address");
await tokenManagerERC11552
.connect(user)
- .transferToSchainERC1155("Mainnet", erc1155OnOriginChain.address, id, amount)
+ .transferToSchainERC1155("Mainnet", erc1155OnOriginChain, id, amount)
.should.be.eventually.rejectedWith("This function is not for transferring to Mainnet");
await tokenManagerERC11552
.connect(user)
- .transferToSchainERC1155(schainName, erc1155OnOriginChain.address, id, amount)
+ .transferToSchainERC1155(schainName, erc1155OnOriginChain, id, amount)
.should.be.eventually.rejectedWith("Not allowed ERC1155 Token");
- await erc1155OnTargetChain.connect(user).setApprovalForAll(tokenManagerERC11552.address, true);
+ await erc1155OnTargetChain.connect(user).setApprovalForAll(tokenManagerERC11552, true);
await tokenManagerERC11552
.connect(user)
- .transferToSchainERC1155(schainName, erc1155OnOriginChain.address, id, amount);
+ .transferToSchainERC1155(schainName, erc1155OnOriginChain, id, amount);
data = await messages.encodeTransferErc1155Message(
- erc1155OnOriginChain.address,
+ erc1155OnOriginChain,
user.address,
id,
amount
);
- await messageProxyForSchain.postMessage(tokenManagerERC1155.address, newSchainId, tokenManagerERC11552.address, data);
- expect((await erc1155OnOriginChain.functions.balanceOf(user.address, id)).toString()).to.be.equal(amount.toString());
+ await messageProxyForSchain.postMessage(tokenManagerERC1155, newSchainId, tokenManagerERC11552, data);
+ expect((await erc1155OnOriginChain.balanceOf(user.address, id)).toString()).to.be.equal(amount.toString());
- await erc1155OnOriginChain.connect(user).setApprovalForAll(tokenManagerERC1155.address, true);
+ await erc1155OnOriginChain.connect(user).setApprovalForAll(tokenManagerERC1155, true);
await tokenManagerERC1155
.connect(user)
- .transferToSchainERC1155(newSchainName, erc1155OnOriginChain.address, id, amount);
+ .transferToSchainERC1155(newSchainName, erc1155OnOriginChain, id, amount);
data = await messages.encodeTransferErc1155Message(
- erc1155OnOriginChain.address,
+ erc1155OnOriginChain,
user.address,
id,
amount
);
- await messageProxyForSchain2.postMessage(tokenManagerERC11552.address, schainId, tokenManagerERC1155.address, data);
+ await messageProxyForSchain2.postMessage(tokenManagerERC11552, schainId, tokenManagerERC1155, data);
- expect((await erc1155OnTargetChain.functions.balanceOf(user.address, id)).toString()).to.be.equal(amount.toString());
+ expect((await erc1155OnTargetChain.balanceOf(user.address, id)).toString()).to.be.equal(amount.toString());
const amount2 = 77;
@@ -986,51 +987,51 @@ describe("TokenManagerERC1155", () => {
await tokenManagerERC1155
.connect(user)
- .transferToSchainERC1155(newSchainName, erc1155OnOriginChain.address, id, amount2);
+ .transferToSchainERC1155(newSchainName, erc1155OnOriginChain, id, amount2);
data = await messages.encodeTransferErc1155Message(
- erc1155OnOriginChain.address,
+ erc1155OnOriginChain,
user.address,
id,
amount2
);
- await messageProxyForSchain2.postMessage(tokenManagerERC11552.address, schainId, tokenManagerERC1155.address, data);
+ await messageProxyForSchain2.postMessage(tokenManagerERC11552, schainId, tokenManagerERC1155, data);
const amountSum = 81;
- expect((await erc1155OnTargetChain.functions.balanceOf(user.address, id)).toString()).to.be.equal(amountSum.toString());
+ expect((await erc1155OnTargetChain.balanceOf(user.address, id)).toString()).to.be.equal(amountSum.toString());
- await erc1155OnTargetChain.connect(user).setApprovalForAll(tokenManagerERC11552.address, true);
+ await erc1155OnTargetChain.connect(user).setApprovalForAll(tokenManagerERC11552, true);
await tokenManagerERC11552
.connect(user)
- .transferToSchainERC1155(schainName, erc1155OnOriginChain.address, id, amount);
+ .transferToSchainERC1155(schainName, erc1155OnOriginChain, id, amount);
data = await messages.encodeTransferErc1155Message(
- erc1155OnOriginChain.address,
+ erc1155OnOriginChain,
user.address,
id,
amount
);
- await messageProxyForSchain.postMessage(tokenManagerERC1155.address, newSchainId, tokenManagerERC11552.address, data);
- expect((await erc1155OnOriginChain.functions.balanceOf(user.address, id)).toString()).to.be.equal(amount.toString());
+ await messageProxyForSchain.postMessage(tokenManagerERC1155, newSchainId, tokenManagerERC11552, data);
+ expect((await erc1155OnOriginChain.balanceOf(user.address, id)).toString()).to.be.equal(amount.toString());
await tokenManagerERC11552
.connect(user)
- .transferToSchainERC1155(schainName, erc1155OnOriginChain.address, id, amount2);
+ .transferToSchainERC1155(schainName, erc1155OnOriginChain, id, amount2);
data = await messages.encodeTransferErc1155Message(
- erc1155OnOriginChain.address,
+ erc1155OnOriginChain,
user.address,
id,
amount2
);
- await messageProxyForSchain.postMessage(tokenManagerERC1155.address, newSchainId, tokenManagerERC11552.address, data);
+ await messageProxyForSchain.postMessage(tokenManagerERC1155, newSchainId, tokenManagerERC11552, data);
- expect((await erc1155OnOriginChain.functions.balanceOf(user.address, id)).toString()).to.be.equal(amountSum.toString());
+ expect((await erc1155OnOriginChain.balanceOf(user.address, id)).toString()).to.be.equal(amountSum.toString());
});
@@ -1040,17 +1041,17 @@ describe("TokenManagerERC1155", () => {
await messageProxyForSchain.connect(deployer).addConnectedChain(newSchainName);
await erc1155OnOriginChain.connect(deployer).mint(user.address, id, amount, "0x");
- await erc1155OnOriginChain.connect(user).setApprovalForAll(tokenManagerERC1155.address, true);
+ await erc1155OnOriginChain.connect(user).setApprovalForAll(tokenManagerERC1155, true);
- await tokenManagerERC1155.addTokenManager(newSchainName, tokenManagerERC11552.address);
+ await tokenManagerERC1155.addTokenManager(newSchainName, tokenManagerERC11552);
// execution:
await tokenManagerERC1155
.connect(user)
- .transferToSchainERC1155(newSchainName, erc1155OnOriginChain.address, id, amount);
+ .transferToSchainERC1155(newSchainName, erc1155OnOriginChain, id, amount);
const data = await messages.encodeTransferErc1155AndTokenInfoMessage(
- erc1155OnOriginChain.address,
+ erc1155OnOriginChain,
user.address,
id,
amount,
@@ -1060,49 +1061,50 @@ describe("TokenManagerERC1155", () => {
);
// expectation:
- const outgoingMessagesCounter = BigNumber.from(
- await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName));
- outgoingMessagesCounter.should.be.deep.equal(BigNumber.from(1));
+ const outgoingMessagesCounter = await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName);
+ outgoingMessagesCounter.should.be.equal(1);
// receive:
// registration:
await messageProxyForSchain2.connect(deployer).addConnectedChain(schainName);
- await tokenManagerERC11552.addTokenManager(schainName, tokenManagerERC1155.address);
+ await tokenManagerERC11552.addTokenManager(schainName, tokenManagerERC1155);
await tokenManagerERC11552.connect(deployer).grantRole(await tokenManagerERC11552.TOKEN_REGISTRAR_ROLE(), schainOwner.address);
- await tokenManagerERC11552.connect(schainOwner).addERC1155TokenByOwner(schainName, erc1155OnOriginChain.address, erc1155OnTargetChain.address);
+ await tokenManagerERC11552.connect(schainOwner).addERC1155TokenByOwner(schainName, erc1155OnOriginChain, erc1155OnTargetChain);
- await messageProxyForSchain2.postMessage(tokenManagerERC11552.address, schainId, tokenManagerERC1155.address, data);
+ await messageProxyForSchain2.postMessage(tokenManagerERC11552, schainId, tokenManagerERC1155, data);
- expect((await erc1155OnTargetChain.functions.balanceOf(user.address, id)).toString()).to.be.equal(amount.toString());
+ expect((await erc1155OnTargetChain.balanceOf(user.address, id)).toString()).to.be.equal(amount.toString());
const newSchainNameZ = "NewChainZ";
const erc1155OnTargetZChain = await deployERC1155OnChain("NewTokenZ");
const keyStorageZ = await deployKeyStorageMock();
- const messageProxyForSchainZ = await deployMessageProxyForSchainTester(keyStorageZ.address, newSchainNameZ);
+ const messageProxyForSchainZ = await deployMessageProxyForSchainTester(keyStorageZ, newSchainNameZ);
const tokenManagerLinkerZ = await deployTokenManagerLinker(messageProxyForSchainZ, deployer.address);
- const communityLockerZ = await deployCommunityLocker(newSchainName, messageProxyForSchainZ.address, tokenManagerLinkerZ, fakeCommunityPool);
- const tokenManagerERC1155Z = await deployTokenManagerERC1155(newSchainNameZ, messageProxyForSchainZ.address, tokenManagerLinkerZ, communityLockerZ, fakeDepositBox);
- await erc1155OnTargetZChain.connect(deployer).grantRole(await erc1155OnTargetZChain.MINTER_ROLE(), tokenManagerERC1155Z.address);
- await tokenManagerLinkerZ.registerTokenManager(tokenManagerERC1155Z.address);
+ const communityLockerZ = await deployCommunityLocker(newSchainName, messageProxyForSchainZ, tokenManagerLinkerZ, fakeCommunityPool);
+ const tokenManagerERC1155Z = await deployTokenManagerERC1155(
+ newSchainNameZ, messageProxyForSchainZ, tokenManagerLinkerZ, communityLockerZ, fakeDepositBox
+ );
+ await erc1155OnTargetZChain.connect(deployer).grantRole(await erc1155OnTargetZChain.MINTER_ROLE(), tokenManagerERC1155Z);
+ await tokenManagerLinkerZ.registerTokenManager(tokenManagerERC1155Z);
await messageProxyForSchain2.connect(deployer).grantRole(await messageProxyForSchain2.CHAIN_CONNECTOR_ROLE(), deployer.address);
await messageProxyForSchain2.connect(deployer).addConnectedChain(newSchainNameZ);
- await tokenManagerERC11552.addTokenManager(newSchainNameZ, tokenManagerERC1155Z.address);
+ await tokenManagerERC11552.addTokenManager(newSchainNameZ, tokenManagerERC1155Z);
- await erc1155OnTargetChain.connect(user).setApprovalForAll(tokenManagerERC11552.address, true);
+ await erc1155OnTargetChain.connect(user).setApprovalForAll(tokenManagerERC11552, true);
await tokenManagerERC11552
.connect(user)
- .transferToSchainERC1155(newSchainNameZ, erc1155OnOriginChain.address, id, amount)
+ .transferToSchainERC1155(newSchainNameZ, erc1155OnOriginChain, id, amount)
.should.be.eventually.rejectedWith("Not allowed ERC1155 Token");
await tokenManagerERC11552
.connect(user)
- .transferToSchainERC1155(newSchainNameZ, erc1155OnTargetChain.address, id, amount)
+ .transferToSchainERC1155(newSchainNameZ, erc1155OnTargetChain, id, amount)
.should.be.eventually.rejectedWith("Incorrect main chain token");
});
@@ -1112,17 +1114,17 @@ describe("TokenManagerERC1155", () => {
await messageProxyForSchain.connect(deployer).addConnectedChain(newSchainName);
await erc1155OnOriginChain.connect(deployer).mint(user.address, id, amount, "0x");
- await erc1155OnOriginChain.connect(user).setApprovalForAll(tokenManagerERC1155.address, true);
+ await erc1155OnOriginChain.connect(user).setApprovalForAll(tokenManagerERC1155, true);
- await tokenManagerERC1155.addTokenManager(newSchainName, tokenManagerERC11552.address);
+ await tokenManagerERC1155.addTokenManager(newSchainName, tokenManagerERC11552);
// execution:
await tokenManagerERC1155
.connect(user)
- .transferToSchainERC1155(newSchainName, erc1155OnOriginChain.address, id, amount);
+ .transferToSchainERC1155(newSchainName, erc1155OnOriginChain, id, amount);
let data = await messages.encodeTransferErc1155AndTokenInfoMessage(
- erc1155OnOriginChain.address,
+ erc1155OnOriginChain,
user.address,
id,
amount,
@@ -1132,61 +1134,60 @@ describe("TokenManagerERC1155", () => {
);
// expectation:
- const outgoingMessagesCounter = BigNumber.from(
- await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName));
- outgoingMessagesCounter.should.be.deep.equal(BigNumber.from(1));
+ const outgoingMessagesCounter = await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName);
+ outgoingMessagesCounter.should.be.equal(1);
// receive:
// registration:
await messageProxyForSchain2.connect(deployer).addConnectedChain(schainName);
- await tokenManagerERC11552.addTokenManager(schainName, tokenManagerERC1155.address);
+ await tokenManagerERC11552.addTokenManager(schainName, tokenManagerERC1155);
await tokenManagerERC11552.connect(deployer).grantRole(await tokenManagerERC11552.TOKEN_REGISTRAR_ROLE(), schainOwner.address);
- await tokenManagerERC11552.connect(schainOwner).addERC1155TokenByOwner(schainName, erc1155OnOriginChain.address, erc1155OnTargetChain.address);
+ await tokenManagerERC11552.connect(schainOwner).addERC1155TokenByOwner(schainName, erc1155OnOriginChain, erc1155OnTargetChain);
- await messageProxyForSchain2.postMessage(tokenManagerERC11552.address, schainId, tokenManagerERC1155.address, data);
+ await messageProxyForSchain2.postMessage(tokenManagerERC11552, schainId, tokenManagerERC1155, data);
- expect((await erc1155OnTargetChain.functions.balanceOf(user.address, id)).toString()).to.be.equal(amount.toString());
+ expect((await erc1155OnTargetChain.balanceOf(user.address, id)).toString()).to.be.equal(amount.toString());
data = await messages.encodeActivateUserMessage(user.address);
- await messageProxyForSchain2.postMessage(communityLocker2.address, mainnetId, fakeCommunityPool, data);
+ await messageProxyForSchain2.postMessage(communityLocker2, mainnetId, fakeCommunityPool, data);
- await erc1155OnTargetChain.connect(user).setApprovalForAll(tokenManagerERC11552.address, true);
+ await erc1155OnTargetChain.connect(user).setApprovalForAll(tokenManagerERC11552, true);
await tokenManagerERC11552
.connect(user)
- .exitToMainERC1155(erc1155OnOriginChain.address, id, amount)
+ .exitToMainERC1155(erc1155OnOriginChain, id, amount)
.should.be.eventually.rejectedWith("Not allowed ERC1155 Token");
await tokenManagerERC11552
.connect(user)
- .exitToMainERC1155(erc1155OnTargetChain.address, id, amount)
+ .exitToMainERC1155(erc1155OnTargetChain, id, amount)
.should.be.eventually.rejectedWith("Incorrect main chain token");
await tokenManagerERC11552
.connect(user)
- .transferToSchainERC1155(schainName, erc1155OnOriginChain.address, id, amount);
+ .transferToSchainERC1155(schainName, erc1155OnOriginChain, id, amount);
data = await messages.encodeTransferErc1155Message(
- erc1155OnOriginChain.address,
+ erc1155OnOriginChain,
user.address,
id,
amount
);
- await messageProxyForSchain.postMessage(tokenManagerERC1155.address, newSchainId, tokenManagerERC11552.address, data);
+ await messageProxyForSchain.postMessage(tokenManagerERC1155, newSchainId, tokenManagerERC11552, data);
- expect((await erc1155OnOriginChain.functions.balanceOf(user.address, id)).toString()).to.be.equal(amount.toString());
+ expect((await erc1155OnOriginChain.balanceOf(user.address, id)).toString()).to.be.equal(amount.toString());
await tokenManagerERC1155
.connect(user)
- .exitToMainERC1155(erc1155OnOriginChain.address, id, amount)
+ .exitToMainERC1155(erc1155OnOriginChain, id, amount)
.should.be.eventually.rejectedWith("Main chain token could not be transfered to Mainnet");
await tokenManagerERC1155
.connect(user)
- .exitToMainERC1155(erc1155OnTargetChain.address, id, amount)
+ .exitToMainERC1155(erc1155OnTargetChain, id, amount)
.should.be.eventually.rejectedWith("Not allowed ERC1155 Token");
});
@@ -1202,20 +1203,20 @@ describe("TokenManagerERC1155", () => {
let tokenManagerERC11552: TokenManagerERC1155;
let communityLocker2: CommunityLocker;
const newSchainName = "NewChain";
- const newSchainId = stringKeccak256(newSchainName);
+ const newSchainId = ethers.id(newSchainName);
beforeEach(async () => {
erc1155OnOriginChain = await deployERC1155OnChain("NewToken");
erc1155OnTargetChain = await deployERC1155OnChain("NewToke1n");
const keyStorage2 = await deployKeyStorageMock();
- messageProxyForSchain2 = await deployMessageProxyForSchainTester(keyStorage2.address, newSchainName);
+ messageProxyForSchain2 = await deployMessageProxyForSchainTester(keyStorage2, newSchainName);
tokenManagerLinker2 = await deployTokenManagerLinker(messageProxyForSchain2, deployer.address);
- communityLocker2 = await deployCommunityLocker(newSchainName, messageProxyForSchain2.address, tokenManagerLinker2, fakeCommunityPool);
- tokenManagerERC11552 = await deployTokenManagerERC1155(newSchainName, messageProxyForSchain2.address, tokenManagerLinker2, communityLocker2, fakeDepositBox);
- await erc1155OnTargetChain.connect(deployer).grantRole(await erc1155OnTargetChain.MINTER_ROLE(), tokenManagerERC11552.address);
- await tokenManagerLinker2.registerTokenManager(tokenManagerERC11552.address);
- await messageProxyForSchain2.registerExtraContractForAll(tokenManagerERC11552.address);
+ communityLocker2 = await deployCommunityLocker(newSchainName, messageProxyForSchain2, tokenManagerLinker2, fakeCommunityPool);
+ tokenManagerERC11552 = await deployTokenManagerERC1155(newSchainName, messageProxyForSchain2, tokenManagerLinker2, communityLocker2, fakeDepositBox);
+ await erc1155OnTargetChain.connect(deployer).grantRole(await erc1155OnTargetChain.MINTER_ROLE(), tokenManagerERC11552);
+ await tokenManagerLinker2.registerTokenManager(tokenManagerERC11552);
+ await messageProxyForSchain2.registerExtraContractForAll(tokenManagerERC11552);
});
it("should invoke `transferToSchainERC1155` without mistakes", async () => {
@@ -1224,29 +1225,28 @@ describe("TokenManagerERC1155", () => {
await messageProxyForSchain.connect(deployer).addConnectedChain(newSchainName);
await erc1155OnOriginChain.connect(deployer).mintBatch(user.address, ids, amounts, "0x");
- await erc1155OnOriginChain.connect(user).setApprovalForAll(tokenManagerERC1155.address, true);
+ await erc1155OnOriginChain.connect(user).setApprovalForAll(tokenManagerERC1155, true);
await tokenManagerERC1155
.connect(user)
- .transferToSchainERC1155Batch(newSchainName, erc1155OnOriginChain.address, ids, amounts)
+ .transferToSchainERC1155Batch(newSchainName, erc1155OnOriginChain, ids, amounts)
.should.be.eventually.rejectedWith("Incorrect Token Manager address");
await tokenManagerERC1155
.connect(user)
- .transferToSchainERC1155Batch("Mainnet", erc1155OnOriginChain.address, ids, amounts)
+ .transferToSchainERC1155Batch("Mainnet", erc1155OnOriginChain, ids, amounts)
.should.be.eventually.rejectedWith("This function is not for transferring to Mainnet");
- await tokenManagerERC1155.addTokenManager(newSchainName, tokenManagerERC11552.address);
+ await tokenManagerERC1155.addTokenManager(newSchainName, tokenManagerERC11552);
// execution:
await tokenManagerERC1155
.connect(user)
- .transferToSchainERC1155Batch(newSchainName, erc1155OnOriginChain.address, ids, amounts);
+ .transferToSchainERC1155Batch(newSchainName, erc1155OnOriginChain, ids, amounts);
// expectation:
- const outgoingMessagesCounter = BigNumber.from(
- await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName));
- outgoingMessagesCounter.should.be.deep.equal(BigNumber.from(1));
+ const outgoingMessagesCounter = await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName);
+ outgoingMessagesCounter.should.be.equal(1);
});
it("should reject `transferToSchainERC1155` when executing earlier then allowed", async () => {
@@ -1255,32 +1255,32 @@ describe("TokenManagerERC1155", () => {
await messageProxyForSchain.connect(deployer).addConnectedChain(newSchainName);
await erc1155OnOriginChain.connect(deployer).mintBatch(user.address, ids, [5, 5, 5, 5], "0x");
- await erc1155OnOriginChain.connect(user).setApprovalForAll(tokenManagerERC1155.address, true);
+ await erc1155OnOriginChain.connect(user).setApprovalForAll(tokenManagerERC1155, true);
await tokenManagerERC1155
.connect(user)
- .transferToSchainERC1155Batch(newSchainName, erc1155OnOriginChain.address, ids, [1, 1, 1, 1])
+ .transferToSchainERC1155Batch(newSchainName, erc1155OnOriginChain, ids, [1, 1, 1, 1])
.should.be.eventually.rejectedWith("Incorrect Token Manager address");
await tokenManagerERC1155
.connect(user)
- .transferToSchainERC1155Batch("Mainnet", erc1155OnOriginChain.address, ids, [1, 1, 1, 1])
+ .transferToSchainERC1155Batch("Mainnet", erc1155OnOriginChain, ids, [1, 1, 1, 1])
.should.be.eventually.rejectedWith("This function is not for transferring to Mainnet");
- await tokenManagerERC1155.addTokenManager(newSchainName, tokenManagerERC11552.address);
+ await tokenManagerERC1155.addTokenManager(newSchainName, tokenManagerERC11552);
await tokenManagerERC1155
.connect(user)
- .transferToSchainERC1155Batch(newSchainName, erc1155OnOriginChain.address, ids, [1, 1, 1, 1]);
+ .transferToSchainERC1155Batch(newSchainName, erc1155OnOriginChain, ids, [1, 1, 1, 1]);
- BigNumber.from(await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName)).should.be.deep.equal(BigNumber.from(1));
+ (await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName)).should.be.equal(1);
await tokenManagerERC1155
.connect(user)
- .transferToSchainERC1155Batch(newSchainName, erc1155OnOriginChain.address, ids, [1, 1, 1, 1]);
+ .transferToSchainERC1155Batch(newSchainName, erc1155OnOriginChain, ids, [1, 1, 1, 1]);
- BigNumber.from(await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName)).should.be.deep.equal(BigNumber.from(2));
+ (await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName)).should.be.equal(2);
await communityLocker.grantRole(await communityLocker.CONSTANT_SETTER_ROLE(), deployer.address);
@@ -1288,52 +1288,52 @@ describe("TokenManagerERC1155", () => {
await tokenManagerERC1155
.connect(user)
- .transferToSchainERC1155Batch(newSchainName, erc1155OnOriginChain.address, ids, [1, 1, 1, 1])
+ .transferToSchainERC1155Batch(newSchainName, erc1155OnOriginChain, ids, [1, 1, 1, 1])
.should.be.eventually.rejectedWith("Exceeded message rate limit");
- BigNumber.from(await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName)).should.be.deep.equal(BigNumber.from(2));
+ (await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName)).should.be.equal(2);
await skipTime(90);
await tokenManagerERC1155
.connect(user)
- .transferToSchainERC1155Batch(newSchainName, erc1155OnOriginChain.address, ids, [1, 1, 1, 1])
+ .transferToSchainERC1155Batch(newSchainName, erc1155OnOriginChain, ids, [1, 1, 1, 1])
.should.be.eventually.rejectedWith("Exceeded message rate limit");
- BigNumber.from(await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName)).should.be.deep.equal(BigNumber.from(2));
+ (await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName)).should.be.equal(2);
await skipTime(20);
await tokenManagerERC1155
.connect(user)
- .transferToSchainERC1155Batch(newSchainName, erc1155OnOriginChain.address, ids, [1, 1, 1, 1]);
+ .transferToSchainERC1155Batch(newSchainName, erc1155OnOriginChain, ids, [1, 1, 1, 1]);
- BigNumber.from(await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName)).should.be.deep.equal(BigNumber.from(3));
+ (await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName)).should.be.equal(3);
await communityLocker.setTimeLimitPerMessage(newSchainName, 0);
await tokenManagerERC1155
.connect(user)
- .transferToSchainERC1155Batch(newSchainName, erc1155OnOriginChain.address, ids, [1, 1, 1, 1]);
+ .transferToSchainERC1155Batch(newSchainName, erc1155OnOriginChain, ids, [1, 1, 1, 1]);
- BigNumber.from(await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName)).should.be.deep.equal(BigNumber.from(4));
+ (await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName)).should.be.equal(4);
await communityLocker.setTimeLimitPerMessage(newSchainName, 100);
await tokenManagerERC1155
.connect(user)
- .transferToSchainERC1155Batch(newSchainName, erc1155OnOriginChain.address, ids, [1, 1, 1, 1])
+ .transferToSchainERC1155Batch(newSchainName, erc1155OnOriginChain, ids, [1, 1, 1, 1])
.should.be.eventually.rejectedWith("Exceeded message rate limit");
- BigNumber.from(await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName)).should.be.deep.equal(BigNumber.from(4));
+ (await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName)).should.be.equal(4);
await skipTime(110);
await tokenManagerERC1155
.connect(user)
- .transferToSchainERC1155Batch(newSchainName, erc1155OnOriginChain.address, ids, [1, 1, 1, 1]);
+ .transferToSchainERC1155Batch(newSchainName, erc1155OnOriginChain, ids, [1, 1, 1, 1]);
- BigNumber.from(await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName)).should.be.deep.equal(BigNumber.from(5));
+ (await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName)).should.be.equal(5);
});
it("should invoke `transferToSchainERC1155` and receive tokens without mistakes", async () => {
@@ -1342,27 +1342,27 @@ describe("TokenManagerERC1155", () => {
await messageProxyForSchain.connect(deployer).addConnectedChain(newSchainName);
await erc1155OnOriginChain.connect(deployer).mintBatch(user.address, ids, amounts, "0x");
- await erc1155OnOriginChain.connect(user).setApprovalForAll(tokenManagerERC1155.address, true);
+ await erc1155OnOriginChain.connect(user).setApprovalForAll(tokenManagerERC1155, true);
await tokenManagerERC1155
.connect(user)
- .transferToSchainERC1155Batch(newSchainName, erc1155OnOriginChain.address, ids, amounts)
+ .transferToSchainERC1155Batch(newSchainName, erc1155OnOriginChain, ids, amounts)
.should.be.eventually.rejectedWith("Incorrect Token Manager address");
await tokenManagerERC1155
.connect(user)
- .transferToSchainERC1155Batch("Mainnet", erc1155OnOriginChain.address, ids, amounts)
+ .transferToSchainERC1155Batch("Mainnet", erc1155OnOriginChain, ids, amounts)
.should.be.eventually.rejectedWith("This function is not for transferring to Mainnet");
- await tokenManagerERC1155.addTokenManager(newSchainName, tokenManagerERC11552.address);
+ await tokenManagerERC1155.addTokenManager(newSchainName, tokenManagerERC11552);
// execution:
await tokenManagerERC1155
.connect(user)
- .transferToSchainERC1155Batch(newSchainName, erc1155OnOriginChain.address, ids, amounts);
+ .transferToSchainERC1155Batch(newSchainName, erc1155OnOriginChain, ids, amounts);
const data = await messages.encodeTransferErc1155BatchAndTokenInfoMessage(
- erc1155OnOriginChain.address,
+ erc1155OnOriginChain,
user.address,
ids,
amounts,
@@ -1372,29 +1372,28 @@ describe("TokenManagerERC1155", () => {
);
// expectation:
- const outgoingMessagesCounter = BigNumber.from(
- await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName));
- outgoingMessagesCounter.should.be.deep.equal(BigNumber.from(1));
+ const outgoingMessagesCounter = await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName);
+ outgoingMessagesCounter.should.be.equal(1);
// receive:
// registration:
await messageProxyForSchain2.connect(deployer).addConnectedChain(schainName);
- await tokenManagerERC11552.addTokenManager(schainName, tokenManagerERC1155.address);
+ await tokenManagerERC11552.addTokenManager(schainName, tokenManagerERC1155);
- await messageProxyForSchain2.postMessage(tokenManagerERC11552.address, schainId, tokenManagerERC1155.address, data).should.be.eventually.rejectedWith("Automatic deploy is disabled");
+ await messageProxyForSchain2.postMessage(tokenManagerERC11552, schainId, tokenManagerERC1155, data).should.be.eventually.rejectedWith("Automatic deploy is disabled");
await tokenManagerERC11552.enableAutomaticDeploy();
- await messageProxyForSchain2.postMessage(tokenManagerERC11552.address, schainId, tokenManagerERC1155.address, data);
+ await messageProxyForSchain2.postMessage(tokenManagerERC11552, schainId, tokenManagerERC1155, data);
- const addressERC1155OnSchain = await tokenManagerERC11552.clonesErc1155(schainId, erc1155OnOriginChain.address);
+ const addressERC1155OnSchain = await tokenManagerERC11552.clonesErc1155(schainId, erc1155OnOriginChain);
const targetErc1155OnChain = await (await ethers.getContractFactory("ERC1155OnChain")).attach(addressERC1155OnSchain) as ERC1155OnChain;
const balanceIds = await targetErc1155OnChain.balanceOfBatch([user.address, user.address, user.address, user.address], ids);
const balanceIdsNumber: number[] = [];
balanceIds.forEach((element) => {
- balanceIdsNumber.push(BigNumber.from(element).toNumber())
+ balanceIdsNumber.push(Number(element))
});
expect(balanceIdsNumber).to.deep.equal(amounts);
@@ -1406,27 +1405,27 @@ describe("TokenManagerERC1155", () => {
await messageProxyForSchain.connect(deployer).addConnectedChain(newSchainName);
await erc1155OnOriginChain.connect(deployer).mintBatch(user.address, ids, amounts, "0x");
- await erc1155OnOriginChain.connect(user).setApprovalForAll(tokenManagerERC1155.address, true);
+ await erc1155OnOriginChain.connect(user).setApprovalForAll(tokenManagerERC1155, true);
await tokenManagerERC1155
.connect(user)
- .transferToSchainERC1155Batch(newSchainName, erc1155OnOriginChain.address, ids, amounts)
+ .transferToSchainERC1155Batch(newSchainName, erc1155OnOriginChain, ids, amounts)
.should.be.eventually.rejectedWith("Incorrect Token Manager address");
await tokenManagerERC1155
.connect(user)
- .transferToSchainERC1155Batch("Mainnet", erc1155OnOriginChain.address, ids, amounts)
+ .transferToSchainERC1155Batch("Mainnet", erc1155OnOriginChain, ids, amounts)
.should.be.eventually.rejectedWith("This function is not for transferring to Mainnet");
- await tokenManagerERC1155.addTokenManager(newSchainName, tokenManagerERC11552.address);
+ await tokenManagerERC1155.addTokenManager(newSchainName, tokenManagerERC11552);
// execution:
await tokenManagerERC1155
.connect(user)
- .transferToSchainERC1155Batch(newSchainName, erc1155OnOriginChain.address, ids, amounts);
+ .transferToSchainERC1155Batch(newSchainName, erc1155OnOriginChain, ids, amounts);
let data = await messages.encodeTransferErc1155BatchAndTokenInfoMessage(
- erc1155OnOriginChain.address,
+ erc1155OnOriginChain,
user.address,
ids,
amounts,
@@ -1436,29 +1435,28 @@ describe("TokenManagerERC1155", () => {
);
// expectation:
- const outgoingMessagesCounter = BigNumber.from(
- await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName));
- outgoingMessagesCounter.should.be.deep.equal(BigNumber.from(1));
+ const outgoingMessagesCounter = await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName);
+ outgoingMessagesCounter.should.be.equal(1);
// receive:
// registration:
await messageProxyForSchain2.connect(deployer).addConnectedChain(schainName);
- await tokenManagerERC11552.addTokenManager(schainName, tokenManagerERC1155.address);
+ await tokenManagerERC11552.addTokenManager(schainName, tokenManagerERC1155);
- await messageProxyForSchain2.postMessage(tokenManagerERC11552.address, schainId, tokenManagerERC1155.address, data).should.be.eventually.rejectedWith("Automatic deploy is disabled");
+ await messageProxyForSchain2.postMessage(tokenManagerERC11552, schainId, tokenManagerERC1155, data).should.be.eventually.rejectedWith("Automatic deploy is disabled");
await tokenManagerERC11552.enableAutomaticDeploy();
- await messageProxyForSchain2.postMessage(tokenManagerERC11552.address, schainId, tokenManagerERC1155.address, data);
+ await messageProxyForSchain2.postMessage(tokenManagerERC11552, schainId, tokenManagerERC1155, data);
- const addressERC1155OnSchain = await tokenManagerERC11552.clonesErc1155(schainId, erc1155OnOriginChain.address);
+ const addressERC1155OnSchain = await tokenManagerERC11552.clonesErc1155(schainId, erc1155OnOriginChain);
const targetErc1155OnChain = await (await ethers.getContractFactory("ERC1155OnChain")).attach(addressERC1155OnSchain) as ERC1155OnChain;
let balanceIds = await targetErc1155OnChain.balanceOfBatch([user.address, user.address, user.address, user.address], ids);
let balanceIdsNumber: number[] = [];
balanceIds.forEach((element) => {
- balanceIdsNumber.push(BigNumber.from(element).toNumber())
+ balanceIdsNumber.push(Number(element))
});
expect(balanceIdsNumber).to.deep.equal(amounts);
@@ -1468,23 +1466,23 @@ describe("TokenManagerERC1155", () => {
await tokenManagerERC1155
.connect(user)
- .transferToSchainERC1155Batch(newSchainName, erc1155OnOriginChain.address, ids, amounts2);
+ .transferToSchainERC1155Batch(newSchainName, erc1155OnOriginChain, ids, amounts2);
data = await messages.encodeTransferErc1155BatchMessage(
- erc1155OnOriginChain.address,
+ erc1155OnOriginChain,
user.address,
ids,
amounts2
);
- await messageProxyForSchain2.postMessage(tokenManagerERC11552.address, schainId, tokenManagerERC1155.address, data);
+ await messageProxyForSchain2.postMessage(tokenManagerERC11552, schainId, tokenManagerERC1155, data);
const amountsSum = [81, 81, 81, 81];
balanceIds = await targetErc1155OnChain.balanceOfBatch([user.address, user.address, user.address, user.address], ids);
balanceIdsNumber = [];
balanceIds.forEach((element) => {
- balanceIdsNumber.push(BigNumber.from(element).toNumber())
+ balanceIdsNumber.push(Number(element))
});
expect(balanceIdsNumber).to.deep.equal(amountsSum);
@@ -1496,27 +1494,27 @@ describe("TokenManagerERC1155", () => {
await messageProxyForSchain.connect(deployer).addConnectedChain(newSchainName);
await erc1155OnOriginChain.connect(deployer).mintBatch(user.address, ids, amounts, "0x");
- await erc1155OnOriginChain.connect(user).setApprovalForAll(tokenManagerERC1155.address, true);
+ await erc1155OnOriginChain.connect(user).setApprovalForAll(tokenManagerERC1155, true);
await tokenManagerERC1155
.connect(user)
- .transferToSchainERC1155Batch(newSchainName, erc1155OnOriginChain.address, ids, amounts)
+ .transferToSchainERC1155Batch(newSchainName, erc1155OnOriginChain, ids, amounts)
.should.be.eventually.rejectedWith("Incorrect Token Manager address");
await tokenManagerERC1155
.connect(user)
- .transferToSchainERC1155Batch("Mainnet", erc1155OnOriginChain.address, ids, amounts)
+ .transferToSchainERC1155Batch("Mainnet", erc1155OnOriginChain, ids, amounts)
.should.be.eventually.rejectedWith("This function is not for transferring to Mainnet");
- await tokenManagerERC1155.addTokenManager(newSchainName, tokenManagerERC11552.address);
+ await tokenManagerERC1155.addTokenManager(newSchainName, tokenManagerERC11552);
// execution:
await tokenManagerERC1155
.connect(user)
- .transferToSchainERC1155Batch(newSchainName, erc1155OnOriginChain.address, ids, amounts);
+ .transferToSchainERC1155Batch(newSchainName, erc1155OnOriginChain, ids, amounts);
let data = await messages.encodeTransferErc1155BatchAndTokenInfoMessage(
- erc1155OnOriginChain.address,
+ erc1155OnOriginChain,
user.address,
ids,
amounts,
@@ -1526,27 +1524,26 @@ describe("TokenManagerERC1155", () => {
);
// expectation:
- const outgoingMessagesCounter = BigNumber.from(
- await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName));
- outgoingMessagesCounter.should.be.deep.equal(BigNumber.from(1));
+ const outgoingMessagesCounter = await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName);
+ outgoingMessagesCounter.should.be.equal(1);
// receive:
// registration:
- await tokenManagerERC11552.connect(schainOwner).addERC1155TokenByOwner(schainName, erc1155OnOriginChain.address, erc1155OnTargetChain.address).should.be.eventually.rejectedWith("TOKEN_REGISTRAR_ROLE is required");
+ await tokenManagerERC11552.connect(schainOwner).addERC1155TokenByOwner(schainName, erc1155OnOriginChain, erc1155OnTargetChain).should.be.eventually.rejectedWith("TOKEN_REGISTRAR_ROLE is required");
await tokenManagerERC11552.connect(deployer).grantRole(await tokenManagerERC11552.TOKEN_REGISTRAR_ROLE(), schainOwner.address);
- await tokenManagerERC11552.connect(schainOwner).addERC1155TokenByOwner(schainName, erc1155OnOriginChain.address, erc1155OnTargetChain.address).should.be.eventually.rejectedWith("Chain is not connected");
+ await tokenManagerERC11552.connect(schainOwner).addERC1155TokenByOwner(schainName, erc1155OnOriginChain, erc1155OnTargetChain).should.be.eventually.rejectedWith("Chain is not connected");
await messageProxyForSchain2.connect(deployer).addConnectedChain(schainName);
- await tokenManagerERC11552.connect(schainOwner).addERC1155TokenByOwner(schainName, erc1155OnOriginChain.address, erc1155OnTargetChain.address);
- await tokenManagerERC11552.addTokenManager(schainName, tokenManagerERC1155.address);
+ await tokenManagerERC11552.connect(schainOwner).addERC1155TokenByOwner(schainName, erc1155OnOriginChain, erc1155OnTargetChain);
+ await tokenManagerERC11552.addTokenManager(schainName, tokenManagerERC1155);
- await messageProxyForSchain2.postMessage(tokenManagerERC11552.address, schainId, tokenManagerERC1155.address, data);
+ await messageProxyForSchain2.postMessage(tokenManagerERC11552, schainId, tokenManagerERC1155, data);
let balanceIds = await erc1155OnTargetChain.balanceOfBatch([user.address, user.address, user.address, user.address], ids);
let balanceIdsNumber: number[] = [];
balanceIds.forEach((element) => {
- balanceIdsNumber.push(BigNumber.from(element).toNumber())
+ balanceIdsNumber.push(Number(element))
});
expect(balanceIdsNumber).to.deep.equal(amounts);
@@ -1556,23 +1553,23 @@ describe("TokenManagerERC1155", () => {
await tokenManagerERC1155
.connect(user)
- .transferToSchainERC1155Batch(newSchainName, erc1155OnOriginChain.address, ids, amounts2);
+ .transferToSchainERC1155Batch(newSchainName, erc1155OnOriginChain, ids, amounts2);
data = await messages.encodeTransferErc1155BatchMessage(
- erc1155OnOriginChain.address,
+ erc1155OnOriginChain,
user.address,
ids,
amounts2
);
- await messageProxyForSchain2.postMessage(tokenManagerERC11552.address, schainId, tokenManagerERC1155.address, data);
+ await messageProxyForSchain2.postMessage(tokenManagerERC11552, schainId, tokenManagerERC1155, data);
const amountsSum = [81, 81, 81, 81];
balanceIds = await erc1155OnTargetChain.balanceOfBatch([user.address, user.address, user.address, user.address], ids);
balanceIdsNumber = [];
balanceIds.forEach((element) => {
- balanceIdsNumber.push(BigNumber.from(element).toNumber())
+ balanceIdsNumber.push(Number(element))
});
expect(balanceIdsNumber).to.deep.equal(amountsSum);
@@ -1584,27 +1581,27 @@ describe("TokenManagerERC1155", () => {
await messageProxyForSchain.connect(deployer).addConnectedChain(newSchainName);
await erc1155OnOriginChain.connect(deployer).mintBatch(user.address, ids, amounts, "0x");
- await erc1155OnOriginChain.connect(user).setApprovalForAll(tokenManagerERC1155.address, true);
+ await erc1155OnOriginChain.connect(user).setApprovalForAll(tokenManagerERC1155, true);
await tokenManagerERC1155
.connect(user)
- .transferToSchainERC1155Batch(newSchainName, erc1155OnOriginChain.address, ids, amounts)
+ .transferToSchainERC1155Batch(newSchainName, erc1155OnOriginChain, ids, amounts)
.should.be.eventually.rejectedWith("Incorrect Token Manager address");
await tokenManagerERC1155
.connect(user)
- .transferToSchainERC1155Batch("Mainnet", erc1155OnOriginChain.address, ids, amounts)
+ .transferToSchainERC1155Batch("Mainnet", erc1155OnOriginChain, ids, amounts)
.should.be.eventually.rejectedWith("This function is not for transferring to Mainnet");
- await tokenManagerERC1155.addTokenManager(newSchainName, tokenManagerERC11552.address);
+ await tokenManagerERC1155.addTokenManager(newSchainName, tokenManagerERC11552);
// execution:
await tokenManagerERC1155
.connect(user)
- .transferToSchainERC1155Batch(newSchainName, erc1155OnOriginChain.address, ids, amounts);
+ .transferToSchainERC1155Batch(newSchainName, erc1155OnOriginChain, ids, amounts);
let data = await messages.encodeTransferErc1155BatchAndTokenInfoMessage(
- erc1155OnOriginChain.address,
+ erc1155OnOriginChain,
user.address,
ids,
amounts,
@@ -1614,66 +1611,67 @@ describe("TokenManagerERC1155", () => {
);
// expectation:
- const outgoingMessagesCounter = BigNumber.from(
- await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName));
- outgoingMessagesCounter.should.be.deep.equal(BigNumber.from(1));
+ const outgoingMessagesCounter = await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName);
+ outgoingMessagesCounter.should.be.equal(1);
// receive:
// registration:
await messageProxyForSchain2.connect(deployer).addConnectedChain(schainName);
- await tokenManagerERC11552.addTokenManager(schainName, tokenManagerERC1155.address);
+ await tokenManagerERC11552.addTokenManager(schainName, tokenManagerERC1155);
- await messageProxyForSchain2.postMessage(tokenManagerERC11552.address, schainId, tokenManagerERC1155.address, data).should.be.eventually.rejectedWith("Automatic deploy is disabled");
+ await messageProxyForSchain2
+ .postMessage(tokenManagerERC11552, schainId, tokenManagerERC1155, data)
+ .should.be.eventually.rejectedWith("Automatic deploy is disabled");
await tokenManagerERC11552.enableAutomaticDeploy();
- await messageProxyForSchain2.postMessage(tokenManagerERC11552.address, schainId, tokenManagerERC1155.address, data);
+ await messageProxyForSchain2.postMessage(tokenManagerERC11552, schainId, tokenManagerERC1155, data);
- const addressERC1155OnSchain = await tokenManagerERC11552.clonesErc1155(schainId, erc1155OnOriginChain.address);
+ const addressERC1155OnSchain = await tokenManagerERC11552.clonesErc1155(schainId, erc1155OnOriginChain);
const targetErc1155OnChain = await (await ethers.getContractFactory("ERC1155OnChain")).attach(addressERC1155OnSchain) as ERC1155OnChain;
let balanceIds = await targetErc1155OnChain.balanceOfBatch([user.address, user.address, user.address, user.address], ids);
let balanceIdsNumber: number[] = [];
balanceIds.forEach((element) => {
- balanceIdsNumber.push(BigNumber.from(element).toNumber())
+ balanceIdsNumber.push(Number(element))
});
expect(balanceIdsNumber).to.deep.equal(amounts);
await tokenManagerERC11552
.connect(user)
- .transferToSchainERC1155Batch(newSchainName, erc1155OnOriginChain.address, ids, amounts)
+ .transferToSchainERC1155Batch(newSchainName, erc1155OnOriginChain, ids, amounts)
.should.be.eventually.rejectedWith("Incorrect Token Manager address");
await tokenManagerERC11552
.connect(user)
- .transferToSchainERC1155Batch("Mainnet", erc1155OnOriginChain.address, ids, amounts)
+ .transferToSchainERC1155Batch("Mainnet", erc1155OnOriginChain, ids, amounts)
.should.be.eventually.rejectedWith("This function is not for transferring to Mainnet");
await tokenManagerERC11552
.connect(user)
- .transferToSchainERC1155Batch(schainName, erc1155OnOriginChain.address, ids, amounts)
+ .transferToSchainERC1155Batch(schainName, erc1155OnOriginChain, ids, amounts)
.should.be.eventually.rejectedWith("Not allowed ERC1155 Token");
- await targetErc1155OnChain.connect(user).setApprovalForAll(tokenManagerERC11552.address, true);
+ await targetErc1155OnChain.connect(user).setApprovalForAll(tokenManagerERC11552, true);
await tokenManagerERC11552
.connect(user)
- .transferToSchainERC1155Batch(schainName, erc1155OnOriginChain.address, ids, amounts);
+ .transferToSchainERC1155Batch(schainName, erc1155OnOriginChain, ids, amounts);
data = await messages.encodeTransferErc1155BatchMessage(
- erc1155OnOriginChain.address,
+ erc1155OnOriginChain,
user.address,
ids,
amounts
);
- await messageProxyForSchain.postMessage(tokenManagerERC1155.address, newSchainId, tokenManagerERC11552.address, data);
+ await messageProxyForSchain.postMessage(tokenManagerERC1155, newSchainId, tokenManagerERC11552, data);
balanceIds = await erc1155OnOriginChain.balanceOfBatch([user.address, user.address, user.address, user.address], ids);
balanceIdsNumber = [];
balanceIds.forEach((element) => {
- balanceIdsNumber.push(BigNumber.from(element).toNumber())
+ balanceIdsNumber.push(Number(element))
});
expect(balanceIdsNumber).to.deep.equal(amounts);
@@ -1685,27 +1683,27 @@ describe("TokenManagerERC1155", () => {
await messageProxyForSchain.connect(deployer).addConnectedChain(newSchainName);
await erc1155OnOriginChain.connect(deployer).mintBatch(user.address, ids, amounts, "0x");
- await erc1155OnOriginChain.connect(user).setApprovalForAll(tokenManagerERC1155.address, true);
+ await erc1155OnOriginChain.connect(user).setApprovalForAll(tokenManagerERC1155, true);
await tokenManagerERC1155
.connect(user)
- .transferToSchainERC1155Batch(newSchainName, erc1155OnOriginChain.address, ids, amounts)
+ .transferToSchainERC1155Batch(newSchainName, erc1155OnOriginChain, ids, amounts)
.should.be.eventually.rejectedWith("Incorrect Token Manager address");
await tokenManagerERC1155
.connect(user)
- .transferToSchainERC1155Batch("Mainnet", erc1155OnOriginChain.address, ids, amounts)
+ .transferToSchainERC1155Batch("Mainnet", erc1155OnOriginChain, ids, amounts)
.should.be.eventually.rejectedWith("This function is not for transferring to Mainnet");
- await tokenManagerERC1155.addTokenManager(newSchainName, tokenManagerERC11552.address);
+ await tokenManagerERC1155.addTokenManager(newSchainName, tokenManagerERC11552);
// execution:
await tokenManagerERC1155
.connect(user)
- .transferToSchainERC1155Batch(newSchainName, erc1155OnOriginChain.address, ids, amounts);
+ .transferToSchainERC1155Batch(newSchainName, erc1155OnOriginChain, ids, amounts);
let data = await messages.encodeTransferErc1155BatchAndTokenInfoMessage(
- erc1155OnOriginChain.address,
+ erc1155OnOriginChain,
user.address,
ids,
amounts,
@@ -1715,55 +1713,54 @@ describe("TokenManagerERC1155", () => {
);
// expectation:
- const outgoingMessagesCounter = BigNumber.from(
- await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName));
- outgoingMessagesCounter.should.be.deep.equal(BigNumber.from(1));
+ const outgoingMessagesCounter = await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName);
+ outgoingMessagesCounter.should.be.equal(1);
// receive:
// registration:
await messageProxyForSchain2.connect(deployer).addConnectedChain(schainName);
- await tokenManagerERC11552.addTokenManager(schainName, tokenManagerERC1155.address);
+ await tokenManagerERC11552.addTokenManager(schainName, tokenManagerERC1155);
await tokenManagerERC11552.connect(deployer).grantRole(await tokenManagerERC11552.TOKEN_REGISTRAR_ROLE(), schainOwner.address);
- await tokenManagerERC11552.connect(schainOwner).addERC1155TokenByOwner(schainName, erc1155OnOriginChain.address, erc1155OnTargetChain.address);
+ await tokenManagerERC11552.connect(schainOwner).addERC1155TokenByOwner(schainName, erc1155OnOriginChain, erc1155OnTargetChain);
- await messageProxyForSchain2.postMessage(tokenManagerERC11552.address, schainId, tokenManagerERC1155.address, data);
+ await messageProxyForSchain2.postMessage(tokenManagerERC11552, schainId, tokenManagerERC1155, data);
await tokenManagerERC11552
.connect(user)
- .transferToSchainERC1155Batch(newSchainName, erc1155OnOriginChain.address, ids, amounts)
+ .transferToSchainERC1155Batch(newSchainName, erc1155OnOriginChain, ids, amounts)
.should.be.eventually.rejectedWith("Incorrect Token Manager address");
await tokenManagerERC11552
.connect(user)
- .transferToSchainERC1155Batch("Mainnet", erc1155OnOriginChain.address, ids, amounts)
+ .transferToSchainERC1155Batch("Mainnet", erc1155OnOriginChain, ids, amounts)
.should.be.eventually.rejectedWith("This function is not for transferring to Mainnet");
await tokenManagerERC11552
.connect(user)
- .transferToSchainERC1155Batch(schainName, erc1155OnOriginChain.address, ids, amounts)
+ .transferToSchainERC1155Batch(schainName, erc1155OnOriginChain, ids, amounts)
.should.be.eventually.rejectedWith("Not allowed ERC1155 Token");
- await erc1155OnTargetChain.connect(user).setApprovalForAll(tokenManagerERC11552.address, true);
+ await erc1155OnTargetChain.connect(user).setApprovalForAll(tokenManagerERC11552, true);
await tokenManagerERC11552
.connect(user)
- .transferToSchainERC1155Batch(schainName, erc1155OnOriginChain.address, ids, amounts);
+ .transferToSchainERC1155Batch(schainName, erc1155OnOriginChain, ids, amounts);
data = await messages.encodeTransferErc1155BatchMessage(
- erc1155OnOriginChain.address,
+ erc1155OnOriginChain,
user.address,
ids,
amounts
);
- await messageProxyForSchain.postMessage(tokenManagerERC1155.address, newSchainId, tokenManagerERC11552.address, data);
+ await messageProxyForSchain.postMessage(tokenManagerERC1155, newSchainId, tokenManagerERC11552, data);
const balanceIds = await erc1155OnOriginChain.balanceOfBatch([user.address, user.address, user.address, user.address], ids);
const balanceIdsNumber: number[] = [];
balanceIds.forEach((element) => {
- balanceIdsNumber.push(BigNumber.from(element).toNumber())
+ balanceIdsNumber.push(Number(element))
});
expect(balanceIdsNumber).to.deep.equal(amounts);
@@ -1776,27 +1773,27 @@ describe("TokenManagerERC1155", () => {
await messageProxyForSchain.connect(deployer).addConnectedChain(newSchainName);
await erc1155OnOriginChain.connect(deployer).mintBatch(user.address, ids, amounts, "0x");
- await erc1155OnOriginChain.connect(user).setApprovalForAll(tokenManagerERC1155.address, true);
+ await erc1155OnOriginChain.connect(user).setApprovalForAll(tokenManagerERC1155, true);
await tokenManagerERC1155
.connect(user)
- .transferToSchainERC1155Batch(newSchainName, erc1155OnOriginChain.address, ids, amounts)
+ .transferToSchainERC1155Batch(newSchainName, erc1155OnOriginChain, ids, amounts)
.should.be.eventually.rejectedWith("Incorrect Token Manager address");
await tokenManagerERC1155
.connect(user)
- .transferToSchainERC1155Batch("Mainnet", erc1155OnOriginChain.address, ids, amounts)
+ .transferToSchainERC1155Batch("Mainnet", erc1155OnOriginChain, ids, amounts)
.should.be.eventually.rejectedWith("This function is not for transferring to Mainnet");
- await tokenManagerERC1155.addTokenManager(newSchainName, tokenManagerERC11552.address);
+ await tokenManagerERC1155.addTokenManager(newSchainName, tokenManagerERC11552);
// execution:
await tokenManagerERC1155
.connect(user)
- .transferToSchainERC1155Batch(newSchainName, erc1155OnOriginChain.address, ids, amounts);
+ .transferToSchainERC1155Batch(newSchainName, erc1155OnOriginChain, ids, amounts);
let data = await messages.encodeTransferErc1155BatchAndTokenInfoMessage(
- erc1155OnOriginChain.address,
+ erc1155OnOriginChain,
user.address,
ids,
amounts,
@@ -1806,88 +1803,89 @@ describe("TokenManagerERC1155", () => {
);
// expectation:
- const outgoingMessagesCounter = BigNumber.from(
- await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName));
- outgoingMessagesCounter.should.be.deep.equal(BigNumber.from(1));
+ const outgoingMessagesCounter = await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName);
+ outgoingMessagesCounter.should.be.equal(1);
// receive:
// registration:
await messageProxyForSchain2.connect(deployer).addConnectedChain(schainName);
- await tokenManagerERC11552.addTokenManager(schainName, tokenManagerERC1155.address);
+ await tokenManagerERC11552.addTokenManager(schainName, tokenManagerERC1155);
- await messageProxyForSchain2.postMessage(tokenManagerERC11552.address, schainId, tokenManagerERC1155.address, data).should.be.eventually.rejectedWith("Automatic deploy is disabled");
+ await messageProxyForSchain2
+ .postMessage(tokenManagerERC11552, schainId, tokenManagerERC1155, data)
+ .should.be.eventually.rejectedWith("Automatic deploy is disabled");
await tokenManagerERC11552.enableAutomaticDeploy();
- await messageProxyForSchain2.postMessage(tokenManagerERC11552.address, schainId, tokenManagerERC1155.address, data);
+ await messageProxyForSchain2.postMessage(tokenManagerERC11552, schainId, tokenManagerERC1155, data);
- const addressERC1155OnSchain = await tokenManagerERC11552.clonesErc1155(schainId, erc1155OnOriginChain.address);
+ const addressERC1155OnSchain = await tokenManagerERC11552.clonesErc1155(schainId, erc1155OnOriginChain);
const targetErc1155OnChain = await (await ethers.getContractFactory("ERC1155OnChain")).attach(addressERC1155OnSchain) as ERC1155OnChain;
let balanceIds = await targetErc1155OnChain.balanceOfBatch([user.address, user.address, user.address, user.address], ids);
let balanceIdsNumber: number[] = [];
balanceIds.forEach((element) => {
- balanceIdsNumber.push(BigNumber.from(element).toNumber())
+ balanceIdsNumber.push(Number(element))
});
expect(balanceIdsNumber).to.deep.equal(amounts);
await tokenManagerERC11552
.connect(user)
- .transferToSchainERC1155Batch(newSchainName, erc1155OnOriginChain.address, ids, amounts)
+ .transferToSchainERC1155Batch(newSchainName, erc1155OnOriginChain, ids, amounts)
.should.be.eventually.rejectedWith("Incorrect Token Manager address");
await tokenManagerERC11552
.connect(user)
- .transferToSchainERC1155Batch("Mainnet", erc1155OnOriginChain.address, ids, amounts)
+ .transferToSchainERC1155Batch("Mainnet", erc1155OnOriginChain, ids, amounts)
.should.be.eventually.rejectedWith("This function is not for transferring to Mainnet");
await tokenManagerERC11552
.connect(user)
- .transferToSchainERC1155Batch(schainName, erc1155OnOriginChain.address, ids, amounts)
+ .transferToSchainERC1155Batch(schainName, erc1155OnOriginChain, ids, amounts)
.should.be.eventually.rejectedWith("Not allowed ERC1155 Token");
- await targetErc1155OnChain.connect(user).setApprovalForAll(tokenManagerERC11552.address, true);
+ await targetErc1155OnChain.connect(user).setApprovalForAll(tokenManagerERC11552, true);
await tokenManagerERC11552
.connect(user)
- .transferToSchainERC1155Batch(schainName, erc1155OnOriginChain.address, ids, amounts);
+ .transferToSchainERC1155Batch(schainName, erc1155OnOriginChain, ids, amounts);
data = await messages.encodeTransferErc1155BatchMessage(
- erc1155OnOriginChain.address,
+ erc1155OnOriginChain,
user.address,
ids,
amounts
);
- await messageProxyForSchain.postMessage(tokenManagerERC1155.address, newSchainId, tokenManagerERC11552.address, data);
+ await messageProxyForSchain.postMessage(tokenManagerERC1155, newSchainId, tokenManagerERC11552, data);
balanceIds = await erc1155OnOriginChain.balanceOfBatch([user.address, user.address, user.address, user.address], ids);
balanceIdsNumber = [];
balanceIds.forEach((element) => {
- balanceIdsNumber.push(BigNumber.from(element).toNumber())
+ balanceIdsNumber.push(Number(element))
});
expect(balanceIdsNumber).to.deep.equal(amounts);
- await erc1155OnOriginChain.connect(user).setApprovalForAll(tokenManagerERC1155.address, true);
+ await erc1155OnOriginChain.connect(user).setApprovalForAll(tokenManagerERC1155, true);
await tokenManagerERC1155
.connect(user)
- .transferToSchainERC1155Batch(newSchainName, erc1155OnOriginChain.address, ids, amounts);
+ .transferToSchainERC1155Batch(newSchainName, erc1155OnOriginChain, ids, amounts);
data = await messages.encodeTransferErc1155BatchMessage(
- erc1155OnOriginChain.address,
+ erc1155OnOriginChain,
user.address,
ids,
amounts
);
- await messageProxyForSchain2.postMessage(tokenManagerERC11552.address, schainId, tokenManagerERC1155.address, data);
+ await messageProxyForSchain2.postMessage(tokenManagerERC11552, schainId, tokenManagerERC1155, data);
balanceIds = await targetErc1155OnChain.balanceOfBatch([user.address, user.address, user.address, user.address], ids);
balanceIdsNumber = [];
balanceIds.forEach((element) => {
- balanceIdsNumber.push(BigNumber.from(element).toNumber())
+ balanceIdsNumber.push(Number(element))
});
expect(balanceIdsNumber).to.deep.equal(amounts);
@@ -1897,65 +1895,65 @@ describe("TokenManagerERC1155", () => {
await tokenManagerERC1155
.connect(user)
- .transferToSchainERC1155Batch(newSchainName, erc1155OnOriginChain.address, ids, amounts2);
+ .transferToSchainERC1155Batch(newSchainName, erc1155OnOriginChain, ids, amounts2);
data = await messages.encodeTransferErc1155BatchMessage(
- erc1155OnOriginChain.address,
+ erc1155OnOriginChain,
user.address,
ids,
amounts2
);
- await messageProxyForSchain2.postMessage(tokenManagerERC11552.address, schainId, tokenManagerERC1155.address, data);
+ await messageProxyForSchain2.postMessage(tokenManagerERC11552, schainId, tokenManagerERC1155, data);
const amountsSum = [81, 81, 81, 81];
balanceIds = await targetErc1155OnChain.balanceOfBatch([user.address, user.address, user.address, user.address], ids);
balanceIdsNumber = [];
balanceIds.forEach((element) => {
- balanceIdsNumber.push(BigNumber.from(element).toNumber())
+ balanceIdsNumber.push(Number(element))
});
expect(balanceIdsNumber).to.deep.equal(amountsSum);
- await targetErc1155OnChain.connect(user).setApprovalForAll(tokenManagerERC11552.address, true);
+ await targetErc1155OnChain.connect(user).setApprovalForAll(tokenManagerERC11552, true);
await tokenManagerERC11552
.connect(user)
- .transferToSchainERC1155Batch(schainName, erc1155OnOriginChain.address, ids, amounts);
+ .transferToSchainERC1155Batch(schainName, erc1155OnOriginChain, ids, amounts);
data = await messages.encodeTransferErc1155BatchMessage(
- erc1155OnOriginChain.address,
+ erc1155OnOriginChain,
user.address,
ids,
amounts
);
- await messageProxyForSchain.postMessage(tokenManagerERC1155.address, newSchainId, tokenManagerERC11552.address, data);
+ await messageProxyForSchain.postMessage(tokenManagerERC1155, newSchainId, tokenManagerERC11552, data);
balanceIds = await erc1155OnOriginChain.balanceOfBatch([user.address, user.address, user.address, user.address], ids);
balanceIdsNumber = [];
balanceIds.forEach((element) => {
- balanceIdsNumber.push(BigNumber.from(element).toNumber())
+ balanceIdsNumber.push(Number(element))
});
expect(balanceIdsNumber).to.deep.equal(amounts);
await tokenManagerERC11552
.connect(user)
- .transferToSchainERC1155Batch(schainName, erc1155OnOriginChain.address, ids, amounts2);
+ .transferToSchainERC1155Batch(schainName, erc1155OnOriginChain, ids, amounts2);
data = await messages.encodeTransferErc1155BatchMessage(
- erc1155OnOriginChain.address,
+ erc1155OnOriginChain,
user.address,
ids,
amounts2
);
- await messageProxyForSchain.postMessage(tokenManagerERC1155.address, newSchainId, tokenManagerERC11552.address, data);
+ await messageProxyForSchain.postMessage(tokenManagerERC1155, newSchainId, tokenManagerERC11552, data);
balanceIds = await erc1155OnOriginChain.balanceOfBatch([user.address, user.address, user.address, user.address], ids);
balanceIdsNumber = [];
balanceIds.forEach((element) => {
- balanceIdsNumber.push(BigNumber.from(element).toNumber())
+ balanceIdsNumber.push(Number(element))
});
expect(balanceIdsNumber).to.deep.equal(amountsSum);
@@ -1967,27 +1965,27 @@ describe("TokenManagerERC1155", () => {
await messageProxyForSchain.connect(deployer).addConnectedChain(newSchainName);
await erc1155OnOriginChain.connect(deployer).mintBatch(user.address, ids, amounts, "0x");
- await erc1155OnOriginChain.connect(user).setApprovalForAll(tokenManagerERC1155.address, true);
+ await erc1155OnOriginChain.connect(user).setApprovalForAll(tokenManagerERC1155, true);
await tokenManagerERC1155
.connect(user)
- .transferToSchainERC1155Batch(newSchainName, erc1155OnOriginChain.address, ids, amounts)
+ .transferToSchainERC1155Batch(newSchainName, erc1155OnOriginChain, ids, amounts)
.should.be.eventually.rejectedWith("Incorrect Token Manager address");
await tokenManagerERC1155
.connect(user)
- .transferToSchainERC1155Batch("Mainnet", erc1155OnOriginChain.address, ids, amounts)
+ .transferToSchainERC1155Batch("Mainnet", erc1155OnOriginChain, ids, amounts)
.should.be.eventually.rejectedWith("This function is not for transferring to Mainnet");
- await tokenManagerERC1155.addTokenManager(newSchainName, tokenManagerERC11552.address);
+ await tokenManagerERC1155.addTokenManager(newSchainName, tokenManagerERC11552);
// execution:
await tokenManagerERC1155
.connect(user)
- .transferToSchainERC1155Batch(newSchainName, erc1155OnOriginChain.address, ids, amounts);
+ .transferToSchainERC1155Batch(newSchainName, erc1155OnOriginChain, ids, amounts);
let data = await messages.encodeTransferErc1155BatchAndTokenInfoMessage(
- erc1155OnOriginChain.address,
+ erc1155OnOriginChain,
user.address,
ids,
amounts,
@@ -1997,77 +1995,76 @@ describe("TokenManagerERC1155", () => {
);
// expectation:
- const outgoingMessagesCounter = BigNumber.from(
- await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName));
- outgoingMessagesCounter.should.be.deep.equal(BigNumber.from(1));
+ const outgoingMessagesCounter = await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName);
+ outgoingMessagesCounter.should.be.equal(1);
// receive:
// registration:
await messageProxyForSchain2.connect(deployer).addConnectedChain(schainName);
- await tokenManagerERC11552.addTokenManager(schainName, tokenManagerERC1155.address);
+ await tokenManagerERC11552.addTokenManager(schainName, tokenManagerERC1155);
await tokenManagerERC11552.connect(deployer).grantRole(await tokenManagerERC11552.TOKEN_REGISTRAR_ROLE(), schainOwner.address);
- await tokenManagerERC11552.connect(schainOwner).addERC1155TokenByOwner(schainName, erc1155OnOriginChain.address, erc1155OnTargetChain.address);
+ await tokenManagerERC11552.connect(schainOwner).addERC1155TokenByOwner(schainName, erc1155OnOriginChain, erc1155OnTargetChain);
- await messageProxyForSchain2.postMessage(tokenManagerERC11552.address, schainId, tokenManagerERC1155.address, data);
+ await messageProxyForSchain2.postMessage(tokenManagerERC11552, schainId, tokenManagerERC1155, data);
await tokenManagerERC11552
.connect(user)
- .transferToSchainERC1155Batch(newSchainName, erc1155OnOriginChain.address, ids, amounts)
+ .transferToSchainERC1155Batch(newSchainName, erc1155OnOriginChain, ids, amounts)
.should.be.eventually.rejectedWith("Incorrect Token Manager address");
await tokenManagerERC11552
.connect(user)
- .transferToSchainERC1155Batch("Mainnet", erc1155OnOriginChain.address, ids, amounts)
+ .transferToSchainERC1155Batch("Mainnet", erc1155OnOriginChain, ids, amounts)
.should.be.eventually.rejectedWith("This function is not for transferring to Mainnet");
await tokenManagerERC11552
.connect(user)
- .transferToSchainERC1155Batch(schainName, erc1155OnOriginChain.address, ids, amounts)
+ .transferToSchainERC1155Batch(schainName, erc1155OnOriginChain, ids, amounts)
.should.be.eventually.rejectedWith("Not allowed ERC1155 Token");
- await erc1155OnTargetChain.connect(user).setApprovalForAll(tokenManagerERC11552.address, true);
+ await erc1155OnTargetChain.connect(user).setApprovalForAll(tokenManagerERC11552, true);
await tokenManagerERC11552
.connect(user)
- .transferToSchainERC1155Batch(schainName, erc1155OnOriginChain.address, ids, amounts);
+ .transferToSchainERC1155Batch(schainName, erc1155OnOriginChain, ids, amounts);
data = await messages.encodeTransferErc1155BatchMessage(
- erc1155OnOriginChain.address,
+ erc1155OnOriginChain,
user.address,
ids,
amounts
);
- await messageProxyForSchain.postMessage(tokenManagerERC1155.address, newSchainId, tokenManagerERC11552.address, data);
+ await messageProxyForSchain.postMessage(tokenManagerERC1155, newSchainId, tokenManagerERC11552, data);
let balanceIds = await erc1155OnOriginChain.balanceOfBatch([user.address, user.address, user.address, user.address], ids);
let balanceIdsNumber: number[] = [];
balanceIds.forEach((element) => {
- balanceIdsNumber.push(BigNumber.from(element).toNumber())
+ balanceIdsNumber.push(Number(element))
});
expect(balanceIdsNumber).to.deep.equal(amounts);
- await erc1155OnOriginChain.connect(user).setApprovalForAll(tokenManagerERC1155.address, true);
+ await erc1155OnOriginChain.connect(user).setApprovalForAll(tokenManagerERC1155, true);
await tokenManagerERC1155
.connect(user)
- .transferToSchainERC1155Batch(newSchainName, erc1155OnOriginChain.address, ids, amounts);
+ .transferToSchainERC1155Batch(newSchainName, erc1155OnOriginChain, ids, amounts);
data = await messages.encodeTransferErc1155BatchMessage(
- erc1155OnOriginChain.address,
+ erc1155OnOriginChain,
user.address,
ids,
amounts
);
- await messageProxyForSchain2.postMessage(tokenManagerERC11552.address, schainId, tokenManagerERC1155.address, data);
+ await messageProxyForSchain2.postMessage(tokenManagerERC11552, schainId, tokenManagerERC1155, data);
balanceIds = await erc1155OnTargetChain.balanceOfBatch([user.address, user.address, user.address, user.address], ids);
balanceIdsNumber = [];
balanceIds.forEach((element) => {
- balanceIdsNumber.push(BigNumber.from(element).toNumber())
+ balanceIdsNumber.push(Number(element))
});
expect(balanceIdsNumber).to.deep.equal(amounts);
@@ -2077,65 +2074,65 @@ describe("TokenManagerERC1155", () => {
await tokenManagerERC1155
.connect(user)
- .transferToSchainERC1155Batch(newSchainName, erc1155OnOriginChain.address, ids, amounts2);
+ .transferToSchainERC1155Batch(newSchainName, erc1155OnOriginChain, ids, amounts2);
data = await messages.encodeTransferErc1155BatchMessage(
- erc1155OnOriginChain.address,
+ erc1155OnOriginChain,
user.address,
ids,
amounts2
);
- await messageProxyForSchain2.postMessage(tokenManagerERC11552.address, schainId, tokenManagerERC1155.address, data);
+ await messageProxyForSchain2.postMessage(tokenManagerERC11552, schainId, tokenManagerERC1155, data);
const amountsSum = [81, 81, 81, 81];
balanceIds = await erc1155OnTargetChain.balanceOfBatch([user.address, user.address, user.address, user.address], ids);
balanceIdsNumber = [];
balanceIds.forEach((element) => {
- balanceIdsNumber.push(BigNumber.from(element).toNumber())
+ balanceIdsNumber.push(Number(element))
});
expect(balanceIdsNumber).to.deep.equal(amountsSum);
- await erc1155OnTargetChain.connect(user).setApprovalForAll(tokenManagerERC11552.address, true);
+ await erc1155OnTargetChain.connect(user).setApprovalForAll(tokenManagerERC11552, true);
await tokenManagerERC11552
.connect(user)
- .transferToSchainERC1155Batch(schainName, erc1155OnOriginChain.address, ids, amounts);
+ .transferToSchainERC1155Batch(schainName, erc1155OnOriginChain, ids, amounts);
data = await messages.encodeTransferErc1155BatchMessage(
- erc1155OnOriginChain.address,
+ erc1155OnOriginChain,
user.address,
ids,
amounts
);
- await messageProxyForSchain.postMessage(tokenManagerERC1155.address, newSchainId, tokenManagerERC11552.address, data);
+ await messageProxyForSchain.postMessage(tokenManagerERC1155, newSchainId, tokenManagerERC11552, data);
balanceIds = await erc1155OnOriginChain.balanceOfBatch([user.address, user.address, user.address, user.address], ids);
balanceIdsNumber = [];
balanceIds.forEach((element) => {
- balanceIdsNumber.push(BigNumber.from(element).toNumber())
+ balanceIdsNumber.push(Number(element))
});
expect(balanceIdsNumber).to.deep.equal(amounts);
await tokenManagerERC11552
.connect(user)
- .transferToSchainERC1155Batch(schainName, erc1155OnOriginChain.address, ids, amounts2);
+ .transferToSchainERC1155Batch(schainName, erc1155OnOriginChain, ids, amounts2);
data = await messages.encodeTransferErc1155BatchMessage(
- erc1155OnOriginChain.address,
+ erc1155OnOriginChain,
user.address,
ids,
amounts2
);
- await messageProxyForSchain.postMessage(tokenManagerERC1155.address, newSchainId, tokenManagerERC11552.address, data);
+ await messageProxyForSchain.postMessage(tokenManagerERC1155, newSchainId, tokenManagerERC11552, data);
balanceIds = await erc1155OnOriginChain.balanceOfBatch([user.address, user.address, user.address, user.address], ids);
balanceIdsNumber = [];
balanceIds.forEach((element) => {
- balanceIdsNumber.push(BigNumber.from(element).toNumber())
+ balanceIdsNumber.push(Number(element))
});
expect(balanceIdsNumber).to.deep.equal(amountsSum);
@@ -2147,17 +2144,17 @@ describe("TokenManagerERC1155", () => {
await messageProxyForSchain.connect(deployer).addConnectedChain(newSchainName);
await erc1155OnOriginChain.connect(deployer).mintBatch(user.address, ids, amounts, "0x");
- await erc1155OnOriginChain.connect(user).setApprovalForAll(tokenManagerERC1155.address, true);
+ await erc1155OnOriginChain.connect(user).setApprovalForAll(tokenManagerERC1155, true);
- await tokenManagerERC1155.addTokenManager(newSchainName, tokenManagerERC11552.address);
+ await tokenManagerERC1155.addTokenManager(newSchainName, tokenManagerERC11552);
// execution:
await tokenManagerERC1155
.connect(user)
- .transferToSchainERC1155Batch(newSchainName, erc1155OnOriginChain.address, ids, amounts);
+ .transferToSchainERC1155Batch(newSchainName, erc1155OnOriginChain, ids, amounts);
const data = await messages.encodeTransferErc1155BatchAndTokenInfoMessage(
- erc1155OnOriginChain.address,
+ erc1155OnOriginChain,
user.address,
ids,
amounts,
@@ -2167,24 +2164,23 @@ describe("TokenManagerERC1155", () => {
);
// expectation:
- const outgoingMessagesCounter = BigNumber.from(
- await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName));
- outgoingMessagesCounter.should.be.deep.equal(BigNumber.from(1));
+ const outgoingMessagesCounter = await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName);
+ outgoingMessagesCounter.should.be.equal(1);
// receive:
// registration:
await messageProxyForSchain2.connect(deployer).addConnectedChain(schainName);
- await tokenManagerERC11552.addTokenManager(schainName, tokenManagerERC1155.address);
+ await tokenManagerERC11552.addTokenManager(schainName, tokenManagerERC1155);
await tokenManagerERC11552.connect(deployer).grantRole(await tokenManagerERC11552.TOKEN_REGISTRAR_ROLE(), schainOwner.address);
- await tokenManagerERC11552.connect(schainOwner).addERC1155TokenByOwner(schainName, erc1155OnOriginChain.address, erc1155OnTargetChain.address);
+ await tokenManagerERC11552.connect(schainOwner).addERC1155TokenByOwner(schainName, erc1155OnOriginChain, erc1155OnTargetChain);
- await messageProxyForSchain2.postMessage(tokenManagerERC11552.address, schainId, tokenManagerERC1155.address, data);
+ await messageProxyForSchain2.postMessage(tokenManagerERC11552, schainId, tokenManagerERC1155, data);
const balanceIds = await erc1155OnTargetChain.balanceOfBatch([user.address, user.address, user.address, user.address], ids);
const balanceIdsNumber: number[] = [];
balanceIds.forEach((element) => {
- balanceIdsNumber.push(BigNumber.from(element).toNumber())
+ balanceIdsNumber.push(Number(element))
});
expect(balanceIdsNumber).to.deep.equal(amounts);
@@ -2193,28 +2189,28 @@ describe("TokenManagerERC1155", () => {
const erc1155OnTargetZChain = await deployERC1155OnChain("NewTokenZ");
const keyStorageZ = await deployKeyStorageMock();
- const messageProxyForSchainZ = await deployMessageProxyForSchainTester(keyStorageZ.address, newSchainNameZ);
+ const messageProxyForSchainZ = await deployMessageProxyForSchainTester(keyStorageZ, newSchainNameZ);
const tokenManagerLinkerZ = await deployTokenManagerLinker(messageProxyForSchainZ, deployer.address);
- const communityLockerZ = await deployCommunityLocker(newSchainName, messageProxyForSchainZ.address, tokenManagerLinkerZ, fakeCommunityPool);
- const tokenManagerERC1155Z = await deployTokenManagerERC1155(newSchainNameZ, messageProxyForSchainZ.address, tokenManagerLinkerZ, communityLockerZ, fakeDepositBox);
- await erc1155OnTargetZChain.connect(deployer).grantRole(await erc1155OnTargetZChain.MINTER_ROLE(), tokenManagerERC1155Z.address);
- await tokenManagerLinkerZ.registerTokenManager(tokenManagerERC1155Z.address);
+ const communityLockerZ = await deployCommunityLocker(newSchainName, messageProxyForSchainZ, tokenManagerLinkerZ, fakeCommunityPool);
+ const tokenManagerERC1155Z = await deployTokenManagerERC1155(newSchainNameZ, messageProxyForSchainZ, tokenManagerLinkerZ, communityLockerZ, fakeDepositBox);
+ await erc1155OnTargetZChain.connect(deployer).grantRole(await erc1155OnTargetZChain.MINTER_ROLE(), tokenManagerERC1155Z);
+ await tokenManagerLinkerZ.registerTokenManager(tokenManagerERC1155Z);
await messageProxyForSchain2.connect(deployer).grantRole(await messageProxyForSchain2.CHAIN_CONNECTOR_ROLE(), deployer.address);
await messageProxyForSchain2.connect(deployer).addConnectedChain(newSchainNameZ);
- await tokenManagerERC11552.addTokenManager(newSchainNameZ, tokenManagerERC1155Z.address);
+ await tokenManagerERC11552.addTokenManager(newSchainNameZ, tokenManagerERC1155Z);
- await erc1155OnTargetChain.connect(user).setApprovalForAll(tokenManagerERC11552.address, true);
+ await erc1155OnTargetChain.connect(user).setApprovalForAll(tokenManagerERC11552, true);
await tokenManagerERC11552
.connect(user)
- .transferToSchainERC1155Batch(newSchainNameZ, erc1155OnOriginChain.address, ids, amounts)
+ .transferToSchainERC1155Batch(newSchainNameZ, erc1155OnOriginChain, ids, amounts)
.should.be.eventually.rejectedWith("Not allowed ERC1155 Token");
await tokenManagerERC11552
.connect(user)
- .transferToSchainERC1155Batch(newSchainNameZ, erc1155OnTargetChain.address, ids, amounts)
+ .transferToSchainERC1155Batch(newSchainNameZ, erc1155OnTargetChain, ids, amounts)
.should.be.eventually.rejectedWith("Incorrect main chain token");
});
@@ -2224,17 +2220,17 @@ describe("TokenManagerERC1155", () => {
await messageProxyForSchain.connect(deployer).addConnectedChain(newSchainName);
await erc1155OnOriginChain.connect(deployer).mintBatch(user.address, ids, amounts, "0x");
- await erc1155OnOriginChain.connect(user).setApprovalForAll(tokenManagerERC1155.address, true);
+ await erc1155OnOriginChain.connect(user).setApprovalForAll(tokenManagerERC1155, true);
- await tokenManagerERC1155.addTokenManager(newSchainName, tokenManagerERC11552.address);
+ await tokenManagerERC1155.addTokenManager(newSchainName, tokenManagerERC11552);
// execution:
await tokenManagerERC1155
.connect(user)
- .transferToSchainERC1155Batch(newSchainName, erc1155OnOriginChain.address, ids, amounts);
+ .transferToSchainERC1155Batch(newSchainName, erc1155OnOriginChain, ids, amounts);
let data = await messages.encodeTransferErc1155BatchAndTokenInfoMessage(
- erc1155OnOriginChain.address,
+ erc1155OnOriginChain,
user.address,
ids,
amounts,
@@ -2244,71 +2240,70 @@ describe("TokenManagerERC1155", () => {
);
// expectation:
- const outgoingMessagesCounter = BigNumber.from(
- await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName));
- outgoingMessagesCounter.should.be.deep.equal(BigNumber.from(1));
+ const outgoingMessagesCounter = await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName);
+ outgoingMessagesCounter.should.be.equal(1);
// receive:
// registration:
await messageProxyForSchain2.connect(deployer).addConnectedChain(schainName);
- await tokenManagerERC11552.addTokenManager(schainName, tokenManagerERC1155.address);
+ await tokenManagerERC11552.addTokenManager(schainName, tokenManagerERC1155);
await tokenManagerERC11552.connect(deployer).grantRole(await tokenManagerERC11552.TOKEN_REGISTRAR_ROLE(), schainOwner.address);
- await tokenManagerERC11552.connect(schainOwner).addERC1155TokenByOwner(schainName, erc1155OnOriginChain.address, erc1155OnTargetChain.address);
+ await tokenManagerERC11552.connect(schainOwner).addERC1155TokenByOwner(schainName, erc1155OnOriginChain, erc1155OnTargetChain);
- await messageProxyForSchain2.postMessage(tokenManagerERC11552.address, schainId, tokenManagerERC1155.address, data);
+ await messageProxyForSchain2.postMessage(tokenManagerERC11552, schainId, tokenManagerERC1155, data);
let balanceIds = await erc1155OnTargetChain.balanceOfBatch([user.address, user.address, user.address, user.address], ids);
let balanceIdsNumber: number[] = [];
balanceIds.forEach((element) => {
- balanceIdsNumber.push(BigNumber.from(element).toNumber())
+ balanceIdsNumber.push(Number(element))
});
expect(balanceIdsNumber).to.deep.equal(amounts);
data = await messages.encodeActivateUserMessage(user.address);
- await messageProxyForSchain2.postMessage(communityLocker2.address, mainnetId, fakeCommunityPool, data);
+ await messageProxyForSchain2.postMessage(communityLocker2, mainnetId, fakeCommunityPool, data);
- await erc1155OnTargetChain.connect(user).setApprovalForAll(tokenManagerERC11552.address, true);
+ await erc1155OnTargetChain.connect(user).setApprovalForAll(tokenManagerERC11552, true);
await tokenManagerERC11552
.connect(user)
- .exitToMainERC1155Batch(erc1155OnOriginChain.address, ids, amounts)
+ .exitToMainERC1155Batch(erc1155OnOriginChain, ids, amounts)
.should.be.eventually.rejectedWith("Not allowed ERC1155 Token");
await tokenManagerERC11552
.connect(user)
- .exitToMainERC1155Batch(erc1155OnTargetChain.address, ids, amounts)
+ .exitToMainERC1155Batch(erc1155OnTargetChain, ids, amounts)
.should.be.eventually.rejectedWith("Incorrect main chain token");
await tokenManagerERC11552
.connect(user)
- .transferToSchainERC1155Batch(schainName, erc1155OnOriginChain.address, ids, amounts);
+ .transferToSchainERC1155Batch(schainName, erc1155OnOriginChain, ids, amounts);
data = await messages.encodeTransferErc1155BatchMessage(
- erc1155OnOriginChain.address,
+ erc1155OnOriginChain,
user.address,
ids,
amounts
);
- await messageProxyForSchain.postMessage(tokenManagerERC1155.address, newSchainId, tokenManagerERC11552.address, data);
+ await messageProxyForSchain.postMessage(tokenManagerERC1155, newSchainId, tokenManagerERC11552, data);
balanceIds = await erc1155OnOriginChain.balanceOfBatch([user.address, user.address, user.address, user.address], ids);
balanceIdsNumber = [];
balanceIds.forEach((element) => {
- balanceIdsNumber.push(BigNumber.from(element).toNumber())
+ balanceIdsNumber.push(Number(element))
});
expect(balanceIdsNumber).to.deep.equal(amounts);
await tokenManagerERC1155
.connect(user)
- .exitToMainERC1155Batch(erc1155OnOriginChain.address, ids, amounts)
+ .exitToMainERC1155Batch(erc1155OnOriginChain, ids, amounts)
.should.be.eventually.rejectedWith("Main chain token could not be transfered to Mainnet");
await tokenManagerERC1155
.connect(user)
- .exitToMainERC1155Batch(erc1155OnTargetChain.address, ids, amounts)
+ .exitToMainERC1155Batch(erc1155OnTargetChain, ids, amounts)
.should.be.eventually.rejectedWith("Not allowed ERC1155 Token");
});
@@ -2320,7 +2315,7 @@ describe("TokenManagerERC1155", () => {
it("should transfer ERC1155 token through `postMessage` function with token info", async () => {
// preparation
const data = await messages.encodeTransferErc1155AndTokenInfoMessage(
- token.address,
+ token,
to,
id,
amount,
@@ -2329,38 +2324,38 @@ describe("TokenManagerERC1155", () => {
}
);
- await messageProxyForSchain.postMessage(tokenManagerERC1155.address, mainnetId, fakeDepositBox, data)
+ await messageProxyForSchain.postMessage(tokenManagerERC1155, mainnetId, fakeDepositBox, data)
.should.be.eventually.rejectedWith("Automatic deploy is disabled");
await tokenManagerERC1155.connect(schainOwner).enableAutomaticDeploy();
- await messageProxyForSchain.postMessage(tokenManagerERC1155.address, mainnetId, fakeDepositBox, data);
- const addressERC1155OnSchain = await tokenManagerERC1155.clonesErc1155(mainnetId, token.address);
+ await messageProxyForSchain.postMessage(tokenManagerERC1155, mainnetId, fakeDepositBox, data);
+ const addressERC1155OnSchain = await tokenManagerERC1155.clonesErc1155(mainnetId, token);
const erc1155OnChain = (await ethers.getContractFactory("ERC1155OnChain")).attach(addressERC1155OnSchain) as ERC1155OnChain;
- expect(BigNumber.from((await erc1155OnChain.functions.balanceOf(to, id))[0]).toNumber()).to.be.equal(amount);
+ expect(await erc1155OnChain.balanceOf(to, id)).to.be.equal(amount);
});
it("should transfer ERC1155 token on schain", async () => {
// preparation
- await tokenManagerERC1155.connect(schainOwner).addERC1155TokenByOwner(mainnetName, token.address, tokenClone.address);
- await tokenClone.connect(deployer).grantRole(await tokenClone.MINTER_ROLE(), tokenManagerERC1155.address);
+ await tokenManagerERC1155.connect(schainOwner).addERC1155TokenByOwner(mainnetName, token, tokenClone);
+ await tokenClone.connect(deployer).grantRole(await tokenClone.MINTER_ROLE(), tokenManagerERC1155);
const data = await messages.encodeTransferErc1155Message(
- token.address,
+ token,
to,
id,
amount
);
- await messageProxyForSchain.postMessage(tokenManagerERC1155.address, mainnetId, fakeDepositBox, data);
- const addressERC1155OnSchain = await tokenManagerERC1155.clonesErc1155(mainnetId, token.address);
+ await messageProxyForSchain.postMessage(tokenManagerERC1155, mainnetId, fakeDepositBox, data);
+ const addressERC1155OnSchain = await tokenManagerERC1155.clonesErc1155(mainnetId, token);
const erc1155OnChain = (await ethers.getContractFactory("ERC1155OnChain")).attach(addressERC1155OnSchain) as ERC1155OnChain;
- expect(BigNumber.from((await erc1155OnChain.functions.balanceOf(to, id))[0]).toNumber()).to.be.equal(amount);
+ expect(await erc1155OnChain.balanceOf(to, id)).to.be.equal(amount);
});
it("should transfer ERC1155 token batch through `postMessage` function with token info", async () => {
// preparation
const data = await messages.encodeTransferErc1155BatchAndTokenInfoMessage(
- token.address,
+ token,
to,
ids,
amounts,
@@ -2369,41 +2364,41 @@ describe("TokenManagerERC1155", () => {
}
);
- await messageProxyForSchain.postMessage(tokenManagerERC1155.address, mainnetId, fakeDepositBox, data)
+ await messageProxyForSchain.postMessage(tokenManagerERC1155, mainnetId, fakeDepositBox, data)
.should.be.eventually.rejectedWith("Automatic deploy is disabled");
await tokenManagerERC1155.connect(schainOwner).enableAutomaticDeploy();
- await messageProxyForSchain.postMessage(tokenManagerERC1155.address, mainnetId, fakeDepositBox, data);
- const addressERC1155OnSchain = await tokenManagerERC1155.clonesErc1155(mainnetId, token.address);
- const erc1155OnChain = await (await ethers.getContractFactory("ERC1155OnChain")).attach(addressERC1155OnSchain) as ERC1155OnChain;
+ await messageProxyForSchain.postMessage(tokenManagerERC1155, mainnetId, fakeDepositBox, data);
+ const addressERC1155OnSchain = await tokenManagerERC1155.clonesErc1155(mainnetId, token);
+ const erc1155OnChain = (await ethers.getContractFactory("ERC1155OnChain")).attach(addressERC1155OnSchain) as ERC1155OnChain;
const balanceIds = await erc1155OnChain.balanceOfBatch([to, to, to, to], ids);
const balanceIdsNumber: number[] = [];
balanceIds.forEach((element) => {
- balanceIdsNumber.push(BigNumber.from(element).toNumber())
+ balanceIdsNumber.push(Number(element))
});
expect(balanceIdsNumber).to.deep.equal(amounts);
});
it("should transfer ERC1155 token batch on schain", async () => {
// preparation
- await tokenManagerERC1155.connect(schainOwner).addERC1155TokenByOwner(mainnetName, token.address, tokenClone.address);
- await tokenClone.connect(deployer).grantRole(await tokenClone.MINTER_ROLE(), tokenManagerERC1155.address);
+ await tokenManagerERC1155.connect(schainOwner).addERC1155TokenByOwner(mainnetName, token, tokenClone);
+ await tokenClone.connect(deployer).grantRole(await tokenClone.MINTER_ROLE(), tokenManagerERC1155);
const data = await messages.encodeTransferErc1155BatchMessage(
- token.address,
+ token,
to,
ids,
amounts
);
- await messageProxyForSchain.postMessage(tokenManagerERC1155.address, mainnetId, fakeDepositBox, data);
- const addressERC1155OnSchain = await tokenManagerERC1155.clonesErc1155(mainnetId, token.address);
+ await messageProxyForSchain.postMessage(tokenManagerERC1155, mainnetId, fakeDepositBox, data);
+ const addressERC1155OnSchain = await tokenManagerERC1155.clonesErc1155(mainnetId, token);
const erc1155OnChain = (await ethers.getContractFactory("ERC1155OnChain")).attach(addressERC1155OnSchain) as ERC1155OnChain;
const balanceIds = await erc1155OnChain.balanceOfBatch([to, to, to, to], ids);
const balanceIdsNumber: number[] = [];
balanceIds.forEach((element) => {
- balanceIdsNumber.push(BigNumber.from(element).toNumber())
+ balanceIdsNumber.push(Number(element))
});
expect(balanceIdsNumber).to.deep.equal(amounts);
});
@@ -2413,7 +2408,7 @@ describe("TokenManagerERC1155", () => {
"000000000000000000000000a51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c0"+
"00000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8"+
"0000000000000000000000000000000000000000000000000000000000000001";
- await messageProxyForSchain.postMessage(tokenManagerERC1155.address, mainnetId, fakeDepositBox, data)
+ await messageProxyForSchain.postMessage(tokenManagerERC1155, mainnetId, fakeDepositBox, data)
.should.be.eventually.rejectedWith("MessageType is unknown");
});
diff --git a/test/TokenManagerERC20.ts b/test/TokenManagerERC20.ts
index dcf55fa3d..cb47f243b 100644
--- a/test/TokenManagerERC20.ts
+++ b/test/TokenManagerERC20.ts
@@ -24,7 +24,7 @@
*/
import chaiAsPromised from "chai-as-promised";
-import chai = require("chai");
+import chai from "chai";
import {
ERC20OnChain,
MessagesTester,
@@ -47,13 +47,11 @@ import { deployMessages } from "./utils/deploy/messages";
import { deployCommunityLocker } from "./utils/deploy/schain/communityLocker";
import { ethers } from "hardhat";
-import { SignerWithAddress } from "@nomiclabs/hardhat-ethers/dist/src/signer-with-address";
-import { BigNumber } from "ethers";
+import { SignerWithAddress } from "@nomicfoundation/hardhat-ethers/signers";
import { assert, expect } from "chai";
import { deployKeyStorageMock } from "./utils/deploy/test/keyStorageMock";
import { skipTime } from "./utils/time";
-import { stringKeccak256 } from "./utils/helper";
describe("TokenManagerERC20", () => {
let deployer: SignerWithAddress;
@@ -62,8 +60,8 @@ describe("TokenManagerERC20", () => {
const mainnetName = "Mainnet";
const schainName = "D2-chain";
- const schainId = stringKeccak256(schainName);
- const mainnetId = stringKeccak256("Mainnet");
+ const schainId = ethers.id(schainName);
+ const mainnetId = ethers.id("Mainnet");
let fakeDepositBox: string;
let fakeCommunityPool: string;
let erc20OnChain: ERC20OnChain;
@@ -84,21 +82,21 @@ describe("TokenManagerERC20", () => {
erc20OnChain = await deployERC20OnChain("ERC20OnChain", "ERC20");
erc20OnMainnet = await deployERC20OnChain("SKALE", "SKL");
messages = await deployMessages();
- fakeDepositBox = messages.address;
- fakeCommunityPool = messages.address;
+ fakeDepositBox = user.address;
+ fakeCommunityPool = user.address;
const keyStorage = await deployKeyStorageMock();
- messageProxyForSchain = await deployMessageProxyForSchainTester(keyStorage.address, schainName);
+ messageProxyForSchain = await deployMessageProxyForSchainTester(keyStorage, schainName);
tokenManagerLinker = await deployTokenManagerLinker(messageProxyForSchain, deployer.address);
- communityLocker = await deployCommunityLocker(schainName, messageProxyForSchain.address, tokenManagerLinker, fakeCommunityPool);
- tokenManagerErc20 = await deployTokenManagerERC20(schainName, messageProxyForSchain.address, tokenManagerLinker, communityLocker, fakeDepositBox);
- await erc20OnChain.connect(deployer).grantRole(await erc20OnChain.MINTER_ROLE(), tokenManagerErc20.address);
- await tokenManagerLinker.registerTokenManager(tokenManagerErc20.address);
+ communityLocker = await deployCommunityLocker(schainName, messageProxyForSchain, tokenManagerLinker, fakeCommunityPool);
+ tokenManagerErc20 = await deployTokenManagerERC20(schainName, messageProxyForSchain, tokenManagerLinker, communityLocker, fakeDepositBox);
+ await erc20OnChain.connect(deployer).grantRole(await erc20OnChain.MINTER_ROLE(), tokenManagerErc20);
+ await tokenManagerLinker.registerTokenManager(tokenManagerErc20);
await tokenManagerErc20.connect(deployer).grantRole(await tokenManagerErc20.TOKEN_REGISTRAR_ROLE(), schainOwner.address);
await tokenManagerErc20.connect(deployer).grantRole(await tokenManagerErc20.AUTOMATIC_DEPLOY_ROLE(), schainOwner.address);
const data = await messages.encodeActivateUserMessage(user.address);
- await messageProxyForSchain.postMessage(communityLocker.address, mainnetId, fakeCommunityPool, data);
+ await messageProxyForSchain.postMessage(communityLocker, mainnetId, fakeCommunityPool, data);
const extraContractRegistrarRole = await messageProxyForSchain.EXTRA_CONTRACT_REGISTRAR_ROLE();
await messageProxyForSchain.connect(deployer).grantRole(extraContractRegistrarRole, deployer.address);
@@ -130,49 +128,49 @@ describe("TokenManagerERC20", () => {
const symbol = "D2";
const totalSupply = 1e9;
- const data = await messages.encodeTransferErc20AndTokenInfoMessage(erc20OnMainnet.address, to, amount, totalSupply, { name, symbol, decimals: 18 });
- const data2 = await messages.encodeTransferErc20AndTokenInfoMessage(erc20OnMainnet.address, to, amount, totalSupply, { name, symbol, decimals: 18 });
+ const data = await messages.encodeTransferErc20AndTokenInfoMessage(erc20OnMainnet, to, amount, totalSupply, { name, symbol, decimals: 18 });
+ const data2 = await messages.encodeTransferErc20AndTokenInfoMessage(erc20OnMainnet, to, amount, totalSupply, { name, symbol, decimals: 18 });
await tokenManagerErc20.connect(schainOwner).enableAutomaticDeploy();
- await messageProxyForSchain.registerExtraContractForAll(tokenManagerErc20.address);
+ await messageProxyForSchain.registerExtraContractForAll(tokenManagerErc20);
// execution
- const res = await (await messageProxyForSchain.postMessage(tokenManagerErc20.address, mainnetId, fakeDepositBox, data)).wait();
+ const receipt = await (await messageProxyForSchain.postMessage(tokenManagerErc20, mainnetId, fakeDepositBox, data)).wait();
- let newAddress: string;
// TODO: use waffle
- if (!res.events) {
+
+ if (!receipt?.logs) {
assert("No events were emitted");
} else {
- newAddress = "0x" + res.events[res.events.length - 1].topics[3].slice(-40);
+ const newAddress = "0x" + receipt.logs[receipt.logs.length - 1].topics[3].slice(-40);
const newERC20Contract = (await ethers.getContractFactory("ERC20OnChain")).attach(newAddress) as ERC20OnChain;
- let balance = await newERC20Contract.functions.balanceOf(to);
+ let balance = await newERC20Contract.balanceOf(to);
parseInt(balance.toString(), 10).should.be.equal(amount);
// expectation
- await messageProxyForSchain.postMessage(tokenManagerErc20.address, mainnetId, fakeDepositBox, data2);
- balance = await newERC20Contract.functions.balanceOf(to);
+ await messageProxyForSchain.postMessage(tokenManagerErc20, mainnetId, fakeDepositBox, data2);
+ balance = await newERC20Contract.balanceOf(to);
parseInt(balance.toString(), 10).should.be.equal(amount * 2);
}
});
it("should reject with `Insufficient funds` if token balance is too low", async () => {
// preparation
- const error = "insufficient funds";
+ const error = "Insufficient funds";
const amount = 10;
// execution/expectation
- await tokenManagerErc20.connect(schainOwner).addERC20TokenByOwner(mainnetName, erc20OnMainnet.address, erc20OnChain.address);
+ await tokenManagerErc20.connect(schainOwner).addERC20TokenByOwner(mainnetName, erc20OnMainnet, erc20OnChain);
- await erc20OnChain.connect(user).approve(tokenManagerErc20.address, amount);
+ await erc20OnChain.connect(user).approve(tokenManagerErc20, amount);
await tokenManagerErc20
.connect(user)
- .exitToMainERC20(erc20OnMainnet.address, amount)
+ .exitToMainERC20(erc20OnMainnet, amount)
.should.be.eventually.rejectedWith(error);
});
it("should add token by owner", async () => {
// preparation
- const addressERC20 = erc20OnChain.address;
- const addressERC201 = erc20OnMainnet.address;
+ const addressERC20 = erc20OnChain;
+ const addressERC201 = erc20OnMainnet;
const automaticDeploy = await tokenManagerErc20.automaticDeploy();
await tokenManagerErc20.connect(schainOwner).addERC20TokenByOwner(mainnetName, addressERC201, addressERC20);
// automaticDeploy == true - enabled automaticDeploy = false - disabled
@@ -193,40 +191,36 @@ describe("TokenManagerERC20", () => {
await tokenManagerErc20.connect(schainOwner).disableAutomaticDeploy();
}
- await tokenManagerErc20.connect(schainOwner).addERC20TokenByOwner(mainnetName, eRC20OnMainnet2.address, eRC20OnChain2.address);
+ await tokenManagerErc20.connect(schainOwner).addERC20TokenByOwner(mainnetName, eRC20OnMainnet2, eRC20OnChain2);
- await tokenManagerErc20.connect(schainOwner).addERC20TokenByOwner(mainnetName, eRC20OnMainnet2.address, deployer.address)
+ await tokenManagerErc20.connect(schainOwner).addERC20TokenByOwner(mainnetName, eRC20OnMainnet2, deployer.address)
.should.be.eventually.rejectedWith("Given address is not a contract");
await eRC20OnChain2.mint(user.address, 1);
await eRC20OnChain3.mint(user.address, 1);
- await tokenManagerErc20.connect(schainOwner).addERC20TokenByOwner(mainnetName, eRC20OnMainnet3.address, addressERC20)
+ await tokenManagerErc20.connect(schainOwner).addERC20TokenByOwner(mainnetName, eRC20OnMainnet3, addressERC20)
.should.be.eventually.rejectedWith("Clone was already added");
- await tokenManagerErc20.connect(schainOwner).addERC20TokenByOwner(mainnetName, eRC20OnMainnet3.address, eRC20OnChain3.address)
+ await tokenManagerErc20.connect(schainOwner).addERC20TokenByOwner(mainnetName, eRC20OnMainnet3, eRC20OnChain3)
.should.be.eventually.rejectedWith("Total supply of a new token is not zero");
});
describe("when token added by owner", async () => {
- const mainnetChainHash = stringKeccak256(mainnetName);
- let erc20OnSchainTokenAddress: string;
- let erc20OnOriginChainTokenAddress: string;
+ const mainnetChainHash = ethers.id(mainnetName);
beforeEach(async () => {
- erc20OnSchainTokenAddress = erc20OnChain.address;
- erc20OnOriginChainTokenAddress = erc20OnMainnet.address;
- await tokenManagerErc20.connect(schainOwner).addERC20TokenByOwner(mainnetName, erc20OnOriginChainTokenAddress, erc20OnSchainTokenAddress);
+ await tokenManagerErc20.connect(schainOwner).addERC20TokenByOwner(mainnetName, erc20OnMainnet, erc20OnChain);
})
it("should successfully relink if new token was not minted", async () => {
const erc20OnSchainPostToken = await deployERC20OnChain("SchainPostToken", "SPT");
- await tokenManagerErc20.connect(schainOwner).addERC20TokenByOwner(mainnetName, erc20OnOriginChainTokenAddress, erc20OnSchainPostToken.address);
+ await tokenManagerErc20.connect(schainOwner).addERC20TokenByOwner(mainnetName, erc20OnMainnet, erc20OnSchainPostToken);
- await tokenManagerErc20.clonesErc20(mainnetChainHash, erc20OnOriginChainTokenAddress).should.be.eventually.equal(erc20OnSchainPostToken.address);
- await tokenManagerErc20.addedClones(erc20OnSchainPostToken.address).should.be.eventually.equal(true);
+ await tokenManagerErc20.clonesErc20(mainnetChainHash, erc20OnMainnet).should.be.eventually.equal(erc20OnSchainPostToken);
+ await tokenManagerErc20.addedClones(erc20OnSchainPostToken).should.be.eventually.equal(true);
});
it("should successfully relink if previous token on target chain was minted and then fully burned before relinking to new", async () => {
@@ -234,17 +228,17 @@ describe("TokenManagerERC20", () => {
await erc20OnChain.connect(user).burn(1);
const erc20OnSchainPostToken = await deployERC20OnChain("SchainPostToken", "SPT");
- await tokenManagerErc20.connect(schainOwner).addERC20TokenByOwner(mainnetName, erc20OnOriginChainTokenAddress, erc20OnSchainPostToken.address);
+ await tokenManagerErc20.connect(schainOwner).addERC20TokenByOwner(mainnetName, erc20OnMainnet, erc20OnSchainPostToken);
- await tokenManagerErc20.clonesErc20(mainnetChainHash, erc20OnOriginChainTokenAddress).should.be.eventually.equal(erc20OnSchainPostToken.address);
- await tokenManagerErc20.addedClones(erc20OnSchainPostToken.address).should.be.eventually.equal(true);
+ await tokenManagerErc20.clonesErc20(mainnetChainHash, erc20OnMainnet).should.be.eventually.equal(erc20OnSchainPostToken);
+ await tokenManagerErc20.addedClones(erc20OnSchainPostToken).should.be.eventually.equal(true);
});
it("should reject new relinking if previous token was already minted", async () => {
await erc20OnChain.mint(user.address, 1);
const erc20OnSchainPostToken = await deployERC20OnChain("SchainPostToken", "SPT");
- await tokenManagerErc20.connect(schainOwner).addERC20TokenByOwner(mainnetName, erc20OnOriginChainTokenAddress, erc20OnSchainPostToken.address)
+ await tokenManagerErc20.connect(schainOwner).addERC20TokenByOwner(mainnetName, erc20OnMainnet, erc20OnSchainPostToken)
.should.be.eventually.rejectedWith("Total supply of a previous token is not zero")
});
@@ -253,36 +247,36 @@ describe("TokenManagerERC20", () => {
it("should reject with `Transfer is not approved by token holder` when invoke `exitToMainERC20`", async () => {
const error = "Transfer is not approved by token holder";
const amount = 20;
- await tokenManagerErc20.connect(schainOwner).addERC20TokenByOwner(mainnetName, erc20OnMainnet.address, erc20OnChain.address);
+ await tokenManagerErc20.connect(schainOwner).addERC20TokenByOwner(mainnetName, erc20OnMainnet, erc20OnChain);
// invoke `grantRole` before `sendERC20` to avoid `MinterRole: caller does not have the Minter role` exception
const minterRole = await erc20OnChain.MINTER_ROLE();
await erc20OnChain.mint(user.address, amount * 2);
- await erc20OnChain.connect(deployer).grantRole(minterRole, tokenManagerErc20.address);
+ await erc20OnChain.connect(deployer).grantRole(minterRole, tokenManagerErc20);
//
- await erc20OnChain.connect(user).approve(tokenManagerErc20.address, amount / 2);
+ await erc20OnChain.connect(user).approve(tokenManagerErc20, amount / 2);
// execution/expectation
- await tokenManagerErc20.connect(user).exitToMainERC20(erc20OnMainnet.address, amount)
+ await tokenManagerErc20.connect(user).exitToMainERC20(erc20OnMainnet, amount)
.should.be.eventually.rejectedWith(error);
});
it("should invoke `exitToMainERC20` without mistakes", async () => {
const amountMint = "10000000000000000";
const amountReduceCost = "8000000000000000";
- await messageProxyForSchain.registerExtraContract("Mainnet", tokenManagerErc20.address);
- await tokenManagerErc20.connect(schainOwner).addERC20TokenByOwner(mainnetName, erc20OnMainnet.address, erc20OnChain.address);
+ await messageProxyForSchain.registerExtraContract("Mainnet", tokenManagerErc20);
+ await tokenManagerErc20.connect(schainOwner).addERC20TokenByOwner(mainnetName, erc20OnMainnet, erc20OnChain);
await erc20OnChain.connect(deployer).mint(user.address, amountMint);
- await erc20OnChain.connect(user).approve(tokenManagerErc20.address, amountMint);
+ await erc20OnChain.connect(user).approve(tokenManagerErc20, amountMint);
// execution:
await tokenManagerErc20
.connect(user)
- .exitToMainERC20(erc20OnMainnet.address, amountReduceCost);
+ .exitToMainERC20(erc20OnMainnet, amountReduceCost);
// // expectation:
- const outgoingMessagesCounterMainnet = BigNumber.from(await messageProxyForSchain.getOutgoingMessagesCounter("Mainnet"));
- outgoingMessagesCounterMainnet.should.be.deep.equal(BigNumber.from(1));
+ const outgoingMessagesCounterMainnet = await messageProxyForSchain.getOutgoingMessagesCounter("Mainnet");
+ outgoingMessagesCounterMainnet.should.be.equal(1);
});
describe("tests for transferToSchainERC20", async () => {
@@ -294,1064 +288,1068 @@ describe("TokenManagerERC20", () => {
let tokenManagerErc202: TokenManagerERC20;
let communityLocker2: CommunityLocker;
const newSchainName = "NewChain";
- const newSchainId = stringKeccak256(newSchainName);
+ const newSchainId = ethers.id(newSchainName);
beforeEach(async () => {
erc20OnOriginChain = await deployERC20OnChain("NewToken", "NTN");
erc20OnTargetChain = await deployERC20OnChain("NewToke1n", "NTN1");
const keyStorage2 = await deployKeyStorageMock();
- messageProxyForSchain2 = await deployMessageProxyForSchainTester(keyStorage2.address, newSchainName);
+ messageProxyForSchain2 = await deployMessageProxyForSchainTester(keyStorage2, newSchainName);
tokenManagerLinker2 = await deployTokenManagerLinker(messageProxyForSchain2, deployer.address);
- communityLocker2 = await deployCommunityLocker(newSchainName, messageProxyForSchain2.address, tokenManagerLinker2, fakeCommunityPool);
- tokenManagerErc202 = await deployTokenManagerERC20(newSchainName, messageProxyForSchain2.address, tokenManagerLinker2, communityLocker2, fakeDepositBox);
- await erc20OnTargetChain.connect(deployer).grantRole(await erc20OnTargetChain.MINTER_ROLE(), tokenManagerErc202.address);
- await tokenManagerLinker2.registerTokenManager(tokenManagerErc202.address);
+ communityLocker2 = await deployCommunityLocker(newSchainName, messageProxyForSchain2, tokenManagerLinker2, fakeCommunityPool);
+ tokenManagerErc202 = await deployTokenManagerERC20(newSchainName, messageProxyForSchain2, tokenManagerLinker2, communityLocker2, fakeDepositBox);
+ await erc20OnTargetChain.connect(deployer).grantRole(await erc20OnTargetChain.MINTER_ROLE(), tokenManagerErc202);
+ await tokenManagerLinker2.registerTokenManager(tokenManagerErc202);
});
it("should invoke `transferToSchainERC20` without mistakes", async () => {
const amount = "20000000000000000";
- await messageProxyForSchain.registerExtraContract(newSchainName, tokenManagerErc20.address);
+ await messageProxyForSchain.registerExtraContract(newSchainName, tokenManagerErc20);
// add connected chain:
await messageProxyForSchain.connect(deployer).grantRole(await messageProxyForSchain.CHAIN_CONNECTOR_ROLE(), deployer.address);
await messageProxyForSchain.connect(deployer).addConnectedChain(newSchainName);
await erc20OnOriginChain.connect(deployer).mint(user.address, amount);
- await erc20OnOriginChain.connect(user).approve(tokenManagerErc20.address, amount);
+ await erc20OnOriginChain.connect(user).approve(tokenManagerErc20, amount);
await tokenManagerErc20
.connect(user)
- .transferToSchainERC20(newSchainName, erc20OnOriginChain.address, amount)
+ .transferToSchainERC20(newSchainName, erc20OnOriginChain, amount)
.should.be.eventually.rejectedWith("Incorrect Token Manager address");
await tokenManagerErc20
.connect(user)
- .transferToSchainERC20("Mainnet", erc20OnOriginChain.address, amount)
+ .transferToSchainERC20("Mainnet", erc20OnOriginChain, amount)
.should.be.eventually.rejectedWith("This function is not for transferring to Mainnet");
- await tokenManagerErc20.addTokenManager(newSchainName, tokenManagerErc202.address);
+ await tokenManagerErc20.addTokenManager(newSchainName, tokenManagerErc202);
// execution:
await tokenManagerErc20
.connect(user)
- .transferToSchainERC20(newSchainName, erc20OnOriginChain.address, amount);
+ .transferToSchainERC20(newSchainName, erc20OnOriginChain, amount);
// expectation:
- const outgoingMessagesCounter = BigNumber.from(
- await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName));
- outgoingMessagesCounter.should.be.deep.equal(BigNumber.from(1));
+ const outgoingMessagesCounter = await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName);
+ outgoingMessagesCounter.should.be.equal(1);
});
it("should reject `transferToSchainERC20` when executing earlier than allowed", async () => {
const amount = "20000000000000000";
- await messageProxyForSchain.registerExtraContract(newSchainName, tokenManagerErc20.address);
+ await messageProxyForSchain.registerExtraContract(newSchainName, tokenManagerErc20);
// add connected chain:
await messageProxyForSchain.connect(deployer).grantRole(await messageProxyForSchain.CHAIN_CONNECTOR_ROLE(), deployer.address);
await messageProxyForSchain.connect(deployer).addConnectedChain(newSchainName);
await erc20OnOriginChain.connect(deployer).mint(user.address, amount);
- await erc20OnOriginChain.connect(user).approve(tokenManagerErc20.address, amount);
+ await erc20OnOriginChain.connect(user).approve(tokenManagerErc20, amount);
await tokenManagerErc20
.connect(user)
- .transferToSchainERC20(newSchainName, erc20OnOriginChain.address, amount)
+ .transferToSchainERC20(newSchainName, erc20OnOriginChain, amount)
.should.be.eventually.rejectedWith("Incorrect Token Manager address");
await tokenManagerErc20
.connect(user)
- .transferToSchainERC20("Mainnet", erc20OnOriginChain.address, amount)
+ .transferToSchainERC20("Mainnet", erc20OnOriginChain, amount)
.should.be.eventually.rejectedWith("This function is not for transferring to Mainnet");
- await tokenManagerErc20.addTokenManager(newSchainName, tokenManagerErc202.address);
+ await tokenManagerErc20.addTokenManager(newSchainName, tokenManagerErc202);
await tokenManagerErc20
.connect(user)
- .transferToSchainERC20(newSchainName, erc20OnOriginChain.address, amount);
+ .transferToSchainERC20(newSchainName, erc20OnOriginChain, amount);
- BigNumber.from(await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName)).should.be.deep.equal(BigNumber.from(1));
+ (await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName)).should.be.equal(1);
await erc20OnOriginChain.connect(deployer).mint(user.address, amount);
- await erc20OnOriginChain.connect(user).approve(tokenManagerErc20.address, amount);
+ await erc20OnOriginChain.connect(user).approve(tokenManagerErc20, amount);
await tokenManagerErc20
.connect(user)
- .transferToSchainERC20(newSchainName, erc20OnOriginChain.address, amount);
+ .transferToSchainERC20(newSchainName, erc20OnOriginChain, amount);
- BigNumber.from(await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName)).should.be.deep.equal(BigNumber.from(2));
+ (await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName)).should.be.equal(2);
await communityLocker.grantRole(await communityLocker.CONSTANT_SETTER_ROLE(), deployer.address);
await communityLocker.setTimeLimitPerMessage(newSchainName, 100);
await erc20OnOriginChain.connect(deployer).mint(user.address, amount);
- await erc20OnOriginChain.connect(user).approve(tokenManagerErc20.address, amount);
+ await erc20OnOriginChain.connect(user).approve(tokenManagerErc20, amount);
await tokenManagerErc20
.connect(user)
- .transferToSchainERC20(newSchainName, erc20OnOriginChain.address, amount)
+ .transferToSchainERC20(newSchainName, erc20OnOriginChain, amount)
.should.be.eventually.rejectedWith("Exceeded message rate limit");
- BigNumber.from(await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName)).should.be.deep.equal(BigNumber.from(2));
+ (await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName)).should.be.equal(2);
await skipTime(90);
await tokenManagerErc20
.connect(user)
- .transferToSchainERC20(newSchainName, erc20OnOriginChain.address, amount)
+ .transferToSchainERC20(newSchainName, erc20OnOriginChain, amount)
.should.be.eventually.rejectedWith("Exceeded message rate limit");
- BigNumber.from(await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName)).should.be.deep.equal(BigNumber.from(2));
+ (await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName)).should.be.equal(2);
await skipTime(20);
await tokenManagerErc20
.connect(user)
- .transferToSchainERC20(newSchainName, erc20OnOriginChain.address, amount);
+ .transferToSchainERC20(newSchainName, erc20OnOriginChain, amount);
- BigNumber.from(await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName)).should.be.deep.equal(BigNumber.from(3));
+ (await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName)).should.be.equal(3);
await communityLocker.setTimeLimitPerMessage(newSchainName, 0);
await erc20OnOriginChain.connect(deployer).mint(user.address, amount);
- await erc20OnOriginChain.connect(user).approve(tokenManagerErc20.address, amount);
+ await erc20OnOriginChain.connect(user).approve(tokenManagerErc20, amount);
await tokenManagerErc20
.connect(user)
- .transferToSchainERC20(newSchainName, erc20OnOriginChain.address, amount);
+ .transferToSchainERC20(newSchainName, erc20OnOriginChain, amount);
- BigNumber.from(await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName)).should.be.deep.equal(BigNumber.from(4));
+ (await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName)).should.be.equal(4);
await communityLocker.setTimeLimitPerMessage(newSchainName, 100);
await erc20OnOriginChain.connect(deployer).mint(user.address, amount);
- await erc20OnOriginChain.connect(user).approve(tokenManagerErc20.address, amount);
+ await erc20OnOriginChain.connect(user).approve(tokenManagerErc20, amount);
await tokenManagerErc20
.connect(user)
- .transferToSchainERC20(newSchainName, erc20OnOriginChain.address, amount)
+ .transferToSchainERC20(newSchainName, erc20OnOriginChain, amount)
.should.be.eventually.rejectedWith("Exceeded message rate limit");
- BigNumber.from(await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName)).should.be.deep.equal(BigNumber.from(4));
+ (await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName)).should.be.equal(4);
await skipTime(110);
await tokenManagerErc20
.connect(user)
- .transferToSchainERC20(newSchainName, erc20OnOriginChain.address, amount);
+ .transferToSchainERC20(newSchainName, erc20OnOriginChain, amount);
- BigNumber.from(await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName)).should.be.deep.equal(BigNumber.from(5));
+ (await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName)).should.be.equal(5);
});
it("should invoke `transferToSchainERC20` and receive tokens without mistakes", async () => {
const amount = "20000000000000000";
- await messageProxyForSchain.registerExtraContract(newSchainName, tokenManagerErc20.address);
+ await messageProxyForSchain.registerExtraContract(newSchainName, tokenManagerErc20);
// add connected chain:
await messageProxyForSchain.connect(deployer).grantRole(await messageProxyForSchain.CHAIN_CONNECTOR_ROLE(), deployer.address);
await messageProxyForSchain.connect(deployer).addConnectedChain(newSchainName);
await erc20OnOriginChain.connect(deployer).mint(user.address, amount);
- await erc20OnOriginChain.connect(user).approve(tokenManagerErc20.address, amount);
+ await erc20OnOriginChain.connect(user).approve(tokenManagerErc20, amount);
await tokenManagerErc20
.connect(user)
- .transferToSchainERC20(newSchainName, erc20OnOriginChain.address, amount)
+ .transferToSchainERC20(newSchainName, erc20OnOriginChain, amount)
.should.be.eventually.rejectedWith("Incorrect Token Manager address");
await tokenManagerErc20
.connect(user)
- .transferToSchainERC20("Mainnet", erc20OnOriginChain.address, amount)
+ .transferToSchainERC20("Mainnet", erc20OnOriginChain, amount)
.should.be.eventually.rejectedWith("This function is not for transferring to Mainnet");
- await tokenManagerErc20.addTokenManager(newSchainName, tokenManagerErc202.address);
+ await tokenManagerErc20.addTokenManager(newSchainName, tokenManagerErc202);
// execution:
await tokenManagerErc20
.connect(user)
- .transferToSchainERC20(newSchainName, erc20OnOriginChain.address, amount);
+ .transferToSchainERC20(newSchainName, erc20OnOriginChain, amount);
const data = await messages.encodeTransferErc20AndTokenInfoMessage(
- erc20OnOriginChain.address,
+ erc20OnOriginChain,
user.address,
amount,
(await erc20OnOriginChain.totalSupply()).toString(),
{
name: await erc20OnOriginChain.name(),
symbol: await erc20OnOriginChain.symbol(),
- decimals: BigNumber.from(await erc20OnOriginChain.decimals()).toString()
+ decimals: await erc20OnOriginChain.decimals()
}
);
// expectation:
- const outgoingMessagesCounter = BigNumber.from(
- await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName));
- outgoingMessagesCounter.should.be.deep.equal(BigNumber.from(1));
+ const outgoingMessagesCounter = await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName);
+ outgoingMessagesCounter.should.be.equal(1);
// receive:
// registration:
await messageProxyForSchain2.connect(deployer).addConnectedChain(schainName);
- await tokenManagerErc202.addTokenManager(schainName, tokenManagerErc20.address);
+ await tokenManagerErc202.addTokenManager(schainName, tokenManagerErc20);
- await messageProxyForSchain2.postMessage(tokenManagerErc202.address, schainId, tokenManagerErc20.address, data).should.be.eventually.rejectedWith("Automatic deploy is disabled");
+ await messageProxyForSchain2
+ .postMessage(tokenManagerErc202, schainId, tokenManagerErc20, data)
+ .should.be.eventually.rejectedWith("Automatic deploy is disabled");
await tokenManagerErc202.enableAutomaticDeploy();
- await messageProxyForSchain2.registerExtraContractForAll(tokenManagerErc202.address);
+ await messageProxyForSchain2.registerExtraContractForAll(tokenManagerErc202);
- await messageProxyForSchain2.postMessage(tokenManagerErc202.address, schainId, tokenManagerErc20.address, data);
+ await messageProxyForSchain2.postMessage(tokenManagerErc202, schainId, tokenManagerErc20, data);
- const addressERC20OnSchain = await tokenManagerErc202.clonesErc20(schainId, erc20OnOriginChain.address);
+ const addressERC20OnSchain = await tokenManagerErc202.clonesErc20(schainId, erc20OnOriginChain);
const targetErc20OnChain = (await ethers.getContractFactory("ERC20OnChain")).attach(addressERC20OnSchain) as ERC20OnChain;
- expect((await targetErc20OnChain.functions.balanceOf(user.address)).toString()).to.be.equal(amount);
+ expect((await targetErc20OnChain.balanceOf(user.address)).toString()).to.be.equal(amount);
});
it("should invoke `transferToSchainERC20` and receive tokens without mistakes back and forward twice", async () => {
const amount = "20000000000000000";
- await messageProxyForSchain.registerExtraContract(newSchainName, tokenManagerErc20.address);
- await messageProxyForSchain2.registerExtraContractForAll(tokenManagerErc202.address);
+ await messageProxyForSchain.registerExtraContract(newSchainName, tokenManagerErc20);
+ await messageProxyForSchain2.registerExtraContractForAll(tokenManagerErc202);
// add connected chain:
await messageProxyForSchain.connect(deployer).grantRole(await messageProxyForSchain.CHAIN_CONNECTOR_ROLE(), deployer.address);
await messageProxyForSchain.connect(deployer).addConnectedChain(newSchainName);
await erc20OnOriginChain.connect(deployer).mint(user.address, amount);
- await erc20OnOriginChain.connect(user).approve(tokenManagerErc20.address, amount);
+ await erc20OnOriginChain.connect(user).approve(tokenManagerErc20, amount);
await tokenManagerErc20
.connect(user)
- .transferToSchainERC20(newSchainName, erc20OnOriginChain.address, amount)
+ .transferToSchainERC20(newSchainName, erc20OnOriginChain, amount)
.should.be.eventually.rejectedWith("Incorrect Token Manager address");
await tokenManagerErc20
.connect(user)
- .transferToSchainERC20("Mainnet", erc20OnOriginChain.address, amount)
+ .transferToSchainERC20("Mainnet", erc20OnOriginChain, amount)
.should.be.eventually.rejectedWith("This function is not for transferring to Mainnet");
- await tokenManagerErc20.addTokenManager(newSchainName, tokenManagerErc202.address);
+ await tokenManagerErc20.addTokenManager(newSchainName, tokenManagerErc202);
// execution:
await tokenManagerErc20
.connect(user)
- .transferToSchainERC20(newSchainName, erc20OnOriginChain.address, amount);
+ .transferToSchainERC20(newSchainName, erc20OnOriginChain, amount);
let data = await messages.encodeTransferErc20AndTokenInfoMessage(
- erc20OnOriginChain.address,
+ erc20OnOriginChain,
user.address,
amount,
(await erc20OnOriginChain.totalSupply()).toString(),
{
name: await erc20OnOriginChain.name(),
symbol: await erc20OnOriginChain.symbol(),
- decimals: BigNumber.from(await erc20OnOriginChain.decimals()).toString()
+ decimals: await erc20OnOriginChain.decimals()
}
);
// expectation:
- const outgoingMessagesCounter = BigNumber.from(
- await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName));
- outgoingMessagesCounter.should.be.deep.equal(BigNumber.from(1));
+ const outgoingMessagesCounter = await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName);
+ outgoingMessagesCounter.should.be.equal(1);
// receive:
// registration:
await messageProxyForSchain2.connect(deployer).addConnectedChain(schainName);
- await tokenManagerErc202.addTokenManager(schainName, tokenManagerErc20.address);
+ await tokenManagerErc202.addTokenManager(schainName, tokenManagerErc20);
- await messageProxyForSchain2.postMessage(tokenManagerErc202.address, schainId, tokenManagerErc20.address, data).should.be.eventually.rejectedWith("Automatic deploy is disabled");
+ await messageProxyForSchain2
+ .postMessage(tokenManagerErc202, schainId, tokenManagerErc20, data)
+ .should.be.eventually.rejectedWith("Automatic deploy is disabled");
await tokenManagerErc202.enableAutomaticDeploy();
- await messageProxyForSchain2.postMessage(tokenManagerErc202.address, schainId, tokenManagerErc20.address, data);
+ await messageProxyForSchain2.postMessage(tokenManagerErc202, schainId, tokenManagerErc20, data);
- const addressERC20OnSchain = await tokenManagerErc202.clonesErc20(schainId, erc20OnOriginChain.address);
+ const addressERC20OnSchain = await tokenManagerErc202.clonesErc20(schainId, erc20OnOriginChain);
const targetErc20OnChain = (await ethers.getContractFactory("ERC20OnChain")).attach(addressERC20OnSchain) as ERC20OnChain;
- expect((await targetErc20OnChain.functions.balanceOf(user.address)).toString()).to.be.equal(amount);
+ expect((await targetErc20OnChain.balanceOf(user.address)).toString()).to.be.equal(amount);
const amount2 = "50000000000000000";
await erc20OnOriginChain.connect(deployer).mint(user.address, amount2);
- await erc20OnOriginChain.connect(user).approve(tokenManagerErc20.address, amount2);
+ await erc20OnOriginChain.connect(user).approve(tokenManagerErc20, amount2);
await tokenManagerErc20
.connect(user)
- .transferToSchainERC20(newSchainName, erc20OnOriginChain.address, amount2);
+ .transferToSchainERC20(newSchainName, erc20OnOriginChain, amount2);
data = await messages.encodeTransferErc20AndTotalSupplyMessage(
- erc20OnOriginChain.address,
+ erc20OnOriginChain,
user.address,
amount2,
(await erc20OnOriginChain.totalSupply()).toString()
);
- await messageProxyForSchain2.postMessage(tokenManagerErc202.address, schainId, tokenManagerErc20.address, data);
+ await messageProxyForSchain2.postMessage(tokenManagerErc202, schainId, tokenManagerErc20, data);
const amountSum = "70000000000000000";
- expect((await targetErc20OnChain.functions.balanceOf(user.address)).toString()).to.be.equal(amountSum);
+ expect((await targetErc20OnChain.balanceOf(user.address)).toString()).to.be.equal(amountSum);
});
it("should invoke `transferToSchainERC20` and receive tokens without mistakes double with attached token", async () => {
const amount = "20000000000000000";
- await messageProxyForSchain.registerExtraContract(newSchainName, tokenManagerErc20.address);
- await messageProxyForSchain2.registerExtraContractForAll(tokenManagerErc202.address);
+ await messageProxyForSchain.registerExtraContract(newSchainName, tokenManagerErc20);
+ await messageProxyForSchain2.registerExtraContractForAll(tokenManagerErc202);
// add connected chain:
await messageProxyForSchain.connect(deployer).grantRole(await messageProxyForSchain.CHAIN_CONNECTOR_ROLE(), deployer.address);
await messageProxyForSchain.connect(deployer).addConnectedChain(newSchainName);
await erc20OnOriginChain.connect(deployer).mint(user.address, amount);
- await erc20OnOriginChain.connect(user).approve(tokenManagerErc20.address, amount);
+ await erc20OnOriginChain.connect(user).approve(tokenManagerErc20, amount);
await tokenManagerErc20
.connect(user)
- .transferToSchainERC20(newSchainName, erc20OnOriginChain.address, amount)
+ .transferToSchainERC20(newSchainName, erc20OnOriginChain, amount)
.should.be.eventually.rejectedWith("Incorrect Token Manager address");
await tokenManagerErc20
.connect(user)
- .transferToSchainERC20("Mainnet", erc20OnOriginChain.address, amount)
+ .transferToSchainERC20("Mainnet", erc20OnOriginChain, amount)
.should.be.eventually.rejectedWith("This function is not for transferring to Mainnet");
- await tokenManagerErc20.addTokenManager(newSchainName, tokenManagerErc202.address);
+ await tokenManagerErc20.addTokenManager(newSchainName, tokenManagerErc202);
// execution:
await tokenManagerErc20
.connect(user)
- .transferToSchainERC20(newSchainName, erc20OnOriginChain.address, amount);
+ .transferToSchainERC20(newSchainName, erc20OnOriginChain, amount);
let data = await messages.encodeTransferErc20AndTokenInfoMessage(
- erc20OnOriginChain.address,
+ erc20OnOriginChain,
user.address,
amount,
(await erc20OnOriginChain.totalSupply()).toString(),
{
name: await erc20OnOriginChain.name(),
symbol: await erc20OnOriginChain.symbol(),
- decimals: BigNumber.from(await erc20OnOriginChain.decimals()).toString()
+ decimals: await erc20OnOriginChain.decimals()
}
);
// expectation:
- const outgoingMessagesCounter = BigNumber.from(
- await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName));
- outgoingMessagesCounter.should.be.deep.equal(BigNumber.from(1));
+ const outgoingMessagesCounter = await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName);
+ outgoingMessagesCounter.should.be.equal(1);
// receive:
// registration:
- await tokenManagerErc202.connect(schainOwner).addERC20TokenByOwner(schainName, erc20OnOriginChain.address, erc20OnTargetChain.address).should.be.eventually.rejectedWith("TOKEN_REGISTRAR_ROLE is required");
+ await tokenManagerErc202
+ .connect(schainOwner)
+ .addERC20TokenByOwner(schainName, erc20OnOriginChain, erc20OnTargetChain)
+ .should.be.eventually.rejectedWith("TOKEN_REGISTRAR_ROLE is required");
await tokenManagerErc202.connect(deployer).grantRole(await tokenManagerErc202.TOKEN_REGISTRAR_ROLE(), schainOwner.address);
- await tokenManagerErc202.connect(schainOwner).addERC20TokenByOwner(schainName, erc20OnOriginChain.address, erc20OnTargetChain.address).should.be.eventually.rejectedWith("Chain is not connected");
+ await tokenManagerErc202
+ .connect(schainOwner)
+ .addERC20TokenByOwner(schainName, erc20OnOriginChain, erc20OnTargetChain)
+ .should.be.eventually.rejectedWith("Chain is not connected");
await messageProxyForSchain2.connect(deployer).addConnectedChain(schainName);
- await tokenManagerErc202.connect(schainOwner).addERC20TokenByOwner(schainName, erc20OnOriginChain.address, erc20OnTargetChain.address);
- await tokenManagerErc202.addTokenManager(schainName, tokenManagerErc20.address);
+ await tokenManagerErc202
+ .connect(schainOwner)
+ .addERC20TokenByOwner(schainName, erc20OnOriginChain, erc20OnTargetChain);
+ await tokenManagerErc202.addTokenManager(schainName, tokenManagerErc20);
- await messageProxyForSchain2.postMessage(tokenManagerErc202.address, schainId, tokenManagerErc20.address, data);
+ await messageProxyForSchain2.postMessage(tokenManagerErc202, schainId, tokenManagerErc20, data);
- expect((await erc20OnTargetChain.functions.balanceOf(user.address)).toString()).to.be.equal(amount);
+ expect((await erc20OnTargetChain.balanceOf(user.address)).toString()).to.be.equal(amount);
const amount2 = "50000000000000000";
await erc20OnOriginChain.connect(deployer).mint(user.address, amount2);
- await erc20OnOriginChain.connect(user).approve(tokenManagerErc20.address, amount2);
+ await erc20OnOriginChain.connect(user).approve(tokenManagerErc20, amount2);
await tokenManagerErc20
.connect(user)
- .transferToSchainERC20(newSchainName, erc20OnOriginChain.address, amount2);
+ .transferToSchainERC20(newSchainName, erc20OnOriginChain, amount2);
data = await messages.encodeTransferErc20AndTotalSupplyMessage(
- erc20OnOriginChain.address,
+ erc20OnOriginChain,
user.address,
amount2,
(await erc20OnOriginChain.totalSupply()).toString()
);
- await messageProxyForSchain2.postMessage(tokenManagerErc202.address, schainId, tokenManagerErc20.address, data);
+ await messageProxyForSchain2.postMessage(tokenManagerErc202, schainId, tokenManagerErc20, data);
const amountSum = "70000000000000000";
- expect((await erc20OnTargetChain.functions.balanceOf(user.address)).toString()).to.be.equal(amountSum);
+ expect((await erc20OnTargetChain.balanceOf(user.address)).toString()).to.be.equal(amountSum);
});
it("should invoke `transferToSchainERC20` and transfer back without mistakes", async () => {
const amount = "20000000000000000";
- await messageProxyForSchain.registerExtraContractForAll(tokenManagerErc20.address);
- await messageProxyForSchain2.registerExtraContractForAll(tokenManagerErc202.address);
+ await messageProxyForSchain.registerExtraContractForAll(tokenManagerErc20);
+ await messageProxyForSchain2.registerExtraContractForAll(tokenManagerErc202);
// add connected chain:
await messageProxyForSchain.connect(deployer).grantRole(await messageProxyForSchain.CHAIN_CONNECTOR_ROLE(), deployer.address);
await messageProxyForSchain.connect(deployer).addConnectedChain(newSchainName);
await erc20OnOriginChain.connect(deployer).mint(user.address, amount);
- await erc20OnOriginChain.connect(user).approve(tokenManagerErc20.address, amount);
+ await erc20OnOriginChain.connect(user).approve(tokenManagerErc20, amount);
await tokenManagerErc20
.connect(user)
- .transferToSchainERC20(newSchainName, erc20OnOriginChain.address, amount)
+ .transferToSchainERC20(newSchainName, erc20OnOriginChain, amount)
.should.be.eventually.rejectedWith("Incorrect Token Manager address");
await tokenManagerErc20
.connect(user)
- .transferToSchainERC20("Mainnet", erc20OnOriginChain.address, amount)
+ .transferToSchainERC20("Mainnet", erc20OnOriginChain, amount)
.should.be.eventually.rejectedWith("This function is not for transferring to Mainnet");
- await tokenManagerErc20.addTokenManager(newSchainName, tokenManagerErc202.address);
+ await tokenManagerErc20.addTokenManager(newSchainName, tokenManagerErc202);
// execution:
await tokenManagerErc20
.connect(user)
- .transferToSchainERC20(newSchainName, erc20OnOriginChain.address, amount);
+ .transferToSchainERC20(newSchainName, erc20OnOriginChain, amount);
let data = await messages.encodeTransferErc20AndTokenInfoMessage(
- erc20OnOriginChain.address,
+ erc20OnOriginChain,
user.address,
amount,
(await erc20OnOriginChain.totalSupply()).toString(),
{
name: await erc20OnOriginChain.name(),
symbol: await erc20OnOriginChain.symbol(),
- decimals: BigNumber.from(await erc20OnOriginChain.decimals()).toString()
+ decimals: await erc20OnOriginChain.decimals()
}
);
// expectation:
- const outgoingMessagesCounter = BigNumber.from(
- await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName));
- outgoingMessagesCounter.should.be.deep.equal(BigNumber.from(1));
+ const outgoingMessagesCounter = await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName);
+ outgoingMessagesCounter.should.be.equal(1);
// receive:
// registration:
await messageProxyForSchain2.connect(deployer).addConnectedChain(schainName);
- await tokenManagerErc202.addTokenManager(schainName, tokenManagerErc20.address);
+ await tokenManagerErc202.addTokenManager(schainName, tokenManagerErc20);
- await messageProxyForSchain2.postMessage(tokenManagerErc202.address, schainId, tokenManagerErc20.address, data).should.be.eventually.rejectedWith("Automatic deploy is disabled");
+ await messageProxyForSchain2
+ .postMessage(tokenManagerErc202, schainId, tokenManagerErc20, data)
+ .should.be.eventually.rejectedWith("Automatic deploy is disabled");
await tokenManagerErc202.enableAutomaticDeploy();
- await messageProxyForSchain2.postMessage(tokenManagerErc202.address, schainId, tokenManagerErc20.address, data);
+ await messageProxyForSchain2.postMessage(tokenManagerErc202, schainId, tokenManagerErc20, data);
- const addressERC20OnSchain = await tokenManagerErc202.clonesErc20(schainId, erc20OnOriginChain.address);
+ const addressERC20OnSchain = await tokenManagerErc202.clonesErc20(schainId, erc20OnOriginChain);
const targetErc20OnChain = (await ethers.getContractFactory("ERC20OnChain")).attach(addressERC20OnSchain) as ERC20OnChain;
- expect((await targetErc20OnChain.functions.balanceOf(user.address)).toString()).to.be.equal(amount);
+ expect((await targetErc20OnChain.balanceOf(user.address)).toString()).to.be.equal(amount);
await tokenManagerErc202
.connect(user)
- .transferToSchainERC20(newSchainName, erc20OnOriginChain.address, amount)
+ .transferToSchainERC20(newSchainName, erc20OnOriginChain, amount)
.should.be.eventually.rejectedWith("Incorrect Token Manager address");
await tokenManagerErc202
.connect(user)
- .transferToSchainERC20("Mainnet", erc20OnOriginChain.address, amount)
+ .transferToSchainERC20("Mainnet", erc20OnOriginChain, amount)
.should.be.eventually.rejectedWith("This function is not for transferring to Mainnet");
await tokenManagerErc202
.connect(user)
- .transferToSchainERC20(schainName, erc20OnOriginChain.address, amount)
+ .transferToSchainERC20(schainName, erc20OnOriginChain, amount)
.should.be.eventually.rejectedWith("Transfer is not approved by token holder");
- await targetErc20OnChain.connect(user).approve(tokenManagerErc202.address, amount);
+ await targetErc20OnChain.connect(user).approve(tokenManagerErc202, amount);
await tokenManagerErc202
.connect(user)
- .transferToSchainERC20(schainName, erc20OnOriginChain.address, amount);
+ .transferToSchainERC20(schainName, erc20OnOriginChain, amount);
data = await messages.encodeTransferErc20Message(
- erc20OnOriginChain.address,
+ erc20OnOriginChain,
user.address,
amount
);
- await messageProxyForSchain.postMessage(tokenManagerErc20.address, newSchainId, tokenManagerErc202.address, data);
- expect((await erc20OnOriginChain.functions.balanceOf(user.address)).toString()).to.be.equal(amount);
+ await messageProxyForSchain.postMessage(tokenManagerErc20, newSchainId, tokenManagerErc202, data);
+ expect((await erc20OnOriginChain.balanceOf(user.address)).toString()).to.be.equal(amount);
});
it("should invoke `transferToSchainERC20` and transfer back without mistakes with attached tokens", async () => {
const amount = "20000000000000000";
- await messageProxyForSchain.registerExtraContractForAll(tokenManagerErc20.address);
- await messageProxyForSchain2.registerExtraContractForAll(tokenManagerErc202.address);
+ await messageProxyForSchain.registerExtraContractForAll(tokenManagerErc20);
+ await messageProxyForSchain2.registerExtraContractForAll(tokenManagerErc202);
// add connected chain:
await messageProxyForSchain.connect(deployer).grantRole(await messageProxyForSchain.CHAIN_CONNECTOR_ROLE(), deployer.address);
await messageProxyForSchain.connect(deployer).addConnectedChain(newSchainName);
await erc20OnOriginChain.connect(deployer).mint(user.address, amount);
- await erc20OnOriginChain.connect(user).approve(tokenManagerErc20.address, amount);
+ await erc20OnOriginChain.connect(user).approve(tokenManagerErc20, amount);
await tokenManagerErc20
.connect(user)
- .transferToSchainERC20(newSchainName, erc20OnOriginChain.address, amount)
+ .transferToSchainERC20(newSchainName, erc20OnOriginChain, amount)
.should.be.eventually.rejectedWith("Incorrect Token Manager address");
await tokenManagerErc20
.connect(user)
- .transferToSchainERC20("Mainnet", erc20OnOriginChain.address, amount)
+ .transferToSchainERC20("Mainnet", erc20OnOriginChain, amount)
.should.be.eventually.rejectedWith("This function is not for transferring to Mainnet");
- await tokenManagerErc20.addTokenManager(newSchainName, tokenManagerErc202.address);
+ await tokenManagerErc20.addTokenManager(newSchainName, tokenManagerErc202);
// execution:
await tokenManagerErc20
.connect(user)
- .transferToSchainERC20(newSchainName, erc20OnOriginChain.address, amount);
+ .transferToSchainERC20(newSchainName, erc20OnOriginChain, amount);
let data = await messages.encodeTransferErc20AndTokenInfoMessage(
- erc20OnOriginChain.address,
+ erc20OnOriginChain,
user.address,
amount,
(await erc20OnOriginChain.totalSupply()).toString(),
{
name: await erc20OnOriginChain.name(),
symbol: await erc20OnOriginChain.symbol(),
- decimals: BigNumber.from(await erc20OnOriginChain.decimals()).toString()
+ decimals: await erc20OnOriginChain.decimals()
}
);
// expectation:
- const outgoingMessagesCounter = BigNumber.from(
- await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName));
- outgoingMessagesCounter.should.be.deep.equal(BigNumber.from(1));
+ const outgoingMessagesCounter = await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName);
+ outgoingMessagesCounter.should.be.equal(1);
// receive:
// registration:
await messageProxyForSchain2.connect(deployer).addConnectedChain(schainName);
- await tokenManagerErc202.addTokenManager(schainName, tokenManagerErc20.address);
+ await tokenManagerErc202.addTokenManager(schainName, tokenManagerErc20);
await tokenManagerErc202.connect(deployer).grantRole(await tokenManagerErc202.TOKEN_REGISTRAR_ROLE(), schainOwner.address);
- await tokenManagerErc202.connect(schainOwner).addERC20TokenByOwner(schainName, erc20OnOriginChain.address, erc20OnTargetChain.address);
+ await tokenManagerErc202.connect(schainOwner).addERC20TokenByOwner(schainName, erc20OnOriginChain, erc20OnTargetChain);
- await messageProxyForSchain2.postMessage(tokenManagerErc202.address, schainId, tokenManagerErc20.address, data);
+ await messageProxyForSchain2.postMessage(tokenManagerErc202, schainId, tokenManagerErc20, data);
await tokenManagerErc202
.connect(user)
- .transferToSchainERC20(newSchainName, erc20OnOriginChain.address, amount)
+ .transferToSchainERC20(newSchainName, erc20OnOriginChain, amount)
.should.be.eventually.rejectedWith("Incorrect Token Manager address");
await tokenManagerErc202
.connect(user)
- .transferToSchainERC20("Mainnet", erc20OnOriginChain.address, amount)
+ .transferToSchainERC20("Mainnet", erc20OnOriginChain, amount)
.should.be.eventually.rejectedWith("This function is not for transferring to Mainnet");
await tokenManagerErc202
.connect(user)
- .transferToSchainERC20(schainName, erc20OnOriginChain.address, amount)
+ .transferToSchainERC20(schainName, erc20OnOriginChain, amount)
.should.be.eventually.rejectedWith("Transfer is not approved by token holder");
- await erc20OnTargetChain.connect(user).approve(tokenManagerErc202.address, amount);
+ await erc20OnTargetChain.connect(user).approve(tokenManagerErc202, amount);
await tokenManagerErc202
.connect(user)
- .transferToSchainERC20(schainName, erc20OnOriginChain.address, amount);
+ .transferToSchainERC20(schainName, erc20OnOriginChain, amount);
data = await messages.encodeTransferErc20Message(
- erc20OnOriginChain.address,
+ erc20OnOriginChain,
user.address,
amount
);
- await messageProxyForSchain.postMessage(tokenManagerErc20.address, newSchainId, tokenManagerErc202.address, data);
- expect((await erc20OnOriginChain.functions.balanceOf(user.address)).toString()).to.be.equal(amount);
+ await messageProxyForSchain.postMessage(tokenManagerErc20, newSchainId, tokenManagerErc202, data);
+ expect((await erc20OnOriginChain.balanceOf(user.address)).toString()).to.be.equal(amount);
});
it("should invoke `transferToSchainERC20` and transfer back without mistakes double", async () => {
const amount = "20000000000000000";
- await messageProxyForSchain.registerExtraContractForAll(tokenManagerErc20.address);
- await messageProxyForSchain2.registerExtraContractForAll(tokenManagerErc202.address);
+ await messageProxyForSchain.registerExtraContractForAll(tokenManagerErc20);
+ await messageProxyForSchain2.registerExtraContractForAll(tokenManagerErc202);
// add connected chain:
await messageProxyForSchain.connect(deployer).grantRole(await messageProxyForSchain.CHAIN_CONNECTOR_ROLE(), deployer.address);
await messageProxyForSchain.connect(deployer).addConnectedChain(newSchainName);
await erc20OnOriginChain.connect(deployer).mint(user.address, amount);
- await erc20OnOriginChain.connect(user).approve(tokenManagerErc20.address, amount);
+ await erc20OnOriginChain.connect(user).approve(tokenManagerErc20, amount);
await tokenManagerErc20
.connect(user)
- .transferToSchainERC20(newSchainName, erc20OnOriginChain.address, amount)
+ .transferToSchainERC20(newSchainName, erc20OnOriginChain, amount)
.should.be.eventually.rejectedWith("Incorrect Token Manager address");
await tokenManagerErc20
.connect(user)
- .transferToSchainERC20("Mainnet", erc20OnOriginChain.address, amount)
+ .transferToSchainERC20("Mainnet", erc20OnOriginChain, amount)
.should.be.eventually.rejectedWith("This function is not for transferring to Mainnet");
- await tokenManagerErc20.addTokenManager(newSchainName, tokenManagerErc202.address);
+ await tokenManagerErc20.addTokenManager(newSchainName, tokenManagerErc202);
// execution:
await tokenManagerErc20
.connect(user)
- .transferToSchainERC20(newSchainName, erc20OnOriginChain.address, amount);
+ .transferToSchainERC20(newSchainName, erc20OnOriginChain, amount);
let data = await messages.encodeTransferErc20AndTokenInfoMessage(
- erc20OnOriginChain.address,
+ erc20OnOriginChain,
user.address,
amount,
(await erc20OnOriginChain.totalSupply()).toString(),
{
name: await erc20OnOriginChain.name(),
symbol: await erc20OnOriginChain.symbol(),
- decimals: BigNumber.from(await erc20OnOriginChain.decimals()).toString()
+ decimals: await erc20OnOriginChain.decimals()
}
);
// expectation:
- const outgoingMessagesCounter = BigNumber.from(
- await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName));
- outgoingMessagesCounter.should.be.deep.equal(BigNumber.from(1));
+ const outgoingMessagesCounter = await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName);
+ outgoingMessagesCounter.should.be.equal(1);
// receive:
// registration:
await messageProxyForSchain2.connect(deployer).addConnectedChain(schainName);
- await tokenManagerErc202.addTokenManager(schainName, tokenManagerErc20.address);
+ await tokenManagerErc202.addTokenManager(schainName, tokenManagerErc20);
- await messageProxyForSchain2.postMessage(tokenManagerErc202.address, schainId, tokenManagerErc20.address, data).should.be.eventually.rejectedWith("Automatic deploy is disabled");
+ await messageProxyForSchain2.postMessage(tokenManagerErc202, schainId, tokenManagerErc20, data).should.be.eventually.rejectedWith("Automatic deploy is disabled");
await tokenManagerErc202.enableAutomaticDeploy();
- await messageProxyForSchain2.postMessage(tokenManagerErc202.address, schainId, tokenManagerErc20.address, data);
+ await messageProxyForSchain2.postMessage(tokenManagerErc202, schainId, tokenManagerErc20, data);
- const addressERC20OnSchain = await tokenManagerErc202.clonesErc20(schainId, erc20OnOriginChain.address);
+ const addressERC20OnSchain = await tokenManagerErc202.clonesErc20(schainId, erc20OnOriginChain);
const targetErc20OnChain = (await ethers.getContractFactory("ERC20OnChain")).attach(addressERC20OnSchain) as ERC20OnChain;
- expect((await targetErc20OnChain.functions.balanceOf(user.address)).toString()).to.be.equal(amount);
+ expect((await targetErc20OnChain.balanceOf(user.address)).toString()).to.be.equal(amount);
await tokenManagerErc202
.connect(user)
- .transferToSchainERC20(newSchainName, erc20OnOriginChain.address, amount)
+ .transferToSchainERC20(newSchainName, erc20OnOriginChain, amount)
.should.be.eventually.rejectedWith("Incorrect Token Manager address");
await tokenManagerErc202
.connect(user)
- .transferToSchainERC20("Mainnet", erc20OnOriginChain.address, amount)
+ .transferToSchainERC20("Mainnet", erc20OnOriginChain, amount)
.should.be.eventually.rejectedWith("This function is not for transferring to Mainnet");
await tokenManagerErc202
.connect(user)
- .transferToSchainERC20(schainName, erc20OnOriginChain.address, amount)
+ .transferToSchainERC20(schainName, erc20OnOriginChain, amount)
.should.be.eventually.rejectedWith("Transfer is not approved by token holder");
- await targetErc20OnChain.connect(user).approve(tokenManagerErc202.address, amount);
+ await targetErc20OnChain.connect(user).approve(tokenManagerErc202, amount);
await tokenManagerErc202
.connect(user)
- .transferToSchainERC20(schainName, erc20OnOriginChain.address, amount);
+ .transferToSchainERC20(schainName, erc20OnOriginChain, amount);
data = await messages.encodeTransferErc20Message(
- erc20OnOriginChain.address,
+ erc20OnOriginChain,
user.address,
amount
);
- await messageProxyForSchain.postMessage(tokenManagerErc20.address, newSchainId, tokenManagerErc202.address, data);
- expect((await erc20OnOriginChain.functions.balanceOf(user.address)).toString()).to.be.equal(amount);
+ await messageProxyForSchain.postMessage(tokenManagerErc20, newSchainId, tokenManagerErc202, data);
+ expect((await erc20OnOriginChain.balanceOf(user.address)).toString()).to.be.equal(amount);
- await erc20OnOriginChain.connect(user).approve(tokenManagerErc20.address, amount);
+ await erc20OnOriginChain.connect(user).approve(tokenManagerErc20, amount);
await tokenManagerErc20
.connect(user)
- .transferToSchainERC20(newSchainName, erc20OnOriginChain.address, amount);
+ .transferToSchainERC20(newSchainName, erc20OnOriginChain, amount);
data = await messages.encodeTransferErc20AndTotalSupplyMessage(
- erc20OnOriginChain.address,
+ erc20OnOriginChain,
user.address,
amount,
(await erc20OnOriginChain.totalSupply()).toString()
);
- await messageProxyForSchain2.postMessage(tokenManagerErc202.address, schainId, tokenManagerErc20.address, data);
+ await messageProxyForSchain2.postMessage(tokenManagerErc202, schainId, tokenManagerErc20, data);
- expect((await targetErc20OnChain.functions.balanceOf(user.address)).toString()).to.be.equal(amount);
+ expect((await targetErc20OnChain.balanceOf(user.address)).toString()).to.be.equal(amount);
const amount2 = "50000000000000000";
await erc20OnOriginChain.connect(deployer).mint(user.address, amount2);
- await erc20OnOriginChain.connect(user).approve(tokenManagerErc20.address, amount2);
+ await erc20OnOriginChain.connect(user).approve(tokenManagerErc20, amount2);
await tokenManagerErc20
.connect(user)
- .transferToSchainERC20(newSchainName, erc20OnOriginChain.address, amount2);
+ .transferToSchainERC20(newSchainName, erc20OnOriginChain, amount2);
data = await messages.encodeTransferErc20AndTotalSupplyMessage(
- erc20OnOriginChain.address,
+ erc20OnOriginChain,
user.address,
amount2,
(await erc20OnOriginChain.totalSupply()).toString()
);
- await messageProxyForSchain2.postMessage(tokenManagerErc202.address, schainId, tokenManagerErc20.address, data);
+ await messageProxyForSchain2.postMessage(tokenManagerErc202, schainId, tokenManagerErc20, data);
const amountSum = "70000000000000000";
- expect((await targetErc20OnChain.functions.balanceOf(user.address)).toString()).to.be.equal(amountSum);
+ expect((await targetErc20OnChain.balanceOf(user.address)).toString()).to.be.equal(amountSum);
- await targetErc20OnChain.connect(user).approve(tokenManagerErc202.address, amount);
+ await targetErc20OnChain.connect(user).approve(tokenManagerErc202, amount);
await tokenManagerErc202
.connect(user)
- .transferToSchainERC20(schainName, erc20OnOriginChain.address, amount);
+ .transferToSchainERC20(schainName, erc20OnOriginChain, amount);
data = await messages.encodeTransferErc20Message(
- erc20OnOriginChain.address,
+ erc20OnOriginChain,
user.address,
amount
);
- await messageProxyForSchain.postMessage(tokenManagerErc20.address, newSchainId, tokenManagerErc202.address, data);
- expect((await erc20OnOriginChain.functions.balanceOf(user.address)).toString()).to.be.equal(amount);
+ await messageProxyForSchain.postMessage(tokenManagerErc20, newSchainId, tokenManagerErc202, data);
+ expect((await erc20OnOriginChain.balanceOf(user.address)).toString()).to.be.equal(amount);
- await targetErc20OnChain.connect(user).approve(tokenManagerErc202.address, amount2);
+ await targetErc20OnChain.connect(user).approve(tokenManagerErc202, amount2);
await tokenManagerErc202
.connect(user)
- .transferToSchainERC20(schainName, erc20OnOriginChain.address, amount2);
+ .transferToSchainERC20(schainName, erc20OnOriginChain, amount2);
data = await messages.encodeTransferErc20Message(
- erc20OnOriginChain.address,
+ erc20OnOriginChain,
user.address,
amount2
);
- await messageProxyForSchain.postMessage(tokenManagerErc20.address, newSchainId, tokenManagerErc202.address, data);
+ await messageProxyForSchain.postMessage(tokenManagerErc20, newSchainId, tokenManagerErc202, data);
- expect((await erc20OnOriginChain.functions.balanceOf(user.address)).toString()).to.be.equal(amountSum);
+ expect((await erc20OnOriginChain.balanceOf(user.address)).toString()).to.be.equal(amountSum);
});
it("should invoke `transferToSchainERC20` and transfer back without mistakes double with attached tokens", async () => {
const amount = "20000000000000000";
- await messageProxyForSchain.registerExtraContractForAll(tokenManagerErc20.address);
- await messageProxyForSchain2.registerExtraContractForAll(tokenManagerErc202.address);
+ await messageProxyForSchain.registerExtraContractForAll(tokenManagerErc20);
+ await messageProxyForSchain2.registerExtraContractForAll(tokenManagerErc202);
// add connected chain:
await messageProxyForSchain.connect(deployer).grantRole(await messageProxyForSchain.CHAIN_CONNECTOR_ROLE(), deployer.address);
await messageProxyForSchain.connect(deployer).addConnectedChain(newSchainName);
await erc20OnOriginChain.connect(deployer).mint(user.address, amount);
- await erc20OnOriginChain.connect(user).approve(tokenManagerErc20.address, amount);
+ await erc20OnOriginChain.connect(user).approve(tokenManagerErc20, amount);
await tokenManagerErc20
.connect(user)
- .transferToSchainERC20(newSchainName, erc20OnOriginChain.address, amount)
+ .transferToSchainERC20(newSchainName, erc20OnOriginChain, amount)
.should.be.eventually.rejectedWith("Incorrect Token Manager address");
await tokenManagerErc20
.connect(user)
- .transferToSchainERC20("Mainnet", erc20OnOriginChain.address, amount)
+ .transferToSchainERC20("Mainnet", erc20OnOriginChain, amount)
.should.be.eventually.rejectedWith("This function is not for transferring to Mainnet");
- await tokenManagerErc20.addTokenManager(newSchainName, tokenManagerErc202.address);
+ await tokenManagerErc20.addTokenManager(newSchainName, tokenManagerErc202);
// execution:
await tokenManagerErc20
.connect(user)
- .transferToSchainERC20(newSchainName, erc20OnOriginChain.address, amount);
+ .transferToSchainERC20(newSchainName, erc20OnOriginChain, amount);
let data = await messages.encodeTransferErc20AndTokenInfoMessage(
- erc20OnOriginChain.address,
+ erc20OnOriginChain,
user.address,
amount,
(await erc20OnOriginChain.totalSupply()).toString(),
{
name: await erc20OnOriginChain.name(),
symbol: await erc20OnOriginChain.symbol(),
- decimals: BigNumber.from(await erc20OnOriginChain.decimals()).toString()
+ decimals: await erc20OnOriginChain.decimals()
}
);
// expectation:
- const outgoingMessagesCounter = BigNumber.from(
- await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName));
- outgoingMessagesCounter.should.be.deep.equal(BigNumber.from(1));
+ const outgoingMessagesCounter = await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName);
+ outgoingMessagesCounter.should.be.equal(1);
// receive:
// registration:
await messageProxyForSchain2.connect(deployer).addConnectedChain(schainName);
- await tokenManagerErc202.addTokenManager(schainName, tokenManagerErc20.address);
+ await tokenManagerErc202.addTokenManager(schainName, tokenManagerErc20);
await tokenManagerErc202.connect(deployer).grantRole(await tokenManagerErc202.TOKEN_REGISTRAR_ROLE(), schainOwner.address);
- await tokenManagerErc202.connect(schainOwner).addERC20TokenByOwner(schainName, erc20OnOriginChain.address, erc20OnTargetChain.address);
+ await tokenManagerErc202.connect(schainOwner).addERC20TokenByOwner(schainName, erc20OnOriginChain, erc20OnTargetChain);
- await messageProxyForSchain2.postMessage(tokenManagerErc202.address, schainId, tokenManagerErc20.address, data);
+ await messageProxyForSchain2.postMessage(tokenManagerErc202, schainId, tokenManagerErc20, data);
await tokenManagerErc202
.connect(user)
- .transferToSchainERC20(newSchainName, erc20OnOriginChain.address, amount)
+ .transferToSchainERC20(newSchainName, erc20OnOriginChain, amount)
.should.be.eventually.rejectedWith("Incorrect Token Manager address");
await tokenManagerErc202
.connect(user)
- .transferToSchainERC20("Mainnet", erc20OnOriginChain.address, amount)
+ .transferToSchainERC20("Mainnet", erc20OnOriginChain, amount)
.should.be.eventually.rejectedWith("This function is not for transferring to Mainnet");
await tokenManagerErc202
.connect(user)
- .transferToSchainERC20(schainName, erc20OnOriginChain.address, amount)
+ .transferToSchainERC20(schainName, erc20OnOriginChain, amount)
.should.be.eventually.rejectedWith("Transfer is not approved by token holder");
- await erc20OnTargetChain.connect(user).approve(tokenManagerErc202.address, amount);
+ await erc20OnTargetChain.connect(user).approve(tokenManagerErc202, amount);
await tokenManagerErc202
.connect(user)
- .transferToSchainERC20(schainName, erc20OnOriginChain.address, amount);
+ .transferToSchainERC20(schainName, erc20OnOriginChain, amount);
data = await messages.encodeTransferErc20Message(
- erc20OnOriginChain.address,
+ erc20OnOriginChain,
user.address,
amount
);
- await messageProxyForSchain.postMessage(tokenManagerErc20.address, newSchainId, tokenManagerErc202.address, data);
- expect((await erc20OnOriginChain.functions.balanceOf(user.address)).toString()).to.be.equal(amount);
+ await messageProxyForSchain.postMessage(tokenManagerErc20, newSchainId, tokenManagerErc202, data);
+ expect((await erc20OnOriginChain.balanceOf(user.address)).toString()).to.be.equal(amount);
- await erc20OnOriginChain.connect(user).approve(tokenManagerErc20.address, amount);
+ await erc20OnOriginChain.connect(user).approve(tokenManagerErc20, amount);
await tokenManagerErc20
.connect(user)
- .transferToSchainERC20(newSchainName, erc20OnOriginChain.address, amount);
+ .transferToSchainERC20(newSchainName, erc20OnOriginChain, amount);
data = await messages.encodeTransferErc20AndTotalSupplyMessage(
- erc20OnOriginChain.address,
+ erc20OnOriginChain,
user.address,
amount,
(await erc20OnOriginChain.totalSupply()).toString()
);
- await messageProxyForSchain2.postMessage(tokenManagerErc202.address, schainId, tokenManagerErc20.address, data);
+ await messageProxyForSchain2.postMessage(tokenManagerErc202, schainId, tokenManagerErc20, data);
- expect((await erc20OnTargetChain.functions.balanceOf(user.address)).toString()).to.be.equal(amount);
+ expect((await erc20OnTargetChain.balanceOf(user.address)).toString()).to.be.equal(amount);
const amount2 = "50000000000000000";
await erc20OnOriginChain.connect(deployer).mint(user.address, amount2);
- await erc20OnOriginChain.connect(user).approve(tokenManagerErc20.address, amount2);
+ await erc20OnOriginChain.connect(user).approve(tokenManagerErc20, amount2);
await tokenManagerErc20
.connect(user)
- .transferToSchainERC20(newSchainName, erc20OnOriginChain.address, amount2);
+ .transferToSchainERC20(newSchainName, erc20OnOriginChain, amount2);
data = await messages.encodeTransferErc20AndTotalSupplyMessage(
- erc20OnOriginChain.address,
+ erc20OnOriginChain,
user.address,
amount2,
(await erc20OnOriginChain.totalSupply()).toString()
);
- await messageProxyForSchain2.postMessage(tokenManagerErc202.address, schainId, tokenManagerErc20.address, data);
+ await messageProxyForSchain2.postMessage(tokenManagerErc202, schainId, tokenManagerErc20, data);
const amountSum = "70000000000000000";
- expect((await erc20OnTargetChain.functions.balanceOf(user.address)).toString()).to.be.equal(amountSum);
+ expect((await erc20OnTargetChain.balanceOf(user.address)).toString()).to.be.equal(amountSum);
- await erc20OnTargetChain.connect(user).approve(tokenManagerErc202.address, amount);
+ await erc20OnTargetChain.connect(user).approve(tokenManagerErc202, amount);
await tokenManagerErc202
.connect(user)
- .transferToSchainERC20(schainName, erc20OnOriginChain.address, amount);
+ .transferToSchainERC20(schainName, erc20OnOriginChain, amount);
data = await messages.encodeTransferErc20Message(
- erc20OnOriginChain.address,
+ erc20OnOriginChain,
user.address,
amount
);
- await messageProxyForSchain.postMessage(tokenManagerErc20.address, newSchainId, tokenManagerErc202.address, data);
- expect((await erc20OnOriginChain.functions.balanceOf(user.address)).toString()).to.be.equal(amount);
+ await messageProxyForSchain.postMessage(tokenManagerErc20, newSchainId, tokenManagerErc202, data);
+ expect((await erc20OnOriginChain.balanceOf(user.address)).toString()).to.be.equal(amount);
- await erc20OnTargetChain.connect(user).approve(tokenManagerErc202.address, amount2);
+ await erc20OnTargetChain.connect(user).approve(tokenManagerErc202, amount2);
await tokenManagerErc202
.connect(user)
- .transferToSchainERC20(schainName, erc20OnOriginChain.address, amount2);
+ .transferToSchainERC20(schainName, erc20OnOriginChain, amount2);
data = await messages.encodeTransferErc20Message(
- erc20OnOriginChain.address,
+ erc20OnOriginChain,
user.address,
amount2
);
- await messageProxyForSchain.postMessage(tokenManagerErc20.address, newSchainId, tokenManagerErc202.address, data);
+ await messageProxyForSchain.postMessage(tokenManagerErc20, newSchainId, tokenManagerErc202, data);
- expect((await erc20OnOriginChain.functions.balanceOf(user.address)).toString()).to.be.equal(amountSum);
+ expect((await erc20OnOriginChain.balanceOf(user.address)).toString()).to.be.equal(amountSum);
});
it("should not be able to transfer X->Y->Z", async () => {
const amount = "20000000000000000";
- await messageProxyForSchain.registerExtraContract(newSchainName, tokenManagerErc20.address);
+ await messageProxyForSchain.registerExtraContract(newSchainName, tokenManagerErc20);
// add connected chain:
await messageProxyForSchain.connect(deployer).grantRole(await messageProxyForSchain.CHAIN_CONNECTOR_ROLE(), deployer.address);
await messageProxyForSchain.connect(deployer).addConnectedChain(newSchainName);
await erc20OnOriginChain.connect(deployer).mint(user.address, amount);
- await erc20OnOriginChain.connect(user).approve(tokenManagerErc20.address, amount);
+ await erc20OnOriginChain.connect(user).approve(tokenManagerErc20, amount);
- await tokenManagerErc20.addTokenManager(newSchainName, tokenManagerErc202.address);
+ await tokenManagerErc20.addTokenManager(newSchainName, tokenManagerErc202);
// execution:
await tokenManagerErc20
.connect(user)
- .transferToSchainERC20(newSchainName, erc20OnOriginChain.address, amount);
+ .transferToSchainERC20(newSchainName, erc20OnOriginChain, amount);
const data = await messages.encodeTransferErc20AndTokenInfoMessage(
- erc20OnOriginChain.address,
+ erc20OnOriginChain,
user.address,
amount,
(await erc20OnOriginChain.totalSupply()).toString(),
{
name: await erc20OnOriginChain.name(),
symbol: await erc20OnOriginChain.symbol(),
- decimals: BigNumber.from(await erc20OnOriginChain.decimals()).toString()
+ decimals: await erc20OnOriginChain.decimals()
}
);
// expectation:
- const outgoingMessagesCounter = BigNumber.from(
- await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName));
- outgoingMessagesCounter.should.be.deep.equal(BigNumber.from(1));
+ const outgoingMessagesCounter = await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName);
+ outgoingMessagesCounter.should.be.equal(1);
// receive:
// registration:
await messageProxyForSchain2.connect(deployer).addConnectedChain(schainName);
- await tokenManagerErc202.addTokenManager(schainName, tokenManagerErc20.address);
+ await tokenManagerErc202.addTokenManager(schainName, tokenManagerErc20);
await tokenManagerErc202.connect(deployer).grantRole(await tokenManagerErc202.TOKEN_REGISTRAR_ROLE(), schainOwner.address);
- await tokenManagerErc202.connect(schainOwner).addERC20TokenByOwner(schainName, erc20OnOriginChain.address, erc20OnTargetChain.address);
- await messageProxyForSchain2.registerExtraContractForAll(tokenManagerErc202.address);
+ await tokenManagerErc202.connect(schainOwner).addERC20TokenByOwner(schainName, erc20OnOriginChain, erc20OnTargetChain);
+ await messageProxyForSchain2.registerExtraContractForAll(tokenManagerErc202);
- await messageProxyForSchain2.postMessage(tokenManagerErc202.address, schainId, tokenManagerErc20.address, data);
+ await messageProxyForSchain2.postMessage(tokenManagerErc202, schainId, tokenManagerErc20, data);
- expect((await erc20OnTargetChain.functions.balanceOf(user.address)).toString()).to.be.equal(amount);
+ expect((await erc20OnTargetChain.balanceOf(user.address)).toString()).to.be.equal(amount);
const newSchainNameZ = "NewChainZ";
const erc20OnTargetZChain = await deployERC20OnChain("NewTokenZ", "NTNZ");
const keyStorageZ = await deployKeyStorageMock();
- const messageProxyForSchainZ = await deployMessageProxyForSchainTester(keyStorageZ.address, newSchainNameZ);
+ const messageProxyForSchainZ = await deployMessageProxyForSchainTester(keyStorageZ, newSchainNameZ);
const tokenManagerLinkerZ = await deployTokenManagerLinker(messageProxyForSchainZ, deployer.address);
- const communityLockerZ = await deployCommunityLocker(newSchainName, messageProxyForSchainZ.address, tokenManagerLinkerZ, fakeCommunityPool);
- const tokenManagerErc20Z = await deployTokenManagerERC20(newSchainNameZ, messageProxyForSchainZ.address, tokenManagerLinkerZ, communityLockerZ, fakeDepositBox);
- await erc20OnTargetZChain.connect(deployer).grantRole(await erc20OnTargetZChain.MINTER_ROLE(), tokenManagerErc20Z.address);
- await tokenManagerLinkerZ.registerTokenManager(tokenManagerErc20Z.address);
+ const communityLockerZ = await deployCommunityLocker(newSchainName, messageProxyForSchainZ, tokenManagerLinkerZ, fakeCommunityPool);
+ const tokenManagerErc20Z = await deployTokenManagerERC20(newSchainNameZ, messageProxyForSchainZ, tokenManagerLinkerZ, communityLockerZ, fakeDepositBox);
+ await erc20OnTargetZChain.connect(deployer).grantRole(await erc20OnTargetZChain.MINTER_ROLE(), tokenManagerErc20Z);
+ await tokenManagerLinkerZ.registerTokenManager(tokenManagerErc20Z);
await messageProxyForSchain2.connect(deployer).grantRole(await messageProxyForSchain2.CHAIN_CONNECTOR_ROLE(), deployer.address);
await messageProxyForSchain2.connect(deployer).addConnectedChain(newSchainNameZ);
- await tokenManagerErc202.addTokenManager(newSchainNameZ, tokenManagerErc20Z.address);
+ await tokenManagerErc202.addTokenManager(newSchainNameZ, tokenManagerErc20Z);
- await erc20OnTargetChain.connect(user).approve(tokenManagerErc202.address, amount);
+ await erc20OnTargetChain.connect(user).approve(tokenManagerErc202, amount);
await tokenManagerErc202
.connect(user)
- .transferToSchainERC20(newSchainNameZ, erc20OnOriginChain.address, amount)
+ .transferToSchainERC20(newSchainNameZ, erc20OnOriginChain, amount)
.should.be.eventually.rejectedWith("Insufficient funds");
await tokenManagerErc202
.connect(user)
- .transferToSchainERC20(newSchainNameZ, erc20OnTargetChain.address, amount)
+ .transferToSchainERC20(newSchainNameZ, erc20OnTargetChain, amount)
.should.be.eventually.rejectedWith("Incorrect main chain token");
});
it("should not be able to transfer main chain token or clone to mainnet", async () => {
const amount = "20000000000000000";
- await messageProxyForSchain.registerExtraContractForAll(tokenManagerErc20.address);
- await messageProxyForSchain2.registerExtraContractForAll(tokenManagerErc202.address);
+ await messageProxyForSchain.registerExtraContractForAll(tokenManagerErc20);
+ await messageProxyForSchain2.registerExtraContractForAll(tokenManagerErc202);
// add connected chain:
await messageProxyForSchain.connect(deployer).grantRole(await messageProxyForSchain.CHAIN_CONNECTOR_ROLE(), deployer.address);
await messageProxyForSchain.connect(deployer).addConnectedChain(newSchainName);
await erc20OnOriginChain.connect(deployer).mint(user.address, amount);
- await erc20OnOriginChain.connect(user).approve(tokenManagerErc20.address, amount);
+ await erc20OnOriginChain.connect(user).approve(tokenManagerErc20, amount);
- await tokenManagerErc20.addTokenManager(newSchainName, tokenManagerErc202.address);
+ await tokenManagerErc20.addTokenManager(newSchainName, tokenManagerErc202);
// execution:
await tokenManagerErc20
.connect(user)
- .transferToSchainERC20(newSchainName, erc20OnOriginChain.address, amount);
+ .transferToSchainERC20(newSchainName, erc20OnOriginChain, amount);
let data = await messages.encodeTransferErc20AndTokenInfoMessage(
- erc20OnOriginChain.address,
+ erc20OnOriginChain,
user.address,
amount,
(await erc20OnOriginChain.totalSupply()).toString(),
{
name: await erc20OnOriginChain.name(),
symbol: await erc20OnOriginChain.symbol(),
- decimals: BigNumber.from(await erc20OnOriginChain.decimals()).toString()
+ decimals: await erc20OnOriginChain.decimals()
}
);
// expectation:
- const outgoingMessagesCounter = BigNumber.from(
- await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName));
- outgoingMessagesCounter.should.be.deep.equal(BigNumber.from(1));
+ const outgoingMessagesCounter = await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName);
+ outgoingMessagesCounter.should.be.equal(1);
// receive:
// registration:
await messageProxyForSchain2.connect(deployer).addConnectedChain(schainName);
- await tokenManagerErc202.addTokenManager(schainName, tokenManagerErc20.address);
+ await tokenManagerErc202.addTokenManager(schainName, tokenManagerErc20);
await tokenManagerErc202.connect(deployer).grantRole(await tokenManagerErc202.TOKEN_REGISTRAR_ROLE(), schainOwner.address);
- await tokenManagerErc202.connect(schainOwner).addERC20TokenByOwner(schainName, erc20OnOriginChain.address, erc20OnTargetChain.address);
+ await tokenManagerErc202.connect(schainOwner).addERC20TokenByOwner(schainName, erc20OnOriginChain, erc20OnTargetChain);
- await messageProxyForSchain2.postMessage(tokenManagerErc202.address, schainId, tokenManagerErc20.address, data);
+ await messageProxyForSchain2.postMessage(tokenManagerErc202, schainId, tokenManagerErc20, data);
- expect((await erc20OnTargetChain.functions.balanceOf(user.address)).toString()).to.be.equal(amount);
+ expect((await erc20OnTargetChain.balanceOf(user.address)).toString()).to.be.equal(amount);
data = await messages.encodeActivateUserMessage(user.address);
- await messageProxyForSchain2.postMessage(communityLocker2.address, mainnetId, fakeCommunityPool, data);
+ await messageProxyForSchain2.postMessage(communityLocker2, mainnetId, fakeCommunityPool, data);
- await erc20OnTargetChain.connect(user).approve(tokenManagerErc202.address, amount);
+ await erc20OnTargetChain.connect(user).approve(tokenManagerErc202, amount);
await tokenManagerErc202
.connect(user)
- .exitToMainERC20(erc20OnOriginChain.address, amount)
+ .exitToMainERC20(erc20OnOriginChain, amount)
.should.be.eventually.rejectedWith("Insufficient funds");
await tokenManagerErc202
.connect(user)
- .exitToMainERC20(erc20OnTargetChain.address, amount)
+ .exitToMainERC20(erc20OnTargetChain, amount)
.should.be.eventually.rejectedWith("Incorrect main chain token");
await tokenManagerErc202
.connect(user)
- .transferToSchainERC20(schainName, erc20OnOriginChain.address, amount);
+ .transferToSchainERC20(schainName, erc20OnOriginChain, amount);
data = await messages.encodeTransferErc20Message(
- erc20OnOriginChain.address,
+ erc20OnOriginChain,
user.address,
amount
);
- await messageProxyForSchain.postMessage(tokenManagerErc20.address, newSchainId, tokenManagerErc202.address, data);
- expect((await erc20OnOriginChain.functions.balanceOf(user.address)).toString()).to.be.equal(amount);
+ await messageProxyForSchain.postMessage(tokenManagerErc20, newSchainId, tokenManagerErc202, data);
+ expect((await erc20OnOriginChain.balanceOf(user.address)).toString()).to.be.equal(amount);
- await erc20OnOriginChain.connect(user).approve(tokenManagerErc20.address, amount);
+ await erc20OnOriginChain.connect(user).approve(tokenManagerErc20, amount);
await tokenManagerErc20
.connect(user)
- .exitToMainERC20(erc20OnOriginChain.address, amount)
+ .exitToMainERC20(erc20OnOriginChain, amount)
.should.be.eventually.rejectedWith("Main chain token could not be transfered to Mainnet");
await tokenManagerErc20
.connect(user)
- .exitToMainERC20(erc20OnTargetChain.address, amount)
+ .exitToMainERC20(erc20OnTargetChain, amount)
.should.be.eventually.rejectedWith("Insufficient funds");
});
@@ -1360,7 +1358,7 @@ describe("TokenManagerERC20", () => {
describe("tests for `postMessage` function", async () => {
beforeEach(async () => {
- await messageProxyForSchain.registerExtraContractForAll(tokenManagerErc20.address);
+ await messageProxyForSchain.registerExtraContractForAll(tokenManagerErc20);
});
it("should transfer ERC20 token with token info", async () => {
@@ -1369,30 +1367,30 @@ describe("TokenManagerERC20", () => {
const to = user.address;
const remoteTokenManagerAddress = fakeDepositBox;
const fromSchainName = "fromSchainName";
- const fromSchainHash = stringKeccak256(fromSchainName);
+ const fromSchainHash = ethers.id(fromSchainName);
await tokenManagerErc20.addTokenManager(fromSchainName, remoteTokenManagerAddress);
- // await tokenManagerErc20.connect(schainOwner).addERC20TokenByOwner(mainnetName, erc20OnMainnet.address, erc20OnChain.address);
+ // await tokenManagerErc20.connect(schainOwner).addERC20TokenByOwner(mainnetName, erc20OnMainnet, erc20OnChain);
await erc20OnMainnet.mint(deployer.address, amount);
const data = await messages.encodeTransferErc20AndTokenInfoMessage(
- erc20OnMainnet.address,
+ erc20OnMainnet,
to,
amount,
- (await erc20OnMainnet.totalSupply()).toNumber(),
+ await erc20OnMainnet.totalSupply(),
{
name: await erc20OnMainnet.name(),
symbol: await erc20OnMainnet.symbol(),
- decimals: BigNumber.from(await erc20OnMainnet.decimals()).toString()
+ decimals: await erc20OnMainnet.decimals()
}
);
await tokenManagerErc20.connect(schainOwner).enableAutomaticDeploy();
// execution
- await messageProxyForSchain.postMessage(tokenManagerErc20.address, fromSchainHash, remoteTokenManagerAddress, data);
+ await messageProxyForSchain.postMessage(tokenManagerErc20, fromSchainHash, remoteTokenManagerAddress, data);
// expectation
- const addressERC20OnSchain = await tokenManagerErc20.clonesErc20(fromSchainHash, erc20OnMainnet.address);
+ const addressERC20OnSchain = await tokenManagerErc20.clonesErc20(fromSchainHash, erc20OnMainnet);
const targetErc20OnChain = (await ethers.getContractFactory("ERC20OnChain")).attach(addressERC20OnSchain) as ERC20OnChain;
- expect(parseInt((await targetErc20OnChain.functions.balanceOf(to)).toString(), 10))
+ expect(parseInt((await targetErc20OnChain.balanceOf(to)).toString(), 10))
.to.be.equal(amount);
});
@@ -1400,28 +1398,28 @@ describe("TokenManagerERC20", () => {
// preparation
const remoteTokenManagerAddress = fakeDepositBox;
const fromSchainName = "fromSchainName";
- const fromSchainHash = stringKeccak256(fromSchainName);
+ const fromSchainHash = ethers.id(fromSchainName);
await messageProxyForSchain.connect(deployer).addConnectedChain(fromSchainName);
await tokenManagerErc20.addTokenManager(fromSchainName, remoteTokenManagerAddress);
- await tokenManagerErc20.connect(schainOwner).addERC20TokenByOwner(fromSchainName, erc20OnMainnet.address, erc20OnChain.address);
+ await tokenManagerErc20.connect(schainOwner).addERC20TokenByOwner(fromSchainName, erc20OnMainnet, erc20OnChain);
const amount = 10;
const to = user.address;
await erc20OnMainnet.mint(deployer.address, amount);
const data = await messages.encodeTransferErc20AndTotalSupplyMessage(
- erc20OnMainnet.address,
+ erc20OnMainnet,
to,
amount,
- (await erc20OnMainnet.totalSupply()).toNumber()
+ await erc20OnMainnet.totalSupply()
);
await tokenManagerErc20.connect(schainOwner).enableAutomaticDeploy();
// execution
- await messageProxyForSchain.postMessage(tokenManagerErc20.address, fromSchainHash, remoteTokenManagerAddress, data);
+ await messageProxyForSchain.postMessage(tokenManagerErc20, fromSchainHash, remoteTokenManagerAddress, data);
// expectation
- const addressERC20OnSchain = await tokenManagerErc20.clonesErc20(fromSchainHash, erc20OnMainnet.address);
+ const addressERC20OnSchain = await tokenManagerErc20.clonesErc20(fromSchainHash, erc20OnMainnet);
const targetErc20OnChain = (await ethers.getContractFactory("ERC20OnChain")).attach(addressERC20OnSchain) as ERC20OnChain;
- expect(parseInt((await targetErc20OnChain.functions.balanceOf(to)).toString(), 10))
+ expect(parseInt((await targetErc20OnChain.balanceOf(to)).toString(), 10))
.to.be.equal(amount);
});
@@ -1429,36 +1427,36 @@ describe("TokenManagerERC20", () => {
// preparation
const remoteTokenManagerAddress = fakeDepositBox;
const fromSchainName = "fromSchainName";
- const fromSchainHash = stringKeccak256(fromSchainName);
+ const fromSchainHash = ethers.id(fromSchainName);
await tokenManagerErc20.addTokenManager(fromSchainName, remoteTokenManagerAddress);
const amount = 10;
const to = user.address;
await erc20OnMainnet.mint(deployer.address, amount);
const data = await messages.encodeTransferErc20AndTokenInfoMessage(
- erc20OnMainnet.address,
+ erc20OnMainnet,
to,
amount,
- (await erc20OnMainnet.totalSupply()).toNumber(),
+ await erc20OnMainnet.totalSupply(),
{
name: await erc20OnMainnet.name(),
symbol: await erc20OnMainnet.symbol(),
- decimals: BigNumber.from(await erc20OnMainnet.decimals()).toString()
+ decimals: await erc20OnMainnet.decimals()
}
);
- await messageProxyForSchain.postMessage(tokenManagerErc20.address, fromSchainHash, remoteTokenManagerAddress, data)
+ await messageProxyForSchain.postMessage(tokenManagerErc20, fromSchainHash, remoteTokenManagerAddress, data)
.should.be.eventually.rejectedWith("Automatic deploy is disabled");
await tokenManagerErc20.connect(schainOwner).enableAutomaticDeploy();
// execution
- await messageProxyForSchain.postMessage(tokenManagerErc20.address, fromSchainHash, remoteTokenManagerAddress, data);
+ await messageProxyForSchain.postMessage(tokenManagerErc20, fromSchainHash, remoteTokenManagerAddress, data);
// expectation
- const addressERC20OnSchain = await tokenManagerErc20.clonesErc20(fromSchainHash, erc20OnMainnet.address);
+ const addressERC20OnSchain = await tokenManagerErc20.clonesErc20(fromSchainHash, erc20OnMainnet);
const targetErc20OnChain = (await ethers.getContractFactory("ERC20OnChain")).attach(addressERC20OnSchain) as ERC20OnChain;
- expect(parseInt((await targetErc20OnChain.functions.balanceOf(to)).toString(), 10))
+ expect(parseInt((await targetErc20OnChain.balanceOf(to)).toString(), 10))
.to.be.equal(amount);
});
@@ -1467,7 +1465,7 @@ describe("TokenManagerERC20", () => {
"000000000000000000000000a51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c0"+
"00000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8"+
"0000000000000000000000000000000000000000000000000000000000000001";
- await messageProxyForSchain.postMessage(tokenManagerErc20.address, mainnetId, fakeDepositBox, data)
+ await messageProxyForSchain.postMessage(tokenManagerErc20, mainnetId, fakeDepositBox, data)
.should.be.eventually.rejectedWith("MessageType is unknown");
});
@@ -1478,35 +1476,35 @@ describe("TokenManagerERC20", () => {
const to = user.address;
const remoteTokenManagerAddress = fakeDepositBox;
const fromSchainName = "fromSchainName";
- const fromSchainHash = stringKeccak256(fromSchainName);
+ const fromSchainHash = ethers.id(fromSchainName);
await tokenManagerErc20.addTokenManager(fromSchainName, remoteTokenManagerAddress);
- await tokenManagerErc20.connect(schainOwner).addERC20TokenByOwner(mainnetName, erc20OnMainnet.address, erc20OnChain.address);
+ await tokenManagerErc20.connect(schainOwner).addERC20TokenByOwner(mainnetName, erc20OnMainnet, erc20OnChain);
await erc20OnMainnet.mint(deployer.address, amount);
let data = await messages.encodeTransferErc20AndTokenInfoMessage(
- erc20OnMainnet.address,
+ erc20OnMainnet,
to,
amount,
- (await erc20OnMainnet.totalSupply()).toNumber(),
+ await erc20OnMainnet.totalSupply(),
{
name: await erc20OnMainnet.name(),
symbol: await erc20OnMainnet.symbol(),
- decimals: BigNumber.from(await erc20OnMainnet.decimals()).toString()
+ decimals: await erc20OnMainnet.decimals()
}
);
await tokenManagerErc20.connect(schainOwner).enableAutomaticDeploy();
- await messageProxyForSchain.postMessage(tokenManagerErc20.address, fromSchainHash, remoteTokenManagerAddress, data);
+ await messageProxyForSchain.postMessage(tokenManagerErc20, fromSchainHash, remoteTokenManagerAddress, data);
// execution
- const UINT256_MAX = BigNumber.from(2).pow(256).sub(1);
+ const UINT256_MAX = BigInt(2 ^ 256 - 1);
data = await messages.encodeTransferErc20AndTotalSupplyMessage(
- erc20OnMainnet.address,
+ erc20OnMainnet,
to,
UINT256_MAX,
0);
- await messageProxyForSchain.postMessage(tokenManagerErc20.address, mainnetId, fakeDepositBox, data)
+ await messageProxyForSchain.postMessage(tokenManagerErc20, mainnetId, fakeDepositBox, data)
.should.be.eventually.rejectedWith("Total supply exceeded");
});
@@ -1515,18 +1513,19 @@ describe("TokenManagerERC20", () => {
const receiver = ethers.Wallet.createRandom().connect(ethers.provider);
const remoteTokenManager = ethers.Wallet.createRandom();
const sourceSchainName = "sourceSchain";
- const sourceSchainHash = stringKeccak256(sourceSchainName)
+ const sourceSchainHash = ethers.id(sourceSchainName)
await tokenManagerErc20.addTokenManager(sourceSchainName, remoteTokenManager.address);
const etherbase = await (await ethers.getContractFactory("EtherbaseMock")).deploy() as EtherbaseMock;
await etherbase.initialize(deployer.address);
- await etherbase.grantRole(await etherbase.ETHER_MANAGER_ROLE(), messageProxyForSchain.address);
- await messageProxyForSchain.setEtherbase(etherbase.address);
- await deployer.sendTransaction({to: etherbase.address, value: ethers.utils.parseEther("3")});
+ await etherbase.grantRole(await etherbase.ETHER_MANAGER_ROLE(), messageProxyForSchain);
+ await messageProxyForSchain.setEtherbase(etherbase);
+ await deployer.sendTransaction({to: etherbase, value: ethers.parseEther("3")});
- (await receiver.getBalance()).should.be.equal(0);
+ let receiverBalance = await ethers.provider.getBalance(receiver.address);
+ (receiverBalance).should.be.equal(0);
const data = await messages.encodeTransferErc20AndTokenInfoMessage(
- erc20OnMainnet.address,
+ erc20OnMainnet,
receiver.address,
amount,
2 * amount,
@@ -1538,24 +1537,25 @@ describe("TokenManagerERC20", () => {
);
await tokenManagerErc20.connect(schainOwner).enableAutomaticDeploy();
await messageProxyForSchain.postMessage(
- tokenManagerErc20.address,
+ tokenManagerErc20,
sourceSchainHash,
remoteTokenManager.address,
data);
+ receiverBalance = await ethers.provider.getBalance(receiver.address);
+ (receiverBalance).should.be.equal(0);
- (await receiver.getBalance()).should.be.equal(0);
-
- await expect(messageProxyForSchain.setMinimumReceiverBalance(ethers.utils.parseEther("2")))
+ await expect(messageProxyForSchain.setMinimumReceiverBalance(ethers.parseEther("2")))
.to.emit(messageProxyForSchain, 'MinimumReceiverBalanceChanged')
- .withArgs(0, ethers.utils.parseEther("2"));
+ .withArgs(0, ethers.parseEther("2"));
await messageProxyForSchain.postMessage(
- tokenManagerErc20.address,
+ tokenManagerErc20,
sourceSchainHash,
remoteTokenManager.address,
data);
- (await receiver.getBalance()).should.be.equal(await messageProxyForSchain.minimumReceiverBalance());
+ receiverBalance = await ethers.provider.getBalance(receiver.address);
+ (receiverBalance).should.be.equal(await messageProxyForSchain.minimumReceiverBalance());
})
});
});
diff --git a/test/TokenManagerERC721.ts b/test/TokenManagerERC721.ts
index db42dc941..23156d507 100644
--- a/test/TokenManagerERC721.ts
+++ b/test/TokenManagerERC721.ts
@@ -24,7 +24,7 @@
*/
import chaiAsPromised from "chai-as-promised";
-import chai = require("chai");
+import chai from "chai";
import {
ERC721OnChain,
TokenManagerERC721,
@@ -34,7 +34,6 @@ import {
CommunityLocker
} from "../typechain";
-import { stringKeccak256 } from "./utils/helper";
import { skipTime } from "./utils/time";
chai.should();
@@ -48,8 +47,7 @@ import { deployMessages } from "./utils/deploy/messages";
import { deployCommunityLocker } from "./utils/deploy/schain/communityLocker";
import { ethers } from "hardhat";
-import { SignerWithAddress } from "@nomiclabs/hardhat-ethers/dist/src/signer-with-address";
-import { BigNumber } from "ethers";
+import { SignerWithAddress } from "@nomicfoundation/hardhat-ethers/signers";
import { expect } from "chai";
import { deployKeyStorageMock } from "./utils/deploy/test/keyStorageMock";
@@ -60,10 +58,10 @@ describe("TokenManagerERC721", () => {
let schainOwner: SignerWithAddress;
const schainName = "V-chain";
- const schainId = stringKeccak256(schainName);
+ const schainId = ethers.id(schainName);
const tokenId = 1;
const mainnetName = "Mainnet";
- const mainnetId = stringKeccak256("Mainnet");
+ const mainnetId = ethers.id("Mainnet");
let to: string;
let token: ERC721OnChain;
let tokenClone: ERC721OnChain;
@@ -83,25 +81,25 @@ describe("TokenManagerERC721", () => {
beforeEach(async () => {
const keyStorage = await deployKeyStorageMock();
- messageProxyForSchain = await deployMessageProxyForSchainTester(keyStorage.address, schainName);
+ messageProxyForSchain = await deployMessageProxyForSchainTester(keyStorage, schainName);
tokenManagerLinker = await deployTokenManagerLinker(messageProxyForSchain, deployer.address);
messages = await deployMessages();
- fakeDepositBox = messages.address;
- fakeCommunityPool = messages.address;
+ fakeDepositBox = user.address;
+ fakeCommunityPool = user.address;
- communityLocker = await deployCommunityLocker(schainName, messageProxyForSchain.address, tokenManagerLinker, fakeCommunityPool);
+ communityLocker = await deployCommunityLocker(schainName, messageProxyForSchain, tokenManagerLinker, fakeCommunityPool);
tokenManagerERC721 =
await deployTokenManagerERC721(
schainName,
- messageProxyForSchain.address,
+ messageProxyForSchain,
tokenManagerLinker,
communityLocker,
fakeDepositBox
);
await tokenManagerERC721.connect(deployer).grantRole(await tokenManagerERC721.TOKEN_REGISTRAR_ROLE(), schainOwner.address);
await tokenManagerERC721.connect(deployer).grantRole(await tokenManagerERC721.AUTOMATIC_DEPLOY_ROLE(), schainOwner.address);
- await tokenManagerLinker.registerTokenManager(tokenManagerERC721.address);
+ await tokenManagerLinker.registerTokenManager(tokenManagerERC721);
tokenClone = await deployERC721OnChain("ELVIS", "ELV");
token = await deployERC721OnChain("SKALE", "SKL");
@@ -111,7 +109,7 @@ describe("TokenManagerERC721", () => {
to = user.address;
const data = await messages.encodeActivateUserMessage(user.address);
- await messageProxyForSchain.postMessage(communityLocker.address, mainnetId, fakeCommunityPool, data);
+ await messageProxyForSchain.postMessage(communityLocker, mainnetId, fakeCommunityPool, data);
const extraContractRegistrarRole = await messageProxyForSchain.EXTRA_CONTRACT_REGISTRAR_ROLE();
await messageProxyForSchain.connect(deployer).grantRole(extraContractRegistrarRole, deployer.address);
@@ -122,7 +120,7 @@ describe("TokenManagerERC721", () => {
it("should change depositBox address", async () => {
const newDepositBox = user.address;
- expect(await tokenManagerERC721.depositBox()).to.equal(messages.address);
+ expect(await tokenManagerERC721.depositBox()).to.equal(fakeDepositBox);
await tokenManagerERC721.connect(user).changeDepositBoxAddress(newDepositBox)
.should.be.eventually.rejectedWith("DEFAULT_ADMIN_ROLE is required");
await tokenManagerERC721.connect(deployer).changeDepositBoxAddress(newDepositBox);
@@ -131,71 +129,67 @@ describe("TokenManagerERC721", () => {
it("should successfully call exitToMainERC721", async () => {
// should be "No token clone on schain" if chains were different
- await tokenManagerERC721.connect(user).exitToMainERC721(token.address, tokenId)
+ await tokenManagerERC721.connect(user).exitToMainERC721(token, tokenId)
.should.be.eventually.rejectedWith("ERC721: invalid token ID");
- await tokenManagerERC721.connect(schainOwner).addERC721TokenByOwner(mainnetName, token.address, tokenClone.address);
- await tokenManagerERC721.connect(user).exitToMainERC721(token.address, tokenId)
+ await tokenManagerERC721.connect(schainOwner).addERC721TokenByOwner(mainnetName, token, tokenClone);
+ await tokenManagerERC721.connect(user).exitToMainERC721(token, tokenId)
.should.be.eventually.rejectedWith("ERC721: invalid token ID");
await tokenClone.connect(deployer).mint(user.address, tokenId);
- await tokenManagerERC721.connect(user).exitToMainERC721(token.address, tokenId)
+ await tokenManagerERC721.connect(user).exitToMainERC721(token, tokenId)
.should.be.eventually.rejectedWith("Not allowed ERC721 Token");
- await tokenClone.connect(user).approve(tokenManagerERC721.address, tokenId);
- await tokenManagerERC721.connect(user).exitToMainERC721(token.address, tokenId)
+ await tokenClone.connect(user).approve(tokenManagerERC721, tokenId);
+ await tokenManagerERC721.connect(user).exitToMainERC721(token, tokenId)
.should.be.eventually.rejectedWith("Sender contract is not registered");
- await messageProxyForSchain.registerExtraContract("Mainnet", tokenManagerERC721.address);
- await tokenManagerERC721.connect(user).exitToMainERC721(token.address, tokenId);
+ await messageProxyForSchain.registerExtraContract("Mainnet", tokenManagerERC721);
+ await tokenManagerERC721.connect(user).exitToMainERC721(token, tokenId);
- await messageProxyForSchain.removeExtraContract("Mainnet", tokenManagerERC721.address);
+ await messageProxyForSchain.removeExtraContract("Mainnet", tokenManagerERC721);
await tokenClone.connect(deployer).mint(user.address, tokenId);
- await tokenClone.connect(user).approve(tokenManagerERC721.address, tokenId);
+ await tokenClone.connect(user).approve(tokenManagerERC721, tokenId);
- await tokenManagerERC721.connect(user).exitToMainERC721(token.address, tokenId)
+ await tokenManagerERC721.connect(user).exitToMainERC721(token, tokenId)
.should.be.eventually.rejectedWith("Sender contract is not registered");
- const outgoingMessagesCounterMainnet = BigNumber.from(
- await messageProxyForSchain.getOutgoingMessagesCounter("Mainnet")
- );
- outgoingMessagesCounterMainnet.should.be.deep.equal(BigNumber.from(1));
+ const outgoingMessagesCounterMainnet = await messageProxyForSchain.getOutgoingMessagesCounter("Mainnet");
+ outgoingMessagesCounterMainnet.should.be.equal(1);
});
it("should be rejected when call exitToMainERC721 if remove contract for all chains", async () => {
- await tokenManagerERC721.connect(schainOwner).addERC721TokenByOwner(mainnetName, token.address, tokenClone.address);
+ await tokenManagerERC721.connect(schainOwner).addERC721TokenByOwner(mainnetName, token, tokenClone);
await tokenClone.connect(deployer).mint(user.address, tokenId);
- await tokenClone.connect(user).approve(tokenManagerERC721.address, tokenId);
- await messageProxyForSchain.registerExtraContractForAll(tokenManagerERC721.address);
+ await tokenClone.connect(user).approve(tokenManagerERC721, tokenId);
+ await messageProxyForSchain.registerExtraContractForAll(tokenManagerERC721);
- await tokenManagerERC721.connect(user).exitToMainERC721(token.address, tokenId);
+ await tokenManagerERC721.connect(user).exitToMainERC721(token, tokenId);
- await messageProxyForSchain.removeExtraContractForAll(tokenManagerERC721.address);
+ await messageProxyForSchain.removeExtraContractForAll(tokenManagerERC721);
await tokenClone.connect(deployer).mint(user.address, tokenId);
- await tokenClone.connect(user).approve(tokenManagerERC721.address, tokenId);
+ await tokenClone.connect(user).approve(tokenManagerERC721, tokenId);
- await tokenManagerERC721.connect(user).exitToMainERC721(token.address, tokenId)
+ await tokenManagerERC721.connect(user).exitToMainERC721(token, tokenId)
.should.be.eventually.rejectedWith("Sender contract is not registered");
- const outgoingMessagesCounterMainnet = BigNumber.from(
- await messageProxyForSchain.getOutgoingMessagesCounter("Mainnet")
- );
- outgoingMessagesCounterMainnet.should.be.deep.equal(BigNumber.from(1));
+ const outgoingMessagesCounterMainnet = await messageProxyForSchain.getOutgoingMessagesCounter("Mainnet");
+ outgoingMessagesCounterMainnet.should.be.equal(1);
});
it("should successfully call addERC721TokenByOwner", async () => {
- await tokenManagerERC721.connect(user).addERC721TokenByOwner(mainnetName, token.address, tokenClone.address)
+ await tokenManagerERC721.connect(user).addERC721TokenByOwner(mainnetName, token, tokenClone)
.should.be.eventually.rejectedWith("TOKEN_REGISTRAR_ROLE is required");
- await tokenManagerERC721.connect(schainOwner).addERC721TokenByOwner(mainnetName, token.address, deployer.address)
+ await tokenManagerERC721.connect(schainOwner).addERC721TokenByOwner(mainnetName, token, deployer.address)
.should.be.eventually.rejectedWith("Given address is not a contract");
- await tokenManagerERC721.connect(schainOwner).addERC721TokenByOwner(mainnetName, token.address, tokenClone.address);
+ await tokenManagerERC721.connect(schainOwner).addERC721TokenByOwner(mainnetName, token, tokenClone);
- await tokenManagerERC721.connect(schainOwner).addERC721TokenByOwner(mainnetName, token2.address, tokenClone.address)
+ await tokenManagerERC721.connect(schainOwner).addERC721TokenByOwner(mainnetName, token2, tokenClone)
.should.be.eventually.rejectedWith("Clone was already added");
- await tokenManagerERC721.connect(schainOwner).addERC721TokenByOwner(mainnetName, token.address, tokenClone2.address)
+ await tokenManagerERC721.connect(schainOwner).addERC721TokenByOwner(mainnetName, token, tokenClone2)
.should.be.eventually.rejectedWith("Could not relink clone");
});
@@ -208,184 +202,183 @@ describe("TokenManagerERC721", () => {
let tokenManagerERC7212: TokenManagerERC721;
let communityLocker2: CommunityLocker;
const newSchainName = "NewChain";
- const newSchainId = stringKeccak256(newSchainName);
+ const newSchainId = ethers.id(newSchainName);
beforeEach(async () => {
erc721OnOriginChain = await deployERC721OnChain("NewToken", "NTN");
erc721OnTargetChain = await deployERC721OnChain("NewToke1n", "NTN1");
const keyStorage2 = await deployKeyStorageMock();
- messageProxyForSchain2 = await deployMessageProxyForSchainTester(keyStorage2.address, newSchainName);
+ messageProxyForSchain2 = await deployMessageProxyForSchainTester(keyStorage2, newSchainName);
tokenManagerLinker2 = await deployTokenManagerLinker(messageProxyForSchain2, deployer.address);
- communityLocker2 = await deployCommunityLocker(newSchainName, messageProxyForSchain2.address, tokenManagerLinker2, fakeCommunityPool);
- tokenManagerERC7212 = await deployTokenManagerERC721(newSchainName, messageProxyForSchain2.address, tokenManagerLinker2, communityLocker2, fakeDepositBox);
- await erc721OnTargetChain.connect(deployer).grantRole(await erc721OnTargetChain.MINTER_ROLE(), tokenManagerERC7212.address);
- await tokenManagerLinker2.registerTokenManager(tokenManagerERC7212.address);
- await messageProxyForSchain2.registerExtraContractForAll(tokenManagerERC7212.address);
+ communityLocker2 = await deployCommunityLocker(newSchainName, messageProxyForSchain2, tokenManagerLinker2, fakeCommunityPool);
+ tokenManagerERC7212 = await deployTokenManagerERC721(newSchainName, messageProxyForSchain2, tokenManagerLinker2, communityLocker2, fakeDepositBox);
+ await erc721OnTargetChain.connect(deployer).grantRole(await erc721OnTargetChain.MINTER_ROLE(), tokenManagerERC7212);
+ await tokenManagerLinker2.registerTokenManager(tokenManagerERC7212);
+ await messageProxyForSchain2.registerExtraContractForAll(tokenManagerERC7212);
});
it("should invoke `transferToSchainERC721` without mistakes", async () => {
- await messageProxyForSchain.registerExtraContract(newSchainName, tokenManagerERC721.address);
+ await messageProxyForSchain.registerExtraContract(newSchainName, tokenManagerERC721);
// add connected chain:
await messageProxyForSchain.connect(deployer).grantRole(await messageProxyForSchain.CHAIN_CONNECTOR_ROLE(), deployer.address);
await messageProxyForSchain.connect(deployer).addConnectedChain(newSchainName);
await erc721OnOriginChain.connect(deployer).mint(user.address, tokenId);
- await erc721OnOriginChain.connect(user).approve(tokenManagerERC721.address, tokenId);
+ await erc721OnOriginChain.connect(user).approve(tokenManagerERC721, tokenId);
await tokenManagerERC721
.connect(user)
- .transferToSchainERC721(newSchainName, erc721OnOriginChain.address, tokenId)
+ .transferToSchainERC721(newSchainName, erc721OnOriginChain, tokenId)
.should.be.eventually.rejectedWith("Incorrect Token Manager address");
await tokenManagerERC721
.connect(user)
- .transferToSchainERC721("Mainnet", erc721OnOriginChain.address, tokenId)
+ .transferToSchainERC721("Mainnet", erc721OnOriginChain, tokenId)
.should.be.eventually.rejectedWith("This function is not for transferring to Mainnet");
- await tokenManagerERC721.addTokenManager(newSchainName, tokenManagerERC7212.address);
+ await tokenManagerERC721.addTokenManager(newSchainName, tokenManagerERC7212);
// execution:
await tokenManagerERC721
.connect(user)
- .transferToSchainERC721(newSchainName, erc721OnOriginChain.address, tokenId);
+ .transferToSchainERC721(newSchainName, erc721OnOriginChain, tokenId);
// expectation:
- const outgoingMessagesCounter = BigNumber.from(
- await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName));
- outgoingMessagesCounter.should.be.deep.equal(BigNumber.from(1));
+ const outgoingMessagesCounter = await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName);
+ outgoingMessagesCounter.should.be.equal(1);
});
it("should reject `transferToSchainERC721` when executing earlier then allowed", async () => {
- await messageProxyForSchain.registerExtraContract(newSchainName, tokenManagerERC721.address);
+ await messageProxyForSchain.registerExtraContract(newSchainName, tokenManagerERC721);
// add connected chain:
await messageProxyForSchain.connect(deployer).grantRole(await messageProxyForSchain.CHAIN_CONNECTOR_ROLE(), deployer.address);
await messageProxyForSchain.connect(deployer).addConnectedChain(newSchainName);
await erc721OnOriginChain.connect(deployer).mint(user.address, 1);
- await erc721OnOriginChain.connect(user).approve(tokenManagerERC721.address, 1);
+ await erc721OnOriginChain.connect(user).approve(tokenManagerERC721, 1);
await tokenManagerERC721
.connect(user)
- .transferToSchainERC721(newSchainName, erc721OnOriginChain.address, 1)
+ .transferToSchainERC721(newSchainName, erc721OnOriginChain, 1)
.should.be.eventually.rejectedWith("Incorrect Token Manager address");
await tokenManagerERC721
.connect(user)
- .transferToSchainERC721("Mainnet", erc721OnOriginChain.address, 1)
+ .transferToSchainERC721("Mainnet", erc721OnOriginChain, 1)
.should.be.eventually.rejectedWith("This function is not for transferring to Mainnet");
- await tokenManagerERC721.addTokenManager(newSchainName, tokenManagerERC7212.address);
+ await tokenManagerERC721.addTokenManager(newSchainName, tokenManagerERC7212);
await tokenManagerERC721
.connect(user)
- .transferToSchainERC721(newSchainName, erc721OnOriginChain.address, 1);
+ .transferToSchainERC721(newSchainName, erc721OnOriginChain, 1);
- BigNumber.from(await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName)).should.be.deep.equal(BigNumber.from(1));
+ (await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName)).should.be.equal(1);
await erc721OnOriginChain.connect(deployer).mint(user.address, 2);
- await erc721OnOriginChain.connect(user).approve(tokenManagerERC721.address, 2);
+ await erc721OnOriginChain.connect(user).approve(tokenManagerERC721, 2);
await tokenManagerERC721
.connect(user)
- .transferToSchainERC721(newSchainName, erc721OnOriginChain.address, 2);
+ .transferToSchainERC721(newSchainName, erc721OnOriginChain, 2);
- BigNumber.from(await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName)).should.be.deep.equal(BigNumber.from(2));
+ (await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName)).should.be.equal(2);
await communityLocker.grantRole(await communityLocker.CONSTANT_SETTER_ROLE(), deployer.address);
await communityLocker.setTimeLimitPerMessage(newSchainName, 100);
await erc721OnOriginChain.connect(deployer).mint(user.address, 3);
- await erc721OnOriginChain.connect(user).approve(tokenManagerERC721.address, 3);
+ await erc721OnOriginChain.connect(user).approve(tokenManagerERC721, 3);
await tokenManagerERC721
.connect(user)
- .transferToSchainERC721(newSchainName, erc721OnOriginChain.address, 3)
+ .transferToSchainERC721(newSchainName, erc721OnOriginChain, 3)
.should.be.eventually.rejectedWith("Exceeded message rate limit");
- BigNumber.from(await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName)).should.be.deep.equal(BigNumber.from(2));
+ (await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName)).should.be.equal(2);
await skipTime(90);
await tokenManagerERC721
.connect(user)
- .transferToSchainERC721(newSchainName, erc721OnOriginChain.address, 3)
+ .transferToSchainERC721(newSchainName, erc721OnOriginChain, 3)
.should.be.eventually.rejectedWith("Exceeded message rate limit");
- BigNumber.from(await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName)).should.be.deep.equal(BigNumber.from(2));
+ (await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName)).should.be.equal(2);
await skipTime(20);
await tokenManagerERC721
.connect(user)
- .transferToSchainERC721(newSchainName, erc721OnOriginChain.address, 3);
+ .transferToSchainERC721(newSchainName, erc721OnOriginChain, 3);
- BigNumber.from(await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName)).should.be.deep.equal(BigNumber.from(3));
+ (await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName)).should.be.equal(3);
await communityLocker.setTimeLimitPerMessage(newSchainName, 0);
await erc721OnOriginChain.connect(deployer).mint(user.address, 4);
- await erc721OnOriginChain.connect(user).approve(tokenManagerERC721.address, 4);
+ await erc721OnOriginChain.connect(user).approve(tokenManagerERC721, 4);
await tokenManagerERC721
.connect(user)
- .transferToSchainERC721(newSchainName, erc721OnOriginChain.address, 4);
+ .transferToSchainERC721(newSchainName, erc721OnOriginChain, 4);
- BigNumber.from(await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName)).should.be.deep.equal(BigNumber.from(4));
+ (await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName)).should.be.equal(4);
await communityLocker.setTimeLimitPerMessage(newSchainName, 100);
await erc721OnOriginChain.connect(deployer).mint(user.address, 5);
- await erc721OnOriginChain.connect(user).approve(tokenManagerERC721.address, 5);
+ await erc721OnOriginChain.connect(user).approve(tokenManagerERC721, 5);
await tokenManagerERC721
.connect(user)
- .transferToSchainERC721(newSchainName, erc721OnOriginChain.address, 5)
+ .transferToSchainERC721(newSchainName, erc721OnOriginChain, 5)
.should.be.eventually.rejectedWith("Exceeded message rate limit");
- BigNumber.from(await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName)).should.be.deep.equal(BigNumber.from(4));
+ (await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName)).should.be.equal(4);
await skipTime(110);
await tokenManagerERC721
.connect(user)
- .transferToSchainERC721(newSchainName, erc721OnOriginChain.address, 5);
+ .transferToSchainERC721(newSchainName, erc721OnOriginChain, 5);
- BigNumber.from(await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName)).should.be.deep.equal(BigNumber.from(5));
+ (await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName)).should.be.equal(5);
});
it("should invoke `transferToSchainERC721` and receive tokens without mistakes", async () => {
- await messageProxyForSchain.registerExtraContract(newSchainName, tokenManagerERC721.address);
+ await messageProxyForSchain.registerExtraContract(newSchainName, tokenManagerERC721);
// add connected chain:
await messageProxyForSchain.connect(deployer).grantRole(await messageProxyForSchain.CHAIN_CONNECTOR_ROLE(), deployer.address);
await messageProxyForSchain.connect(deployer).addConnectedChain(newSchainName);
await erc721OnOriginChain.connect(deployer).mint(user.address, tokenId);
- await erc721OnOriginChain.connect(user).approve(tokenManagerERC721.address, tokenId);
+ await erc721OnOriginChain.connect(user).approve(tokenManagerERC721, tokenId);
await tokenManagerERC721
.connect(user)
- .transferToSchainERC721(newSchainName, erc721OnOriginChain.address, tokenId)
+ .transferToSchainERC721(newSchainName, erc721OnOriginChain, tokenId)
.should.be.eventually.rejectedWith("Incorrect Token Manager address");
await tokenManagerERC721
.connect(user)
- .transferToSchainERC721("Mainnet", erc721OnOriginChain.address, tokenId)
+ .transferToSchainERC721("Mainnet", erc721OnOriginChain, tokenId)
.should.be.eventually.rejectedWith("This function is not for transferring to Mainnet");
- await tokenManagerERC721.addTokenManager(newSchainName, tokenManagerERC7212.address);
+ await tokenManagerERC721.addTokenManager(newSchainName, tokenManagerERC7212);
// execution:
await tokenManagerERC721
.connect(user)
- .transferToSchainERC721(newSchainName, erc721OnOriginChain.address, tokenId);
+ .transferToSchainERC721(newSchainName, erc721OnOriginChain, tokenId);
const data = await messages.encodeTransferErc721AndTokenInfoMessage(
- erc721OnOriginChain.address,
+ erc721OnOriginChain,
user.address,
tokenId,
{
@@ -395,57 +388,58 @@ describe("TokenManagerERC721", () => {
);
// expectation:
- const outgoingMessagesCounter = BigNumber.from(
- await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName));
- outgoingMessagesCounter.should.be.deep.equal(BigNumber.from(1));
+ const outgoingMessagesCounter = await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName);
+ outgoingMessagesCounter.should.be.equal(1);
// receive:
// registration:
await messageProxyForSchain2.connect(deployer).addConnectedChain(schainName);
- await tokenManagerERC7212.addTokenManager(schainName, tokenManagerERC721.address);
+ await tokenManagerERC7212.addTokenManager(schainName, tokenManagerERC721);
- await messageProxyForSchain2.postMessage(tokenManagerERC7212.address, schainId, tokenManagerERC721.address, data).should.be.eventually.rejectedWith("Automatic deploy is disabled");
+ await messageProxyForSchain2
+ .postMessage(tokenManagerERC7212, schainId, tokenManagerERC721, data)
+ .should.be.eventually.rejectedWith("Automatic deploy is disabled");
await tokenManagerERC7212.enableAutomaticDeploy();
- await messageProxyForSchain2.postMessage(tokenManagerERC7212.address, schainId, tokenManagerERC721.address, data);
+ await messageProxyForSchain2.postMessage(tokenManagerERC7212, schainId, tokenManagerERC721, data);
- const addressERC721OnSchain = await tokenManagerERC7212.clonesErc721(schainId, erc721OnOriginChain.address);
+ const addressERC721OnSchain = await tokenManagerERC7212.clonesErc721(schainId, erc721OnOriginChain);
const targetErc721OnChain = await (await ethers.getContractFactory("ERC721OnChain")).attach(addressERC721OnSchain) as ERC721OnChain;
- expect((await targetErc721OnChain.functions.ownerOf(tokenId)).toString()).to.be.equal(user.address);
+ expect((await targetErc721OnChain.ownerOf(tokenId)).toString()).to.be.equal(user.address);
});
it("should invoke `transferToSchainERC721` and receive tokens without mistakes double", async () => {
- await messageProxyForSchain.registerExtraContract(newSchainName, tokenManagerERC721.address);
+ await messageProxyForSchain.registerExtraContract(newSchainName, tokenManagerERC721);
// add connected chain:
await messageProxyForSchain.connect(deployer).grantRole(await messageProxyForSchain.CHAIN_CONNECTOR_ROLE(), deployer.address);
await messageProxyForSchain.connect(deployer).addConnectedChain(newSchainName);
await erc721OnOriginChain.connect(deployer).mint(user.address, tokenId);
- await erc721OnOriginChain.connect(user).approve(tokenManagerERC721.address, tokenId);
+ await erc721OnOriginChain.connect(user).approve(tokenManagerERC721, tokenId);
await tokenManagerERC721
.connect(user)
- .transferToSchainERC721(newSchainName, erc721OnOriginChain.address, tokenId)
+ .transferToSchainERC721(newSchainName, erc721OnOriginChain, tokenId)
.should.be.eventually.rejectedWith("Incorrect Token Manager address");
await tokenManagerERC721
.connect(user)
- .transferToSchainERC721("Mainnet", erc721OnOriginChain.address, tokenId)
+ .transferToSchainERC721("Mainnet", erc721OnOriginChain, tokenId)
.should.be.eventually.rejectedWith("This function is not for transferring to Mainnet");
- await tokenManagerERC721.addTokenManager(newSchainName, tokenManagerERC7212.address);
+ await tokenManagerERC721.addTokenManager(newSchainName, tokenManagerERC7212);
// execution:
await tokenManagerERC721
.connect(user)
- .transferToSchainERC721(newSchainName, erc721OnOriginChain.address, tokenId);
+ .transferToSchainERC721(newSchainName, erc721OnOriginChain, tokenId);
let data = await messages.encodeTransferErc721AndTokenInfoMessage(
- erc721OnOriginChain.address,
+ erc721OnOriginChain,
user.address,
tokenId,
{
@@ -455,77 +449,76 @@ describe("TokenManagerERC721", () => {
);
// expectation:
- const outgoingMessagesCounter = BigNumber.from(
- await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName));
- outgoingMessagesCounter.should.be.deep.equal(BigNumber.from(1));
+ const outgoingMessagesCounter = await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName);
+ outgoingMessagesCounter.should.be.equal(1);
// receive:
// registration:
await messageProxyForSchain2.connect(deployer).addConnectedChain(schainName);
- await tokenManagerERC7212.addTokenManager(schainName, tokenManagerERC721.address);
+ await tokenManagerERC7212.addTokenManager(schainName, tokenManagerERC721);
- await messageProxyForSchain2.postMessage(tokenManagerERC7212.address, schainId, tokenManagerERC721.address, data).should.be.eventually.rejectedWith("Automatic deploy is disabled");
+ await messageProxyForSchain2.postMessage(tokenManagerERC7212, schainId, tokenManagerERC721, data).should.be.eventually.rejectedWith("Automatic deploy is disabled");
await tokenManagerERC7212.enableAutomaticDeploy();
- await messageProxyForSchain2.postMessage(tokenManagerERC7212.address, schainId, tokenManagerERC721.address, data);
+ await messageProxyForSchain2.postMessage(tokenManagerERC7212, schainId, tokenManagerERC721, data);
- const addressERC721OnSchain = await tokenManagerERC7212.clonesErc721(schainId, erc721OnOriginChain.address);
+ const addressERC721OnSchain = await tokenManagerERC7212.clonesErc721(schainId, erc721OnOriginChain);
const targetErc721OnChain = await (await ethers.getContractFactory("ERC721OnChain")).attach(addressERC721OnSchain) as ERC721OnChain;
- expect((await targetErc721OnChain.functions.ownerOf(tokenId)).toString()).to.be.equal(user.address);
+ expect((await targetErc721OnChain.ownerOf(tokenId)).toString()).to.be.equal(user.address);
const tokenId2 = 2;
await erc721OnOriginChain.connect(deployer).mint(user.address, tokenId2);
- await erc721OnOriginChain.connect(user).approve(tokenManagerERC721.address, tokenId2);
+ await erc721OnOriginChain.connect(user).approve(tokenManagerERC721, tokenId2);
await tokenManagerERC721
.connect(user)
- .transferToSchainERC721(newSchainName, erc721OnOriginChain.address, tokenId2);
+ .transferToSchainERC721(newSchainName, erc721OnOriginChain, tokenId2);
data = await messages.encodeTransferErc721Message(
- erc721OnOriginChain.address,
+ erc721OnOriginChain,
user.address,
tokenId2
);
- await messageProxyForSchain2.postMessage(tokenManagerERC7212.address, schainId, tokenManagerERC721.address, data);
+ await messageProxyForSchain2.postMessage(tokenManagerERC7212, schainId, tokenManagerERC721, data);
- expect((await targetErc721OnChain.functions.ownerOf(tokenId)).toString()).to.be.equal(user.address);
- expect((await targetErc721OnChain.functions.ownerOf(tokenId2)).toString()).to.be.equal(user.address);
+ expect((await targetErc721OnChain.ownerOf(tokenId)).toString()).to.be.equal(user.address);
+ expect((await targetErc721OnChain.ownerOf(tokenId2)).toString()).to.be.equal(user.address);
});
it("should invoke `transferToSchainERC721` and receive tokens without mistakes double with attached token", async () => {
- await messageProxyForSchain.registerExtraContract(newSchainName, tokenManagerERC721.address);
+ await messageProxyForSchain.registerExtraContract(newSchainName, tokenManagerERC721);
// add connected chain:
await messageProxyForSchain.connect(deployer).grantRole(await messageProxyForSchain.CHAIN_CONNECTOR_ROLE(), deployer.address);
await messageProxyForSchain.connect(deployer).addConnectedChain(newSchainName);
await erc721OnOriginChain.connect(deployer).mint(user.address, tokenId);
- await erc721OnOriginChain.connect(user).approve(tokenManagerERC721.address, tokenId);
+ await erc721OnOriginChain.connect(user).approve(tokenManagerERC721, tokenId);
await tokenManagerERC721
.connect(user)
- .transferToSchainERC721(newSchainName, erc721OnOriginChain.address, tokenId)
+ .transferToSchainERC721(newSchainName, erc721OnOriginChain, tokenId)
.should.be.eventually.rejectedWith("Incorrect Token Manager address");
await tokenManagerERC721
.connect(user)
- .transferToSchainERC721("Mainnet", erc721OnOriginChain.address, tokenId)
+ .transferToSchainERC721("Mainnet", erc721OnOriginChain, tokenId)
.should.be.eventually.rejectedWith("This function is not for transferring to Mainnet");
- await tokenManagerERC721.addTokenManager(newSchainName, tokenManagerERC7212.address);
+ await tokenManagerERC721.addTokenManager(newSchainName, tokenManagerERC7212);
// execution:
await tokenManagerERC721
.connect(user)
- .transferToSchainERC721(newSchainName, erc721OnOriginChain.address, tokenId);
+ .transferToSchainERC721(newSchainName, erc721OnOriginChain, tokenId);
let data = await messages.encodeTransferErc721AndTokenInfoMessage(
- erc721OnOriginChain.address,
+ erc721OnOriginChain,
user.address,
tokenId,
{
@@ -535,76 +528,81 @@ describe("TokenManagerERC721", () => {
);
// expectation:
- const outgoingMessagesCounter = BigNumber.from(
- await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName));
- outgoingMessagesCounter.should.be.deep.equal(BigNumber.from(1));
+ const outgoingMessagesCounter = await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName);
+ outgoingMessagesCounter.should.be.equal(1);
// receive:
// registration:
- await tokenManagerERC7212.connect(schainOwner).addERC721TokenByOwner(schainName, erc721OnOriginChain.address, erc721OnTargetChain.address).should.be.eventually.rejectedWith("TOKEN_REGISTRAR_ROLE is required");
+ await tokenManagerERC7212
+ .connect(schainOwner)
+ .addERC721TokenByOwner(schainName, erc721OnOriginChain, erc721OnTargetChain)
+ .should.be.eventually.rejectedWith("TOKEN_REGISTRAR_ROLE is required");
await tokenManagerERC7212.connect(deployer).grantRole(await tokenManagerERC7212.TOKEN_REGISTRAR_ROLE(), schainOwner.address);
- await tokenManagerERC7212.connect(schainOwner).addERC721TokenByOwner(schainName, erc721OnOriginChain.address, erc721OnTargetChain.address).should.be.eventually.rejectedWith("Chain is not connected");
+ await tokenManagerERC7212
+ .connect(schainOwner)
+ .addERC721TokenByOwner(schainName, erc721OnOriginChain, erc721OnTargetChain)
+ .should.be.eventually.rejectedWith("Chain is not connected");
await messageProxyForSchain2.connect(deployer).addConnectedChain(schainName);
- await tokenManagerERC7212.connect(schainOwner).addERC721TokenByOwner(schainName, erc721OnOriginChain.address, erc721OnTargetChain.address);
- await tokenManagerERC7212.addTokenManager(schainName, tokenManagerERC721.address);
+ await tokenManagerERC7212.connect(schainOwner).addERC721TokenByOwner(schainName, erc721OnOriginChain, erc721OnTargetChain);
+ await tokenManagerERC7212.addTokenManager(schainName, tokenManagerERC721);
- await messageProxyForSchain2.postMessage(tokenManagerERC7212.address, schainId, tokenManagerERC721.address, data);
+ await messageProxyForSchain2.postMessage(tokenManagerERC7212, schainId, tokenManagerERC721, data);
- expect((await erc721OnTargetChain.functions.ownerOf(tokenId)).toString()).to.be.equal(user.address);
+ expect((await erc721OnTargetChain.ownerOf(tokenId)).toString()).to.be.equal(user.address);
const tokenId2 = 2;
await erc721OnOriginChain.connect(deployer).mint(user.address, tokenId2);
- await erc721OnOriginChain.connect(user).approve(tokenManagerERC721.address, tokenId2);
+ await erc721OnOriginChain.connect(user).approve(tokenManagerERC721, tokenId2);
await tokenManagerERC721
.connect(user)
- .transferToSchainERC721(newSchainName, erc721OnOriginChain.address, tokenId2);
+ .transferToSchainERC721(newSchainName, erc721OnOriginChain, tokenId2);
data = await messages.encodeTransferErc721Message(
- erc721OnOriginChain.address,
+ erc721OnOriginChain,
user.address,
tokenId2
);
- await messageProxyForSchain2.postMessage(tokenManagerERC7212.address, schainId, tokenManagerERC721.address, data);
+ await messageProxyForSchain2.postMessage(tokenManagerERC7212, schainId, tokenManagerERC721, data);
- expect((await erc721OnTargetChain.functions.ownerOf(tokenId)).toString()).to.be.equal(user.address);
- expect((await erc721OnTargetChain.functions.ownerOf(tokenId2)).toString()).to.be.equal(user.address);
+ expect((await erc721OnTargetChain.ownerOf(tokenId)).toString()).to.be.equal(user.address);
+ expect((await erc721OnTargetChain.ownerOf(tokenId2)).toString()).to.be.equal(user.address);
});
it("should invoke `transferToSchainERC721` and transfer back without mistakes", async () => {
- await messageProxyForSchain.registerExtraContractForAll(tokenManagerERC721.address);
+ await messageProxyForSchain.registerExtraContractForAll(tokenManagerERC721);
// add connected chain:
await messageProxyForSchain.connect(deployer).grantRole(await messageProxyForSchain.CHAIN_CONNECTOR_ROLE(), deployer.address);
await messageProxyForSchain.connect(deployer).addConnectedChain(newSchainName);
await erc721OnOriginChain.connect(deployer).mint(user.address, tokenId);
- await erc721OnOriginChain.connect(user).approve(tokenManagerERC721.address, tokenId);
+ await erc721OnOriginChain.connect(user).approve(tokenManagerERC721, tokenId);
await tokenManagerERC721
.connect(user)
- .transferToSchainERC721(newSchainName, erc721OnOriginChain.address, tokenId)
+ .transferToSchainERC721(newSchainName, erc721OnOriginChain, tokenId)
.should.be.eventually.rejectedWith("Incorrect Token Manager address");
await tokenManagerERC721
.connect(user)
- .transferToSchainERC721("Mainnet", erc721OnOriginChain.address, tokenId)
+ .transferToSchainERC721("Mainnet", erc721OnOriginChain, tokenId)
.should.be.eventually.rejectedWith("This function is not for transferring to Mainnet");
- await tokenManagerERC721.addTokenManager(newSchainName, tokenManagerERC7212.address);
+ await tokenManagerERC721.addTokenManager(newSchainName, tokenManagerERC7212);
// execution:
await tokenManagerERC721
.connect(user)
- .transferToSchainERC721(newSchainName, erc721OnOriginChain.address, tokenId);
+ .transferToSchainERC721(newSchainName, erc721OnOriginChain, tokenId);
let data = await messages.encodeTransferErc721AndTokenInfoMessage(
- erc721OnOriginChain.address,
+ erc721OnOriginChain,
user.address,
tokenId,
{
@@ -614,87 +612,86 @@ describe("TokenManagerERC721", () => {
);
// expectation:
- const outgoingMessagesCounter = BigNumber.from(
- await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName));
- outgoingMessagesCounter.should.be.deep.equal(BigNumber.from(1));
+ const outgoingMessagesCounter = await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName);
+ outgoingMessagesCounter.should.be.equal(1);
// receive:
// registration:
await messageProxyForSchain2.connect(deployer).addConnectedChain(schainName);
- await tokenManagerERC7212.addTokenManager(schainName, tokenManagerERC721.address);
+ await tokenManagerERC7212.addTokenManager(schainName, tokenManagerERC721);
- await messageProxyForSchain2.postMessage(tokenManagerERC7212.address, schainId, tokenManagerERC721.address, data).should.be.eventually.rejectedWith("Automatic deploy is disabled");
+ await messageProxyForSchain2.postMessage(tokenManagerERC7212, schainId, tokenManagerERC721, data).should.be.eventually.rejectedWith("Automatic deploy is disabled");
await tokenManagerERC7212.enableAutomaticDeploy();
- await messageProxyForSchain2.postMessage(tokenManagerERC7212.address, schainId, tokenManagerERC721.address, data);
+ await messageProxyForSchain2.postMessage(tokenManagerERC7212, schainId, tokenManagerERC721, data);
- const addressERC721OnSchain = await tokenManagerERC7212.clonesErc721(schainId, erc721OnOriginChain.address);
+ const addressERC721OnSchain = await tokenManagerERC7212.clonesErc721(schainId, erc721OnOriginChain);
const targetErc721OnChain = await (await ethers.getContractFactory("ERC721OnChain")).attach(addressERC721OnSchain) as ERC721OnChain;
- expect((await targetErc721OnChain.functions.ownerOf(tokenId)).toString()).to.be.equal(user.address);
+ expect((await targetErc721OnChain.ownerOf(tokenId)).toString()).to.be.equal(user.address);
await tokenManagerERC7212
.connect(user)
- .transferToSchainERC721(newSchainName, erc721OnOriginChain.address, tokenId)
+ .transferToSchainERC721(newSchainName, erc721OnOriginChain, tokenId)
.should.be.eventually.rejectedWith("Incorrect Token Manager address");
await tokenManagerERC7212
.connect(user)
- .transferToSchainERC721("Mainnet", erc721OnOriginChain.address, tokenId)
+ .transferToSchainERC721("Mainnet", erc721OnOriginChain, tokenId)
.should.be.eventually.rejectedWith("This function is not for transferring to Mainnet");
await tokenManagerERC7212
.connect(user)
- .transferToSchainERC721(schainName, erc721OnOriginChain.address, tokenId)
+ .transferToSchainERC721(schainName, erc721OnOriginChain, tokenId)
.should.be.eventually.rejectedWith("Not allowed ERC721 Token");
- await targetErc721OnChain.connect(user).approve(tokenManagerERC7212.address, tokenId);
+ await targetErc721OnChain.connect(user).approve(tokenManagerERC7212, tokenId);
await tokenManagerERC7212
.connect(user)
- .transferToSchainERC721(schainName, erc721OnOriginChain.address, tokenId);
+ .transferToSchainERC721(schainName, erc721OnOriginChain, tokenId);
data = await messages.encodeTransferErc721Message(
- erc721OnOriginChain.address,
+ erc721OnOriginChain,
user.address,
tokenId
);
- await messageProxyForSchain.postMessage(tokenManagerERC721.address, newSchainId, tokenManagerERC7212.address, data);
- expect((await erc721OnOriginChain.functions.ownerOf(tokenId)).toString()).to.be.equal(user.address);
+ await messageProxyForSchain.postMessage(tokenManagerERC721, newSchainId, tokenManagerERC7212, data);
+ expect((await erc721OnOriginChain.ownerOf(tokenId)).toString()).to.be.equal(user.address);
});
it("should invoke `transferToSchainERC721` and transfer back without mistakes with attached tokens", async () => {
- await messageProxyForSchain.registerExtraContractForAll(tokenManagerERC721.address);
+ await messageProxyForSchain.registerExtraContractForAll(tokenManagerERC721);
// add connected chain:
await messageProxyForSchain.connect(deployer).grantRole(await messageProxyForSchain.CHAIN_CONNECTOR_ROLE(), deployer.address);
await messageProxyForSchain.connect(deployer).addConnectedChain(newSchainName);
await erc721OnOriginChain.connect(deployer).mint(user.address, tokenId);
- await erc721OnOriginChain.connect(user).approve(tokenManagerERC721.address, tokenId);
+ await erc721OnOriginChain.connect(user).approve(tokenManagerERC721, tokenId);
await tokenManagerERC721
.connect(user)
- .transferToSchainERC721(newSchainName, erc721OnOriginChain.address, tokenId)
+ .transferToSchainERC721(newSchainName, erc721OnOriginChain, tokenId)
.should.be.eventually.rejectedWith("Incorrect Token Manager address");
await tokenManagerERC721
.connect(user)
- .transferToSchainERC721("Mainnet", erc721OnOriginChain.address, tokenId)
+ .transferToSchainERC721("Mainnet", erc721OnOriginChain, tokenId)
.should.be.eventually.rejectedWith("This function is not for transferring to Mainnet");
- await tokenManagerERC721.addTokenManager(newSchainName, tokenManagerERC7212.address);
+ await tokenManagerERC721.addTokenManager(newSchainName, tokenManagerERC7212);
// execution:
await tokenManagerERC721
.connect(user)
- .transferToSchainERC721(newSchainName, erc721OnOriginChain.address, tokenId);
+ .transferToSchainERC721(newSchainName, erc721OnOriginChain, tokenId);
let data = await messages.encodeTransferErc721AndTokenInfoMessage(
- erc721OnOriginChain.address,
+ erc721OnOriginChain,
user.address,
tokenId,
{
@@ -704,83 +701,82 @@ describe("TokenManagerERC721", () => {
);
// expectation:
- const outgoingMessagesCounter = BigNumber.from(
- await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName));
- outgoingMessagesCounter.should.be.deep.equal(BigNumber.from(1));
+ const outgoingMessagesCounter = await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName);
+ outgoingMessagesCounter.should.be.equal(1);
// receive:
// registration:
await messageProxyForSchain2.connect(deployer).addConnectedChain(schainName);
- await tokenManagerERC7212.addTokenManager(schainName, tokenManagerERC721.address);
+ await tokenManagerERC7212.addTokenManager(schainName, tokenManagerERC721);
await tokenManagerERC7212.connect(deployer).grantRole(await tokenManagerERC7212.TOKEN_REGISTRAR_ROLE(), schainOwner.address);
- await tokenManagerERC7212.connect(schainOwner).addERC721TokenByOwner(schainName, erc721OnOriginChain.address, erc721OnTargetChain.address);
+ await tokenManagerERC7212.connect(schainOwner).addERC721TokenByOwner(schainName, erc721OnOriginChain, erc721OnTargetChain);
- await messageProxyForSchain2.postMessage(tokenManagerERC7212.address, schainId, tokenManagerERC721.address, data);
+ await messageProxyForSchain2.postMessage(tokenManagerERC7212, schainId, tokenManagerERC721, data);
await tokenManagerERC7212
.connect(user)
- .transferToSchainERC721(newSchainName, erc721OnOriginChain.address, tokenId)
+ .transferToSchainERC721(newSchainName, erc721OnOriginChain, tokenId)
.should.be.eventually.rejectedWith("Incorrect Token Manager address");
await tokenManagerERC7212
.connect(user)
- .transferToSchainERC721("Mainnet", erc721OnOriginChain.address, tokenId)
+ .transferToSchainERC721("Mainnet", erc721OnOriginChain, tokenId)
.should.be.eventually.rejectedWith("This function is not for transferring to Mainnet");
await tokenManagerERC7212
.connect(user)
- .transferToSchainERC721(schainName, erc721OnOriginChain.address, tokenId)
+ .transferToSchainERC721(schainName, erc721OnOriginChain, tokenId)
.should.be.eventually.rejectedWith("Not allowed ERC721 Token");
- await erc721OnTargetChain.connect(user).approve(tokenManagerERC7212.address, tokenId);
+ await erc721OnTargetChain.connect(user).approve(tokenManagerERC7212, tokenId);
await tokenManagerERC7212
.connect(user)
- .transferToSchainERC721(schainName, erc721OnOriginChain.address, tokenId);
+ .transferToSchainERC721(schainName, erc721OnOriginChain, tokenId);
data = await messages.encodeTransferErc721Message(
- erc721OnOriginChain.address,
+ erc721OnOriginChain,
user.address,
tokenId
);
- await messageProxyForSchain.postMessage(tokenManagerERC721.address, newSchainId, tokenManagerERC7212.address, data);
- expect((await erc721OnOriginChain.functions.ownerOf(tokenId)).toString()).to.be.equal(user.address);
+ await messageProxyForSchain.postMessage(tokenManagerERC721, newSchainId, tokenManagerERC7212, data);
+ expect((await erc721OnOriginChain.ownerOf(tokenId)).toString()).to.be.equal(user.address);
});
it("should invoke `transferToSchainERC721` and transfer back without mistakes double", async () => {
- await messageProxyForSchain.registerExtraContractForAll(tokenManagerERC721.address);
+ await messageProxyForSchain.registerExtraContractForAll(tokenManagerERC721);
// add connected chain:
await messageProxyForSchain.connect(deployer).grantRole(await messageProxyForSchain.CHAIN_CONNECTOR_ROLE(), deployer.address);
await messageProxyForSchain.connect(deployer).addConnectedChain(newSchainName);
await erc721OnOriginChain.connect(deployer).mint(user.address, tokenId);
- await erc721OnOriginChain.connect(user).approve(tokenManagerERC721.address, tokenId);
+ await erc721OnOriginChain.connect(user).approve(tokenManagerERC721, tokenId);
await tokenManagerERC721
.connect(user)
- .transferToSchainERC721(newSchainName, erc721OnOriginChain.address, tokenId)
+ .transferToSchainERC721(newSchainName, erc721OnOriginChain, tokenId)
.should.be.eventually.rejectedWith("Incorrect Token Manager address");
await tokenManagerERC721
.connect(user)
- .transferToSchainERC721("Mainnet", erc721OnOriginChain.address, tokenId)
+ .transferToSchainERC721("Mainnet", erc721OnOriginChain, tokenId)
.should.be.eventually.rejectedWith("This function is not for transferring to Mainnet");
- await tokenManagerERC721.addTokenManager(newSchainName, tokenManagerERC7212.address);
+ await tokenManagerERC721.addTokenManager(newSchainName, tokenManagerERC7212);
// execution:
await tokenManagerERC721
.connect(user)
- .transferToSchainERC721(newSchainName, erc721OnOriginChain.address, tokenId);
+ .transferToSchainERC721(newSchainName, erc721OnOriginChain, tokenId);
let data = await messages.encodeTransferErc721AndTokenInfoMessage(
- erc721OnOriginChain.address,
+ erc721OnOriginChain,
user.address,
tokenId,
{
@@ -790,155 +786,154 @@ describe("TokenManagerERC721", () => {
);
// expectation:
- const outgoingMessagesCounter = BigNumber.from(
- await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName));
- outgoingMessagesCounter.should.be.deep.equal(BigNumber.from(1));
+ const outgoingMessagesCounter = await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName);
+ outgoingMessagesCounter.should.be.equal(1);
// receive:
// registration:
await messageProxyForSchain2.connect(deployer).addConnectedChain(schainName);
- await tokenManagerERC7212.addTokenManager(schainName, tokenManagerERC721.address);
+ await tokenManagerERC7212.addTokenManager(schainName, tokenManagerERC721);
- await messageProxyForSchain2.postMessage(tokenManagerERC7212.address, schainId, tokenManagerERC721.address, data).should.be.eventually.rejectedWith("Automatic deploy is disabled");
+ await messageProxyForSchain2.postMessage(tokenManagerERC7212, schainId, tokenManagerERC721, data).should.be.eventually.rejectedWith("Automatic deploy is disabled");
await tokenManagerERC7212.enableAutomaticDeploy();
- await messageProxyForSchain2.postMessage(tokenManagerERC7212.address, schainId, tokenManagerERC721.address, data);
+ await messageProxyForSchain2.postMessage(tokenManagerERC7212, schainId, tokenManagerERC721, data);
- const addressERC721OnSchain = await tokenManagerERC7212.clonesErc721(schainId, erc721OnOriginChain.address);
- const targetErc721OnChain = await (await ethers.getContractFactory("ERC721OnChain")).attach(addressERC721OnSchain) as ERC721OnChain;
- expect((await targetErc721OnChain.functions.ownerOf(tokenId)).toString()).to.be.equal(user.address);
+ const addressERC721OnSchain = await tokenManagerERC7212.clonesErc721(schainId, erc721OnOriginChain);
+ const targetErc721OnChain = (await ethers.getContractFactory("ERC721OnChain")).attach(addressERC721OnSchain) as ERC721OnChain;
+ expect((await targetErc721OnChain.ownerOf(tokenId)).toString()).to.be.equal(user.address);
await tokenManagerERC7212
.connect(user)
- .transferToSchainERC721(newSchainName, erc721OnOriginChain.address, tokenId)
+ .transferToSchainERC721(newSchainName, erc721OnOriginChain, tokenId)
.should.be.eventually.rejectedWith("Incorrect Token Manager address");
await tokenManagerERC7212
.connect(user)
- .transferToSchainERC721("Mainnet", erc721OnOriginChain.address, tokenId)
+ .transferToSchainERC721("Mainnet", erc721OnOriginChain, tokenId)
.should.be.eventually.rejectedWith("This function is not for transferring to Mainnet");
await tokenManagerERC7212
.connect(user)
- .transferToSchainERC721(schainName, erc721OnOriginChain.address, tokenId)
+ .transferToSchainERC721(schainName, erc721OnOriginChain, tokenId)
.should.be.eventually.rejectedWith("Not allowed ERC721 Token");
- await targetErc721OnChain.connect(user).approve(tokenManagerERC7212.address, tokenId);
+ await targetErc721OnChain.connect(user).approve(tokenManagerERC7212, tokenId);
await tokenManagerERC7212
.connect(user)
- .transferToSchainERC721(schainName, erc721OnOriginChain.address, tokenId);
+ .transferToSchainERC721(schainName, erc721OnOriginChain, tokenId);
data = await messages.encodeTransferErc721Message(
- erc721OnOriginChain.address,
+ erc721OnOriginChain,
user.address,
tokenId
);
- await messageProxyForSchain.postMessage(tokenManagerERC721.address, newSchainId, tokenManagerERC7212.address, data);
- expect((await erc721OnOriginChain.functions.ownerOf(tokenId)).toString()).to.be.equal(user.address);
+ await messageProxyForSchain.postMessage(tokenManagerERC721, newSchainId, tokenManagerERC7212, data);
+ expect((await erc721OnOriginChain.ownerOf(tokenId)).toString()).to.be.equal(user.address);
- await erc721OnOriginChain.connect(user).approve(tokenManagerERC721.address, tokenId);
+ await erc721OnOriginChain.connect(user).approve(tokenManagerERC721, tokenId);
await tokenManagerERC721
.connect(user)
- .transferToSchainERC721(newSchainName, erc721OnOriginChain.address, tokenId);
+ .transferToSchainERC721(newSchainName, erc721OnOriginChain, tokenId);
data = await messages.encodeTransferErc721Message(
- erc721OnOriginChain.address,
+ erc721OnOriginChain,
user.address,
tokenId
);
- await messageProxyForSchain2.postMessage(tokenManagerERC7212.address, schainId, tokenManagerERC721.address, data);
+ await messageProxyForSchain2.postMessage(tokenManagerERC7212, schainId, tokenManagerERC721, data);
- expect((await targetErc721OnChain.functions.ownerOf(tokenId)).toString()).to.be.equal(user.address);
+ expect((await targetErc721OnChain.ownerOf(tokenId)).toString()).to.be.equal(user.address);
const tokenId2 = 2;
await erc721OnOriginChain.connect(deployer).mint(user.address, tokenId2);
- await erc721OnOriginChain.connect(user).approve(tokenManagerERC721.address, tokenId2);
+ await erc721OnOriginChain.connect(user).approve(tokenManagerERC721, tokenId2);
await tokenManagerERC721
.connect(user)
- .transferToSchainERC721(newSchainName, erc721OnOriginChain.address, tokenId2);
+ .transferToSchainERC721(newSchainName, erc721OnOriginChain, tokenId2);
data = await messages.encodeTransferErc721Message(
- erc721OnOriginChain.address,
+ erc721OnOriginChain,
user.address,
tokenId2
);
- await messageProxyForSchain2.postMessage(tokenManagerERC7212.address, schainId, tokenManagerERC721.address, data);
+ await messageProxyForSchain2.postMessage(tokenManagerERC7212, schainId, tokenManagerERC721, data);
- expect((await targetErc721OnChain.functions.ownerOf(tokenId)).toString()).to.be.equal(user.address);
- expect((await targetErc721OnChain.functions.ownerOf(tokenId2)).toString()).to.be.equal(user.address);
+ expect((await targetErc721OnChain.ownerOf(tokenId)).toString()).to.be.equal(user.address);
+ expect((await targetErc721OnChain.ownerOf(tokenId2)).toString()).to.be.equal(user.address);
- await targetErc721OnChain.connect(user).approve(tokenManagerERC7212.address, tokenId);
+ await targetErc721OnChain.connect(user).approve(tokenManagerERC7212, tokenId);
await tokenManagerERC7212
.connect(user)
- .transferToSchainERC721(schainName, erc721OnOriginChain.address, tokenId);
+ .transferToSchainERC721(schainName, erc721OnOriginChain, tokenId);
data = await messages.encodeTransferErc721Message(
- erc721OnOriginChain.address,
+ erc721OnOriginChain,
user.address,
tokenId
);
- await messageProxyForSchain.postMessage(tokenManagerERC721.address, newSchainId, tokenManagerERC7212.address, data);
- expect((await erc721OnOriginChain.functions.ownerOf(tokenId)).toString()).to.be.equal(user.address);
+ await messageProxyForSchain.postMessage(tokenManagerERC721, newSchainId, tokenManagerERC7212, data);
+ expect((await erc721OnOriginChain.ownerOf(tokenId)).toString()).to.be.equal(user.address);
- await targetErc721OnChain.connect(user).approve(tokenManagerERC7212.address, tokenId2);
+ await targetErc721OnChain.connect(user).approve(tokenManagerERC7212, tokenId2);
await tokenManagerERC7212
.connect(user)
- .transferToSchainERC721(schainName, erc721OnOriginChain.address, tokenId2);
+ .transferToSchainERC721(schainName, erc721OnOriginChain, tokenId2);
data = await messages.encodeTransferErc721Message(
- erc721OnOriginChain.address,
+ erc721OnOriginChain,
user.address,
tokenId2
);
- await messageProxyForSchain.postMessage(tokenManagerERC721.address, newSchainId, tokenManagerERC7212.address, data);
+ await messageProxyForSchain.postMessage(tokenManagerERC721, newSchainId, tokenManagerERC7212, data);
- expect((await erc721OnOriginChain.functions.ownerOf(tokenId)).toString()).to.be.equal(user.address);
- expect((await erc721OnOriginChain.functions.ownerOf(tokenId2)).toString()).to.be.equal(user.address);
+ expect((await erc721OnOriginChain.ownerOf(tokenId)).toString()).to.be.equal(user.address);
+ expect((await erc721OnOriginChain.ownerOf(tokenId2)).toString()).to.be.equal(user.address);
});
it("should invoke `transferToSchainERC721` and transfer back without mistakes double with attached tokens", async () => {
- await messageProxyForSchain.registerExtraContractForAll(tokenManagerERC721.address);
+ await messageProxyForSchain.registerExtraContractForAll(tokenManagerERC721);
// add connected chain:
await messageProxyForSchain.connect(deployer).grantRole(await messageProxyForSchain.CHAIN_CONNECTOR_ROLE(), deployer.address);
await messageProxyForSchain.connect(deployer).addConnectedChain(newSchainName);
await erc721OnOriginChain.connect(deployer).mint(user.address, tokenId);
- await erc721OnOriginChain.connect(user).approve(tokenManagerERC721.address, tokenId);
+ await erc721OnOriginChain.connect(user).approve(tokenManagerERC721, tokenId);
await tokenManagerERC721
.connect(user)
- .transferToSchainERC721(newSchainName, erc721OnOriginChain.address, tokenId)
+ .transferToSchainERC721(newSchainName, erc721OnOriginChain, tokenId)
.should.be.eventually.rejectedWith("Incorrect Token Manager address");
await tokenManagerERC721
.connect(user)
- .transferToSchainERC721("Mainnet", erc721OnOriginChain.address, tokenId)
+ .transferToSchainERC721("Mainnet", erc721OnOriginChain, tokenId)
.should.be.eventually.rejectedWith("This function is not for transferring to Mainnet");
- await tokenManagerERC721.addTokenManager(newSchainName, tokenManagerERC7212.address);
+ await tokenManagerERC721.addTokenManager(newSchainName, tokenManagerERC7212);
// execution:
await tokenManagerERC721
.connect(user)
- .transferToSchainERC721(newSchainName, erc721OnOriginChain.address, tokenId);
+ .transferToSchainERC721(newSchainName, erc721OnOriginChain, tokenId);
let data = await messages.encodeTransferErc721AndTokenInfoMessage(
- erc721OnOriginChain.address,
+ erc721OnOriginChain,
user.address,
tokenId,
{
@@ -948,139 +943,138 @@ describe("TokenManagerERC721", () => {
);
// expectation:
- const outgoingMessagesCounter = BigNumber.from(
- await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName));
- outgoingMessagesCounter.should.be.deep.equal(BigNumber.from(1));
+ const outgoingMessagesCounter = await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName);
+ outgoingMessagesCounter.should.be.equal(1);
// receive:
// registration:
await messageProxyForSchain2.connect(deployer).addConnectedChain(schainName);
- await tokenManagerERC7212.addTokenManager(schainName, tokenManagerERC721.address);
+ await tokenManagerERC7212.addTokenManager(schainName, tokenManagerERC721);
await tokenManagerERC7212.connect(deployer).grantRole(await tokenManagerERC7212.TOKEN_REGISTRAR_ROLE(), schainOwner.address);
- await tokenManagerERC7212.connect(schainOwner).addERC721TokenByOwner(schainName, erc721OnOriginChain.address, erc721OnTargetChain.address);
+ await tokenManagerERC7212.connect(schainOwner).addERC721TokenByOwner(schainName, erc721OnOriginChain, erc721OnTargetChain);
- await messageProxyForSchain2.postMessage(tokenManagerERC7212.address, schainId, tokenManagerERC721.address, data);
+ await messageProxyForSchain2.postMessage(tokenManagerERC7212, schainId, tokenManagerERC721, data);
await tokenManagerERC7212
.connect(user)
- .transferToSchainERC721(newSchainName, erc721OnOriginChain.address, tokenId)
+ .transferToSchainERC721(newSchainName, erc721OnOriginChain, tokenId)
.should.be.eventually.rejectedWith("Incorrect Token Manager address");
await tokenManagerERC7212
.connect(user)
- .transferToSchainERC721("Mainnet", erc721OnOriginChain.address, tokenId)
+ .transferToSchainERC721("Mainnet", erc721OnOriginChain, tokenId)
.should.be.eventually.rejectedWith("This function is not for transferring to Mainnet");
await tokenManagerERC7212
.connect(user)
- .transferToSchainERC721(schainName, erc721OnOriginChain.address, tokenId)
+ .transferToSchainERC721(schainName, erc721OnOriginChain, tokenId)
.should.be.eventually.rejectedWith("Not allowed ERC721 Token");
- await erc721OnTargetChain.connect(user).approve(tokenManagerERC7212.address, tokenId);
+ await erc721OnTargetChain.connect(user).approve(tokenManagerERC7212, tokenId);
await tokenManagerERC7212
.connect(user)
- .transferToSchainERC721(schainName, erc721OnOriginChain.address, tokenId);
+ .transferToSchainERC721(schainName, erc721OnOriginChain, tokenId);
data = await messages.encodeTransferErc721Message(
- erc721OnOriginChain.address,
+ erc721OnOriginChain,
user.address,
tokenId
);
- await messageProxyForSchain.postMessage(tokenManagerERC721.address, newSchainId, tokenManagerERC7212.address, data);
- expect((await erc721OnOriginChain.functions.ownerOf(tokenId)).toString()).to.be.equal(user.address);
+ await messageProxyForSchain.postMessage(tokenManagerERC721, newSchainId, tokenManagerERC7212, data);
+ expect((await erc721OnOriginChain.ownerOf(tokenId)).toString()).to.be.equal(user.address);
- await erc721OnOriginChain.connect(user).approve(tokenManagerERC721.address, tokenId);
+ await erc721OnOriginChain.connect(user).approve(tokenManagerERC721, tokenId);
await tokenManagerERC721
.connect(user)
- .transferToSchainERC721(newSchainName, erc721OnOriginChain.address, tokenId);
+ .transferToSchainERC721(newSchainName, erc721OnOriginChain, tokenId);
data = await messages.encodeTransferErc721Message(
- erc721OnOriginChain.address,
+ erc721OnOriginChain,
user.address,
tokenId
);
- await messageProxyForSchain2.postMessage(tokenManagerERC7212.address, schainId, tokenManagerERC721.address, data);
+ await messageProxyForSchain2.postMessage(tokenManagerERC7212, schainId, tokenManagerERC721, data);
- expect((await erc721OnTargetChain.functions.ownerOf(tokenId)).toString()).to.be.equal(user.address);
+ expect((await erc721OnTargetChain.ownerOf(tokenId)).toString()).to.be.equal(user.address);
const tokenId2 = 2;
await erc721OnOriginChain.connect(deployer).mint(user.address, tokenId2);
- await erc721OnOriginChain.connect(user).approve(tokenManagerERC721.address, tokenId2);
+ await erc721OnOriginChain.connect(user).approve(tokenManagerERC721, tokenId2);
await tokenManagerERC721
.connect(user)
- .transferToSchainERC721(newSchainName, erc721OnOriginChain.address, tokenId2);
+ .transferToSchainERC721(newSchainName, erc721OnOriginChain, tokenId2);
data = await messages.encodeTransferErc721Message(
- erc721OnOriginChain.address,
+ erc721OnOriginChain,
user.address,
tokenId2
);
- await messageProxyForSchain2.postMessage(tokenManagerERC7212.address, schainId, tokenManagerERC721.address, data);
+ await messageProxyForSchain2.postMessage(tokenManagerERC7212, schainId, tokenManagerERC721, data);
- expect((await erc721OnTargetChain.functions.ownerOf(tokenId)).toString()).to.be.equal(user.address);
- expect((await erc721OnTargetChain.functions.ownerOf(tokenId2)).toString()).to.be.equal(user.address);
+ expect((await erc721OnTargetChain.ownerOf(tokenId)).toString()).to.be.equal(user.address);
+ expect((await erc721OnTargetChain.ownerOf(tokenId2)).toString()).to.be.equal(user.address);
- await erc721OnTargetChain.connect(user).approve(tokenManagerERC7212.address, tokenId);
+ await erc721OnTargetChain.connect(user).approve(tokenManagerERC7212, tokenId);
await tokenManagerERC7212
.connect(user)
- .transferToSchainERC721(schainName, erc721OnOriginChain.address, tokenId);
+ .transferToSchainERC721(schainName, erc721OnOriginChain, tokenId);
data = await messages.encodeTransferErc721Message(
- erc721OnOriginChain.address,
+ erc721OnOriginChain,
user.address,
tokenId
);
- await messageProxyForSchain.postMessage(tokenManagerERC721.address, newSchainId, tokenManagerERC7212.address, data);
- expect((await erc721OnOriginChain.functions.ownerOf(tokenId)).toString()).to.be.equal(user.address);
+ await messageProxyForSchain.postMessage(tokenManagerERC721, newSchainId, tokenManagerERC7212, data);
+ expect((await erc721OnOriginChain.ownerOf(tokenId)).toString()).to.be.equal(user.address);
- await erc721OnTargetChain.connect(user).approve(tokenManagerERC7212.address, tokenId2);
+ await erc721OnTargetChain.connect(user).approve(tokenManagerERC7212, tokenId2);
await tokenManagerERC7212
.connect(user)
- .transferToSchainERC721(schainName, erc721OnOriginChain.address, tokenId2);
+ .transferToSchainERC721(schainName, erc721OnOriginChain, tokenId2);
data = await messages.encodeTransferErc721Message(
- erc721OnOriginChain.address,
+ erc721OnOriginChain,
user.address,
tokenId2
);
- await messageProxyForSchain.postMessage(tokenManagerERC721.address, newSchainId, tokenManagerERC7212.address, data);
+ await messageProxyForSchain.postMessage(tokenManagerERC721, newSchainId, tokenManagerERC7212, data);
- expect((await erc721OnOriginChain.functions.ownerOf(tokenId)).toString()).to.be.equal(user.address);
- expect((await erc721OnOriginChain.functions.ownerOf(tokenId2)).toString()).to.be.equal(user.address);
+ expect((await erc721OnOriginChain.ownerOf(tokenId)).toString()).to.be.equal(user.address);
+ expect((await erc721OnOriginChain.ownerOf(tokenId2)).toString()).to.be.equal(user.address);
});
it("should not be able to transfer X->Y->Z", async () => {
- await messageProxyForSchain.registerExtraContract(newSchainName, tokenManagerERC721.address);
+ await messageProxyForSchain.registerExtraContract(newSchainName, tokenManagerERC721);
// add connected chain:
await messageProxyForSchain.connect(deployer).grantRole(await messageProxyForSchain.CHAIN_CONNECTOR_ROLE(), deployer.address);
await messageProxyForSchain.connect(deployer).addConnectedChain(newSchainName);
await erc721OnOriginChain.connect(deployer).mint(user.address, tokenId);
- await erc721OnOriginChain.connect(user).approve(tokenManagerERC721.address, tokenId);
+ await erc721OnOriginChain.connect(user).approve(tokenManagerERC721, tokenId);
- await tokenManagerERC721.addTokenManager(newSchainName, tokenManagerERC7212.address);
+ await tokenManagerERC721.addTokenManager(newSchainName, tokenManagerERC7212);
// execution:
await tokenManagerERC721
.connect(user)
- .transferToSchainERC721(newSchainName, erc721OnOriginChain.address, tokenId);
+ .transferToSchainERC721(newSchainName, erc721OnOriginChain, tokenId);
const data = await messages.encodeTransferErc721AndTokenInfoMessage(
- erc721OnOriginChain.address,
+ erc721OnOriginChain,
user.address,
tokenId,
{
@@ -1090,71 +1084,70 @@ describe("TokenManagerERC721", () => {
);
// expectation:
- const outgoingMessagesCounter = BigNumber.from(
- await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName));
- outgoingMessagesCounter.should.be.deep.equal(BigNumber.from(1));
+ const outgoingMessagesCounter = await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName);
+ outgoingMessagesCounter.should.be.equal(1);
// receive:
// registration:
await messageProxyForSchain2.connect(deployer).addConnectedChain(schainName);
- await tokenManagerERC7212.addTokenManager(schainName, tokenManagerERC721.address);
+ await tokenManagerERC7212.addTokenManager(schainName, tokenManagerERC721);
await tokenManagerERC7212.connect(deployer).grantRole(await tokenManagerERC7212.TOKEN_REGISTRAR_ROLE(), schainOwner.address);
- await tokenManagerERC7212.connect(schainOwner).addERC721TokenByOwner(schainName, erc721OnOriginChain.address, erc721OnTargetChain.address);
+ await tokenManagerERC7212.connect(schainOwner).addERC721TokenByOwner(schainName, erc721OnOriginChain, erc721OnTargetChain);
- await messageProxyForSchain2.postMessage(tokenManagerERC7212.address, schainId, tokenManagerERC721.address, data);
+ await messageProxyForSchain2.postMessage(tokenManagerERC7212, schainId, tokenManagerERC721, data);
- expect((await erc721OnTargetChain.functions.ownerOf(tokenId)).toString()).to.be.equal(user.address);
+ expect((await erc721OnTargetChain.ownerOf(tokenId)).toString()).to.be.equal(user.address);
const newSchainNameZ = "NewChainZ";
const erc721OnTargetZChain = await deployERC721OnChain("NewTokenZ", "NTNZ");
const keyStorageZ = await deployKeyStorageMock();
- const messageProxyForSchainZ = await deployMessageProxyForSchainTester(keyStorageZ.address, newSchainNameZ);
+ const messageProxyForSchainZ = await deployMessageProxyForSchainTester(keyStorageZ, newSchainNameZ);
const tokenManagerLinkerZ = await deployTokenManagerLinker(messageProxyForSchainZ, deployer.address);
- const communityLockerZ = await deployCommunityLocker(newSchainName, messageProxyForSchainZ.address, tokenManagerLinkerZ, fakeCommunityPool);
- const tokenManagerERC721Z = await deployTokenManagerERC721(newSchainNameZ, messageProxyForSchainZ.address, tokenManagerLinkerZ, communityLockerZ, fakeDepositBox);
- await erc721OnTargetZChain.connect(deployer).grantRole(await erc721OnTargetZChain.MINTER_ROLE(), tokenManagerERC721Z.address);
- await tokenManagerLinkerZ.registerTokenManager(tokenManagerERC721Z.address);
+ const communityLockerZ = await deployCommunityLocker(newSchainName, messageProxyForSchainZ, tokenManagerLinkerZ, fakeCommunityPool);
+ const tokenManagerERC721Z = await deployTokenManagerERC721(newSchainNameZ, messageProxyForSchainZ, tokenManagerLinkerZ, communityLockerZ, fakeDepositBox);
+ await erc721OnTargetZChain.connect(deployer).grantRole(await erc721OnTargetZChain.MINTER_ROLE(), tokenManagerERC721Z);
+ await tokenManagerLinkerZ.registerTokenManager(tokenManagerERC721Z);
await messageProxyForSchain2.connect(deployer).grantRole(await messageProxyForSchain2.CHAIN_CONNECTOR_ROLE(), deployer.address);
await messageProxyForSchain2.connect(deployer).addConnectedChain(newSchainNameZ);
- await tokenManagerERC7212.addTokenManager(newSchainNameZ, tokenManagerERC721Z.address);
+ await tokenManagerERC7212.addTokenManager(newSchainNameZ, tokenManagerERC721Z);
- await erc721OnTargetChain.connect(user).approve(tokenManagerERC7212.address, tokenId);
+ await erc721OnTargetChain.connect(user).approve(tokenManagerERC7212, tokenId);
await tokenManagerERC7212
.connect(user)
- .transferToSchainERC721(newSchainNameZ, erc721OnOriginChain.address, tokenId)
+ .transferToSchainERC721(newSchainNameZ, erc721OnOriginChain, tokenId)
.should.be.eventually.rejectedWith("Not allowed ERC721 Token");
await tokenManagerERC7212
.connect(user)
- .transferToSchainERC721(newSchainNameZ, erc721OnTargetChain.address, tokenId)
+ .transferToSchainERC721(newSchainNameZ, erc721OnTargetChain, tokenId)
.should.be.eventually.rejectedWith("Incorrect main chain token");
});
it("should not be able to transfer main chain token or clone to mainnet", async () => {
- await messageProxyForSchain.registerExtraContractForAll(tokenManagerERC721.address);
+ await messageProxyForSchain.registerExtraContractForAll(tokenManagerERC721);
// add connected chain:
await messageProxyForSchain.connect(deployer).grantRole(await messageProxyForSchain.CHAIN_CONNECTOR_ROLE(), deployer.address);
await messageProxyForSchain.connect(deployer).addConnectedChain(newSchainName);
await erc721OnOriginChain.connect(deployer).mint(user.address, tokenId);
- await erc721OnOriginChain.connect(user).approve(tokenManagerERC721.address, tokenId);
+ await erc721OnOriginChain.connect(user).approve(tokenManagerERC721, tokenId);
- await tokenManagerERC721.addTokenManager(newSchainName, tokenManagerERC7212.address);
+ await tokenManagerERC721.addTokenManager(newSchainName, tokenManagerERC7212);
// execution:
await tokenManagerERC721
.connect(user)
- .transferToSchainERC721(newSchainName, erc721OnOriginChain.address, tokenId);
+ .transferToSchainERC721(newSchainName, erc721OnOriginChain, tokenId);
let data = await messages.encodeTransferErc721AndTokenInfoMessage(
- erc721OnOriginChain.address,
+ erc721OnOriginChain,
user.address,
tokenId,
{
@@ -1164,61 +1157,60 @@ describe("TokenManagerERC721", () => {
);
// expectation:
- const outgoingMessagesCounter = BigNumber.from(
- await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName));
- outgoingMessagesCounter.should.be.deep.equal(BigNumber.from(1));
+ const outgoingMessagesCounter = await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName);
+ outgoingMessagesCounter.should.be.equal(1);
// receive:
// registration:
await messageProxyForSchain2.connect(deployer).addConnectedChain(schainName);
- await tokenManagerERC7212.addTokenManager(schainName, tokenManagerERC721.address);
+ await tokenManagerERC7212.addTokenManager(schainName, tokenManagerERC721);
await tokenManagerERC7212.connect(deployer).grantRole(await tokenManagerERC7212.TOKEN_REGISTRAR_ROLE(), schainOwner.address);
- await tokenManagerERC7212.connect(schainOwner).addERC721TokenByOwner(schainName, erc721OnOriginChain.address, erc721OnTargetChain.address);
+ await tokenManagerERC7212.connect(schainOwner).addERC721TokenByOwner(schainName, erc721OnOriginChain, erc721OnTargetChain);
- await messageProxyForSchain2.postMessage(tokenManagerERC7212.address, schainId, tokenManagerERC721.address, data);
+ await messageProxyForSchain2.postMessage(tokenManagerERC7212, schainId, tokenManagerERC721, data);
- expect((await erc721OnTargetChain.functions.ownerOf(tokenId)).toString()).to.be.equal(user.address);
+ expect((await erc721OnTargetChain.ownerOf(tokenId)).toString()).to.be.equal(user.address);
data = await messages.encodeActivateUserMessage(user.address);
- await messageProxyForSchain2.postMessage(communityLocker2.address, mainnetId, fakeCommunityPool, data);
+ await messageProxyForSchain2.postMessage(communityLocker2, mainnetId, fakeCommunityPool, data);
- await erc721OnTargetChain.connect(user).approve(tokenManagerERC7212.address, tokenId);
+ await erc721OnTargetChain.connect(user).approve(tokenManagerERC7212, tokenId);
await tokenManagerERC7212
.connect(user)
- .exitToMainERC721(erc721OnOriginChain.address, tokenId)
+ .exitToMainERC721(erc721OnOriginChain, tokenId)
.should.be.eventually.rejectedWith("Not allowed ERC721 Token");
await tokenManagerERC7212
.connect(user)
- .exitToMainERC721(erc721OnTargetChain.address, tokenId)
+ .exitToMainERC721(erc721OnTargetChain, tokenId)
.should.be.eventually.rejectedWith("Incorrect main chain token");
await tokenManagerERC7212
.connect(user)
- .transferToSchainERC721(schainName, erc721OnOriginChain.address, tokenId);
+ .transferToSchainERC721(schainName, erc721OnOriginChain, tokenId);
data = await messages.encodeTransferErc721Message(
- erc721OnOriginChain.address,
+ erc721OnOriginChain,
user.address,
tokenId
);
- await messageProxyForSchain.postMessage(tokenManagerERC721.address, newSchainId, tokenManagerERC7212.address, data);
- expect((await erc721OnOriginChain.functions.ownerOf(tokenId)).toString()).to.be.equal(user.address);
+ await messageProxyForSchain.postMessage(tokenManagerERC721, newSchainId, tokenManagerERC7212, data);
+ expect((await erc721OnOriginChain.ownerOf(tokenId)).toString()).to.be.equal(user.address);
- await erc721OnOriginChain.connect(user).approve(tokenManagerERC721.address, tokenId);
+ await erc721OnOriginChain.connect(user).approve(tokenManagerERC721, tokenId);
await tokenManagerERC721
.connect(user)
- .exitToMainERC721(erc721OnOriginChain.address, tokenId)
+ .exitToMainERC721(erc721OnOriginChain, tokenId)
.should.be.eventually.rejectedWith("Main chain token could not be transfered to Mainnet");
await tokenManagerERC721
.connect(user)
- .exitToMainERC721(erc721OnTargetChain.address, tokenId)
+ .exitToMainERC721(erc721OnTargetChain, tokenId)
.should.be.eventually.rejectedWith("ERC721: invalid token ID");
});
@@ -1227,13 +1219,13 @@ describe("TokenManagerERC721", () => {
describe("tests for `postMessage` function", async () => {
beforeEach(async () => {
- await messageProxyForSchain.registerExtraContractForAll(tokenManagerERC721.address);
+ await messageProxyForSchain.registerExtraContractForAll(tokenManagerERC721);
});
it("should transfer ERC721 token token with token info", async () => {
// preparation
const data = await messages.encodeTransferErc721AndTokenInfoMessage(
- token.address,
+ token,
to,
tokenId,
{
@@ -1242,31 +1234,31 @@ describe("TokenManagerERC721", () => {
}
);
- await messageProxyForSchain.postMessage(tokenManagerERC721.address, mainnetId, fakeDepositBox, data)
+ await messageProxyForSchain.postMessage(tokenManagerERC721, mainnetId, fakeDepositBox, data)
.should.be.eventually.rejectedWith("Automatic deploy is disabled");
await tokenManagerERC721.connect(schainOwner).enableAutomaticDeploy();
- await messageProxyForSchain.postMessage(tokenManagerERC721.address, mainnetId, fakeDepositBox, data);
- const addressERC721OnSchain = await tokenManagerERC721.clonesErc721(mainnetId, token.address);
- const erc721OnChain = await (await ethers.getContractFactory("ERC721OnChain")).attach(addressERC721OnSchain) as ERC721OnChain;
- expect((await erc721OnChain.functions.ownerOf(tokenId))[0]).to.be.equal(to);
+ await messageProxyForSchain.postMessage(tokenManagerERC721, mainnetId, fakeDepositBox, data);
+ const addressERC721OnSchain = await tokenManagerERC721.clonesErc721(mainnetId, token);
+ const erc721OnChain = (await ethers.getContractFactory("ERC721OnChain")).attach(addressERC721OnSchain) as ERC721OnChain;
+ expect((await erc721OnChain.ownerOf(tokenId))).to.be.equal(to);
});
it("should transfer ERC721 token on schain", async () => {
// preparation
- await tokenManagerERC721.connect(schainOwner).addERC721TokenByOwner(mainnetName, token.address, tokenClone.address);
- await tokenClone.connect(deployer).grantRole(await tokenClone.MINTER_ROLE(), tokenManagerERC721.address);
+ await tokenManagerERC721.connect(schainOwner).addERC721TokenByOwner(mainnetName, token, tokenClone);
+ await tokenClone.connect(deployer).grantRole(await tokenClone.MINTER_ROLE(), tokenManagerERC721);
const data = await messages.encodeTransferErc721Message(
- token.address,
+ token,
to,
tokenId
);
- await messageProxyForSchain.postMessage(tokenManagerERC721.address, mainnetId, fakeDepositBox, data);
- const addressERC721OnSchain = await tokenManagerERC721.clonesErc721(mainnetId, token.address);
+ await messageProxyForSchain.postMessage(tokenManagerERC721, mainnetId, fakeDepositBox, data);
+ const addressERC721OnSchain = await tokenManagerERC721.clonesErc721(mainnetId, token);
const erc721OnChain = (await ethers.getContractFactory("ERC721OnChain")).attach(addressERC721OnSchain) as ERC721OnChain;
- expect((await erc721OnChain.functions.ownerOf(tokenId))[0]).to.be.equal(to);
+ expect((await erc721OnChain.ownerOf(tokenId))).to.be.equal(to);
});
it("should reject if message type is unknown", async () => {
@@ -1274,7 +1266,7 @@ describe("TokenManagerERC721", () => {
"000000000000000000000000a51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c0"+
"00000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8"+
"0000000000000000000000000000000000000000000000000000000000000001";
- await messageProxyForSchain.postMessage(tokenManagerERC721.address, mainnetId, fakeDepositBox, data)
+ await messageProxyForSchain.postMessage(tokenManagerERC721, mainnetId, fakeDepositBox, data)
.should.be.eventually.rejectedWith("MessageType is unknown");
});
diff --git a/test/TokenManagerERC721WithMetadata.ts b/test/TokenManagerERC721WithMetadata.ts
index e431382dc..3ffacd83a 100644
--- a/test/TokenManagerERC721WithMetadata.ts
+++ b/test/TokenManagerERC721WithMetadata.ts
@@ -24,7 +24,7 @@
*/
import chaiAsPromised from "chai-as-promised";
-import chai = require("chai");
+import chai from "chai";
import {
ERC721OnChain,
TokenManagerERC721WithMetadata,
@@ -34,7 +34,7 @@ import {
CommunityLocker
} from "../typechain";
-import { stringKeccak256 } from "./utils/helper";
+
import { skipTime } from "./utils/time";
chai.should();
@@ -48,8 +48,7 @@ import { deployMessages } from "./utils/deploy/messages";
import { deployCommunityLocker } from "./utils/deploy/schain/communityLocker";
import { ethers } from "hardhat";
-import { SignerWithAddress } from "@nomiclabs/hardhat-ethers/dist/src/signer-with-address";
-import { BigNumber } from "ethers";
+import { SignerWithAddress } from "@nomicfoundation/hardhat-ethers/signers";
import { expect } from "chai";
import { deployKeyStorageMock } from "./utils/deploy/test/keyStorageMock";
@@ -60,11 +59,11 @@ describe("TokenManagerERC721WithMetadata", () => {
let schainOwner: SignerWithAddress;
const schainName = "V-chain";
- const schainId = stringKeccak256(schainName);
+ const schainId = ethers.id(schainName);
const tokenId = 1;
const tokenURI = "Hello1";
const mainnetName = "Mainnet";
- const mainnetId = stringKeccak256("Mainnet");
+ const mainnetId = ethers.id("Mainnet");
let to: string;
let token: ERC721OnChain;
let tokenClone: ERC721OnChain;
@@ -84,25 +83,25 @@ describe("TokenManagerERC721WithMetadata", () => {
beforeEach(async () => {
const keyStorage = await deployKeyStorageMock();
- messageProxyForSchain = await deployMessageProxyForSchainTester(keyStorage.address, schainName);
+ messageProxyForSchain = await deployMessageProxyForSchainTester(keyStorage, schainName);
tokenManagerLinker = await deployTokenManagerLinker(messageProxyForSchain, deployer.address);
messages = await deployMessages();
- fakeDepositBox = messages.address;
- fakeCommunityPool = messages.address;
+ fakeDepositBox = user.address;
+ fakeCommunityPool = user.address;
- communityLocker = await deployCommunityLocker(schainName, messageProxyForSchain.address, tokenManagerLinker, fakeCommunityPool);
+ communityLocker = await deployCommunityLocker(schainName, messageProxyForSchain, tokenManagerLinker, fakeCommunityPool);
tokenManagerERC721WithMetadata =
await deployTokenManagerERC721WithMetadata(
schainName,
- messageProxyForSchain.address,
+ messageProxyForSchain,
tokenManagerLinker,
communityLocker,
fakeDepositBox
);
await tokenManagerERC721WithMetadata.connect(deployer).grantRole(await tokenManagerERC721WithMetadata.TOKEN_REGISTRAR_ROLE(), schainOwner.address);
await tokenManagerERC721WithMetadata.connect(deployer).grantRole(await tokenManagerERC721WithMetadata.AUTOMATIC_DEPLOY_ROLE(), schainOwner.address);
- await tokenManagerLinker.registerTokenManager(tokenManagerERC721WithMetadata.address);
+ await tokenManagerLinker.registerTokenManager(tokenManagerERC721WithMetadata);
tokenClone = await deployERC721OnChain("ELVIS", "ELV");
token = await deployERC721OnChain("SKALE", "SKL");
@@ -112,7 +111,7 @@ describe("TokenManagerERC721WithMetadata", () => {
to = user.address;
const data = await messages.encodeActivateUserMessage(user.address);
- await messageProxyForSchain.postMessage(communityLocker.address, mainnetId, fakeCommunityPool, data);
+ await messageProxyForSchain.postMessage(communityLocker, mainnetId, fakeCommunityPool, data);
const extraContractRegistrarRole = await messageProxyForSchain.EXTRA_CONTRACT_REGISTRAR_ROLE();
await messageProxyForSchain.connect(deployer).grantRole(extraContractRegistrarRole, deployer.address);
@@ -123,7 +122,7 @@ describe("TokenManagerERC721WithMetadata", () => {
it("should change depositBox address", async () => {
const newDepositBox = user.address;
- expect(await tokenManagerERC721WithMetadata.depositBox()).to.equal(messages.address);
+ expect(await tokenManagerERC721WithMetadata.depositBox()).to.equal(fakeDepositBox);
await tokenManagerERC721WithMetadata.connect(user).changeDepositBoxAddress(newDepositBox)
.should.be.eventually.rejectedWith("DEFAULT_ADMIN_ROLE is required");
await tokenManagerERC721WithMetadata.connect(deployer).changeDepositBoxAddress(newDepositBox);
@@ -132,75 +131,71 @@ describe("TokenManagerERC721WithMetadata", () => {
it("should successfully call exitToMainERC721", async () => {
// should be "No token clone on schain" if chains were different
- await tokenManagerERC721WithMetadata.connect(user).exitToMainERC721(token.address, tokenId)
+ await tokenManagerERC721WithMetadata.connect(user).exitToMainERC721(token, tokenId)
.should.be.eventually.rejectedWith("ERC721: invalid token ID");
- await tokenManagerERC721WithMetadata.connect(schainOwner).addERC721TokenByOwner(mainnetName, token.address, tokenClone.address);
- await tokenManagerERC721WithMetadata.connect(user).exitToMainERC721(token.address, tokenId)
+ await tokenManagerERC721WithMetadata.connect(schainOwner).addERC721TokenByOwner(mainnetName, token, tokenClone);
+ await tokenManagerERC721WithMetadata.connect(user).exitToMainERC721(token, tokenId)
.should.be.eventually.rejectedWith("ERC721: invalid token ID");
await tokenClone.connect(deployer).mint(user.address, tokenId);
await tokenClone.connect(user).setTokenURI(tokenId, tokenURI);
- await tokenManagerERC721WithMetadata.connect(user).exitToMainERC721(token.address, tokenId)
+ await tokenManagerERC721WithMetadata.connect(user).exitToMainERC721(token, tokenId)
.should.be.eventually.rejectedWith("Not allowed ERC721 Token");
- await tokenClone.connect(user).approve(tokenManagerERC721WithMetadata.address, tokenId);
- await tokenManagerERC721WithMetadata.connect(user).exitToMainERC721(token.address, tokenId)
+ await tokenClone.connect(user).approve(tokenManagerERC721WithMetadata, tokenId);
+ await tokenManagerERC721WithMetadata.connect(user).exitToMainERC721(token, tokenId)
.should.be.eventually.rejectedWith("Sender contract is not registered");
- await messageProxyForSchain.registerExtraContract("Mainnet", tokenManagerERC721WithMetadata.address);
- await tokenManagerERC721WithMetadata.connect(user).exitToMainERC721(token.address, tokenId);
+ await messageProxyForSchain.registerExtraContract("Mainnet", tokenManagerERC721WithMetadata);
+ await tokenManagerERC721WithMetadata.connect(user).exitToMainERC721(token, tokenId);
- await messageProxyForSchain.removeExtraContract("Mainnet", tokenManagerERC721WithMetadata.address);
+ await messageProxyForSchain.removeExtraContract("Mainnet", tokenManagerERC721WithMetadata);
await tokenClone.connect(deployer).mint(user.address, tokenId);
await tokenClone.connect(user).setTokenURI(tokenId, tokenURI);
- await tokenClone.connect(user).approve(tokenManagerERC721WithMetadata.address, tokenId);
+ await tokenClone.connect(user).approve(tokenManagerERC721WithMetadata, tokenId);
- await tokenManagerERC721WithMetadata.connect(user).exitToMainERC721(token.address, tokenId)
+ await tokenManagerERC721WithMetadata.connect(user).exitToMainERC721(token, tokenId)
.should.be.eventually.rejectedWith("Sender contract is not registered");
- const outgoingMessagesCounterMainnet = BigNumber.from(
- await messageProxyForSchain.getOutgoingMessagesCounter("Mainnet")
- );
- outgoingMessagesCounterMainnet.should.be.deep.equal(BigNumber.from(1));
+ const outgoingMessagesCounterMainnet = await messageProxyForSchain.getOutgoingMessagesCounter("Mainnet");
+ outgoingMessagesCounterMainnet.should.be.equal(1);
});
it("should be rejected when call exitToMainERC721 if remove contract for all chains", async () => {
- await tokenManagerERC721WithMetadata.connect(schainOwner).addERC721TokenByOwner(mainnetName, token.address, tokenClone.address);
+ await tokenManagerERC721WithMetadata.connect(schainOwner).addERC721TokenByOwner(mainnetName, token, tokenClone);
await tokenClone.connect(deployer).mint(user.address, tokenId);
await tokenClone.connect(user).setTokenURI(tokenId, tokenURI);
- await tokenClone.connect(user).approve(tokenManagerERC721WithMetadata.address, tokenId);
- await messageProxyForSchain.registerExtraContractForAll(tokenManagerERC721WithMetadata.address);
+ await tokenClone.connect(user).approve(tokenManagerERC721WithMetadata, tokenId);
+ await messageProxyForSchain.registerExtraContractForAll(tokenManagerERC721WithMetadata);
- await tokenManagerERC721WithMetadata.connect(user).exitToMainERC721(token.address, tokenId);
+ await tokenManagerERC721WithMetadata.connect(user).exitToMainERC721(token, tokenId);
- await messageProxyForSchain.removeExtraContractForAll(tokenManagerERC721WithMetadata.address);
+ await messageProxyForSchain.removeExtraContractForAll(tokenManagerERC721WithMetadata);
await tokenClone.connect(deployer).mint(user.address, tokenId);
await tokenClone.connect(user).setTokenURI(tokenId, tokenURI);
- await tokenClone.connect(user).approve(tokenManagerERC721WithMetadata.address, tokenId);
+ await tokenClone.connect(user).approve(tokenManagerERC721WithMetadata, tokenId);
- await tokenManagerERC721WithMetadata.connect(user).exitToMainERC721(token.address, tokenId)
+ await tokenManagerERC721WithMetadata.connect(user).exitToMainERC721(token, tokenId)
.should.be.eventually.rejectedWith("Sender contract is not registered");
- const outgoingMessagesCounterMainnet = BigNumber.from(
- await messageProxyForSchain.getOutgoingMessagesCounter("Mainnet")
- );
- outgoingMessagesCounterMainnet.should.be.deep.equal(BigNumber.from(1));
+ const outgoingMessagesCounterMainnet = await messageProxyForSchain.getOutgoingMessagesCounter("Mainnet");
+ outgoingMessagesCounterMainnet.should.be.equal(1);
});
it("should successfully call addERC721TokenByOwner", async () => {
- await tokenManagerERC721WithMetadata.connect(user).addERC721TokenByOwner(mainnetName, token.address, tokenClone.address)
+ await tokenManagerERC721WithMetadata.connect(user).addERC721TokenByOwner(mainnetName, token, tokenClone)
.should.be.eventually.rejectedWith("TOKEN_REGISTRAR_ROLE is required");
- await tokenManagerERC721WithMetadata.connect(schainOwner).addERC721TokenByOwner(mainnetName, token.address, deployer.address)
+ await tokenManagerERC721WithMetadata.connect(schainOwner).addERC721TokenByOwner(mainnetName, token, deployer.address)
.should.be.eventually.rejectedWith("Given address is not a contract");
- await tokenManagerERC721WithMetadata.connect(schainOwner).addERC721TokenByOwner(mainnetName, token.address, tokenClone.address);
+ await tokenManagerERC721WithMetadata.connect(schainOwner).addERC721TokenByOwner(mainnetName, token, tokenClone);
- await tokenManagerERC721WithMetadata.connect(schainOwner).addERC721TokenByOwner(mainnetName, token2.address, tokenClone.address)
+ await tokenManagerERC721WithMetadata.connect(schainOwner).addERC721TokenByOwner(mainnetName, token2, tokenClone)
.should.be.eventually.rejectedWith("Clone was already added");
- await tokenManagerERC721WithMetadata.connect(schainOwner).addERC721TokenByOwner(mainnetName, token.address, tokenClone2.address)
+ await tokenManagerERC721WithMetadata.connect(schainOwner).addERC721TokenByOwner(mainnetName, token, tokenClone2)
.should.be.eventually.rejectedWith("Could not relink clone");
});
@@ -213,24 +208,30 @@ describe("TokenManagerERC721WithMetadata", () => {
let tokenManagerERC721WithMetadata2: TokenManagerERC721WithMetadata;
let communityLocker2: CommunityLocker;
const newSchainName = "NewChain";
- const newSchainId = stringKeccak256(newSchainName);
+ const newSchainId = ethers.id(newSchainName);
beforeEach(async () => {
erc721OnOriginChain = await deployERC721OnChain("NewToken", "NTN");
erc721OnTargetChain = await deployERC721OnChain("NewToke1n", "NTN1");
const keyStorage2 = await deployKeyStorageMock();
- messageProxyForSchain2 = await deployMessageProxyForSchainTester(keyStorage2.address, newSchainName);
+ messageProxyForSchain2 = await deployMessageProxyForSchainTester(keyStorage2, newSchainName);
tokenManagerLinker2 = await deployTokenManagerLinker(messageProxyForSchain2, deployer.address);
- communityLocker2 = await deployCommunityLocker(newSchainName, messageProxyForSchain2.address, tokenManagerLinker2, fakeCommunityPool);
- tokenManagerERC721WithMetadata2 = await deployTokenManagerERC721WithMetadata(newSchainName, messageProxyForSchain2.address, tokenManagerLinker2, communityLocker2, fakeDepositBox);
- await erc721OnTargetChain.connect(deployer).grantRole(await erc721OnTargetChain.MINTER_ROLE(), tokenManagerERC721WithMetadata2.address);
- await tokenManagerLinker2.registerTokenManager(tokenManagerERC721WithMetadata2.address);
- await messageProxyForSchain2.registerExtraContractForAll(tokenManagerERC721WithMetadata2.address);
+ communityLocker2 = await deployCommunityLocker(newSchainName, messageProxyForSchain2, tokenManagerLinker2, fakeCommunityPool);
+ tokenManagerERC721WithMetadata2 = await deployTokenManagerERC721WithMetadata(
+ newSchainName,
+ messageProxyForSchain2,
+ tokenManagerLinker2,
+ communityLocker2,
+ fakeDepositBox
+ );
+ await erc721OnTargetChain.connect(deployer).grantRole(await erc721OnTargetChain.MINTER_ROLE(), tokenManagerERC721WithMetadata2);
+ await tokenManagerLinker2.registerTokenManager(tokenManagerERC721WithMetadata2);
+ await messageProxyForSchain2.registerExtraContractForAll(tokenManagerERC721WithMetadata2);
});
it("should invoke `transferToSchainERC721` without mistakes", async () => {
- await messageProxyForSchain.registerExtraContract(newSchainName, tokenManagerERC721WithMetadata.address);
+ await messageProxyForSchain.registerExtraContract(newSchainName, tokenManagerERC721WithMetadata);
// add connected chain:
await messageProxyForSchain.connect(deployer).grantRole(await messageProxyForSchain.CHAIN_CONNECTOR_ROLE(), deployer.address);
@@ -238,133 +239,132 @@ describe("TokenManagerERC721WithMetadata", () => {
await erc721OnOriginChain.connect(deployer).mint(user.address, tokenId);
await erc721OnOriginChain.connect(user).setTokenURI(tokenId, tokenURI);
- await erc721OnOriginChain.connect(user).approve(tokenManagerERC721WithMetadata.address, tokenId);
+ await erc721OnOriginChain.connect(user).approve(tokenManagerERC721WithMetadata, tokenId);
await tokenManagerERC721WithMetadata
.connect(user)
- .transferToSchainERC721(newSchainName, erc721OnOriginChain.address, tokenId)
+ .transferToSchainERC721(newSchainName, erc721OnOriginChain, tokenId)
.should.be.eventually.rejectedWith("Incorrect Token Manager address");
await tokenManagerERC721WithMetadata
.connect(user)
- .transferToSchainERC721("Mainnet", erc721OnOriginChain.address, tokenId)
+ .transferToSchainERC721("Mainnet", erc721OnOriginChain, tokenId)
.should.be.eventually.rejectedWith("This function is not for transferring to Mainnet");
- await tokenManagerERC721WithMetadata.addTokenManager(newSchainName, tokenManagerERC721WithMetadata2.address);
+ await tokenManagerERC721WithMetadata.addTokenManager(newSchainName, tokenManagerERC721WithMetadata2);
// execution:
await tokenManagerERC721WithMetadata
.connect(user)
- .transferToSchainERC721(newSchainName, erc721OnOriginChain.address, tokenId);
+ .transferToSchainERC721(newSchainName, erc721OnOriginChain, tokenId);
// expectation:
- const outgoingMessagesCounter = BigNumber.from(
- await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName));
- outgoingMessagesCounter.should.be.deep.equal(BigNumber.from(1));
+ const outgoingMessagesCounter = await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName);
+ outgoingMessagesCounter.should.be.equal(1);
});
it("should reject `transferToSchainERC721` when executing earlier then allowed", async () => {
- await messageProxyForSchain.registerExtraContract(newSchainName, tokenManagerERC721WithMetadata.address);
+ await messageProxyForSchain.registerExtraContract(newSchainName, tokenManagerERC721WithMetadata);
// add connected chain:
await messageProxyForSchain.connect(deployer).grantRole(await messageProxyForSchain.CHAIN_CONNECTOR_ROLE(), deployer.address);
await messageProxyForSchain.connect(deployer).addConnectedChain(newSchainName);
await erc721OnOriginChain.connect(deployer).mint(user.address, 1);
- await erc721OnOriginChain.connect(user).approve(tokenManagerERC721WithMetadata.address, 1);
+ await erc721OnOriginChain.connect(user).approve(tokenManagerERC721WithMetadata, 1);
await tokenManagerERC721WithMetadata
.connect(user)
- .transferToSchainERC721(newSchainName, erc721OnOriginChain.address, 1)
+ .transferToSchainERC721(newSchainName, erc721OnOriginChain, 1)
.should.be.eventually.rejectedWith("Incorrect Token Manager address");
await tokenManagerERC721WithMetadata
.connect(user)
- .transferToSchainERC721("Mainnet", erc721OnOriginChain.address, 1)
+ .transferToSchainERC721("Mainnet", erc721OnOriginChain, 1)
.should.be.eventually.rejectedWith("This function is not for transferring to Mainnet");
- await tokenManagerERC721WithMetadata.addTokenManager(newSchainName, tokenManagerERC721WithMetadata2.address);
+ await tokenManagerERC721WithMetadata.addTokenManager(newSchainName, tokenManagerERC721WithMetadata2);
await tokenManagerERC721WithMetadata
.connect(user)
- .transferToSchainERC721(newSchainName, erc721OnOriginChain.address, 1);
+ .transferToSchainERC721(newSchainName, erc721OnOriginChain, 1);
- BigNumber.from(await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName)).should.be.deep.equal(BigNumber.from(1));
+ (await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName)).should.be.equal(1);
await erc721OnOriginChain.connect(deployer).mint(user.address, 2);
- await erc721OnOriginChain.connect(user).approve(tokenManagerERC721WithMetadata.address, 2);
+ await erc721OnOriginChain.connect(user).approve(tokenManagerERC721WithMetadata, 2);
await tokenManagerERC721WithMetadata
.connect(user)
- .transferToSchainERC721(newSchainName, erc721OnOriginChain.address, 2);
+ .transferToSchainERC721(newSchainName, erc721OnOriginChain, 2);
- BigNumber.from(await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName)).should.be.deep.equal(BigNumber.from(2));
+ (await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName)).should.be.equal(2);
await communityLocker.grantRole(await communityLocker.CONSTANT_SETTER_ROLE(), deployer.address);
await communityLocker.setTimeLimitPerMessage(newSchainName, 100);
await erc721OnOriginChain.connect(deployer).mint(user.address, 3);
- await erc721OnOriginChain.connect(user).approve(tokenManagerERC721WithMetadata.address, 3);
+ await erc721OnOriginChain.connect(user).approve(tokenManagerERC721WithMetadata, 3);
await tokenManagerERC721WithMetadata
.connect(user)
- .transferToSchainERC721(newSchainName, erc721OnOriginChain.address, 3)
+ .transferToSchainERC721(newSchainName, erc721OnOriginChain, 3)
.should.be.eventually.rejectedWith("Exceeded message rate limit");
- BigNumber.from(await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName)).should.be.deep.equal(BigNumber.from(2));
+ (await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName)).should.be.equal(2);
await skipTime(90);
await tokenManagerERC721WithMetadata
.connect(user)
- .transferToSchainERC721(newSchainName, erc721OnOriginChain.address, 3)
+ .transferToSchainERC721(newSchainName, erc721OnOriginChain, 3)
.should.be.eventually.rejectedWith("Exceeded message rate limit");
- BigNumber.from(await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName)).should.be.deep.equal(BigNumber.from(2));
+ (await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName)).should.be.equal(2);
await skipTime(20);
await tokenManagerERC721WithMetadata
.connect(user)
- .transferToSchainERC721(newSchainName, erc721OnOriginChain.address, 3);
+ .transferToSchainERC721(newSchainName, erc721OnOriginChain, 3);
- BigNumber.from(await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName)).should.be.deep.equal(BigNumber.from(3));
+ (await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName)).should.be.equal(3);
await communityLocker.setTimeLimitPerMessage(newSchainName, 0);
await erc721OnOriginChain.connect(deployer).mint(user.address, 4);
- await erc721OnOriginChain.connect(user).approve(tokenManagerERC721WithMetadata.address, 4);
+ await erc721OnOriginChain.connect(user).approve(tokenManagerERC721WithMetadata, 4);
await tokenManagerERC721WithMetadata
.connect(user)
- .transferToSchainERC721(newSchainName, erc721OnOriginChain.address, 4);
+ .transferToSchainERC721(newSchainName, erc721OnOriginChain, 4);
- BigNumber.from(await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName)).should.be.deep.equal(BigNumber.from(4));
+ (await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName)).should.be.equal(4);
await communityLocker.setTimeLimitPerMessage(newSchainName, 100);
await erc721OnOriginChain.connect(deployer).mint(user.address, 5);
- await erc721OnOriginChain.connect(user).approve(tokenManagerERC721WithMetadata.address, 5);
+ await erc721OnOriginChain.connect(user).approve(tokenManagerERC721WithMetadata, 5);
await tokenManagerERC721WithMetadata
.connect(user)
- .transferToSchainERC721(newSchainName, erc721OnOriginChain.address, 5)
+ .transferToSchainERC721(newSchainName, erc721OnOriginChain, 5)
.should.be.eventually.rejectedWith("Exceeded message rate limit");
- BigNumber.from(await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName)).should.be.deep.equal(BigNumber.from(4));
+ (await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName)).should.be.equal(4);
await skipTime(110);
await tokenManagerERC721WithMetadata
.connect(user)
- .transferToSchainERC721(newSchainName, erc721OnOriginChain.address, 5);
+ .transferToSchainERC721(newSchainName, erc721OnOriginChain, 5);
- BigNumber.from(await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName)).should.be.deep.equal(BigNumber.from(5));
+ (await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName)).should.be.equal(5);
});
it("should invoke `transferToSchainERC721` and receive tokens without mistakes", async () => {
- await messageProxyForSchain.registerExtraContract(newSchainName, tokenManagerERC721WithMetadata.address);
+ await messageProxyForSchain.registerExtraContract(newSchainName, tokenManagerERC721WithMetadata);
// add connected chain:
await messageProxyForSchain.connect(deployer).grantRole(await messageProxyForSchain.CHAIN_CONNECTOR_ROLE(), deployer.address);
@@ -372,27 +372,27 @@ describe("TokenManagerERC721WithMetadata", () => {
await erc721OnOriginChain.connect(deployer).mint(user.address, tokenId);
await erc721OnOriginChain.connect(user).setTokenURI(tokenId, tokenURI);
- await erc721OnOriginChain.connect(user).approve(tokenManagerERC721WithMetadata.address, tokenId);
+ await erc721OnOriginChain.connect(user).approve(tokenManagerERC721WithMetadata, tokenId);
await tokenManagerERC721WithMetadata
.connect(user)
- .transferToSchainERC721(newSchainName, erc721OnOriginChain.address, tokenId)
+ .transferToSchainERC721(newSchainName, erc721OnOriginChain, tokenId)
.should.be.eventually.rejectedWith("Incorrect Token Manager address");
await tokenManagerERC721WithMetadata
.connect(user)
- .transferToSchainERC721("Mainnet", erc721OnOriginChain.address, tokenId)
+ .transferToSchainERC721("Mainnet", erc721OnOriginChain, tokenId)
.should.be.eventually.rejectedWith("This function is not for transferring to Mainnet");
- await tokenManagerERC721WithMetadata.addTokenManager(newSchainName, tokenManagerERC721WithMetadata2.address);
+ await tokenManagerERC721WithMetadata.addTokenManager(newSchainName, tokenManagerERC721WithMetadata2);
// execution:
await tokenManagerERC721WithMetadata
.connect(user)
- .transferToSchainERC721(newSchainName, erc721OnOriginChain.address, tokenId);
+ .transferToSchainERC721(newSchainName, erc721OnOriginChain, tokenId);
const data = await messages.encodeTransferErc721WithMetadataAndTokenInfoMessage(
- erc721OnOriginChain.address,
+ erc721OnOriginChain,
user.address,
tokenId,
tokenURI,
@@ -403,31 +403,30 @@ describe("TokenManagerERC721WithMetadata", () => {
);
// expectation:
- const outgoingMessagesCounter = BigNumber.from(
- await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName));
- outgoingMessagesCounter.should.be.deep.equal(BigNumber.from(1));
+ const outgoingMessagesCounter = await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName);
+ outgoingMessagesCounter.should.be.equal(1);
// receive:
// registration:
await messageProxyForSchain2.connect(deployer).addConnectedChain(schainName);
- await tokenManagerERC721WithMetadata2.addTokenManager(schainName, tokenManagerERC721WithMetadata.address);
+ await tokenManagerERC721WithMetadata2.addTokenManager(schainName, tokenManagerERC721WithMetadata);
- await messageProxyForSchain2.postMessage(tokenManagerERC721WithMetadata2.address, schainId, tokenManagerERC721WithMetadata.address, data).should.be.eventually.rejectedWith("Automatic deploy is disabled");
+ await messageProxyForSchain2.postMessage(tokenManagerERC721WithMetadata2, schainId, tokenManagerERC721WithMetadata, data).should.be.eventually.rejectedWith("Automatic deploy is disabled");
await tokenManagerERC721WithMetadata2.enableAutomaticDeploy();
- await messageProxyForSchain2.postMessage(tokenManagerERC721WithMetadata2.address, schainId, tokenManagerERC721WithMetadata.address, data);
+ await messageProxyForSchain2.postMessage(tokenManagerERC721WithMetadata2, schainId, tokenManagerERC721WithMetadata, data);
- const addressERC721OnSchain = await tokenManagerERC721WithMetadata2.clonesErc721(schainId, erc721OnOriginChain.address);
+ const addressERC721OnSchain = await tokenManagerERC721WithMetadata2.clonesErc721(schainId, erc721OnOriginChain);
const targetErc721OnChain = await (await ethers.getContractFactory("ERC721OnChain")).attach(addressERC721OnSchain) as ERC721OnChain;
- expect((await targetErc721OnChain.functions.ownerOf(tokenId)).toString()).to.be.equal(user.address);
- expect((await targetErc721OnChain.functions.tokenURI(tokenId)).toString()).to.be.equal(tokenURI);
+ expect((await targetErc721OnChain.ownerOf(tokenId)).toString()).to.be.equal(user.address);
+ expect((await targetErc721OnChain.tokenURI(tokenId)).toString()).to.be.equal(tokenURI);
});
it("should invoke `transferToSchainERC721` and receive tokens without mistakes double", async () => {
- await messageProxyForSchain.registerExtraContract(newSchainName, tokenManagerERC721WithMetadata.address);
+ await messageProxyForSchain.registerExtraContract(newSchainName, tokenManagerERC721WithMetadata);
// add connected chain:
await messageProxyForSchain.connect(deployer).grantRole(await messageProxyForSchain.CHAIN_CONNECTOR_ROLE(), deployer.address);
@@ -435,27 +434,27 @@ describe("TokenManagerERC721WithMetadata", () => {
await erc721OnOriginChain.connect(deployer).mint(user.address, tokenId);
await erc721OnOriginChain.connect(user).setTokenURI(tokenId, tokenURI);
- await erc721OnOriginChain.connect(user).approve(tokenManagerERC721WithMetadata.address, tokenId);
+ await erc721OnOriginChain.connect(user).approve(tokenManagerERC721WithMetadata, tokenId);
await tokenManagerERC721WithMetadata
.connect(user)
- .transferToSchainERC721(newSchainName, erc721OnOriginChain.address, tokenId)
+ .transferToSchainERC721(newSchainName, erc721OnOriginChain, tokenId)
.should.be.eventually.rejectedWith("Incorrect Token Manager address");
await tokenManagerERC721WithMetadata
.connect(user)
- .transferToSchainERC721("Mainnet", erc721OnOriginChain.address, tokenId)
+ .transferToSchainERC721("Mainnet", erc721OnOriginChain, tokenId)
.should.be.eventually.rejectedWith("This function is not for transferring to Mainnet");
- await tokenManagerERC721WithMetadata.addTokenManager(newSchainName, tokenManagerERC721WithMetadata2.address);
+ await tokenManagerERC721WithMetadata.addTokenManager(newSchainName, tokenManagerERC721WithMetadata2);
// execution:
await tokenManagerERC721WithMetadata
.connect(user)
- .transferToSchainERC721(newSchainName, erc721OnOriginChain.address, tokenId);
+ .transferToSchainERC721(newSchainName, erc721OnOriginChain, tokenId);
let data = await messages.encodeTransferErc721WithMetadataAndTokenInfoMessage(
- erc721OnOriginChain.address,
+ erc721OnOriginChain,
user.address,
tokenId,
tokenURI,
@@ -466,56 +465,55 @@ describe("TokenManagerERC721WithMetadata", () => {
);
// expectation:
- const outgoingMessagesCounter = BigNumber.from(
- await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName));
- outgoingMessagesCounter.should.be.deep.equal(BigNumber.from(1));
+ const outgoingMessagesCounter = await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName);
+ outgoingMessagesCounter.should.be.equal(1);
// receive:
// registration:
await messageProxyForSchain2.connect(deployer).addConnectedChain(schainName);
- await tokenManagerERC721WithMetadata2.addTokenManager(schainName, tokenManagerERC721WithMetadata.address);
+ await tokenManagerERC721WithMetadata2.addTokenManager(schainName, tokenManagerERC721WithMetadata);
- await messageProxyForSchain2.postMessage(tokenManagerERC721WithMetadata2.address, schainId, tokenManagerERC721WithMetadata.address, data).should.be.eventually.rejectedWith("Automatic deploy is disabled");
+ await messageProxyForSchain2.postMessage(tokenManagerERC721WithMetadata2, schainId, tokenManagerERC721WithMetadata, data).should.be.eventually.rejectedWith("Automatic deploy is disabled");
await tokenManagerERC721WithMetadata2.enableAutomaticDeploy();
- await messageProxyForSchain2.postMessage(tokenManagerERC721WithMetadata2.address, schainId, tokenManagerERC721WithMetadata.address, data);
+ await messageProxyForSchain2.postMessage(tokenManagerERC721WithMetadata2, schainId, tokenManagerERC721WithMetadata, data);
- const addressERC721OnSchain = await tokenManagerERC721WithMetadata2.clonesErc721(schainId, erc721OnOriginChain.address);
- const targetErc721OnChain = await (await ethers.getContractFactory("ERC721OnChain")).attach(addressERC721OnSchain) as ERC721OnChain;
- expect((await targetErc721OnChain.functions.ownerOf(tokenId)).toString()).to.be.equal(user.address);
- expect((await targetErc721OnChain.functions.tokenURI(tokenId)).toString()).to.be.equal(tokenURI);
+ const addressERC721OnSchain = await tokenManagerERC721WithMetadata2.clonesErc721(schainId, erc721OnOriginChain);
+ const targetErc721OnChain = (await ethers.getContractFactory("ERC721OnChain")).attach(addressERC721OnSchain) as ERC721OnChain;
+ expect((await targetErc721OnChain.ownerOf(tokenId)).toString()).to.be.equal(user.address);
+ expect((await targetErc721OnChain.tokenURI(tokenId)).toString()).to.be.equal(tokenURI);
const tokenId2 = 2;
const tokenURI2 = "Hello2";
await erc721OnOriginChain.connect(deployer).mint(user.address, tokenId2);
await erc721OnOriginChain.connect(user).setTokenURI(tokenId2, tokenURI2);
- await erc721OnOriginChain.connect(user).approve(tokenManagerERC721WithMetadata.address, tokenId2);
+ await erc721OnOriginChain.connect(user).approve(tokenManagerERC721WithMetadata, tokenId2);
await tokenManagerERC721WithMetadata
.connect(user)
- .transferToSchainERC721(newSchainName, erc721OnOriginChain.address, tokenId2);
+ .transferToSchainERC721(newSchainName, erc721OnOriginChain, tokenId2);
data = await messages.encodeTransferErc721MessageWithMetadata(
- erc721OnOriginChain.address,
+ erc721OnOriginChain,
user.address,
tokenId2,
tokenURI2
);
- await messageProxyForSchain2.postMessage(tokenManagerERC721WithMetadata2.address, schainId, tokenManagerERC721WithMetadata.address, data);
+ await messageProxyForSchain2.postMessage(tokenManagerERC721WithMetadata2, schainId, tokenManagerERC721WithMetadata, data);
- expect((await targetErc721OnChain.functions.ownerOf(tokenId)).toString()).to.be.equal(user.address);
- expect((await targetErc721OnChain.functions.tokenURI(tokenId)).toString()).to.be.equal(tokenURI);
- expect((await targetErc721OnChain.functions.ownerOf(tokenId2)).toString()).to.be.equal(user.address);
- expect((await targetErc721OnChain.functions.tokenURI(tokenId2)).toString()).to.be.equal(tokenURI2);
+ expect((await targetErc721OnChain.ownerOf(tokenId)).toString()).to.be.equal(user.address);
+ expect((await targetErc721OnChain.tokenURI(tokenId)).toString()).to.be.equal(tokenURI);
+ expect((await targetErc721OnChain.ownerOf(tokenId2)).toString()).to.be.equal(user.address);
+ expect((await targetErc721OnChain.tokenURI(tokenId2)).toString()).to.be.equal(tokenURI2);
});
it("should invoke `transferToSchainERC721` and receive tokens without mistakes double with attached token", async () => {
- await messageProxyForSchain.registerExtraContract(newSchainName, tokenManagerERC721WithMetadata.address);
+ await messageProxyForSchain.registerExtraContract(newSchainName, tokenManagerERC721WithMetadata);
// add connected chain:
await messageProxyForSchain.connect(deployer).grantRole(await messageProxyForSchain.CHAIN_CONNECTOR_ROLE(), deployer.address);
@@ -523,27 +521,27 @@ describe("TokenManagerERC721WithMetadata", () => {
await erc721OnOriginChain.connect(deployer).mint(user.address, tokenId);
await erc721OnOriginChain.connect(user).setTokenURI(tokenId, tokenURI);
- await erc721OnOriginChain.connect(user).approve(tokenManagerERC721WithMetadata.address, tokenId);
+ await erc721OnOriginChain.connect(user).approve(tokenManagerERC721WithMetadata, tokenId);
await tokenManagerERC721WithMetadata
.connect(user)
- .transferToSchainERC721(newSchainName, erc721OnOriginChain.address, tokenId)
+ .transferToSchainERC721(newSchainName, erc721OnOriginChain, tokenId)
.should.be.eventually.rejectedWith("Incorrect Token Manager address");
await tokenManagerERC721WithMetadata
.connect(user)
- .transferToSchainERC721("Mainnet", erc721OnOriginChain.address, tokenId)
+ .transferToSchainERC721("Mainnet", erc721OnOriginChain, tokenId)
.should.be.eventually.rejectedWith("This function is not for transferring to Mainnet");
- await tokenManagerERC721WithMetadata.addTokenManager(newSchainName, tokenManagerERC721WithMetadata2.address);
+ await tokenManagerERC721WithMetadata.addTokenManager(newSchainName, tokenManagerERC721WithMetadata2);
// execution:
await tokenManagerERC721WithMetadata
.connect(user)
- .transferToSchainERC721(newSchainName, erc721OnOriginChain.address, tokenId);
+ .transferToSchainERC721(newSchainName, erc721OnOriginChain, tokenId);
let data = await messages.encodeTransferErc721WithMetadataAndTokenInfoMessage(
- erc721OnOriginChain.address,
+ erc721OnOriginChain,
user.address,
tokenId,
tokenURI,
@@ -554,55 +552,62 @@ describe("TokenManagerERC721WithMetadata", () => {
);
// expectation:
- const outgoingMessagesCounter = BigNumber.from(
- await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName));
- outgoingMessagesCounter.should.be.deep.equal(BigNumber.from(1));
+ const outgoingMessagesCounter = await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName);
+ outgoingMessagesCounter.should.be.equal(1);
// receive:
// registration:
- await tokenManagerERC721WithMetadata2.connect(schainOwner).addERC721TokenByOwner(schainName, erc721OnOriginChain.address, erc721OnTargetChain.address).should.be.eventually.rejectedWith("TOKEN_REGISTRAR_ROLE is required");
+ await tokenManagerERC721WithMetadata2
+ .connect(schainOwner)
+ .addERC721TokenByOwner(schainName, erc721OnOriginChain, erc721OnTargetChain)
+ .should.be.eventually.rejectedWith("TOKEN_REGISTRAR_ROLE is required");
await tokenManagerERC721WithMetadata2.connect(deployer).grantRole(await tokenManagerERC721WithMetadata2.TOKEN_REGISTRAR_ROLE(), schainOwner.address);
- await tokenManagerERC721WithMetadata2.connect(schainOwner).addERC721TokenByOwner(schainName, erc721OnOriginChain.address, erc721OnTargetChain.address).should.be.eventually.rejectedWith("Chain is not connected");
+ await tokenManagerERC721WithMetadata2
+ .connect(schainOwner)
+ .addERC721TokenByOwner(schainName, erc721OnOriginChain, erc721OnTargetChain)
+ .should.be.eventually.rejectedWith("Chain is not connected");
await messageProxyForSchain2.connect(deployer).addConnectedChain(schainName);
- await tokenManagerERC721WithMetadata2.connect(schainOwner).addERC721TokenByOwner(schainName, erc721OnOriginChain.address, erc721OnTargetChain.address);
- await tokenManagerERC721WithMetadata2.addTokenManager(schainName, tokenManagerERC721WithMetadata.address);
+ await tokenManagerERC721WithMetadata2
+ .connect(schainOwner)
+ .addERC721TokenByOwner(schainName, erc721OnOriginChain, erc721OnTargetChain);
+ await tokenManagerERC721WithMetadata2.addTokenManager(schainName, tokenManagerERC721WithMetadata);
- await messageProxyForSchain2.postMessage(tokenManagerERC721WithMetadata2.address, schainId, tokenManagerERC721WithMetadata.address, data);
+ await messageProxyForSchain2.postMessage(tokenManagerERC721WithMetadata2, schainId, tokenManagerERC721WithMetadata, data);
- expect((await erc721OnTargetChain.functions.ownerOf(tokenId)).toString()).to.be.equal(user.address);
- expect((await erc721OnTargetChain.functions.tokenURI(tokenId)).toString()).to.be.equal(tokenURI);
+ expect((await erc721OnTargetChain.ownerOf(tokenId)).toString()).to.be.equal(user.address);
+ expect((await erc721OnTargetChain.tokenURI(tokenId)).toString()).to.be.equal(tokenURI);
const tokenId2 = 2;
const tokenURI2 = "Hello2";
await erc721OnOriginChain.connect(deployer).mint(user.address, tokenId2);
await erc721OnOriginChain.connect(user).setTokenURI(tokenId2, tokenURI2);
- await erc721OnOriginChain.connect(user).approve(tokenManagerERC721WithMetadata.address, tokenId2);
+ await erc721OnOriginChain.connect(user).approve(tokenManagerERC721WithMetadata, tokenId2);
await tokenManagerERC721WithMetadata
.connect(user)
- .transferToSchainERC721(newSchainName, erc721OnOriginChain.address, tokenId2);
+ .transferToSchainERC721(newSchainName, erc721OnOriginChain, tokenId2);
data = await messages.encodeTransferErc721MessageWithMetadata(
- erc721OnOriginChain.address,
+ erc721OnOriginChain,
user.address,
tokenId2,
tokenURI2
);
- await messageProxyForSchain2.postMessage(tokenManagerERC721WithMetadata2.address, schainId, tokenManagerERC721WithMetadata.address, data);
+ await messageProxyForSchain2.postMessage(tokenManagerERC721WithMetadata2, schainId, tokenManagerERC721WithMetadata, data);
- expect((await erc721OnTargetChain.functions.ownerOf(tokenId)).toString()).to.be.equal(user.address);
- expect((await erc721OnTargetChain.functions.tokenURI(tokenId)).toString()).to.be.equal(tokenURI);
- expect((await erc721OnTargetChain.functions.ownerOf(tokenId2)).toString()).to.be.equal(user.address);
- expect((await erc721OnTargetChain.functions.tokenURI(tokenId2)).toString()).to.be.equal(tokenURI2);
+ expect((await erc721OnTargetChain.ownerOf(tokenId)).toString()).to.be.equal(user.address);
+ expect((await erc721OnTargetChain.tokenURI(tokenId)).toString()).to.be.equal(tokenURI);
+ expect((await erc721OnTargetChain.ownerOf(tokenId2)).toString()).to.be.equal(user.address);
+ expect((await erc721OnTargetChain.tokenURI(tokenId2)).toString()).to.be.equal(tokenURI2);
});
it("should invoke `transferToSchainERC721` and transfer back without mistakes", async () => {
- await messageProxyForSchain.registerExtraContractForAll(tokenManagerERC721WithMetadata.address);
+ await messageProxyForSchain.registerExtraContractForAll(tokenManagerERC721WithMetadata);
// add connected chain:
await messageProxyForSchain.connect(deployer).grantRole(await messageProxyForSchain.CHAIN_CONNECTOR_ROLE(), deployer.address);
@@ -610,27 +615,27 @@ describe("TokenManagerERC721WithMetadata", () => {
await erc721OnOriginChain.connect(deployer).mint(user.address, tokenId);
await erc721OnOriginChain.connect(user).setTokenURI(tokenId, tokenURI);
- await erc721OnOriginChain.connect(user).approve(tokenManagerERC721WithMetadata.address, tokenId);
+ await erc721OnOriginChain.connect(user).approve(tokenManagerERC721WithMetadata, tokenId);
await tokenManagerERC721WithMetadata
.connect(user)
- .transferToSchainERC721(newSchainName, erc721OnOriginChain.address, tokenId)
+ .transferToSchainERC721(newSchainName, erc721OnOriginChain, tokenId)
.should.be.eventually.rejectedWith("Incorrect Token Manager address");
await tokenManagerERC721WithMetadata
.connect(user)
- .transferToSchainERC721("Mainnet", erc721OnOriginChain.address, tokenId)
+ .transferToSchainERC721("Mainnet", erc721OnOriginChain, tokenId)
.should.be.eventually.rejectedWith("This function is not for transferring to Mainnet");
- await tokenManagerERC721WithMetadata.addTokenManager(newSchainName, tokenManagerERC721WithMetadata2.address);
+ await tokenManagerERC721WithMetadata.addTokenManager(newSchainName, tokenManagerERC721WithMetadata2);
// execution:
await tokenManagerERC721WithMetadata
.connect(user)
- .transferToSchainERC721(newSchainName, erc721OnOriginChain.address, tokenId);
+ .transferToSchainERC721(newSchainName, erc721OnOriginChain, tokenId);
let data = await messages.encodeTransferErc721WithMetadataAndTokenInfoMessage(
- erc721OnOriginChain.address,
+ erc721OnOriginChain,
user.address,
tokenId,
tokenURI,
@@ -641,63 +646,62 @@ describe("TokenManagerERC721WithMetadata", () => {
);
// expectation:
- const outgoingMessagesCounter = BigNumber.from(
- await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName));
- outgoingMessagesCounter.should.be.deep.equal(BigNumber.from(1));
+ const outgoingMessagesCounter = await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName);
+ outgoingMessagesCounter.should.be.equal(1);
// receive:
// registration:
await messageProxyForSchain2.connect(deployer).addConnectedChain(schainName);
- await tokenManagerERC721WithMetadata2.addTokenManager(schainName, tokenManagerERC721WithMetadata.address);
+ await tokenManagerERC721WithMetadata2.addTokenManager(schainName, tokenManagerERC721WithMetadata);
- await messageProxyForSchain2.postMessage(tokenManagerERC721WithMetadata2.address, schainId, tokenManagerERC721WithMetadata.address, data).should.be.eventually.rejectedWith("Automatic deploy is disabled");
+ await messageProxyForSchain2.postMessage(tokenManagerERC721WithMetadata2, schainId, tokenManagerERC721WithMetadata, data).should.be.eventually.rejectedWith("Automatic deploy is disabled");
await tokenManagerERC721WithMetadata2.enableAutomaticDeploy();
- await messageProxyForSchain2.postMessage(tokenManagerERC721WithMetadata2.address, schainId, tokenManagerERC721WithMetadata.address, data);
+ await messageProxyForSchain2.postMessage(tokenManagerERC721WithMetadata2, schainId, tokenManagerERC721WithMetadata, data);
- const addressERC721OnSchain = await tokenManagerERC721WithMetadata2.clonesErc721(schainId, erc721OnOriginChain.address);
- const targetErc721OnChain = await (await ethers.getContractFactory("ERC721OnChain")).attach(addressERC721OnSchain) as ERC721OnChain;
- expect((await targetErc721OnChain.functions.ownerOf(tokenId)).toString()).to.be.equal(user.address);
- expect((await targetErc721OnChain.functions.tokenURI(tokenId)).toString()).to.be.equal(tokenURI);
+ const addressERC721OnSchain = await tokenManagerERC721WithMetadata2.clonesErc721(schainId, erc721OnOriginChain);
+ const targetErc721OnChain = (await ethers.getContractFactory("ERC721OnChain")).attach(addressERC721OnSchain) as ERC721OnChain;
+ expect((await targetErc721OnChain.ownerOf(tokenId)).toString()).to.be.equal(user.address);
+ expect((await targetErc721OnChain.tokenURI(tokenId)).toString()).to.be.equal(tokenURI);
await tokenManagerERC721WithMetadata2
.connect(user)
- .transferToSchainERC721(newSchainName, erc721OnOriginChain.address, tokenId)
+ .transferToSchainERC721(newSchainName, erc721OnOriginChain, tokenId)
.should.be.eventually.rejectedWith("Incorrect Token Manager address");
await tokenManagerERC721WithMetadata2
.connect(user)
- .transferToSchainERC721("Mainnet", erc721OnOriginChain.address, tokenId)
+ .transferToSchainERC721("Mainnet", erc721OnOriginChain, tokenId)
.should.be.eventually.rejectedWith("This function is not for transferring to Mainnet");
await tokenManagerERC721WithMetadata2
.connect(user)
- .transferToSchainERC721(schainName, erc721OnOriginChain.address, tokenId)
+ .transferToSchainERC721(schainName, erc721OnOriginChain, tokenId)
.should.be.eventually.rejectedWith("Not allowed ERC721 Token");
- await targetErc721OnChain.connect(user).approve(tokenManagerERC721WithMetadata2.address, tokenId);
+ await targetErc721OnChain.connect(user).approve(tokenManagerERC721WithMetadata2, tokenId);
await tokenManagerERC721WithMetadata2
.connect(user)
- .transferToSchainERC721(schainName, erc721OnOriginChain.address, tokenId);
+ .transferToSchainERC721(schainName, erc721OnOriginChain, tokenId);
data = await messages.encodeTransferErc721MessageWithMetadata(
- erc721OnOriginChain.address,
+ erc721OnOriginChain,
user.address,
tokenId,
tokenURI
);
- await messageProxyForSchain.postMessage(tokenManagerERC721WithMetadata.address, newSchainId, tokenManagerERC721WithMetadata2.address, data);
- expect((await erc721OnOriginChain.functions.ownerOf(tokenId)).toString()).to.be.equal(user.address);
- expect((await erc721OnOriginChain.functions.tokenURI(tokenId)).toString()).to.be.equal(tokenURI);
+ await messageProxyForSchain.postMessage(tokenManagerERC721WithMetadata, newSchainId, tokenManagerERC721WithMetadata2, data);
+ expect((await erc721OnOriginChain.ownerOf(tokenId)).toString()).to.be.equal(user.address);
+ expect((await erc721OnOriginChain.tokenURI(tokenId)).toString()).to.be.equal(tokenURI);
});
it("should invoke `transferToSchainERC721` and transfer back without mistakes with attached tokens", async () => {
- await messageProxyForSchain.registerExtraContractForAll(tokenManagerERC721WithMetadata.address);
+ await messageProxyForSchain.registerExtraContractForAll(tokenManagerERC721WithMetadata);
// add connected chain:
await messageProxyForSchain.connect(deployer).grantRole(await messageProxyForSchain.CHAIN_CONNECTOR_ROLE(), deployer.address);
@@ -705,27 +709,27 @@ describe("TokenManagerERC721WithMetadata", () => {
await erc721OnOriginChain.connect(deployer).mint(user.address, tokenId);
await erc721OnOriginChain.connect(user).setTokenURI(tokenId, tokenURI);
- await erc721OnOriginChain.connect(user).approve(tokenManagerERC721WithMetadata.address, tokenId);
+ await erc721OnOriginChain.connect(user).approve(tokenManagerERC721WithMetadata, tokenId);
await tokenManagerERC721WithMetadata
.connect(user)
- .transferToSchainERC721(newSchainName, erc721OnOriginChain.address, tokenId)
+ .transferToSchainERC721(newSchainName, erc721OnOriginChain, tokenId)
.should.be.eventually.rejectedWith("Incorrect Token Manager address");
await tokenManagerERC721WithMetadata
.connect(user)
- .transferToSchainERC721("Mainnet", erc721OnOriginChain.address, tokenId)
+ .transferToSchainERC721("Mainnet", erc721OnOriginChain, tokenId)
.should.be.eventually.rejectedWith("This function is not for transferring to Mainnet");
- await tokenManagerERC721WithMetadata.addTokenManager(newSchainName, tokenManagerERC721WithMetadata2.address);
+ await tokenManagerERC721WithMetadata.addTokenManager(newSchainName, tokenManagerERC721WithMetadata2);
// execution:
await tokenManagerERC721WithMetadata
.connect(user)
- .transferToSchainERC721(newSchainName, erc721OnOriginChain.address, tokenId);
+ .transferToSchainERC721(newSchainName, erc721OnOriginChain, tokenId);
let data = await messages.encodeTransferErc721WithMetadataAndTokenInfoMessage(
- erc721OnOriginChain.address,
+ erc721OnOriginChain,
user.address,
tokenId,
tokenURI,
@@ -736,58 +740,57 @@ describe("TokenManagerERC721WithMetadata", () => {
);
// expectation:
- const outgoingMessagesCounter = BigNumber.from(
- await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName));
- outgoingMessagesCounter.should.be.deep.equal(BigNumber.from(1));
+ const outgoingMessagesCounter = await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName);
+ outgoingMessagesCounter.should.be.equal(1);
// receive:
// registration:
await messageProxyForSchain2.connect(deployer).addConnectedChain(schainName);
- await tokenManagerERC721WithMetadata2.addTokenManager(schainName, tokenManagerERC721WithMetadata.address);
+ await tokenManagerERC721WithMetadata2.addTokenManager(schainName, tokenManagerERC721WithMetadata);
await tokenManagerERC721WithMetadata2.connect(deployer).grantRole(await tokenManagerERC721WithMetadata2.TOKEN_REGISTRAR_ROLE(), schainOwner.address);
- await tokenManagerERC721WithMetadata2.connect(schainOwner).addERC721TokenByOwner(schainName, erc721OnOriginChain.address, erc721OnTargetChain.address);
+ await tokenManagerERC721WithMetadata2.connect(schainOwner).addERC721TokenByOwner(schainName, erc721OnOriginChain, erc721OnTargetChain);
- await messageProxyForSchain2.postMessage(tokenManagerERC721WithMetadata2.address, schainId, tokenManagerERC721WithMetadata.address, data);
+ await messageProxyForSchain2.postMessage(tokenManagerERC721WithMetadata2, schainId, tokenManagerERC721WithMetadata, data);
await tokenManagerERC721WithMetadata2
.connect(user)
- .transferToSchainERC721(newSchainName, erc721OnOriginChain.address, tokenId)
+ .transferToSchainERC721(newSchainName, erc721OnOriginChain, tokenId)
.should.be.eventually.rejectedWith("Incorrect Token Manager address");
await tokenManagerERC721WithMetadata2
.connect(user)
- .transferToSchainERC721("Mainnet", erc721OnOriginChain.address, tokenId)
+ .transferToSchainERC721("Mainnet", erc721OnOriginChain, tokenId)
.should.be.eventually.rejectedWith("This function is not for transferring to Mainnet");
await tokenManagerERC721WithMetadata2
.connect(user)
- .transferToSchainERC721(schainName, erc721OnOriginChain.address, tokenId)
+ .transferToSchainERC721(schainName, erc721OnOriginChain, tokenId)
.should.be.eventually.rejectedWith("Not allowed ERC721 Token");
- await erc721OnTargetChain.connect(user).approve(tokenManagerERC721WithMetadata2.address, tokenId);
+ await erc721OnTargetChain.connect(user).approve(tokenManagerERC721WithMetadata2, tokenId);
await tokenManagerERC721WithMetadata2
.connect(user)
- .transferToSchainERC721(schainName, erc721OnOriginChain.address, tokenId);
+ .transferToSchainERC721(schainName, erc721OnOriginChain, tokenId);
data = await messages.encodeTransferErc721MessageWithMetadata(
- erc721OnOriginChain.address,
+ erc721OnOriginChain,
user.address,
tokenId,
tokenURI
);
- await messageProxyForSchain.postMessage(tokenManagerERC721WithMetadata.address, newSchainId, tokenManagerERC721WithMetadata2.address, data);
- expect((await erc721OnOriginChain.functions.ownerOf(tokenId)).toString()).to.be.equal(user.address);
- expect((await erc721OnOriginChain.functions.tokenURI(tokenId)).toString()).to.be.equal(tokenURI);
+ await messageProxyForSchain.postMessage(tokenManagerERC721WithMetadata, newSchainId, tokenManagerERC721WithMetadata2, data);
+ expect((await erc721OnOriginChain.ownerOf(tokenId)).toString()).to.be.equal(user.address);
+ expect((await erc721OnOriginChain.tokenURI(tokenId)).toString()).to.be.equal(tokenURI);
});
it("should invoke `transferToSchainERC721` and transfer back without mistakes double", async () => {
- await messageProxyForSchain.registerExtraContractForAll(tokenManagerERC721WithMetadata.address);
+ await messageProxyForSchain.registerExtraContractForAll(tokenManagerERC721WithMetadata);
// add connected chain:
await messageProxyForSchain.connect(deployer).grantRole(await messageProxyForSchain.CHAIN_CONNECTOR_ROLE(), deployer.address);
@@ -795,27 +798,27 @@ describe("TokenManagerERC721WithMetadata", () => {
await erc721OnOriginChain.connect(deployer).mint(user.address, tokenId);
await erc721OnOriginChain.connect(user).setTokenURI(tokenId, tokenURI);
- await erc721OnOriginChain.connect(user).approve(tokenManagerERC721WithMetadata.address, tokenId);
+ await erc721OnOriginChain.connect(user).approve(tokenManagerERC721WithMetadata, tokenId);
await tokenManagerERC721WithMetadata
.connect(user)
- .transferToSchainERC721(newSchainName, erc721OnOriginChain.address, tokenId)
+ .transferToSchainERC721(newSchainName, erc721OnOriginChain, tokenId)
.should.be.eventually.rejectedWith("Incorrect Token Manager address");
await tokenManagerERC721WithMetadata
.connect(user)
- .transferToSchainERC721("Mainnet", erc721OnOriginChain.address, tokenId)
+ .transferToSchainERC721("Mainnet", erc721OnOriginChain, tokenId)
.should.be.eventually.rejectedWith("This function is not for transferring to Mainnet");
- await tokenManagerERC721WithMetadata.addTokenManager(newSchainName, tokenManagerERC721WithMetadata2.address);
+ await tokenManagerERC721WithMetadata.addTokenManager(newSchainName, tokenManagerERC721WithMetadata2);
// execution:
await tokenManagerERC721WithMetadata
.connect(user)
- .transferToSchainERC721(newSchainName, erc721OnOriginChain.address, tokenId);
+ .transferToSchainERC721(newSchainName, erc721OnOriginChain, tokenId);
let data = await messages.encodeTransferErc721WithMetadataAndTokenInfoMessage(
- erc721OnOriginChain.address,
+ erc721OnOriginChain,
user.address,
tokenId,
tokenURI,
@@ -826,143 +829,142 @@ describe("TokenManagerERC721WithMetadata", () => {
);
// expectation:
- const outgoingMessagesCounter = BigNumber.from(
- await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName));
- outgoingMessagesCounter.should.be.deep.equal(BigNumber.from(1));
+ const outgoingMessagesCounter = await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName);
+ outgoingMessagesCounter.should.be.equal(1);
// receive:
// registration:
await messageProxyForSchain2.connect(deployer).addConnectedChain(schainName);
- await tokenManagerERC721WithMetadata2.addTokenManager(schainName, tokenManagerERC721WithMetadata.address);
+ await tokenManagerERC721WithMetadata2.addTokenManager(schainName, tokenManagerERC721WithMetadata);
- await messageProxyForSchain2.postMessage(tokenManagerERC721WithMetadata2.address, schainId, tokenManagerERC721WithMetadata.address, data).should.be.eventually.rejectedWith("Automatic deploy is disabled");
+ await messageProxyForSchain2.postMessage(tokenManagerERC721WithMetadata2, schainId, tokenManagerERC721WithMetadata, data).should.be.eventually.rejectedWith("Automatic deploy is disabled");
await tokenManagerERC721WithMetadata2.enableAutomaticDeploy();
- await messageProxyForSchain2.postMessage(tokenManagerERC721WithMetadata2.address, schainId, tokenManagerERC721WithMetadata.address, data);
+ await messageProxyForSchain2.postMessage(tokenManagerERC721WithMetadata2, schainId, tokenManagerERC721WithMetadata, data);
- const addressERC721OnSchain = await tokenManagerERC721WithMetadata2.clonesErc721(schainId, erc721OnOriginChain.address);
- const targetErc721OnChain = await (await ethers.getContractFactory("ERC721OnChain")).attach(addressERC721OnSchain) as ERC721OnChain;
- expect((await targetErc721OnChain.functions.ownerOf(tokenId)).toString()).to.be.equal(user.address);
- expect((await targetErc721OnChain.functions.tokenURI(tokenId)).toString()).to.be.equal(tokenURI);
+ const addressERC721OnSchain = await tokenManagerERC721WithMetadata2.clonesErc721(schainId, erc721OnOriginChain);
+ const targetErc721OnChain = (await ethers.getContractFactory("ERC721OnChain")).attach(addressERC721OnSchain) as ERC721OnChain;
+ expect((await targetErc721OnChain.ownerOf(tokenId)).toString()).to.be.equal(user.address);
+ expect((await targetErc721OnChain.tokenURI(tokenId)).toString()).to.be.equal(tokenURI);
await tokenManagerERC721WithMetadata2
.connect(user)
- .transferToSchainERC721(newSchainName, erc721OnOriginChain.address, tokenId)
+ .transferToSchainERC721(newSchainName, erc721OnOriginChain, tokenId)
.should.be.eventually.rejectedWith("Incorrect Token Manager address");
await tokenManagerERC721WithMetadata2
.connect(user)
- .transferToSchainERC721("Mainnet", erc721OnOriginChain.address, tokenId)
+ .transferToSchainERC721("Mainnet", erc721OnOriginChain, tokenId)
.should.be.eventually.rejectedWith("This function is not for transferring to Mainnet");
await tokenManagerERC721WithMetadata2
.connect(user)
- .transferToSchainERC721(schainName, erc721OnOriginChain.address, tokenId)
+ .transferToSchainERC721(schainName, erc721OnOriginChain, tokenId)
.should.be.eventually.rejectedWith("Not allowed ERC721 Token");
- await targetErc721OnChain.connect(user).approve(tokenManagerERC721WithMetadata2.address, tokenId);
+ await targetErc721OnChain.connect(user).approve(tokenManagerERC721WithMetadata2, tokenId);
await tokenManagerERC721WithMetadata2
.connect(user)
- .transferToSchainERC721(schainName, erc721OnOriginChain.address, tokenId);
+ .transferToSchainERC721(schainName, erc721OnOriginChain, tokenId);
data = await messages.encodeTransferErc721MessageWithMetadata(
- erc721OnOriginChain.address,
+ erc721OnOriginChain,
user.address,
tokenId,
tokenURI
);
- await messageProxyForSchain.postMessage(tokenManagerERC721WithMetadata.address, newSchainId, tokenManagerERC721WithMetadata2.address, data);
- expect((await erc721OnOriginChain.functions.ownerOf(tokenId)).toString()).to.be.equal(user.address);
- expect((await erc721OnOriginChain.functions.tokenURI(tokenId)).toString()).to.be.equal(tokenURI);
+ await messageProxyForSchain.postMessage(tokenManagerERC721WithMetadata, newSchainId, tokenManagerERC721WithMetadata2, data);
+ expect((await erc721OnOriginChain.ownerOf(tokenId)).toString()).to.be.equal(user.address);
+ expect((await erc721OnOriginChain.tokenURI(tokenId)).toString()).to.be.equal(tokenURI);
- await erc721OnOriginChain.connect(user).approve(tokenManagerERC721WithMetadata.address, tokenId);
+ await erc721OnOriginChain.connect(user).approve(tokenManagerERC721WithMetadata, tokenId);
await tokenManagerERC721WithMetadata
.connect(user)
- .transferToSchainERC721(newSchainName, erc721OnOriginChain.address, tokenId);
+ .transferToSchainERC721(newSchainName, erc721OnOriginChain, tokenId);
data = await messages.encodeTransferErc721MessageWithMetadata(
- erc721OnOriginChain.address,
+ erc721OnOriginChain,
user.address,
tokenId,
tokenURI
);
- await messageProxyForSchain2.postMessage(tokenManagerERC721WithMetadata2.address, schainId, tokenManagerERC721WithMetadata.address, data);
+ await messageProxyForSchain2.postMessage(tokenManagerERC721WithMetadata2, schainId, tokenManagerERC721WithMetadata, data);
- expect((await targetErc721OnChain.functions.ownerOf(tokenId)).toString()).to.be.equal(user.address);
- expect((await targetErc721OnChain.functions.tokenURI(tokenId)).toString()).to.be.equal(tokenURI);
+ expect((await targetErc721OnChain.ownerOf(tokenId)).toString()).to.be.equal(user.address);
+ expect((await targetErc721OnChain.tokenURI(tokenId)).toString()).to.be.equal(tokenURI);
const tokenId2 = 2;
const tokenURI2 = "Hello2";
await erc721OnOriginChain.connect(deployer).mint(user.address, tokenId2);
await erc721OnOriginChain.connect(user).setTokenURI(tokenId2, tokenURI2);
- await erc721OnOriginChain.connect(user).approve(tokenManagerERC721WithMetadata.address, tokenId2);
+ await erc721OnOriginChain.connect(user).approve(tokenManagerERC721WithMetadata, tokenId2);
await tokenManagerERC721WithMetadata
.connect(user)
- .transferToSchainERC721(newSchainName, erc721OnOriginChain.address, tokenId2);
+ .transferToSchainERC721(newSchainName, erc721OnOriginChain, tokenId2);
data = await messages.encodeTransferErc721MessageWithMetadata(
- erc721OnOriginChain.address,
+ erc721OnOriginChain,
user.address,
tokenId2,
tokenURI2
);
- await messageProxyForSchain2.postMessage(tokenManagerERC721WithMetadata2.address, schainId, tokenManagerERC721WithMetadata.address, data);
+ await messageProxyForSchain2.postMessage(tokenManagerERC721WithMetadata2, schainId, tokenManagerERC721WithMetadata, data);
- expect((await targetErc721OnChain.functions.ownerOf(tokenId)).toString()).to.be.equal(user.address);
- expect((await targetErc721OnChain.functions.tokenURI(tokenId)).toString()).to.be.equal(tokenURI);
- expect((await targetErc721OnChain.functions.ownerOf(tokenId2)).toString()).to.be.equal(user.address);
- expect((await targetErc721OnChain.functions.tokenURI(tokenId2)).toString()).to.be.equal(tokenURI2);
+ expect((await targetErc721OnChain.ownerOf(tokenId)).toString()).to.be.equal(user.address);
+ expect((await targetErc721OnChain.tokenURI(tokenId)).toString()).to.be.equal(tokenURI);
+ expect((await targetErc721OnChain.ownerOf(tokenId2)).toString()).to.be.equal(user.address);
+ expect((await targetErc721OnChain.tokenURI(tokenId2)).toString()).to.be.equal(tokenURI2);
- await targetErc721OnChain.connect(user).approve(tokenManagerERC721WithMetadata2.address, tokenId);
+ await targetErc721OnChain.connect(user).approve(tokenManagerERC721WithMetadata2, tokenId);
await tokenManagerERC721WithMetadata2
.connect(user)
- .transferToSchainERC721(schainName, erc721OnOriginChain.address, tokenId);
+ .transferToSchainERC721(schainName, erc721OnOriginChain, tokenId);
data = await messages.encodeTransferErc721MessageWithMetadata(
- erc721OnOriginChain.address,
+ erc721OnOriginChain,
user.address,
tokenId,
tokenURI
);
- await messageProxyForSchain.postMessage(tokenManagerERC721WithMetadata.address, newSchainId, tokenManagerERC721WithMetadata2.address, data);
- expect((await erc721OnOriginChain.functions.ownerOf(tokenId)).toString()).to.be.equal(user.address);
- expect((await erc721OnOriginChain.functions.tokenURI(tokenId)).toString()).to.be.equal(tokenURI);
+ await messageProxyForSchain.postMessage(tokenManagerERC721WithMetadata, newSchainId, tokenManagerERC721WithMetadata2, data);
+ expect((await erc721OnOriginChain.ownerOf(tokenId)).toString()).to.be.equal(user.address);
+ expect((await erc721OnOriginChain.tokenURI(tokenId)).toString()).to.be.equal(tokenURI);
- await targetErc721OnChain.connect(user).approve(tokenManagerERC721WithMetadata2.address, tokenId2);
+ await targetErc721OnChain.connect(user).approve(tokenManagerERC721WithMetadata2, tokenId2);
await tokenManagerERC721WithMetadata2
.connect(user)
- .transferToSchainERC721(schainName, erc721OnOriginChain.address, tokenId2);
+ .transferToSchainERC721(schainName, erc721OnOriginChain, tokenId2);
data = await messages.encodeTransferErc721MessageWithMetadata(
- erc721OnOriginChain.address,
+ erc721OnOriginChain,
user.address,
tokenId2,
tokenURI2
);
- await messageProxyForSchain.postMessage(tokenManagerERC721WithMetadata.address, newSchainId, tokenManagerERC721WithMetadata2.address, data);
+ await messageProxyForSchain.postMessage(tokenManagerERC721WithMetadata, newSchainId, tokenManagerERC721WithMetadata2, data);
- expect((await erc721OnOriginChain.functions.ownerOf(tokenId)).toString()).to.be.equal(user.address);
- expect((await erc721OnOriginChain.functions.tokenURI(tokenId)).toString()).to.be.equal(tokenURI);
- expect((await erc721OnOriginChain.functions.ownerOf(tokenId2)).toString()).to.be.equal(user.address);
- expect((await erc721OnOriginChain.functions.tokenURI(tokenId2)).toString()).to.be.equal(tokenURI2);
+ expect((await erc721OnOriginChain.ownerOf(tokenId)).toString()).to.be.equal(user.address);
+ expect((await erc721OnOriginChain.tokenURI(tokenId)).toString()).to.be.equal(tokenURI);
+ expect((await erc721OnOriginChain.ownerOf(tokenId2)).toString()).to.be.equal(user.address);
+ expect((await erc721OnOriginChain.tokenURI(tokenId2)).toString()).to.be.equal(tokenURI2);
});
it("should invoke `transferToSchainERC721` and transfer back without mistakes double with attached tokens", async () => {
- await messageProxyForSchain.registerExtraContractForAll(tokenManagerERC721WithMetadata.address);
+ await messageProxyForSchain.registerExtraContractForAll(tokenManagerERC721WithMetadata);
// add connected chain:
await messageProxyForSchain.connect(deployer).grantRole(await messageProxyForSchain.CHAIN_CONNECTOR_ROLE(), deployer.address);
@@ -970,27 +972,27 @@ describe("TokenManagerERC721WithMetadata", () => {
await erc721OnOriginChain.connect(deployer).mint(user.address, tokenId);
await erc721OnOriginChain.connect(user).setTokenURI(tokenId, tokenURI);
- await erc721OnOriginChain.connect(user).approve(tokenManagerERC721WithMetadata.address, tokenId);
+ await erc721OnOriginChain.connect(user).approve(tokenManagerERC721WithMetadata, tokenId);
await tokenManagerERC721WithMetadata
.connect(user)
- .transferToSchainERC721(newSchainName, erc721OnOriginChain.address, tokenId)
+ .transferToSchainERC721(newSchainName, erc721OnOriginChain, tokenId)
.should.be.eventually.rejectedWith("Incorrect Token Manager address");
await tokenManagerERC721WithMetadata
.connect(user)
- .transferToSchainERC721("Mainnet", erc721OnOriginChain.address, tokenId)
+ .transferToSchainERC721("Mainnet", erc721OnOriginChain, tokenId)
.should.be.eventually.rejectedWith("This function is not for transferring to Mainnet");
- await tokenManagerERC721WithMetadata.addTokenManager(newSchainName, tokenManagerERC721WithMetadata2.address);
+ await tokenManagerERC721WithMetadata.addTokenManager(newSchainName, tokenManagerERC721WithMetadata2);
// execution:
await tokenManagerERC721WithMetadata
.connect(user)
- .transferToSchainERC721(newSchainName, erc721OnOriginChain.address, tokenId);
+ .transferToSchainERC721(newSchainName, erc721OnOriginChain, tokenId);
let data = await messages.encodeTransferErc721WithMetadataAndTokenInfoMessage(
- erc721OnOriginChain.address,
+ erc721OnOriginChain,
user.address,
tokenId,
tokenURI,
@@ -1001,136 +1003,135 @@ describe("TokenManagerERC721WithMetadata", () => {
);
// expectation:
- const outgoingMessagesCounter = BigNumber.from(
- await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName));
- outgoingMessagesCounter.should.be.deep.equal(BigNumber.from(1));
+ const outgoingMessagesCounter = await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName);
+ outgoingMessagesCounter.should.be.equal(1);
// receive:
// registration:
await messageProxyForSchain2.connect(deployer).addConnectedChain(schainName);
- await tokenManagerERC721WithMetadata2.addTokenManager(schainName, tokenManagerERC721WithMetadata.address);
+ await tokenManagerERC721WithMetadata2.addTokenManager(schainName, tokenManagerERC721WithMetadata);
await tokenManagerERC721WithMetadata2.connect(deployer).grantRole(await tokenManagerERC721WithMetadata2.TOKEN_REGISTRAR_ROLE(), schainOwner.address);
- await tokenManagerERC721WithMetadata2.connect(schainOwner).addERC721TokenByOwner(schainName, erc721OnOriginChain.address, erc721OnTargetChain.address);
+ await tokenManagerERC721WithMetadata2.connect(schainOwner).addERC721TokenByOwner(schainName, erc721OnOriginChain, erc721OnTargetChain);
- await messageProxyForSchain2.postMessage(tokenManagerERC721WithMetadata2.address, schainId, tokenManagerERC721WithMetadata.address, data);
+ await messageProxyForSchain2.postMessage(tokenManagerERC721WithMetadata2, schainId, tokenManagerERC721WithMetadata, data);
await tokenManagerERC721WithMetadata2
.connect(user)
- .transferToSchainERC721(newSchainName, erc721OnOriginChain.address, tokenId)
+ .transferToSchainERC721(newSchainName, erc721OnOriginChain, tokenId)
.should.be.eventually.rejectedWith("Incorrect Token Manager address");
await tokenManagerERC721WithMetadata2
.connect(user)
- .transferToSchainERC721("Mainnet", erc721OnOriginChain.address, tokenId)
+ .transferToSchainERC721("Mainnet", erc721OnOriginChain, tokenId)
.should.be.eventually.rejectedWith("This function is not for transferring to Mainnet");
await tokenManagerERC721WithMetadata2
.connect(user)
- .transferToSchainERC721(schainName, erc721OnOriginChain.address, tokenId)
+ .transferToSchainERC721(schainName, erc721OnOriginChain, tokenId)
.should.be.eventually.rejectedWith("Not allowed ERC721 Token");
- await erc721OnTargetChain.connect(user).approve(tokenManagerERC721WithMetadata2.address, tokenId);
+ await erc721OnTargetChain.connect(user).approve(tokenManagerERC721WithMetadata2, tokenId);
await tokenManagerERC721WithMetadata2
.connect(user)
- .transferToSchainERC721(schainName, erc721OnOriginChain.address, tokenId);
+ .transferToSchainERC721(schainName, erc721OnOriginChain, tokenId);
data = await messages.encodeTransferErc721MessageWithMetadata(
- erc721OnOriginChain.address,
+ erc721OnOriginChain,
user.address,
tokenId,
tokenURI
);
- await messageProxyForSchain.postMessage(tokenManagerERC721WithMetadata.address, newSchainId, tokenManagerERC721WithMetadata2.address, data);
- expect((await erc721OnOriginChain.functions.ownerOf(tokenId)).toString()).to.be.equal(user.address);
- expect((await erc721OnOriginChain.functions.tokenURI(tokenId)).toString()).to.be.equal(tokenURI);
+ await messageProxyForSchain.postMessage(tokenManagerERC721WithMetadata, newSchainId, tokenManagerERC721WithMetadata2, data);
+ expect((await erc721OnOriginChain.ownerOf(tokenId)).toString()).to.be.equal(user.address);
+ expect((await erc721OnOriginChain.tokenURI(tokenId)).toString()).to.be.equal(tokenURI);
- await erc721OnOriginChain.connect(user).approve(tokenManagerERC721WithMetadata.address, tokenId);
+ await erc721OnOriginChain.connect(user).approve(tokenManagerERC721WithMetadata, tokenId);
await tokenManagerERC721WithMetadata
.connect(user)
- .transferToSchainERC721(newSchainName, erc721OnOriginChain.address, tokenId);
+ .transferToSchainERC721(newSchainName, erc721OnOriginChain, tokenId);
data = await messages.encodeTransferErc721MessageWithMetadata(
- erc721OnOriginChain.address,
+ erc721OnOriginChain,
user.address,
tokenId,
tokenURI
);
- await messageProxyForSchain2.postMessage(tokenManagerERC721WithMetadata2.address, schainId, tokenManagerERC721WithMetadata.address, data);
+ await messageProxyForSchain2.postMessage(tokenManagerERC721WithMetadata2, schainId, tokenManagerERC721WithMetadata, data);
- expect((await erc721OnTargetChain.functions.ownerOf(tokenId)).toString()).to.be.equal(user.address);
- expect((await erc721OnTargetChain.functions.tokenURI(tokenId)).toString()).to.be.equal(tokenURI);
+ expect((await erc721OnTargetChain.ownerOf(tokenId)).toString()).to.be.equal(user.address);
+ expect((await erc721OnTargetChain.tokenURI(tokenId)).toString()).to.be.equal(tokenURI);
const tokenId2 = 2;
const tokenURI2 = "Hello2";
await erc721OnOriginChain.connect(deployer).mint(user.address, tokenId2);
await erc721OnOriginChain.connect(user).setTokenURI(tokenId2, tokenURI2);
- await erc721OnOriginChain.connect(user).approve(tokenManagerERC721WithMetadata.address, tokenId2);
+ await erc721OnOriginChain.connect(user).approve(tokenManagerERC721WithMetadata, tokenId2);
await tokenManagerERC721WithMetadata
.connect(user)
- .transferToSchainERC721(newSchainName, erc721OnOriginChain.address, tokenId2);
+ .transferToSchainERC721(newSchainName, erc721OnOriginChain, tokenId2);
data = await messages.encodeTransferErc721MessageWithMetadata(
- erc721OnOriginChain.address,
+ erc721OnOriginChain,
user.address,
tokenId2,
tokenURI2
);
- await messageProxyForSchain2.postMessage(tokenManagerERC721WithMetadata2.address, schainId, tokenManagerERC721WithMetadata.address, data);
+ await messageProxyForSchain2.postMessage(tokenManagerERC721WithMetadata2, schainId, tokenManagerERC721WithMetadata, data);
- expect((await erc721OnTargetChain.functions.ownerOf(tokenId)).toString()).to.be.equal(user.address);
- expect((await erc721OnTargetChain.functions.tokenURI(tokenId)).toString()).to.be.equal(tokenURI);
- expect((await erc721OnTargetChain.functions.ownerOf(tokenId2)).toString()).to.be.equal(user.address);
- expect((await erc721OnTargetChain.functions.tokenURI(tokenId2)).toString()).to.be.equal(tokenURI2);
+ expect((await erc721OnTargetChain.ownerOf(tokenId)).toString()).to.be.equal(user.address);
+ expect((await erc721OnTargetChain.tokenURI(tokenId)).toString()).to.be.equal(tokenURI);
+ expect((await erc721OnTargetChain.ownerOf(tokenId2)).toString()).to.be.equal(user.address);
+ expect((await erc721OnTargetChain.tokenURI(tokenId2)).toString()).to.be.equal(tokenURI2);
- await erc721OnTargetChain.connect(user).approve(tokenManagerERC721WithMetadata2.address, tokenId);
+ await erc721OnTargetChain.connect(user).approve(tokenManagerERC721WithMetadata2, tokenId);
await tokenManagerERC721WithMetadata2
.connect(user)
- .transferToSchainERC721(schainName, erc721OnOriginChain.address, tokenId);
+ .transferToSchainERC721(schainName, erc721OnOriginChain, tokenId);
data = await messages.encodeTransferErc721MessageWithMetadata(
- erc721OnOriginChain.address,
+ erc721OnOriginChain,
user.address,
tokenId,
tokenURI
);
- await messageProxyForSchain.postMessage(tokenManagerERC721WithMetadata.address, newSchainId, tokenManagerERC721WithMetadata2.address, data);
- expect((await erc721OnOriginChain.functions.ownerOf(tokenId)).toString()).to.be.equal(user.address);
- expect((await erc721OnOriginChain.functions.tokenURI(tokenId)).toString()).to.be.equal(tokenURI);
+ await messageProxyForSchain.postMessage(tokenManagerERC721WithMetadata, newSchainId, tokenManagerERC721WithMetadata2, data);
+ expect((await erc721OnOriginChain.ownerOf(tokenId)).toString()).to.be.equal(user.address);
+ expect((await erc721OnOriginChain.tokenURI(tokenId)).toString()).to.be.equal(tokenURI);
- await erc721OnTargetChain.connect(user).approve(tokenManagerERC721WithMetadata2.address, tokenId2);
+ await erc721OnTargetChain.connect(user).approve(tokenManagerERC721WithMetadata2, tokenId2);
await tokenManagerERC721WithMetadata2
.connect(user)
- .transferToSchainERC721(schainName, erc721OnOriginChain.address, tokenId2);
+ .transferToSchainERC721(schainName, erc721OnOriginChain, tokenId2);
data = await messages.encodeTransferErc721MessageWithMetadata(
- erc721OnOriginChain.address,
+ erc721OnOriginChain,
user.address,
tokenId2,
tokenURI2
);
- await messageProxyForSchain.postMessage(tokenManagerERC721WithMetadata.address, newSchainId, tokenManagerERC721WithMetadata2.address, data);
+ await messageProxyForSchain.postMessage(tokenManagerERC721WithMetadata, newSchainId, tokenManagerERC721WithMetadata2, data);
- expect((await erc721OnOriginChain.functions.ownerOf(tokenId)).toString()).to.be.equal(user.address);
- expect((await erc721OnOriginChain.functions.tokenURI(tokenId)).toString()).to.be.equal(tokenURI);
- expect((await erc721OnOriginChain.functions.ownerOf(tokenId2)).toString()).to.be.equal(user.address);
- expect((await erc721OnOriginChain.functions.tokenURI(tokenId2)).toString()).to.be.equal(tokenURI2);
+ expect((await erc721OnOriginChain.ownerOf(tokenId)).toString()).to.be.equal(user.address);
+ expect((await erc721OnOriginChain.tokenURI(tokenId)).toString()).to.be.equal(tokenURI);
+ expect((await erc721OnOriginChain.ownerOf(tokenId2)).toString()).to.be.equal(user.address);
+ expect((await erc721OnOriginChain.tokenURI(tokenId2)).toString()).to.be.equal(tokenURI2);
});
it("should not be able to transfer X->Y->Z", async () => {
- await messageProxyForSchain.registerExtraContract(newSchainName, tokenManagerERC721WithMetadata.address);
+ await messageProxyForSchain.registerExtraContract(newSchainName, tokenManagerERC721WithMetadata);
// add connected chain:
await messageProxyForSchain.connect(deployer).grantRole(await messageProxyForSchain.CHAIN_CONNECTOR_ROLE(), deployer.address);
@@ -1138,17 +1139,17 @@ describe("TokenManagerERC721WithMetadata", () => {
await erc721OnOriginChain.connect(deployer).mint(user.address, tokenId);
await erc721OnOriginChain.connect(user).setTokenURI(tokenId, tokenURI);
- await erc721OnOriginChain.connect(user).approve(tokenManagerERC721WithMetadata.address, tokenId);
+ await erc721OnOriginChain.connect(user).approve(tokenManagerERC721WithMetadata, tokenId);
- await tokenManagerERC721WithMetadata.addTokenManager(newSchainName, tokenManagerERC721WithMetadata2.address);
+ await tokenManagerERC721WithMetadata.addTokenManager(newSchainName, tokenManagerERC721WithMetadata2);
// execution:
await tokenManagerERC721WithMetadata
.connect(user)
- .transferToSchainERC721(newSchainName, erc721OnOriginChain.address, tokenId);
+ .transferToSchainERC721(newSchainName, erc721OnOriginChain, tokenId);
const data = await messages.encodeTransferErc721WithMetadataAndTokenInfoMessage(
- erc721OnOriginChain.address,
+ erc721OnOriginChain,
user.address,
tokenId,
tokenURI,
@@ -1159,55 +1160,56 @@ describe("TokenManagerERC721WithMetadata", () => {
);
// expectation:
- const outgoingMessagesCounter = BigNumber.from(
- await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName));
- outgoingMessagesCounter.should.be.deep.equal(BigNumber.from(1));
+ const outgoingMessagesCounter = await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName);
+ outgoingMessagesCounter.should.be.equal(1);
// receive:
// registration:
await messageProxyForSchain2.connect(deployer).addConnectedChain(schainName);
- await tokenManagerERC721WithMetadata2.addTokenManager(schainName, tokenManagerERC721WithMetadata.address);
+ await tokenManagerERC721WithMetadata2.addTokenManager(schainName, tokenManagerERC721WithMetadata);
await tokenManagerERC721WithMetadata2.connect(deployer).grantRole(await tokenManagerERC721WithMetadata2.TOKEN_REGISTRAR_ROLE(), schainOwner.address);
- await tokenManagerERC721WithMetadata2.connect(schainOwner).addERC721TokenByOwner(schainName, erc721OnOriginChain.address, erc721OnTargetChain.address);
+ await tokenManagerERC721WithMetadata2.connect(schainOwner).addERC721TokenByOwner(schainName, erc721OnOriginChain, erc721OnTargetChain);
- await messageProxyForSchain2.postMessage(tokenManagerERC721WithMetadata2.address, schainId, tokenManagerERC721WithMetadata.address, data);
+ await messageProxyForSchain2.postMessage(tokenManagerERC721WithMetadata2, schainId, tokenManagerERC721WithMetadata, data);
- expect((await erc721OnTargetChain.functions.ownerOf(tokenId)).toString()).to.be.equal(user.address);
- expect((await erc721OnTargetChain.functions.tokenURI(tokenId)).toString()).to.be.equal(tokenURI);
+ expect((await erc721OnTargetChain.ownerOf(tokenId)).toString()).to.be.equal(user.address);
+ expect((await erc721OnTargetChain.tokenURI(tokenId)).toString()).to.be.equal(tokenURI);
const newSchainNameZ = "NewChainZ";
const erc721OnTargetZChain = await deployERC721OnChain("NewTokenZ", "NTNZ");
const keyStorageZ = await deployKeyStorageMock();
- const messageProxyForSchainZ = await deployMessageProxyForSchainTester(keyStorageZ.address, newSchainNameZ);
+ const messageProxyForSchainZ = await deployMessageProxyForSchainTester(keyStorageZ, newSchainNameZ);
const tokenManagerLinkerZ = await deployTokenManagerLinker(messageProxyForSchainZ, deployer.address);
- const communityLockerZ = await deployCommunityLocker(newSchainName, messageProxyForSchainZ.address, tokenManagerLinkerZ, fakeCommunityPool);
- const tokenManagerERC721WithMetadataZ = await deployTokenManagerERC721WithMetadata(newSchainNameZ, messageProxyForSchainZ.address, tokenManagerLinkerZ, communityLockerZ, fakeDepositBox);
- await erc721OnTargetZChain.connect(deployer).grantRole(await erc721OnTargetZChain.MINTER_ROLE(), tokenManagerERC721WithMetadataZ.address);
- await tokenManagerLinkerZ.registerTokenManager(tokenManagerERC721WithMetadataZ.address);
+ const communityLockerZ = await deployCommunityLocker(newSchainName, messageProxyForSchainZ, tokenManagerLinkerZ, fakeCommunityPool);
+ const tokenManagerERC721WithMetadataZ = await deployTokenManagerERC721WithMetadata(
+ newSchainNameZ, messageProxyForSchainZ, tokenManagerLinkerZ, communityLockerZ, fakeDepositBox
+ );
+ await erc721OnTargetZChain.connect(deployer).grantRole(await erc721OnTargetZChain.MINTER_ROLE(), tokenManagerERC721WithMetadataZ);
+ await tokenManagerLinkerZ.registerTokenManager(tokenManagerERC721WithMetadataZ);
await messageProxyForSchain2.connect(deployer).grantRole(await messageProxyForSchain2.CHAIN_CONNECTOR_ROLE(), deployer.address);
await messageProxyForSchain2.connect(deployer).addConnectedChain(newSchainNameZ);
- await tokenManagerERC721WithMetadata2.addTokenManager(newSchainNameZ, tokenManagerERC721WithMetadataZ.address);
+ await tokenManagerERC721WithMetadata2.addTokenManager(newSchainNameZ, tokenManagerERC721WithMetadataZ);
- await erc721OnTargetChain.connect(user).approve(tokenManagerERC721WithMetadata2.address, tokenId);
+ await erc721OnTargetChain.connect(user).approve(tokenManagerERC721WithMetadata2, tokenId);
await tokenManagerERC721WithMetadata2
.connect(user)
- .transferToSchainERC721(newSchainNameZ, erc721OnOriginChain.address, tokenId)
+ .transferToSchainERC721(newSchainNameZ, erc721OnOriginChain, tokenId)
.should.be.eventually.rejectedWith("Not allowed ERC721 Token");
await tokenManagerERC721WithMetadata2
.connect(user)
- .transferToSchainERC721(newSchainNameZ, erc721OnTargetChain.address, tokenId)
+ .transferToSchainERC721(newSchainNameZ, erc721OnTargetChain, tokenId)
.should.be.eventually.rejectedWith("Incorrect main chain token");
});
it("should not be able to transfer main chain token or clone to mainnet", async () => {
- await messageProxyForSchain.registerExtraContractForAll(tokenManagerERC721WithMetadata.address);
+ await messageProxyForSchain.registerExtraContractForAll(tokenManagerERC721WithMetadata);
// add connected chain:
await messageProxyForSchain.connect(deployer).grantRole(await messageProxyForSchain.CHAIN_CONNECTOR_ROLE(), deployer.address);
@@ -1215,17 +1217,17 @@ describe("TokenManagerERC721WithMetadata", () => {
await erc721OnOriginChain.connect(deployer).mint(user.address, tokenId);
await erc721OnOriginChain.connect(user).setTokenURI(tokenId, tokenURI);
- await erc721OnOriginChain.connect(user).approve(tokenManagerERC721WithMetadata.address, tokenId);
+ await erc721OnOriginChain.connect(user).approve(tokenManagerERC721WithMetadata, tokenId);
- await tokenManagerERC721WithMetadata.addTokenManager(newSchainName, tokenManagerERC721WithMetadata2.address);
+ await tokenManagerERC721WithMetadata.addTokenManager(newSchainName, tokenManagerERC721WithMetadata2);
// execution:
await tokenManagerERC721WithMetadata
.connect(user)
- .transferToSchainERC721(newSchainName, erc721OnOriginChain.address, tokenId);
+ .transferToSchainERC721(newSchainName, erc721OnOriginChain, tokenId);
let data = await messages.encodeTransferErc721WithMetadataAndTokenInfoMessage(
- erc721OnOriginChain.address,
+ erc721OnOriginChain,
user.address,
tokenId,
tokenURI,
@@ -1236,64 +1238,63 @@ describe("TokenManagerERC721WithMetadata", () => {
);
// expectation:
- const outgoingMessagesCounter = BigNumber.from(
- await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName));
- outgoingMessagesCounter.should.be.deep.equal(BigNumber.from(1));
+ const outgoingMessagesCounter = await messageProxyForSchain.getOutgoingMessagesCounter(newSchainName);
+ outgoingMessagesCounter.should.be.equal(1);
// receive:
// registration:
await messageProxyForSchain2.connect(deployer).addConnectedChain(schainName);
- await tokenManagerERC721WithMetadata2.addTokenManager(schainName, tokenManagerERC721WithMetadata.address);
+ await tokenManagerERC721WithMetadata2.addTokenManager(schainName, tokenManagerERC721WithMetadata);
await tokenManagerERC721WithMetadata2.connect(deployer).grantRole(await tokenManagerERC721WithMetadata2.TOKEN_REGISTRAR_ROLE(), schainOwner.address);
- await tokenManagerERC721WithMetadata2.connect(schainOwner).addERC721TokenByOwner(schainName, erc721OnOriginChain.address, erc721OnTargetChain.address);
+ await tokenManagerERC721WithMetadata2.connect(schainOwner).addERC721TokenByOwner(schainName, erc721OnOriginChain, erc721OnTargetChain);
- await messageProxyForSchain2.postMessage(tokenManagerERC721WithMetadata2.address, schainId, tokenManagerERC721WithMetadata.address, data);
+ await messageProxyForSchain2.postMessage(tokenManagerERC721WithMetadata2, schainId, tokenManagerERC721WithMetadata, data);
- expect((await erc721OnTargetChain.functions.ownerOf(tokenId)).toString()).to.be.equal(user.address);
- expect((await erc721OnTargetChain.functions.tokenURI(tokenId)).toString()).to.be.equal(tokenURI);
+ expect((await erc721OnTargetChain.ownerOf(tokenId)).toString()).to.be.equal(user.address);
+ expect((await erc721OnTargetChain.tokenURI(tokenId)).toString()).to.be.equal(tokenURI);
data = await messages.encodeActivateUserMessage(user.address);
- await messageProxyForSchain2.postMessage(communityLocker2.address, mainnetId, fakeCommunityPool, data);
+ await messageProxyForSchain2.postMessage(communityLocker2, mainnetId, fakeCommunityPool, data);
- await erc721OnTargetChain.connect(user).approve(tokenManagerERC721WithMetadata2.address, tokenId);
+ await erc721OnTargetChain.connect(user).approve(tokenManagerERC721WithMetadata2, tokenId);
await tokenManagerERC721WithMetadata2
.connect(user)
- .exitToMainERC721(erc721OnOriginChain.address, tokenId)
+ .exitToMainERC721(erc721OnOriginChain, tokenId)
.should.be.eventually.rejectedWith("Not allowed ERC721 Token");
await tokenManagerERC721WithMetadata2
.connect(user)
- .exitToMainERC721(erc721OnTargetChain.address, tokenId)
+ .exitToMainERC721(erc721OnTargetChain, tokenId)
.should.be.eventually.rejectedWith("Incorrect main chain token");
await tokenManagerERC721WithMetadata2
.connect(user)
- .transferToSchainERC721(schainName, erc721OnOriginChain.address, tokenId);
+ .transferToSchainERC721(schainName, erc721OnOriginChain, tokenId);
data = await messages.encodeTransferErc721MessageWithMetadata(
- erc721OnOriginChain.address,
+ erc721OnOriginChain,
user.address,
tokenId,
tokenURI
);
- await messageProxyForSchain.postMessage(tokenManagerERC721WithMetadata.address, newSchainId, tokenManagerERC721WithMetadata2.address, data);
- expect((await erc721OnOriginChain.functions.ownerOf(tokenId)).toString()).to.be.equal(user.address);
- expect((await erc721OnOriginChain.functions.tokenURI(tokenId)).toString()).to.be.equal(tokenURI);
+ await messageProxyForSchain.postMessage(tokenManagerERC721WithMetadata, newSchainId, tokenManagerERC721WithMetadata2, data);
+ expect((await erc721OnOriginChain.ownerOf(tokenId)).toString()).to.be.equal(user.address);
+ expect((await erc721OnOriginChain.tokenURI(tokenId)).toString()).to.be.equal(tokenURI);
- await erc721OnOriginChain.connect(user).approve(tokenManagerERC721WithMetadata.address, tokenId);
+ await erc721OnOriginChain.connect(user).approve(tokenManagerERC721WithMetadata, tokenId);
await tokenManagerERC721WithMetadata
.connect(user)
- .exitToMainERC721(erc721OnOriginChain.address, tokenId)
+ .exitToMainERC721(erc721OnOriginChain, tokenId)
.should.be.eventually.rejectedWith("Main chain token could not be transfered to Mainnet");
await tokenManagerERC721WithMetadata
.connect(user)
- .exitToMainERC721(erc721OnTargetChain.address, tokenId)
+ .exitToMainERC721(erc721OnTargetChain, tokenId)
.should.be.eventually.rejectedWith("ERC721: invalid token ID");
});
@@ -1302,13 +1303,13 @@ describe("TokenManagerERC721WithMetadata", () => {
describe("tests for `postMessage` function", async () => {
beforeEach(async () => {
- await messageProxyForSchain.registerExtraContractForAll(tokenManagerERC721WithMetadata.address);
+ await messageProxyForSchain.registerExtraContractForAll(tokenManagerERC721WithMetadata);
});
it("should transfer ERC721 token token with token info", async () => {
// preparation
const data = await messages.encodeTransferErc721WithMetadataAndTokenInfoMessage(
- token.address,
+ token,
to,
tokenId,
tokenURI,
@@ -1318,34 +1319,34 @@ describe("TokenManagerERC721WithMetadata", () => {
}
);
- await messageProxyForSchain.postMessage(tokenManagerERC721WithMetadata.address, mainnetId, fakeDepositBox, data)
+ await messageProxyForSchain.postMessage(tokenManagerERC721WithMetadata, mainnetId, fakeDepositBox, data)
.should.be.eventually.rejectedWith("Automatic deploy is disabled");
await tokenManagerERC721WithMetadata.connect(schainOwner).enableAutomaticDeploy();
- await messageProxyForSchain.postMessage(tokenManagerERC721WithMetadata.address, mainnetId, fakeDepositBox, data);
- const addressERC721OnSchain = await tokenManagerERC721WithMetadata.clonesErc721(mainnetId, token.address);
+ await messageProxyForSchain.postMessage(tokenManagerERC721WithMetadata, mainnetId, fakeDepositBox, data);
+ const addressERC721OnSchain = await tokenManagerERC721WithMetadata.clonesErc721(mainnetId, token);
const erc721OnChain = await (await ethers.getContractFactory("ERC721OnChain")).attach(addressERC721OnSchain) as ERC721OnChain;
- expect((await erc721OnChain.functions.ownerOf(tokenId))[0]).to.be.equal(to);
- expect((await erc721OnChain.functions.tokenURI(tokenId))[0]).to.be.equal(tokenURI);
+ expect((await erc721OnChain.ownerOf(tokenId))).to.be.equal(to);
+ expect((await erc721OnChain.tokenURI(tokenId))).to.be.equal(tokenURI);
});
it("should transfer ERC721 token on schain", async () => {
// preparation
- await tokenManagerERC721WithMetadata.connect(schainOwner).addERC721TokenByOwner(mainnetName, token.address, tokenClone.address);
- await tokenClone.connect(deployer).grantRole(await tokenClone.MINTER_ROLE(), tokenManagerERC721WithMetadata.address);
+ await tokenManagerERC721WithMetadata.connect(schainOwner).addERC721TokenByOwner(mainnetName, token, tokenClone);
+ await tokenClone.connect(deployer).grantRole(await tokenClone.MINTER_ROLE(), tokenManagerERC721WithMetadata);
const data = await messages.encodeTransferErc721MessageWithMetadata(
- token.address,
+ token,
to,
tokenId,
tokenURI
);
- await messageProxyForSchain.postMessage(tokenManagerERC721WithMetadata.address, mainnetId, fakeDepositBox, data);
- const addressERC721OnSchain = await tokenManagerERC721WithMetadata.clonesErc721(mainnetId, token.address);
+ await messageProxyForSchain.postMessage(tokenManagerERC721WithMetadata, mainnetId, fakeDepositBox, data);
+ const addressERC721OnSchain = await tokenManagerERC721WithMetadata.clonesErc721(mainnetId, token);
const erc721OnChain = (await ethers.getContractFactory("ERC721OnChain")).attach(addressERC721OnSchain) as ERC721OnChain;
- expect((await erc721OnChain.functions.ownerOf(tokenId))[0]).to.be.equal(to);
- expect((await erc721OnChain.functions.tokenURI(tokenId))[0]).to.be.equal(tokenURI);
+ expect((await erc721OnChain.ownerOf(tokenId))).to.be.equal(to);
+ expect((await erc721OnChain.tokenURI(tokenId))).to.be.equal(tokenURI);
});
it("should reject if message type is unknown", async () => {
@@ -1353,7 +1354,7 @@ describe("TokenManagerERC721WithMetadata", () => {
"000000000000000000000000a51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c0"+
"00000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8"+
"0000000000000000000000000000000000000000000000000000000000000001";
- await messageProxyForSchain.postMessage(tokenManagerERC721WithMetadata.address, mainnetId, fakeDepositBox, data)
+ await messageProxyForSchain.postMessage(tokenManagerERC721WithMetadata, mainnetId, fakeDepositBox, data)
.should.be.eventually.rejectedWith("MessageType is unknown");
});
diff --git a/test/TokenManagerEth.ts b/test/TokenManagerEth.ts
index ba509ffc2..b530295ff 100644
--- a/test/TokenManagerEth.ts
+++ b/test/TokenManagerEth.ts
@@ -24,7 +24,7 @@
*/
import chaiAsPromised from "chai-as-promised";
-import chai = require("chai");
+import chai, { assert } from "chai";
import {
CommunityLocker,
EthErc20,
@@ -33,7 +33,7 @@ import {
TokenManagerEth,
TokenManagerLinker,
} from "../typechain";
-import { stringKeccak256 } from "./utils/helper";
+
chai.should();
chai.use(chaiAsPromised);
@@ -45,15 +45,14 @@ import { deployEthErc20 } from "./utils/deploy/schain/ethErc20";
import { deployCommunityLocker } from "./utils/deploy/schain/communityLocker";
import { ethers } from "hardhat";
-import { SignerWithAddress } from "@nomiclabs/hardhat-ethers/dist/src/signer-with-address";
-import { BigNumber } from "ethers";
+import { SignerWithAddress } from "@nomicfoundation/hardhat-ethers/signers";
import { expect } from "chai";
import { deployMessageProxyForSchainTester } from "./utils/deploy/test/messageProxyForSchainTester";
import { deployKeyStorageMock } from "./utils/deploy/test/keyStorageMock";
const schainName = "TestSchain";
-const schainHash = stringKeccak256(schainName);
+const schainHash = ethers.id(schainName);
describe("TokenManagerEth", () => {
let deployer: SignerWithAddress;
@@ -67,7 +66,7 @@ describe("TokenManagerEth", () => {
let communityLocker: CommunityLocker;
let fakeDepositBox: string;
let fakeCommunityPool: string;
- const mainnetHash = stringKeccak256("Mainnet");
+ const mainnetHash = ethers.id("Mainnet");
before(async () => {
[deployer, user] = await ethers.getSigners();
@@ -75,14 +74,19 @@ describe("TokenManagerEth", () => {
beforeEach(async () => {
const keyStorage = await deployKeyStorageMock();
- messageProxyForSchain = await deployMessageProxyForSchainTester(keyStorage.address, schainName);
+ messageProxyForSchain = await deployMessageProxyForSchainTester(keyStorage, schainName);
tokenManagerLinker = await deployTokenManagerLinker(messageProxyForSchain, deployer.address);
- fakeDepositBox = tokenManagerLinker.address;
- fakeCommunityPool = tokenManagerLinker.address;
- communityLocker = await deployCommunityLocker(schainName, messageProxyForSchain.address, tokenManagerLinker, fakeCommunityPool);
+ fakeDepositBox = user.address;
+ fakeCommunityPool = user.address;
+ communityLocker = await deployCommunityLocker(
+ schainName,
+ messageProxyForSchain,
+ tokenManagerLinker,
+ fakeCommunityPool
+ );
tokenManagerEth = await deployTokenManagerEth(
schainName,
- messageProxyForSchain.address,
+ messageProxyForSchain,
tokenManagerLinker,
communityLocker,
fakeDepositBox,
@@ -91,19 +95,19 @@ describe("TokenManagerEth", () => {
ethERC20 = await deployEthErc20(
tokenManagerEth
);
- await tokenManagerLinker.registerTokenManager(tokenManagerEth.address);
- await tokenManagerEth.connect(deployer).setEthErc20Address(ethERC20.address);
+ await tokenManagerLinker.registerTokenManager(tokenManagerEth);
+ await tokenManagerEth.connect(deployer).setEthErc20Address(ethERC20);
messages = await deployMessages();
const data = await messages.encodeActivateUserMessage(user.address);
- await messageProxyForSchain.postMessage(communityLocker.address, mainnetHash, fakeCommunityPool, data);
+ await messageProxyForSchain.postMessage(communityLocker, mainnetHash, fakeCommunityPool, data);
const extraContractRegistrarRole = await messageProxyForSchain.EXTRA_CONTRACT_REGISTRAR_ROLE();
await messageProxyForSchain.connect(deployer).grantRole(extraContractRegistrarRole, deployer.address);
});
it("should set EthErc20 address", async () => {
- const newEthErc20Address = tokenManagerLinker.address;
+ const newEthErc20Address = tokenManagerLinker;
// only owner can set EthErc20 address:
await tokenManagerEth.connect(user).setEthErc20Address(newEthErc20Address).should.be.rejected;
await tokenManagerEth.connect(deployer).setEthErc20Address(newEthErc20Address);
@@ -126,6 +130,7 @@ describe("TokenManagerEth", () => {
const tokenManagerAddress = user.address;
const nullAddress = "0x0000000000000000000000000000000000000000";
const schainName2 = "TestSchain2";
+ const schainHash = ethers.id(schainName2);
// only owner can add deposit box:
await tokenManagerEth.connect(user).addTokenManager(schainName2, tokenManagerAddress).should.be.rejected;
@@ -141,7 +146,7 @@ describe("TokenManagerEth", () => {
await tokenManagerEth.connect(deployer).addTokenManager(schainName2, tokenManagerAddress).
should.be.rejectedWith("Token Manager is already set");
- const storedDepositBox = await tokenManagerEth.tokenManagers(stringKeccak256(schainName2));
+ const storedDepositBox = await tokenManagerEth.tokenManagers(schainHash);
expect(storedDepositBox).to.equal(tokenManagerAddress);
});
@@ -156,7 +161,7 @@ describe("TokenManagerEth", () => {
.connect(deployer)
.hasTokenManager(schainName2);
// expectation
- expect(res).to.be.true;
+ assert(res);
});
it("should return false when invoke `hasTokenManager`", async () => {
@@ -167,7 +172,7 @@ describe("TokenManagerEth", () => {
.connect(deployer)
.hasTokenManager(schainName2);
// expectation
- expect(res).to.be.false;
+ assert.isFalse(res);
});
it("should invoke `removeTokenManager` without mistakes", async () => {
@@ -175,12 +180,13 @@ describe("TokenManagerEth", () => {
const tokenManagerAddress = user.address;
const nullAddress = "0x0000000000000000000000000000000000000000";
const schainName2 = "TestSchain2";
+ const schainHash = ethers.id(schainName2);
// add deposit box:
await tokenManagerEth.connect(deployer).addTokenManager(schainName2, tokenManagerAddress);
// execution
await tokenManagerEth.connect(deployer).removeTokenManager(schainName2);
// expectation
- const getMapping = await tokenManagerEth.tokenManagers(stringKeccak256(schainName2));
+ const getMapping = await tokenManagerEth.tokenManagers(schainHash);
expect(getMapping).to.equal(nullAddress);
});
@@ -193,26 +199,26 @@ describe("TokenManagerEth", () => {
});
it("should send Eth to somebody on Mainnet, closed to Mainnet, called by schain", async () => {
- const amount = BigNumber.from("60");
- const amountAfter = BigNumber.from("54");
- const amountTo = BigNumber.from("6");
- await messageProxyForSchain.registerExtraContract("Mainnet", tokenManagerEth.address);
+ const amount = 60;
+ const amountAfter = 54;
+ const amountTo = 6;
+ await messageProxyForSchain.registerExtraContract("Mainnet", tokenManagerEth);
await ethERC20.grantRole(await ethERC20.MINTER_ROLE(), deployer.address);
await ethERC20.mint(user.address, amount);
- // send Eth to a client on Mainnet:
+ // // send Eth to a client on Mainnet:
await tokenManagerEth.connect(user).exitToMain(amountTo);
- expect(BigNumber.from(await ethERC20.balanceOf(user.address)).toString()).to.be.equal(amountAfter.toString());
+ expect(await ethERC20.balanceOf(user.address)).to.be.equal(amountAfter.toString());
let data1 = await messages.encodeLockUserMessage(user.address);
- await messageProxyForSchain.postMessage(communityLocker.address, mainnetHash, fakeCommunityPool, data1);
+ await messageProxyForSchain.postMessage(communityLocker, mainnetHash, fakeCommunityPool, data1);
await tokenManagerEth.connect(user).exitToMain(amountTo)
.should.be.eventually.rejectedWith("Recipient must be active");
data1 = await messages.encodeActivateUserMessage(user.address);
- await messageProxyForSchain.postMessage(communityLocker.address, mainnetHash, fakeCommunityPool, data1);
+ await messageProxyForSchain.postMessage(communityLocker, mainnetHash, fakeCommunityPool, data1);
await tokenManagerEth.connect(user).exitToMain(amountTo)
.should.be.eventually.rejectedWith("Exceeded message rate limit");
@@ -241,14 +247,21 @@ describe("TokenManagerEth", () => {
const amount = 10;
const bytesData = await messages.encodeTransferEthMessage(user.address, amount);
const sender = deployer.address;
- // redeploy tokenManagerEth with `developer` address instead `messageProxyForSchain.address`
+ // redeploy tokenManagerEth with `developer` address instead `messageProxyForSchain`
// to avoid `Not a sender` error
- tokenManagerEth = await deployTokenManagerEth(schainName, deployer.address, tokenManagerLinker, communityLocker, fakeDepositBox, ethERC20.address);
+ tokenManagerEth = await deployTokenManagerEth(
+ schainName,
+ messageProxyForSchain,
+ tokenManagerLinker,
+ communityLocker,
+ fakeDepositBox,
+ await ethERC20.getAddress()
+ );
// await tokenManagerEth.setContract("MessageProxy", deployer, {from: deployer});
// execution
- await tokenManagerEth
+ await messageProxyForSchain
.connect(deployer)
- .postMessage(schainHash, sender, bytesData)
+ .postMessage(tokenManagerEth, schainHash, sender, bytesData)
.should.be.eventually.rejectedWith(error);
});
@@ -256,9 +269,16 @@ describe("TokenManagerEth", () => {
// for `Invalid data` message bytesData should be `0x`
const bytesData = "0x";
const sender = deployer.address;
- // redeploy tokenManagerEth with `developer` address instead `messageProxyForSchain.address`
+ // redeploy tokenManagerEth with `developer` address instead `messageProxyForSchain`
// to avoid `Not a sender` error
- tokenManagerEth = await deployTokenManagerEth(schainName, deployer.address, tokenManagerLinker, communityLocker, fakeDepositBox, ethERC20.address);
+ tokenManagerEth = await deployTokenManagerEth(
+ schainName,
+ messageProxyForSchain,
+ tokenManagerLinker,
+ communityLocker,
+ fakeDepositBox,
+ await ethERC20.getAddress()
+ );
// add schain to avoid the `Receiver chain is incorrect` error
await tokenManagerEth
.connect(deployer)
@@ -272,9 +292,9 @@ describe("TokenManagerEth", () => {
it("should transfer eth", async () => {
// preparation
- await messageProxyForSchain.registerExtraContractForAll(tokenManagerEth.address);
+ await messageProxyForSchain.registerExtraContractForAll(tokenManagerEth);
const fromSchainName = "fromSchainName";
- const fromSchainId = stringKeccak256(fromSchainName);
+ const fromSchainId = ethers.id(fromSchainName);
const amount = "10";
const sender = deployer.address;
const to = user.address;
@@ -285,32 +305,31 @@ describe("TokenManagerEth", () => {
await tokenManagerEth
.connect(deployer)
.addTokenManager(fromSchainName, deployer.address);
- await ethERC20.connect(deployer).grantRole(await ethERC20.MINTER_ROLE(), tokenManagerEth.address);
- await ethERC20.connect(deployer).grantRole(await ethERC20.BURNER_ROLE(), tokenManagerEth.address);
+ await ethERC20.connect(deployer).grantRole(await ethERC20.MINTER_ROLE(), tokenManagerEth);
+ await ethERC20.connect(deployer).grantRole(await ethERC20.BURNER_ROLE(), tokenManagerEth);
// execution
await messageProxyForSchain.postMessage(
- tokenManagerEth.address,
+ tokenManagerEth,
fromSchainId,
sender,
bytesData
).should.be.eventually.rejectedWith("Receiver chain is incorrect");
await messageProxyForSchain.postMessage(
- tokenManagerEth.address,
+ tokenManagerEth,
mainnetHash,
sender,
bytesData
).should.be.eventually.rejectedWith("Receiver chain is incorrect");
await messageProxyForSchain.postMessage(
- tokenManagerEth.address,
+ tokenManagerEth,
mainnetHash,
fakeDepositBox,
bytesData
);
// expectation
- expect(parseInt((BigNumber.from(await ethERC20.balanceOf(to))).toString(), 10))
- .to.be.equal(parseInt(amount, 10));
+ expect(await ethERC20.balanceOf(to)).to.be.equal(amount);
});
});
});
diff --git a/test/TokenManagerLinker.ts b/test/TokenManagerLinker.ts
index 5c973e0a4..b7d3540e7 100644
--- a/test/TokenManagerLinker.ts
+++ b/test/TokenManagerLinker.ts
@@ -24,7 +24,7 @@
*/
import chaiAsPromised from "chai-as-promised";
-import chai = require("chai");
+import chai from "chai";
import {
CommunityLocker,
TokenManagerEth,
@@ -46,7 +46,7 @@ import { deployMessageProxyForSchainTester } from "./utils/deploy/test/messagePr
import { deployCommunityLocker } from "./utils/deploy/schain/communityLocker";
import { ethers } from "hardhat";
-import { SignerWithAddress } from "@nomiclabs/hardhat-ethers/dist/src/signer-with-address";
+import { SignerWithAddress } from "@nomicfoundation/hardhat-ethers/signers";
import { expect } from "chai";
import { deployKeyStorageMock } from "./utils/deploy/test/keyStorageMock";
@@ -73,20 +73,20 @@ describe("TokenManagerLinker", () => {
beforeEach(async () => {
newSchainName = "newSchainName";
const keyStorage = await deployKeyStorageMock();
- messageProxy = await deployMessageProxyForSchainTester(keyStorage.address, schainName);
+ messageProxy = await deployMessageProxyForSchainTester(keyStorage, schainName);
const fakeLinker = deployer.address;
linker = await deployTokenManagerLinker(messageProxy, fakeLinker);
- fakeDepositBox = linker.address;
- fakeCommunityPool = linker.address;
- communityLocker = await deployCommunityLocker(schainName, messageProxy.address, linker, fakeCommunityPool);
- tokenManagerEth = await deployTokenManagerEth(schainName, messageProxy.address, linker, communityLocker, fakeDepositBox, "0x0000000000000000000000000000000000000000");
- tokenManagerERC20 = await deployTokenManagerERC20(schainName, messageProxy.address, linker, communityLocker, fakeDepositBox);
- tokenManagerERC721 = await deployTokenManagerERC721(schainName, messageProxy.address, linker, communityLocker, fakeDepositBox);
+ fakeDepositBox = deployer.address;
+ fakeCommunityPool = deployer.address;
+ communityLocker = await deployCommunityLocker(schainName, messageProxy, linker, fakeCommunityPool);
+ tokenManagerEth = await deployTokenManagerEth(schainName, messageProxy, linker, communityLocker, fakeDepositBox, "0x0000000000000000000000000000000000000000");
+ tokenManagerERC20 = await deployTokenManagerERC20(schainName, messageProxy, linker, communityLocker, fakeDepositBox);
+ tokenManagerERC721 = await deployTokenManagerERC721(schainName, messageProxy, linker, communityLocker, fakeDepositBox);
const chainConnectorRole = await messageProxy.CHAIN_CONNECTOR_ROLE();
- await messageProxy.connect(deployer).grantRole(chainConnectorRole, linker.address);
+ await messageProxy.connect(deployer).grantRole(chainConnectorRole, linker);
const extraContractRegistrarRole = await messageProxy.EXTRA_CONTRACT_REGISTRAR_ROLE();
await messageProxy.connect(deployer).grantRole(extraContractRegistrarRole, deployer.address);
- await messageProxy.registerExtraContractForAll(linker.address);
+ await messageProxy.registerExtraContractForAll(linker);
});
it("should connect schain", async () => {
@@ -97,11 +97,11 @@ describe("TokenManagerLinker", () => {
});
it("should connect schain with 1 tokenManager", async () => {
- expect(await linker.hasTokenManager(tokenManagerEth.address)).to.equal(false);
+ expect(await linker.hasTokenManager(tokenManagerEth)).to.equal(false);
- await linker.connect(deployer).registerTokenManager(tokenManagerEth.address);
+ await linker.connect(deployer).registerTokenManager(tokenManagerEth);
- expect(await linker.hasTokenManager(tokenManagerEth.address)).to.equal(true);
+ expect(await linker.hasTokenManager(tokenManagerEth)).to.equal(true);
expect(await linker.hasSchain(newSchainName)).to.equal(false);
@@ -111,17 +111,17 @@ describe("TokenManagerLinker", () => {
});
it("should connect schain with 3 tokenManager", async () => {
- expect(await linker.hasTokenManager(tokenManagerEth.address)).to.equal(false);
- expect(await linker.hasTokenManager(tokenManagerERC20.address)).to.equal(false);
- expect(await linker.hasTokenManager(tokenManagerERC721.address)).to.equal(false);
+ expect(await linker.hasTokenManager(tokenManagerEth)).to.equal(false);
+ expect(await linker.hasTokenManager(tokenManagerERC20)).to.equal(false);
+ expect(await linker.hasTokenManager(tokenManagerERC721)).to.equal(false);
- await linker.connect(deployer).registerTokenManager(tokenManagerEth.address);
- await linker.connect(deployer).registerTokenManager(tokenManagerERC20.address);
- await linker.connect(deployer).registerTokenManager(tokenManagerERC721.address);
+ await linker.connect(deployer).registerTokenManager(tokenManagerEth);
+ await linker.connect(deployer).registerTokenManager(tokenManagerERC20);
+ await linker.connect(deployer).registerTokenManager(tokenManagerERC721);
- expect(await linker.hasTokenManager(tokenManagerEth.address)).to.equal(true);
- expect(await linker.hasTokenManager(tokenManagerERC20.address)).to.equal(true);
- expect(await linker.hasTokenManager(tokenManagerERC721.address)).to.equal(true);
+ expect(await linker.hasTokenManager(tokenManagerEth)).to.equal(true);
+ expect(await linker.hasTokenManager(tokenManagerERC20)).to.equal(true);
+ expect(await linker.hasTokenManager(tokenManagerERC721)).to.equal(true);
expect(await linker.hasSchain(newSchainName)).to.equal(false);
@@ -131,9 +131,9 @@ describe("TokenManagerLinker", () => {
});
it("should invoke `disconnectSchain` without mistakes", async () => {
- await linker.connect(deployer).registerTokenManager(tokenManagerEth.address);
- await linker.connect(deployer).registerTokenManager(tokenManagerERC20.address);
- await linker.connect(deployer).registerTokenManager(tokenManagerERC721.address);
+ await linker.connect(deployer).registerTokenManager(tokenManagerEth);
+ await linker.connect(deployer).registerTokenManager(tokenManagerERC20);
+ await linker.connect(deployer).registerTokenManager(tokenManagerERC721);
await linker.connect(deployer).connectSchain(newSchainName);
@@ -149,17 +149,17 @@ describe("TokenManagerLinker", () => {
const nullAddress = "0x0000000000000000000000000000000000000000";
const tokenManagerAddress = user.address;
- expect(await linker.hasTokenManager(tokenManagerEth.address)).to.equal(false);
- expect(await linker.hasTokenManager(tokenManagerERC20.address)).to.equal(false);
- expect(await linker.hasTokenManager(tokenManagerERC721.address)).to.equal(false);
+ expect(await linker.hasTokenManager(tokenManagerEth)).to.equal(false);
+ expect(await linker.hasTokenManager(tokenManagerERC20)).to.equal(false);
+ expect(await linker.hasTokenManager(tokenManagerERC721)).to.equal(false);
- await linker.connect(deployer).registerTokenManager(tokenManagerEth.address);
- await linker.connect(deployer).registerTokenManager(tokenManagerERC20.address);
- await linker.connect(deployer).registerTokenManager(tokenManagerERC721.address);
+ await linker.connect(deployer).registerTokenManager(tokenManagerEth);
+ await linker.connect(deployer).registerTokenManager(tokenManagerERC20);
+ await linker.connect(deployer).registerTokenManager(tokenManagerERC721);
- expect(await linker.hasTokenManager(tokenManagerEth.address)).to.equal(true);
- expect(await linker.hasTokenManager(tokenManagerERC20.address)).to.equal(true);
- expect(await linker.hasTokenManager(tokenManagerERC721.address)).to.equal(true);
+ expect(await linker.hasTokenManager(tokenManagerEth)).to.equal(true);
+ expect(await linker.hasTokenManager(tokenManagerERC20)).to.equal(true);
+ expect(await linker.hasTokenManager(tokenManagerERC721)).to.equal(true);
expect(await linker.hasTokenManager(nullAddress)).to.equal(false);
expect(await linker.hasTokenManager(tokenManagerAddress)).to.equal(false);
@@ -183,13 +183,13 @@ describe("TokenManagerLinker", () => {
expect(await linker.hasTokenManager(nullAddress)).to.equal(false);
- await linker.connect(deployer).removeTokenManager(tokenManagerEth.address);
- await linker.connect(deployer).removeTokenManager(tokenManagerERC20.address);
- await linker.connect(deployer).removeTokenManager(tokenManagerERC721.address);
+ await linker.connect(deployer).removeTokenManager(tokenManagerEth);
+ await linker.connect(deployer).removeTokenManager(tokenManagerERC20);
+ await linker.connect(deployer).removeTokenManager(tokenManagerERC721);
- expect(await linker.hasTokenManager(tokenManagerEth.address)).to.equal(false);
- expect(await linker.hasTokenManager(tokenManagerERC20.address)).to.equal(false);
- expect(await linker.hasTokenManager(tokenManagerERC721.address)).to.equal(false);
+ expect(await linker.hasTokenManager(tokenManagerEth)).to.equal(false);
+ expect(await linker.hasTokenManager(tokenManagerERC20)).to.equal(false);
+ expect(await linker.hasTokenManager(tokenManagerERC721)).to.equal(false);
});
});
diff --git a/test/extensions/ERC721MintingFromSchainToMainnet.ts b/test/extensions/ERC721MintingFromSchainToMainnet.ts
index 08aac30c9..9c466b6aa 100644
--- a/test/extensions/ERC721MintingFromSchainToMainnet.ts
+++ b/test/extensions/ERC721MintingFromSchainToMainnet.ts
@@ -23,9 +23,9 @@
* @copyright SKALE Labs 2019-Present
*/
-import { solidity } from "ethereum-waffle";
+// import { solidity } from "ethereum-waffle";
import chaiAsPromised from "chai-as-promised";
-import chai = require("chai");
+import chai from "chai";
import {
CommunityLocker,
CommunityPool,
@@ -47,7 +47,7 @@ import {
chai.should();
chai.use(chaiAsPromised);
-chai.use(solidity);
+// chai.use(solidity);
import { deployLinker } from "../utils/deploy/mainnet/linker";
import { deployMessageProxyForMainnet } from "../utils/deploy/mainnet/messageProxyForMainnet";
@@ -66,11 +66,11 @@ import { deployContractManager } from "../utils/skale-manager-utils/contractMana
import { deployTokenManagerLinker } from "../utils/deploy/schain/tokenManagerLinker";
import { deployMessageProxyForSchain } from "../utils/deploy/schain/messageProxyForSchain";
-import { stringKeccak256, getPublicKey } from "../utils/helper";
+import { getPublicKey } from "../utils/helper";
import { ethers } from "hardhat";
-import { SignerWithAddress } from "@nomiclabs/hardhat-ethers/dist/src/signer-with-address";
-import { BigNumber, Wallet } from "ethers";
+import { SignerWithAddress } from "@nomicfoundation/hardhat-ethers/signers";
+import { BigNumberish, HDNodeWallet, Wallet } from "ethers";
import { expect } from "chai";
import { deployCommunityLocker } from "../utils/deploy/schain/communityLocker";
@@ -81,7 +81,7 @@ describe("ERC721MintingFromSchainToMainnet", () => {
let deployer: SignerWithAddress;
let user: SignerWithAddress;
let richGuy: SignerWithAddress;
- let nodeAddress: Wallet;
+ let nodeAddress: HDNodeWallet;
let imaLinker: Linker;
let communityPool: CommunityPool;
@@ -104,14 +104,14 @@ describe("ERC721MintingFromSchainToMainnet", () => {
let extensionSchain: ERC721ReferenceMintAndMetadataSchain;
const schainName = "ExtensionChain";
- const schainNameHash = stringKeccak256("ExtensionChain");
+ const schainNameHash = ethers.id("ExtensionChain");
const contractManagerAddress = "0x0000000000000000000000000000000000000000";
before(async () => {
[deployer, user, richGuy] = await ethers.getSigners();
nodeAddress = Wallet.createRandom().connect(ethers.provider);
- const balanceRichGuy = await richGuy.getBalance();
- await richGuy.sendTransaction({to: nodeAddress.address, value: balanceRichGuy.sub(ethers.utils.parseEther("1"))});
+ const balanceRichGuy = await ethers.provider.getBalance(richGuy.address);
+ await richGuy.sendTransaction({to: nodeAddress.address, value: balanceRichGuy - BigInt(ethers.parseEther("1"))});
})
beforeEach(async () => {
@@ -123,17 +123,17 @@ describe("ERC721MintingFromSchainToMainnet", () => {
schainsInternal = await (await ethers.getContractFactory("SchainsInternal")).deploy() as SchainsInternal;
skaleVerifier = await (await ethers.getContractFactory("SkaleVerifierMock")).deploy() as SkaleVerifierMock;
wallets = await (await ethers.getContractFactory("Wallets")).deploy() as Wallets;
- await contractManager.connect(deployer).setContractsAddress("KeyStorage", keyStorage.address);
- await contractManager.connect(deployer).setContractsAddress("Nodes", nodes.address);
- await contractManager.connect(deployer).setContractsAddress("Schains", schains.address);
- await contractManager.connect(deployer).setContractsAddress("SchainsInternal", schainsInternal.address);
- await contractManager.connect(deployer).setContractsAddress("SkaleVerifier", skaleVerifier.address);
- await contractManager.connect(deployer).setContractsAddress("Wallets", wallets.address);
+ await contractManager.connect(deployer).setContractsAddress("KeyStorage", keyStorage);
+ await contractManager.connect(deployer).setContractsAddress("Nodes", nodes);
+ await contractManager.connect(deployer).setContractsAddress("Schains", schains);
+ await contractManager.connect(deployer).setContractsAddress("SchainsInternal", schainsInternal);
+ await contractManager.connect(deployer).setContractsAddress("SkaleVerifier", skaleVerifier);
+ await contractManager.connect(deployer).setContractsAddress("Wallets", wallets);
// add ContractManager to contracts
- await schains.connect(deployer).addContractManager(contractManager.address);
- await schainsInternal.connect(deployer).addContractManager(contractManager.address);
- await wallets.connect(deployer).addContractManager(contractManager.address);
+ await schains.connect(deployer).addContractManager(contractManager);
+ await schainsInternal.connect(deployer).addContractManager(contractManager);
+ await wallets.connect(deployer).addContractManager(contractManager);
// setup 16 nodes
const nodeCreationParams = {
@@ -191,36 +191,36 @@ describe("ERC721MintingFromSchainToMainnet", () => {
const extraContractRegistrarRole = await messageProxyForMainnet.EXTRA_CONTRACT_REGISTRAR_ROLE();
const chainConnectorRole2 = await messageProxyForMainnet.CHAIN_CONNECTOR_ROLE();
await messageProxyForMainnet.connect(deployer).grantRole(extraContractRegistrarRole, deployer.address);
- await messageProxyForMainnet.connect(deployer).grantRole(chainConnectorRole2, imaLinker.address);
+ await messageProxyForMainnet.connect(deployer).grantRole(chainConnectorRole2, imaLinker);
// await messageProxyForMainnet.registerExtraContractForAll(depositBoxEth.address)
// await messageProxyForMainnet.registerExtraContractForAll(depositBoxERC20.address)
// await messageProxyForMainnet.registerExtraContractForAll(depositBoxERC721.address)
- // await messageProxyForMainnet.registerExtraContractForAll(communityPool.address)
+ // await messageProxyForMainnet.registerExtraContractForAll(communityPool)
// IMA schain part deployment
- messageProxyForSchain = await deployMessageProxyForSchain(keyStorage.address, schainName);
+ messageProxyForSchain = await deployMessageProxyForSchain(keyStorage, schainName);
await keyStorage.connect(deployer).setBlsCommonPublicKey(BLSPublicKey);
- tokenManagerLinker = await deployTokenManagerLinker(messageProxyForSchain, imaLinker.address);
- communityLocker = await deployCommunityLocker(schainName, messageProxyForSchain.address, tokenManagerLinker, communityPool.address);
+ tokenManagerLinker = await deployTokenManagerLinker(messageProxyForSchain, await imaLinker.getAddress());
+ communityLocker = await deployCommunityLocker(schainName, messageProxyForSchain, tokenManagerLinker, await communityPool.getAddress());
// tokenManagerEth = await deployTokenManagerEth(
// schainName,
- // messageProxyForSchain.address,
+ // messageProxyForSchain,
// tokenManagerLinker,
// communityLocker,
// depositBoxEth.address,
// "0x0000000000000000000000000000000000000000");
- // tokenManagerERC20 = await deployTokenManagerERC20(schainName, messageProxyForSchain.address, tokenManagerLinker, communityLocker, depositBoxERC20.address);
- // tokenManagerERC721 = await deployTokenManagerERC721(schainName, messageProxyForSchain.address, tokenManagerLinker, communityLocker, depositBoxERC721.address);
+ // tokenManagerERC20 = await deployTokenManagerERC20(schainName, messageProxyForSchain, tokenManagerLinker, communityLocker, depositBoxERC20.address);
+ // tokenManagerERC721 = await deployTokenManagerERC721(schainName, messageProxyForSchain, tokenManagerLinker, communityLocker, depositBoxERC721.address);
await messageProxyForSchain.connect(deployer).grantRole(extraContractRegistrarRole, deployer.address);
// await messageProxyForSchain.registerExtraContractForAll(tokenManagerEth.address)
// await messageProxyForSchain.registerExtraContractForAll(tokenManagerERC20.address)
// await messageProxyForSchain.registerExtraContractForAll(tokenManagerERC721.address)
- // await messageProxyForSchain.registerExtraContractForAll(communityLocker.address)
+ // await messageProxyForSchain.registerExtraContractForAll(communityLocker)
// ethERC20 = await deployEthErc20(tokenManagerEth);
// await tokenManagerEth.connect(deployer).setEthErc20Address(ethERC20.address);
const chainConnectorRole = await messageProxyForSchain.CHAIN_CONNECTOR_ROLE();
- await messageProxyForSchain.connect(deployer).grantRole(chainConnectorRole, tokenManagerLinker.address);
+ await messageProxyForSchain.connect(deployer).grantRole(chainConnectorRole, tokenManagerLinker);
// await tokenManagerERC20.connect(deployer).grantRole(await tokenManagerERC20.TOKEN_REGISTRAR_ROLE(), schainOwner.address);
// await tokenManagerERC721.connect(deployer).grantRole(await tokenManagerERC721.TOKEN_REGISTRAR_ROLE(), schainOwner.address);
@@ -230,11 +230,11 @@ describe("ERC721MintingFromSchainToMainnet", () => {
// await lockAndDataForSchain.setContract("ERC20Module", erc20ModuleForSchain.address);
// await lockAndDataForSchain.setContract("ERC721Module", erc721ModuleForSchain.address);
// await lockAndDataForSchain.setContract("TokenManager", tokenManager.address);
- // await lockAndDataForSchain.setContract("MessageProxy", messageProxyForSchain.address);
+ // await lockAndDataForSchain.setContract("MessageProxy", messageProxyForSchain);
// await lockAndDataForSchain.setContract("TokenFactory", tokenFactory.address);
// IMA registration
- await imaLinker.connectSchain(schainName, [communityLocker.address, tokenManagerLinker.address]);
+ await imaLinker.connectSchain(schainName, [communityLocker, tokenManagerLinker]);
// await communityPool.connect(user).rechargeUserWallet(schainName, { value: 1e18.toString() });
// await lockAndDataForSchain.addDepositBox(depositBoxEth.address);
// await lockAndDataForSchain.addDepositBox(depositBoxERC20.address);
@@ -269,57 +269,57 @@ describe("ERC721MintingFromSchainToMainnet", () => {
const extensionMainnetFactory = await ethers.getContractFactory("ERC721ReferenceMintAndMetadataMainnet");
extensionMainnet = await extensionMainnetFactory.deploy(
- messageProxyForMainnet.address,
- ERC721TokenOnMainnet.address,
+ messageProxyForMainnet,
+ ERC721TokenOnMainnet,
schainName
) as ERC721ReferenceMintAndMetadataMainnet;
extensionSchain = await extensionSchainFactory.deploy(
- messageProxyForSchain.address,
- ERC721TokenOnSchain.address,
- extensionMainnet.address
+ messageProxyForSchain,
+ ERC721TokenOnSchain,
+ extensionMainnet
) as ERC721ReferenceMintAndMetadataSchain;
- await extensionMainnet.connect(deployer).setSenderContractOnSchain(extensionSchain.address);
+ await extensionMainnet.connect(deployer).setSenderContractOnSchain(extensionSchain);
// add minter role
const minterRoleERC721 = await ERC721TokenOnMainnet.MINTER_ROLE();
- await ERC721TokenOnMainnet.grantRole(minterRoleERC721, extensionMainnet.address);
+ await ERC721TokenOnMainnet.grantRole(minterRoleERC721, extensionMainnet);
});
it("should not send message if not registered", async () => {
await ERC721TokenOnSchain.connect(user).setTokenURI(1, "MyToken1");
- await ERC721TokenOnSchain.connect(user).approve(extensionSchain.address, 1);
+ await ERC721TokenOnSchain.connect(user).approve(extensionSchain, 1);
await extensionSchain.connect(user).sendTokenToMainnet(user.address, 1).should.be.eventually.rejectedWith("Sender contract is not registered");
});
it("should send message", async () => {
const tokenURI = "MyToken1";
- const mainnetHash = stringKeccak256("Mainnet");
+ const mainnetHash = ethers.id("Mainnet");
await ERC721TokenOnSchain.connect(user).setTokenURI(1, tokenURI);
- await ERC721TokenOnSchain.connect(user).approve(extensionSchain.address, 1);
- await messageProxyForSchain.connect(deployer).registerExtraContract("Mainnet", extensionSchain.address);
+ await ERC721TokenOnSchain.connect(user).approve(extensionSchain, 1);
+ await messageProxyForSchain.connect(deployer).registerExtraContract("Mainnet", extensionSchain);
const res = await extensionSchain.connect(user).sendTokenToMainnet(user.address, 1);
- const encodedData = ethers.utils.defaultAbiCoder.encode(["address", "uint", "string"], [user.address, 1, tokenURI]);
+ const encodedData = ethers.AbiCoder.defaultAbiCoder().encode(["address", "uint", "string"], [user.address, 1, tokenURI]);
await expect(res)
.to.emit(messageProxyForSchain, "OutgoingMessage")
- .withArgs(mainnetHash, 0, extensionSchain.address, extensionMainnet.address, encodedData);
+ .withArgs(mainnetHash, 0, extensionSchain, extensionMainnet, encodedData);
});
it("should POST message for token 1", async () => {
const dataToPost = await extensionSchain.connect(user).encodeParams(user.address, 1, "MyToken1");
const message = {
data: dataToPost,
- destinationContract: extensionMainnet.address,
- sender: extensionSchain.address,
+ destinationContract: extensionMainnet,
+ sender: extensionSchain,
};
// prepare BLS signature
// P.s. this is test signature from test of SkaleManager.SkaleVerifier - please do not use it!!!
- const BlsSignature: [BigNumber, BigNumber] = [
- BigNumber.from("178325537405109593276798394634841698946852714038246117383766698579865918287"),
- BigNumber.from("493565443574555904019191451171395204672818649274520396086461475162723833781"),
+ const BlsSignature: [BigNumberish, BigNumberish] = [
+ "178325537405109593276798394634841698946852714038246117383766698579865918287",
+ "493565443574555904019191451171395204672818649274520396086461475162723833781",
];
const HashA = "3080491942974172654518861600747466851589809241462384879086673256057179400078";
const HashB = "15163860114293529009901628456926790077787470245128337652112878212941459329347";
@@ -355,14 +355,14 @@ describe("ERC721MintingFromSchainToMainnet", () => {
const message = {
data: dataToPost,
destinationContract: user.address,
- sender: extensionSchain.address,
+ sender: extensionSchain,
};
// prepare BLS signature
// P.s. this is test signature from test of SkaleManager.SkaleVerifier - please do not use it!!!
- const BlsSignature: [BigNumber, BigNumber] = [
- BigNumber.from("178325537405109593276798394634841698946852714038246117383766698579865918287"),
- BigNumber.from("493565443574555904019191451171395204672818649274520396086461475162723833781"),
+ const BlsSignature: [BigNumberish, BigNumberish] = [
+ "178325537405109593276798394634841698946852714038246117383766698579865918287",
+ "493565443574555904019191451171395204672818649274520396086461475162723833781",
];
const HashA = "3080491942974172654518861600747466851589809241462384879086673256057179400078";
const HashB = "15163860114293529009901628456926790077787470245128337652112878212941459329347";
@@ -388,22 +388,22 @@ describe("ERC721MintingFromSchainToMainnet", () => {
0,
[message],
sign
- )).to.emit(messageProxyForMainnet, "PostMessageError").withArgs(0, ethers.utils.hexlify(ethers.utils.toUtf8Bytes("Destination contract is not a contract")));
+ )).to.emit(messageProxyForMainnet, "PostMessageError").withArgs(0, ethers.hexlify(ethers.toUtf8Bytes("Destination contract is not a contract")));
});
it("should POST message for token 5", async () => {
const dataToPost = await extensionSchain.connect(user).encodeParams(user.address, 5, "MyToken5Unique");
const message = {
data: dataToPost,
- destinationContract: extensionMainnet.address,
- sender: extensionSchain.address,
+ destinationContract: extensionMainnet,
+ sender: extensionSchain,
};
// prepare BLS signature
// P.s. this is test signature from test of SkaleManager.SkaleVerifier - please do not use it!!!
- const BlsSignature: [BigNumber, BigNumber] = [
- BigNumber.from("178325537405109593276798394634841698946852714038246117383766698579865918287"),
- BigNumber.from("493565443574555904019191451171395204672818649274520396086461475162723833781"),
+ const BlsSignature: [BigNumberish, BigNumberish] = [
+ "178325537405109593276798394634841698946852714038246117383766698579865918287",
+ "493565443574555904019191451171395204672818649274520396086461475162723833781"
];
const HashA = "3080491942974172654518861600747466851589809241462384879086673256057179400078";
const HashB = "15163860114293529009901628456926790077787470245128337652112878212941459329347";
diff --git a/test/utils/command_line.ts b/test/utils/command_line.ts
index 12d10324a..5f46b6745 100644
--- a/test/utils/command_line.ts
+++ b/test/utils/command_line.ts
@@ -23,7 +23,7 @@
* @copyright SKALE Labs 2019-Present
*/
-import minimist = require("minimist");
+import minimist from "minimist";
const gasMultiplierParameter = "gas_multiplier";
diff --git a/test/utils/deploy/mainnet/communityPool.ts b/test/utils/deploy/mainnet/communityPool.ts
index 21fe02723..fc3221c02 100644
--- a/test/utils/deploy/mainnet/communityPool.ts
+++ b/test/utils/deploy/mainnet/communityPool.ts
@@ -10,10 +10,14 @@ export async function deployCommunityPool(
const factory = await ethers.getContractFactory("CommunityPool");
const instance = await upgrades.deployProxy(
factory,
- [contractManager.address, linker.address, messageProxy.address],
+ [
+ await contractManager.getAddress(),
+ await linker.getAddress(),
+ await messageProxy.getAddress()
+ ],
{"initializer": "initialize(address,address,address)"}
- ) as CommunityPool;
- await linker.registerMainnetContract(instance.address);
- await messageProxy.setCommunityPool(instance.address);
+ ) as unknown as CommunityPool;
+ await linker.registerMainnetContract(instance);
+ await messageProxy.setCommunityPool(instance);
return instance;
-}
\ No newline at end of file
+}
diff --git a/test/utils/deploy/mainnet/depositBoxERC1155.ts b/test/utils/deploy/mainnet/depositBoxERC1155.ts
index 840ba18fc..fbc033bec 100644
--- a/test/utils/deploy/mainnet/depositBoxERC1155.ts
+++ b/test/utils/deploy/mainnet/depositBoxERC1155.ts
@@ -10,9 +10,13 @@ export async function deployDepositBoxERC1155(
const factory = await ethers.getContractFactory("DepositBoxERC1155");
const instance = await upgrades.deployProxy(
factory,
- [contractManager.address, linker.address, messageProxy.address],
+ [
+ await contractManager.getAddress(),
+ await linker.getAddress(),
+ await messageProxy.getAddress()
+ ],
{"initializer": "initialize(address,address,address)"}
- ) as DepositBoxERC1155;
- await linker.registerMainnetContract(instance.address);
+ ) as unknown as DepositBoxERC1155;
+ await linker.registerMainnetContract(instance);
return instance;
-}
\ No newline at end of file
+}
diff --git a/test/utils/deploy/mainnet/depositBoxERC20.ts b/test/utils/deploy/mainnet/depositBoxERC20.ts
index d8242d76e..27fb92d22 100644
--- a/test/utils/deploy/mainnet/depositBoxERC20.ts
+++ b/test/utils/deploy/mainnet/depositBoxERC20.ts
@@ -10,9 +10,13 @@ export async function deployDepositBoxERC20(
const factory = await ethers.getContractFactory("DepositBoxERC20");
const instance = await upgrades.deployProxy(
factory,
- [contractManager.address, linker.address, messageProxy.address],
+ [
+ await contractManager.getAddress(),
+ await linker.getAddress(),
+ await messageProxy.getAddress()
+ ],
{"initializer": "initialize(address,address,address)"}
- ) as DepositBoxERC20;
- await linker.registerMainnetContract(instance.address);
+ ) as unknown as DepositBoxERC20;
+ await linker.registerMainnetContract(instance);
return instance;
-}
\ No newline at end of file
+}
diff --git a/test/utils/deploy/mainnet/depositBoxERC721.ts b/test/utils/deploy/mainnet/depositBoxERC721.ts
index d88cb6ebe..2fa3b0a04 100644
--- a/test/utils/deploy/mainnet/depositBoxERC721.ts
+++ b/test/utils/deploy/mainnet/depositBoxERC721.ts
@@ -10,9 +10,13 @@ export async function deployDepositBoxERC721(
const factory = await ethers.getContractFactory("DepositBoxERC721");
const instance = await upgrades.deployProxy(
factory,
- [contractManager.address, linker.address, messageProxy.address],
+ [
+ await contractManager.getAddress(),
+ await linker.getAddress(),
+ await messageProxy.getAddress()
+ ],
{"initializer": "initialize(address,address,address)"}
- ) as DepositBoxERC721;
- await linker.registerMainnetContract(instance.address);
+ ) as unknown as DepositBoxERC721;
+ await linker.registerMainnetContract(instance);
return instance;
-}
\ No newline at end of file
+}
diff --git a/test/utils/deploy/mainnet/depositBoxERC721WithMetadata.ts b/test/utils/deploy/mainnet/depositBoxERC721WithMetadata.ts
index 3e99eae15..8fed2b386 100644
--- a/test/utils/deploy/mainnet/depositBoxERC721WithMetadata.ts
+++ b/test/utils/deploy/mainnet/depositBoxERC721WithMetadata.ts
@@ -10,9 +10,13 @@ export async function deployDepositBoxERC721WithMetadata(
const factory = await ethers.getContractFactory("DepositBoxERC721WithMetadata");
const instance = await upgrades.deployProxy(
factory,
- [contractManager.address, linker.address, messageProxy.address],
+ [
+ await contractManager.getAddress(),
+ await linker.getAddress(),
+ await messageProxy.getAddress()
+ ],
{"initializer": "initialize(address,address,address)"}
- ) as DepositBoxERC721WithMetadata;
- await linker.registerMainnetContract(instance.address);
+ ) as unknown as DepositBoxERC721WithMetadata;
+ await linker.registerMainnetContract(instance);
return instance;
-}
\ No newline at end of file
+}
diff --git a/test/utils/deploy/mainnet/depositBoxEth.ts b/test/utils/deploy/mainnet/depositBoxEth.ts
index c203b4e35..956af2c97 100644
--- a/test/utils/deploy/mainnet/depositBoxEth.ts
+++ b/test/utils/deploy/mainnet/depositBoxEth.ts
@@ -10,9 +10,13 @@ export async function deployDepositBoxEth(
const factory = await ethers.getContractFactory("DepositBoxEth");
const instance = await upgrades.deployProxy(
factory,
- [contractManager.address, linker.address, messageProxy.address],
+ [
+ await contractManager.getAddress(),
+ await linker.getAddress(),
+ await messageProxy.getAddress()
+ ],
{"initializer": "initialize(address,address,address)"}
- ) as DepositBoxEth;
- await linker.registerMainnetContract(instance.address);
+ ) as unknown as DepositBoxEth;
+ await linker.registerMainnetContract(instance);
return instance;
-}
\ No newline at end of file
+}
diff --git a/test/utils/deploy/mainnet/linker.ts b/test/utils/deploy/mainnet/linker.ts
index 4602ff154..7aa6debd3 100644
--- a/test/utils/deploy/mainnet/linker.ts
+++ b/test/utils/deploy/mainnet/linker.ts
@@ -8,9 +8,12 @@ export async function deployLinker(
const factory = await ethers.getContractFactory("Linker");
const instance = await upgrades.deployProxy(
factory,
- [contractManager.address, messageProxy.address],
+ [
+ await contractManager.getAddress(),
+ await messageProxy.getAddress()
+ ],
{"initializer": "initialize(address,address)"}
- ) as Linker;
- await instance.registerMainnetContract(instance.address);
+ ) as unknown as Linker;
+ await instance.registerMainnetContract(instance);
return instance;
-}
\ No newline at end of file
+}
diff --git a/test/utils/deploy/mainnet/messageProxyForMainnet.ts b/test/utils/deploy/mainnet/messageProxyForMainnet.ts
index adbca47fd..e169c9312 100644
--- a/test/utils/deploy/mainnet/messageProxyForMainnet.ts
+++ b/test/utils/deploy/mainnet/messageProxyForMainnet.ts
@@ -10,8 +10,8 @@ export async function deployMessageProxyForMainnet(
if (await contractManager.getContract(name) !== "0x0000000000000000000000000000000000000000") {
return factory.attach(await contractManager.getContract(name)) as MessageProxyForMainnet;
} else {
- const instance = await upgrades.deployProxy(factory, [contractManager.address]) as MessageProxyForMainnet;
- await contractManager.setContractsAddress(name, instance.address);
+ const instance = await upgrades.deployProxy(factory, [await contractManager.getAddress()]) as unknown as MessageProxyForMainnet;
+ await contractManager.setContractsAddress(name, instance);
return instance;
}
-}
\ No newline at end of file
+}
diff --git a/test/utils/deploy/schain/communityLocker.ts b/test/utils/deploy/schain/communityLocker.ts
index 07ae96d76..51ee758a8 100644
--- a/test/utils/deploy/schain/communityLocker.ts
+++ b/test/utils/deploy/schain/communityLocker.ts
@@ -1,18 +1,23 @@
import { ethers, upgrades } from "hardhat";
-import { CommunityLocker, TokenManagerLinker } from "../../../../typechain";
+import { CommunityLocker, MessageProxyForSchain, TokenManagerLinker } from "../../../../typechain";
const name = "CommunityLocker";
export async function deployCommunityLocker(
schainName: string,
- messageProxyForSchain: string,
+ messageProxyForSchain: MessageProxyForSchain,
tokenManagerLinker: TokenManagerLinker,
communityPool: string
) {
const factory = await ethers.getContractFactory(name);
const instance = await upgrades.deployProxy(
factory,
- [schainName, messageProxyForSchain, tokenManagerLinker.address, communityPool]
- ) as CommunityLocker;
+ [
+ schainName,
+ await messageProxyForSchain.getAddress(),
+ await tokenManagerLinker.getAddress(),
+ communityPool
+ ]
+ ) as unknown as CommunityLocker;
return instance;
}
diff --git a/test/utils/deploy/schain/ethErc20.ts b/test/utils/deploy/schain/ethErc20.ts
index 566f4743a..8cef065c5 100644
--- a/test/utils/deploy/schain/ethErc20.ts
+++ b/test/utils/deploy/schain/ethErc20.ts
@@ -5,6 +5,6 @@ export async function deployEthErc20(
tokenManagerEth: TokenManagerEth
) {
const factory = await ethers.getContractFactory("EthErc20");
- const instance = await upgrades.deployProxy(factory, [tokenManagerEth.address]) as EthErc20;
+ const instance = await upgrades.deployProxy(factory, [await tokenManagerEth.getAddress()]) as unknown as EthErc20;
return instance;
}
diff --git a/test/utils/deploy/schain/messageProxyForSchain.ts b/test/utils/deploy/schain/messageProxyForSchain.ts
index a64829039..6d5de6e16 100644
--- a/test/utils/deploy/schain/messageProxyForSchain.ts
+++ b/test/utils/deploy/schain/messageProxyForSchain.ts
@@ -1,13 +1,13 @@
import { ethers, upgrades } from "hardhat";
-import { MessageProxyForSchain } from "../../../../typechain";
+import { KeyStorage, MessageProxyForSchain } from "../../../../typechain";
const name = "MessageProxyForSchain";
-export async function deployMessageProxyForSchain(keyStorageAddress: string, schainName: string) {
+export async function deployMessageProxyForSchain(keyStorageAddress: KeyStorage, schainName: string) {
const factory = await ethers.getContractFactory(name);
const instance = await upgrades.deployProxy(
factory,
- [keyStorageAddress, schainName]
- ) as MessageProxyForSchain;
+ [await keyStorageAddress.getAddress(), schainName]
+ ) as unknown as MessageProxyForSchain;
return instance;
-}
\ No newline at end of file
+}
diff --git a/test/utils/deploy/schain/tokenManagerERC1155.ts b/test/utils/deploy/schain/tokenManagerERC1155.ts
index 49c7cb204..5580bfe0f 100644
--- a/test/utils/deploy/schain/tokenManagerERC1155.ts
+++ b/test/utils/deploy/schain/tokenManagerERC1155.ts
@@ -1,11 +1,11 @@
import { ethers, upgrades } from "hardhat";
-import { TokenManagerERC1155, TokenManagerLinker, CommunityLocker } from "../../../../typechain";
+import { TokenManagerERC1155, TokenManagerLinker, CommunityLocker, MessageProxyForSchain } from "../../../../typechain";
const name = "TokenManagerERC1155";
export async function deployTokenManagerERC1155(
schainName: string,
- messageProxyForSchain: string,
+ messageProxyForSchain: MessageProxyForSchain,
tokenManagerLinker: TokenManagerLinker,
communityLocker: CommunityLocker,
newDepositBox: string
@@ -15,11 +15,11 @@ export async function deployTokenManagerERC1155(
factory,
[
schainName,
- messageProxyForSchain,
- tokenManagerLinker.address,
- communityLocker.address,
+ await messageProxyForSchain.getAddress(),
+ await tokenManagerLinker.getAddress(),
+ await communityLocker.getAddress(),
newDepositBox
]
- ) as TokenManagerERC1155;
+ ) as unknown as TokenManagerERC1155;
return instance;
}
diff --git a/test/utils/deploy/schain/tokenManagerERC20.ts b/test/utils/deploy/schain/tokenManagerERC20.ts
index 1849dd686..1f9dda8e8 100644
--- a/test/utils/deploy/schain/tokenManagerERC20.ts
+++ b/test/utils/deploy/schain/tokenManagerERC20.ts
@@ -1,11 +1,11 @@
import { ethers, upgrades } from "hardhat";
-import { TokenManagerERC20, TokenManagerLinker, CommunityLocker } from "../../../../typechain";
+import { TokenManagerERC20, TokenManagerLinker, CommunityLocker, MessageProxyForSchain } from "../../../../typechain";
const name = "TokenManagerERC20";
export async function deployTokenManagerERC20(
schainName: string,
- messageProxyForSchain: string,
+ messageProxyForSchain: MessageProxyForSchain,
tokenManagerLinker: TokenManagerLinker,
communityLocker: CommunityLocker,
newDepositBox: string
@@ -15,11 +15,11 @@ export async function deployTokenManagerERC20(
factory,
[
schainName,
- messageProxyForSchain,
- tokenManagerLinker.address,
- communityLocker.address,
+ await messageProxyForSchain.getAddress(),
+ await tokenManagerLinker.getAddress(),
+ await communityLocker.getAddress(),
newDepositBox
]
- ) as TokenManagerERC20;
+ ) as unknown as TokenManagerERC20;
return instance;
}
diff --git a/test/utils/deploy/schain/tokenManagerERC721.ts b/test/utils/deploy/schain/tokenManagerERC721.ts
index f811d1658..198543e42 100644
--- a/test/utils/deploy/schain/tokenManagerERC721.ts
+++ b/test/utils/deploy/schain/tokenManagerERC721.ts
@@ -1,11 +1,11 @@
import { ethers, upgrades } from "hardhat";
-import { TokenManagerERC721, TokenManagerLinker, CommunityLocker } from "../../../../typechain";
+import { TokenManagerERC721, TokenManagerLinker, CommunityLocker, MessageProxyForSchain } from "../../../../typechain";
const name = "TokenManagerERC721";
export async function deployTokenManagerERC721(
schainName: string,
- messageProxyForSchain: string,
+ messageProxyForSchain: MessageProxyForSchain,
tokenManagerLinker: TokenManagerLinker,
communityLocker: CommunityLocker,
newDepositBox: string
@@ -15,11 +15,11 @@ export async function deployTokenManagerERC721(
factory,
[
schainName,
- messageProxyForSchain,
- tokenManagerLinker.address,
- communityLocker.address,
+ await messageProxyForSchain.getAddress(),
+ await tokenManagerLinker.getAddress(),
+ await communityLocker.getAddress(),
newDepositBox
]
- ) as TokenManagerERC721;
+ ) as unknown as TokenManagerERC721;
return instance;
}
diff --git a/test/utils/deploy/schain/tokenManagerERC721WithMetadata.ts b/test/utils/deploy/schain/tokenManagerERC721WithMetadata.ts
index d8c7ce15e..5a6108502 100644
--- a/test/utils/deploy/schain/tokenManagerERC721WithMetadata.ts
+++ b/test/utils/deploy/schain/tokenManagerERC721WithMetadata.ts
@@ -1,11 +1,11 @@
import { ethers, upgrades } from "hardhat";
-import { TokenManagerERC721WithMetadata, TokenManagerLinker, CommunityLocker } from "../../../../typechain";
+import { TokenManagerERC721WithMetadata, TokenManagerLinker, CommunityLocker, MessageProxyForSchain } from "../../../../typechain";
const name = "TokenManagerERC721WithMetadata";
export async function deployTokenManagerERC721WithMetadata(
schainName: string,
- messageProxyForSchain: string,
+ messageProxyForSchain: MessageProxyForSchain,
tokenManagerLinker: TokenManagerLinker,
communityLocker: CommunityLocker,
newDepositBox: string
@@ -15,11 +15,11 @@ export async function deployTokenManagerERC721WithMetadata(
factory,
[
schainName,
- messageProxyForSchain,
- tokenManagerLinker.address,
- communityLocker.address,
+ await messageProxyForSchain.getAddress(),
+ await tokenManagerLinker.getAddress(),
+ await communityLocker.getAddress(),
newDepositBox
]
- ) as TokenManagerERC721WithMetadata;
+ ) as unknown as TokenManagerERC721WithMetadata;
return instance;
}
diff --git a/test/utils/deploy/schain/tokenManagerEth.ts b/test/utils/deploy/schain/tokenManagerEth.ts
index 0903ac4a0..2af3a232a 100644
--- a/test/utils/deploy/schain/tokenManagerEth.ts
+++ b/test/utils/deploy/schain/tokenManagerEth.ts
@@ -1,11 +1,11 @@
import { ethers, upgrades } from "hardhat";
-import { TokenManagerEth, TokenManagerLinker, CommunityLocker } from "../../../../typechain";
+import { TokenManagerEth, TokenManagerLinker, CommunityLocker, MessageProxyForSchain } from "../../../../typechain";
const name = "TokenManagerEth";
export async function deployTokenManagerEth(
schainName: string,
- messageProxyForSchain: string,
+ messageProxyForSchain: MessageProxyForSchain,
tokenManagerLinker: TokenManagerLinker,
communityLocker: CommunityLocker,
newDepositBox: string,
@@ -16,12 +16,12 @@ export async function deployTokenManagerEth(
factory,
[
schainName,
- messageProxyForSchain,
- tokenManagerLinker.address,
- communityLocker.address,
+ await messageProxyForSchain.getAddress(),
+ await tokenManagerLinker.getAddress(),
+ await communityLocker.getAddress(),
newDepositBox,
ethErc20Address
]
- ) as TokenManagerEth;
+ ) as unknown as TokenManagerEth;
return instance;
}
diff --git a/test/utils/deploy/schain/tokenManagerLinker.ts b/test/utils/deploy/schain/tokenManagerLinker.ts
index 4d181c11c..11c8ff9bc 100644
--- a/test/utils/deploy/schain/tokenManagerLinker.ts
+++ b/test/utils/deploy/schain/tokenManagerLinker.ts
@@ -6,6 +6,12 @@ export async function deployTokenManagerLinker(
newLinkerAddress: string
) {
const factory = await ethers.getContractFactory("TokenManagerLinker");
- const instance = await upgrades.deployProxy(factory, [messageProxyForSchain.address, newLinkerAddress]) as TokenManagerLinker;
+ const instance = await upgrades.deployProxy(
+ factory,
+ [
+ await messageProxyForSchain.getAddress(),
+ newLinkerAddress
+ ]
+ ) as unknown as TokenManagerLinker;
return instance;
}
diff --git a/test/utils/deploy/test/communityPoolTester.ts b/test/utils/deploy/test/communityPoolTester.ts
index 1fcaf8a00..3803f4fe6 100644
--- a/test/utils/deploy/test/communityPoolTester.ts
+++ b/test/utils/deploy/test/communityPoolTester.ts
@@ -10,10 +10,14 @@ export async function deployCommunityPoolTester(
const factory = await ethers.getContractFactory("CommunityPool");
const instance = await upgrades.deployProxy(
factory,
- [contractManager.address, linker.address, messageProxy.address],
+ [
+ await contractManager.getAddress(),
+ await linker.getAddress(),
+ await messageProxy.getAddress()
+ ],
{"initializer": "initialize(address,address,address)"}
- ) as CommunityPool;
- await linker.registerMainnetContract(instance.address);
- await messageProxy.setCommunityPool(instance.address);
+ ) as unknown as CommunityPool;
+ await linker.registerMainnetContract(instance);
+ await messageProxy.setCommunityPool(instance);
return instance;
-}
\ No newline at end of file
+}
diff --git a/test/utils/deploy/test/fallbackEthTester.ts b/test/utils/deploy/test/fallbackEthTester.ts
index d8e922a07..8a9208cc5 100644
--- a/test/utils/deploy/test/fallbackEthTester.ts
+++ b/test/utils/deploy/test/fallbackEthTester.ts
@@ -8,6 +8,10 @@ export async function deployFallbackEthTester(
schainName: string
) {
const factory = await ethers.getContractFactory("FallbackEthTester");
- const instance = await factory.deploy(depositBoxEth.address, communityPool.address, schainName) as FallbackEthTester;
+ const instance = await factory.deploy(
+ await depositBoxEth.getAddress(),
+ await communityPool.getAddress(),
+ schainName
+ ) as FallbackEthTester;
return instance;
-}
\ No newline at end of file
+}
diff --git a/test/utils/deploy/test/messageProxyForMainnetTester.ts b/test/utils/deploy/test/messageProxyForMainnetTester.ts
index 23b864798..2a2ac35eb 100644
--- a/test/utils/deploy/test/messageProxyForMainnetTester.ts
+++ b/test/utils/deploy/test/messageProxyForMainnetTester.ts
@@ -12,9 +12,9 @@ export async function deployMessageProxyForMainnetTester(
} else {
const instance = await upgrades.deployProxy(
factory,
- [contractManager.address]
- ) as MessageProxyForMainnetTester;
- await contractManager.setContractsAddress(name, instance.address);
+ [await contractManager.getAddress()]
+ ) as unknown as MessageProxyForMainnetTester;
+ await contractManager.setContractsAddress(name, instance);
return instance;
}
-}
\ No newline at end of file
+}
diff --git a/test/utils/deploy/test/messageProxyForSchainTester.ts b/test/utils/deploy/test/messageProxyForSchainTester.ts
index 18d88f20c..742a6d55d 100644
--- a/test/utils/deploy/test/messageProxyForSchainTester.ts
+++ b/test/utils/deploy/test/messageProxyForSchainTester.ts
@@ -1,9 +1,9 @@
import { ethers } from "hardhat";
-import { MessageProxyForSchainTester } from "../../../../typechain";
+import { KeyStorage, MessageProxyForSchainTester } from "../../../../typechain";
const name = "MessageProxyForSchainTester";
-export async function deployMessageProxyForSchainTester(keyStorageAddress: string, schainName: string) {
+export async function deployMessageProxyForSchainTester(keyStorageAddress: KeyStorage, schainName: string) {
const factory = await ethers.getContractFactory(name);
const instance = await factory.deploy(keyStorageAddress, schainName) as MessageProxyForSchainTester;
return instance;
diff --git a/test/utils/helper.ts b/test/utils/helper.ts
index ed5b8f4dc..07b00360a 100644
--- a/test/utils/helper.ts
+++ b/test/utils/helper.ts
@@ -1,4 +1,4 @@
-import { Wallet, BytesLike } from "ethers";
+import { Wallet, BytesLike, HDNodeWallet } from "ethers";
import { ethers } from "hardhat";
import { ec } from "elliptic";
@@ -46,15 +46,11 @@ export function stringFromHex(value: string) {
return str;
}
-export function stringKeccak256(value: string): string {
- return ethers.utils.solidityKeccak256(["string"], [value]);
-}
-
-export function getPublicKey(wallet: Wallet): [BytesLike, BytesLike] {
+export function getPublicKey(wallet: HDNodeWallet | Wallet): [BytesLike, BytesLike] {
const publicKey = secp256k1EC.keyFromPrivate(wallet.privateKey.slice(2)).getPublic();
- return [ethers.utils.hexlify(publicKey.getX().toBuffer()), ethers.utils.hexlify(publicKey.getY().toBuffer())]
+ return [ethers.hexlify(publicKey.getX().toBuffer()), ethers.hexlify(publicKey.getY().toBuffer())]
}
export async function getBalance(address: string): Promise {
- return parseFloat(ethers.utils.formatEther(await ethers.provider.getBalance(address)));
+ return parseFloat(ethers.formatEther(await ethers.provider.getBalance(address)));
}
diff --git a/test/utils/skale-manager-utils/contractManager.ts b/test/utils/skale-manager-utils/contractManager.ts
index d8fa85173..6c21724a2 100644
--- a/test/utils/skale-manager-utils/contractManager.ts
+++ b/test/utils/skale-manager-utils/contractManager.ts
@@ -17,30 +17,30 @@ export async function deployContractManager(contractManagerAddress: string) {
}
if (await instance.getContract("KeyStorage") === "0x0000000000000000000000000000000000000000") {
const keyStorageInstance = await (await ethers.getContractFactory("KeyStorageMock")).deploy() as KeyStorageMock;
- await instance.setContractsAddress("KeyStorage", keyStorageInstance.address);
+ await instance.setContractsAddress("KeyStorage", keyStorageInstance);
}
if (await instance.getContract(nameNodes) === "0x0000000000000000000000000000000000000000") {
const nodesInstance = await (await ethers.getContractFactory(nameNodes)).deploy() as Nodes;
- await instance.setContractsAddress(nameNodes, nodesInstance.address);
+ await instance.setContractsAddress(nameNodes, nodesInstance);
}
if (await instance.getContract(nameSchains) === "0x0000000000000000000000000000000000000000") {
const schainsInstance = await (await ethers.getContractFactory(nameSchains)).deploy() as Schains;
- await schainsInstance.addContractManager(instance.address);
- await instance.setContractsAddress(nameSchains, schainsInstance.address);
+ await schainsInstance.addContractManager(instance);
+ await instance.setContractsAddress(nameSchains, schainsInstance);
}
if (await instance.getContract(nameSchainsInternal) === "0x0000000000000000000000000000000000000000") {
const schainsInternalInstance = await (await ethers.getContractFactory(nameSchainsInternal)).deploy() as SchainsInternal;
- await schainsInternalInstance.addContractManager(instance.address);
- await instance.setContractsAddress(nameSchainsInternal, schainsInternalInstance.address);
+ await schainsInternalInstance.addContractManager(instance);
+ await instance.setContractsAddress(nameSchainsInternal, schainsInternalInstance);
}
if (await instance.getContract(nameSkaleVerifier) === "0x0000000000000000000000000000000000000000") {
const skaleVerifierInstance = await (await ethers.getContractFactory(nameSkaleVerifier)).deploy() as SkaleVerifierMock;
- await instance.setContractsAddress("SkaleVerifier", skaleVerifierInstance.address);
+ await instance.setContractsAddress("SkaleVerifier", skaleVerifierInstance);
}
if (await instance.getContract(nameWallets) === "0x0000000000000000000000000000000000000000") {
const walletsInstance = await (await ethers.getContractFactory(nameWallets)).deploy() as Wallets;
- await walletsInstance.addContractManager(instance.address);
- await instance.setContractsAddress(nameWallets, walletsInstance.address);
+ await walletsInstance.addContractManager(instance);
+ await instance.setContractsAddress(nameWallets, walletsInstance);
}
return instance;
}
diff --git a/test/utils/skale-manager-utils/keyStorage.ts b/test/utils/skale-manager-utils/keyStorage.ts
index 631fecfe1..b5bc9ff2e 100644
--- a/test/utils/skale-manager-utils/keyStorage.ts
+++ b/test/utils/skale-manager-utils/keyStorage.ts
@@ -1,6 +1,5 @@
import { ethers } from "hardhat";
import { ContractManager, KeyStorageMock } from "../../../typechain";
-import { stringKeccak256 } from "../helper";
const BLSPublicKey = {
x: {
@@ -17,14 +16,15 @@ export async function setCommonPublicKey(
contractManager: ContractManager,
schainName: string
) {
+ const schainHash = ethers.id(schainName);
const factory = await ethers.getContractFactory("KeyStorageMock");
let keyStorageInstance: KeyStorageMock;
if (await contractManager.getContract("KeyStorage") === "0x0000000000000000000000000000000000000000") {
console.log("Schains Internal deployment");
keyStorageInstance = await factory.deploy() as KeyStorageMock;
- await contractManager.setContractsAddress("KeyStorage", keyStorageInstance.address);
+ await contractManager.setContractsAddress("KeyStorage", keyStorageInstance);
} else {
keyStorageInstance = factory.attach(await contractManager.getContract("KeyStorage")) as KeyStorageMock;
}
- await keyStorageInstance.setBlsCommonPublicKeyForSchain(stringKeccak256(schainName), BLSPublicKey);
+ await keyStorageInstance.setBlsCommonPublicKeyForSchain(schainHash, BLSPublicKey);
}
diff --git a/test/utils/skale-manager-utils/schainsInternal.ts b/test/utils/skale-manager-utils/schainsInternal.ts
index 4cb5f20ff..b0e8753a0 100644
--- a/test/utils/skale-manager-utils/schainsInternal.ts
+++ b/test/utils/skale-manager-utils/schainsInternal.ts
@@ -1,6 +1,5 @@
import { ethers } from "hardhat";
import { ContractManager, SchainsInternal } from "../../../typechain";
-import { stringKeccak256 } from "../helper";
const nameSchainsInternal = "SchainsInternal";
@@ -25,21 +24,22 @@ export async function addNodesToSchain(
const schainsInternalFactory = await ethers.getContractFactory(nameSchainsInternal);
const schainsInternalAddres = await contractManager.getContract(nameSchainsInternal);
const schainsInternal = schainsInternalFactory.attach(schainsInternalAddres) as SchainsInternal;
- await schainsInternal.addNodesToSchainsGroups(ethers.utils.id(schainName), nodes);
+ await schainsInternal.addNodesToSchainsGroups(ethers.id(schainName), nodes);
}
export async function isSchainActive(
contractManager: ContractManager,
schainName: string
) {
+ const schainHash = ethers.id(schainName);
const factory = await ethers.getContractFactory(nameSchainsInternal);
let schainsInternalInstance: SchainsInternal;
if (await contractManager.getContract(nameSchainsInternal) === "0x0000000000000000000000000000000000000000") {
console.log("Schains Internal deployment");
schainsInternalInstance = await factory.deploy() as SchainsInternal;
- await contractManager.setContractsAddress(nameSchainsInternal, schainsInternalInstance.address);
+ await contractManager.setContractsAddress(nameSchainsInternal, schainsInternalInstance);
} else {
- schainsInternalInstance = await factory.attach(await contractManager.getContract(nameSchainsInternal)) as SchainsInternal;
+ schainsInternalInstance = factory.attach(await contractManager.getContract(nameSchainsInternal)) as SchainsInternal;
}
- return await schainsInternalInstance.isSchainActive(stringKeccak256(schainName));
+ return await schainsInternalInstance.isSchainActive(schainHash);
}
diff --git a/test/utils/skale-manager-utils/wallets.ts b/test/utils/skale-manager-utils/wallets.ts
index 248f95dbb..3697b60b2 100644
--- a/test/utils/skale-manager-utils/wallets.ts
+++ b/test/utils/skale-manager-utils/wallets.ts
@@ -1,7 +1,6 @@
import { initializeSchain, isSchainActive } from "./schainsInternal";
import { ethers } from "hardhat";
import { ContractManager, Wallets } from "../../../typechain";
-import { stringKeccak256 } from "../helper";
const nameWallets = "Wallets";
@@ -16,8 +15,8 @@ export async function rechargeSchainWallet(
if (await contractManager.getContract(nameWallets) === "0x0000000000000000000000000000000000000000") {
console.log("Schains Internal deployment");
walletsInstance = await walletsFactory.deploy() as Wallets;
- await walletsInstance.addContractManager(contractManager.address);
- await contractManager.setContractsAddress(nameWallets, walletsInstance.address);
+ await walletsInstance.addContractManager(contractManager);
+ await contractManager.setContractsAddress(nameWallets, walletsInstance);
} else {
walletsInstance = await walletsFactory.attach(await contractManager.getContract(nameWallets)) as Wallets;
}
@@ -26,6 +25,6 @@ export async function rechargeSchainWallet(
if ( !schainActive )
await initializeSchain(contractManager, schainName, owner, 1, 1);
- const schainHash = stringKeccak256(schainName);
+ const schainHash = ethers.id(schainName);
await walletsInstance.rechargeSchainWallet(schainHash, {value: amountEth /*"1000000000000000000"*/});
}
diff --git a/test/utils/time.ts b/test/utils/time.ts
index 12bff326a..cfb91b655 100644
--- a/test/utils/time.ts
+++ b/test/utils/time.ts
@@ -31,5 +31,12 @@ export async function skipTime(seconds: number) {
}
export async function currentTime() {
- return (await ethers.provider.getBlock("latest")).timestamp;
+ try {
+ const block = await ethers.provider.getBlock('latest');
+ if (!block) throw new Error('Failed to retrieve the latest block.');
+ return block.timestamp;
+ } catch (error) {
+ console.error('Error fetching the latest block:', error);
+ throw error;
+ }
}
diff --git a/tsconfig.json b/tsconfig.json
index d0d126c84..8463ccd9b 100644
--- a/tsconfig.json
+++ b/tsconfig.json
@@ -1,6 +1,6 @@
{
"compilerOptions": {
- "target": "es2018",
+ "target": "es2020",
"module": "commonjs",
"strict": true,
"moduleResolution": "node",
@@ -10,7 +10,7 @@
"emitDecoratorMetadata": true,
"forceConsistentCasingInFileNames": true,
"resolveJsonModule": true,
- "lib": ["es2018", "esnext.asynciterable"],
+ "lib": ["es2020", "esnext.asynciterable"],
"sourceMap": true,
"typeRoots": ["./node_modules/@types", "./typechain"],
"types": ["node"],
@@ -18,5 +18,10 @@
"skipLibCheck": true
},
"include": ["**/*.ts"],
- "exclude": ["node_modules", "example", "build", "test-tokens"]
+ "exclude": [
+ "node_modules",
+ "example",
+ "build",
+ "test-tokens"
+ ]
}
diff --git a/yarn.lock b/yarn.lock
index bbb75f7d8..e26a347b8 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -2,10 +2,15 @@
# yarn lockfile v1
-"@aashutoshrathi/word-wrap@^1.2.3":
- version "1.2.6"
- resolved "https://registry.yarnpkg.com/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz#bd9154aec9983f77b3a034ecaa015c2e4201f6cf"
- integrity sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==
+"@adraffy/ens-normalize@1.10.1":
+ version "1.10.1"
+ resolved "https://registry.yarnpkg.com/@adraffy/ens-normalize/-/ens-normalize-1.10.1.tgz#63430d04bd8c5e74f8d7d049338f1cd9d4f02069"
+ integrity sha512-96Z2IP3mYmF1Xg2cDm8f1gWGf/HUVedQ3FMifV4kG/PQ4yEP51xDtRAEfhVNt5f/uzpNkZHwWQuUcu6D6K+Ekw==
+
+"@adraffy/ens-normalize@1.11.0":
+ version "1.11.0"
+ resolved "https://registry.yarnpkg.com/@adraffy/ens-normalize/-/ens-normalize-1.11.0.tgz#42cc67c5baa407ac25059fcd7d405cc5ecdb0c33"
+ integrity sha512-/3DDPKHqqIqxUULp8yP4zODUY1i+2xvVWsv8A79xGWdCAG+8sb0hRh0Rk2QyOJUnnbyPUAZYcpBuRe3nS2OIUg==
"@aws-crypto/sha256-js@1.2.2":
version "1.2.2"
@@ -26,12 +31,12 @@
tslib "^1.11.1"
"@aws-sdk/types@^3.1.0":
- version "3.378.0"
- resolved "https://registry.yarnpkg.com/@aws-sdk/types/-/types-3.378.0.tgz#93a811ccdf15c81b1947f1cd67922c4690792189"
- integrity sha512-qP0CvR/ItgktmN8YXpGQglzzR/6s0nrsQ4zIfx3HMwpsBTwuouYahcCtF1Vr82P4NFcoDA412EJahJ2pIqEd+w==
+ version "3.664.0"
+ resolved "https://registry.yarnpkg.com/@aws-sdk/types/-/types-3.664.0.tgz#e6de1c0a2cdfe4f1e43271223dc0b55e613ced58"
+ integrity sha512-+GtXktvVgpreM2b+NJL9OqZGsOzHwlCUrO8jgQUvH/yA6Kd8QO2YFhQCp0C9sSzTteZJVqGBu8E0CQurxJHPbw==
dependencies:
- "@smithy/types" "^2.0.2"
- tslib "^2.5.0"
+ "@smithy/types" "^3.5.0"
+ tslib "^2.6.2"
"@aws-sdk/util-utf8-browser@^3.0.0":
version "3.259.0"
@@ -41,460 +46,438 @@
tslib "^2.3.1"
"@babel/code-frame@^7.0.0":
- version "7.14.5"
- resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.14.5.tgz#23b08d740e83f49c5e59945fbf1b43e80bbf4edb"
- integrity sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==
+ version "7.25.9"
+ resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.25.9.tgz#895b6c7e04a7271a0cbfd575d2e8131751914cc7"
+ integrity sha512-z88xeGxnzehn2sqZ8UdGQEvYErF1odv2CftxInpSYJt6uHuPe9YjahKZITGs3l5LeI9d2ROG+obuDAoSlqbNfQ==
dependencies:
- "@babel/highlight" "^7.14.5"
+ "@babel/highlight" "^7.25.9"
+ picocolors "^1.0.0"
-"@babel/helper-validator-identifier@^7.14.5":
- version "7.15.7"
- resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz#220df993bfe904a4a6b02ab4f3385a5ebf6e2389"
- integrity sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==
+"@babel/helper-validator-identifier@^7.25.9":
+ version "7.25.9"
+ resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz#24b64e2c3ec7cd3b3c547729b8d16871f22cbdc7"
+ integrity sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==
-"@babel/highlight@^7.14.5":
- version "7.14.5"
- resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.14.5.tgz#6861a52f03966405001f6aa534a01a24d99e8cd9"
- integrity sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==
+"@babel/highlight@^7.25.9":
+ version "7.25.9"
+ resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.25.9.tgz#8141ce68fc73757946f983b343f1231f4691acc6"
+ integrity sha512-llL88JShoCsth8fF8R4SJnIn+WLvR6ccFxu1H3FlMhDontdcmZWf2HgIZ7AIqV3Xcck1idlohrN4EUBQz6klbw==
dependencies:
- "@babel/helper-validator-identifier" "^7.14.5"
- chalk "^2.0.0"
+ "@babel/helper-validator-identifier" "^7.25.9"
+ chalk "^2.4.2"
js-tokens "^4.0.0"
-
-"@chainsafe/as-sha256@^0.3.1":
- version "0.3.1"
- resolved "https://registry.yarnpkg.com/@chainsafe/as-sha256/-/as-sha256-0.3.1.tgz#3639df0e1435cab03f4d9870cc3ac079e57a6fc9"
- integrity sha512-hldFFYuf49ed7DAakWVXSJODuq3pzJEguD8tQ7h+sGkM18vja+OFoJI9krnGmgzyuZC2ETX0NOIcCTy31v2Mtg==
-
-"@chainsafe/persistent-merkle-tree@^0.4.2":
- version "0.4.2"
- resolved "https://registry.yarnpkg.com/@chainsafe/persistent-merkle-tree/-/persistent-merkle-tree-0.4.2.tgz#4c9ee80cc57cd3be7208d98c40014ad38f36f7ff"
- integrity sha512-lLO3ihKPngXLTus/L7WHKaw9PnNJWizlOF1H9NNzHP6Xvh82vzg9F2bzkXhYIFshMZ2gTCEz8tq6STe7r5NDfQ==
- dependencies:
- "@chainsafe/as-sha256" "^0.3.1"
-
-"@chainsafe/persistent-merkle-tree@^0.5.0":
- version "0.5.0"
- resolved "https://registry.yarnpkg.com/@chainsafe/persistent-merkle-tree/-/persistent-merkle-tree-0.5.0.tgz#2b4a62c9489a5739dedd197250d8d2f5427e9f63"
- integrity sha512-l0V1b5clxA3iwQLXP40zYjyZYospQLZXzBVIhhr9kDg/1qHZfzzHw0jj4VPBijfYCArZDlPkRi1wZaV2POKeuw==
- dependencies:
- "@chainsafe/as-sha256" "^0.3.1"
-
-"@chainsafe/ssz@^0.10.0":
- version "0.10.2"
- resolved "https://registry.yarnpkg.com/@chainsafe/ssz/-/ssz-0.10.2.tgz#c782929e1bb25fec66ba72e75934b31fd087579e"
- integrity sha512-/NL3Lh8K+0q7A3LsiFq09YXS9fPE+ead2rr7vM2QK8PLzrNsw3uqrif9bpRX5UxgeRjM+vYi+boCM3+GM4ovXg==
- dependencies:
- "@chainsafe/as-sha256" "^0.3.1"
- "@chainsafe/persistent-merkle-tree" "^0.5.0"
-
-"@chainsafe/ssz@^0.9.2":
- version "0.9.4"
- resolved "https://registry.yarnpkg.com/@chainsafe/ssz/-/ssz-0.9.4.tgz#696a8db46d6975b600f8309ad3a12f7c0e310497"
- integrity sha512-77Qtg2N1ayqs4Bg/wvnWfg5Bta7iy7IRh8XqXh7oNMeP2HBbBwx8m6yTpA8p0EHItWPEBkgZd5S5/LSlp3GXuQ==
- dependencies:
- "@chainsafe/as-sha256" "^0.3.1"
- "@chainsafe/persistent-merkle-tree" "^0.4.2"
- case "^1.6.3"
-
-"@cspell/cspell-bundled-dicts@8.14.4":
- version "8.14.4"
- resolved "https://registry.yarnpkg.com/@cspell/cspell-bundled-dicts/-/cspell-bundled-dicts-8.14.4.tgz#61e116fb3c505d4ebf2f842f24ea1e39bc47d469"
- integrity sha512-JHZOpCJzN6fPBapBOvoeMxZbr0ZA11ZAkwcqM4w0lKoacbi6TwK8GIYf66hHvwLmMeav75TNXWE6aPTvBLMMqA==
- dependencies:
- "@cspell/dict-ada" "^4.0.2"
- "@cspell/dict-aws" "^4.0.4"
- "@cspell/dict-bash" "^4.1.4"
- "@cspell/dict-companies" "^3.1.4"
- "@cspell/dict-cpp" "^5.1.16"
- "@cspell/dict-cryptocurrencies" "^5.0.0"
- "@cspell/dict-csharp" "^4.0.2"
- "@cspell/dict-css" "^4.0.13"
- "@cspell/dict-dart" "^2.2.1"
- "@cspell/dict-django" "^4.1.0"
- "@cspell/dict-docker" "^1.1.7"
- "@cspell/dict-dotnet" "^5.0.5"
- "@cspell/dict-elixir" "^4.0.3"
- "@cspell/dict-en-common-misspellings" "^2.0.4"
+ picocolors "^1.0.0"
+
+"@cspell/cspell-bundled-dicts@8.15.4":
+ version "8.15.4"
+ resolved "https://registry.yarnpkg.com/@cspell/cspell-bundled-dicts/-/cspell-bundled-dicts-8.15.4.tgz#dcba969630b8ce132e649721027a2e67ff483174"
+ integrity sha512-t5b2JwGeUmzmjl319mCuaeKGxTvmzLLRmrpdHr+ZZGRO4nf7L48Lbe9A6uwNUvsZe0cXohiNXsrrsuzRVXswVA==
+ dependencies:
+ "@cspell/dict-ada" "^4.0.5"
+ "@cspell/dict-aws" "^4.0.7"
+ "@cspell/dict-bash" "^4.1.8"
+ "@cspell/dict-companies" "^3.1.7"
+ "@cspell/dict-cpp" "^5.1.22"
+ "@cspell/dict-cryptocurrencies" "^5.0.3"
+ "@cspell/dict-csharp" "^4.0.5"
+ "@cspell/dict-css" "^4.0.16"
+ "@cspell/dict-dart" "^2.2.4"
+ "@cspell/dict-django" "^4.1.3"
+ "@cspell/dict-docker" "^1.1.11"
+ "@cspell/dict-dotnet" "^5.0.8"
+ "@cspell/dict-elixir" "^4.0.6"
+ "@cspell/dict-en-common-misspellings" "^2.0.7"
"@cspell/dict-en-gb" "1.1.33"
- "@cspell/dict-en_us" "^4.3.23"
- "@cspell/dict-filetypes" "^3.0.4"
- "@cspell/dict-flutter" "^1.0.0"
- "@cspell/dict-fonts" "^4.0.0"
- "@cspell/dict-fsharp" "^1.0.1"
- "@cspell/dict-fullstack" "^3.2.0"
- "@cspell/dict-gaming-terms" "^1.0.5"
- "@cspell/dict-git" "^3.0.0"
- "@cspell/dict-golang" "^6.0.12"
- "@cspell/dict-google" "^1.0.1"
- "@cspell/dict-haskell" "^4.0.1"
- "@cspell/dict-html" "^4.0.5"
- "@cspell/dict-html-symbol-entities" "^4.0.0"
- "@cspell/dict-java" "^5.0.7"
- "@cspell/dict-julia" "^1.0.1"
- "@cspell/dict-k8s" "^1.0.6"
- "@cspell/dict-latex" "^4.0.0"
- "@cspell/dict-lorem-ipsum" "^4.0.0"
- "@cspell/dict-lua" "^4.0.3"
- "@cspell/dict-makefile" "^1.0.0"
- "@cspell/dict-monkeyc" "^1.0.6"
- "@cspell/dict-node" "^5.0.1"
- "@cspell/dict-npm" "^5.1.4"
- "@cspell/dict-php" "^4.0.10"
- "@cspell/dict-powershell" "^5.0.8"
- "@cspell/dict-public-licenses" "^2.0.8"
- "@cspell/dict-python" "^4.2.6"
- "@cspell/dict-r" "^2.0.1"
- "@cspell/dict-ruby" "^5.0.3"
- "@cspell/dict-rust" "^4.0.5"
- "@cspell/dict-scala" "^5.0.3"
- "@cspell/dict-software-terms" "^4.1.3"
- "@cspell/dict-sql" "^2.1.5"
- "@cspell/dict-svelte" "^1.0.2"
- "@cspell/dict-swift" "^2.0.1"
- "@cspell/dict-terraform" "^1.0.1"
- "@cspell/dict-typescript" "^3.1.6"
- "@cspell/dict-vue" "^3.0.0"
-
-"@cspell/cspell-json-reporter@8.14.4":
- version "8.14.4"
- resolved "https://registry.yarnpkg.com/@cspell/cspell-json-reporter/-/cspell-json-reporter-8.14.4.tgz#4646c1963b9b02fea3faae3c5ee04fb6dda8548e"
- integrity sha512-gJ6tQbGCNLyHS2iIimMg77as5MMAFv3sxU7W6tjLlZp8htiNZS7fS976g24WbT/hscsTT9Dd0sNHkpo8K3nvVw==
- dependencies:
- "@cspell/cspell-types" "8.14.4"
-
-"@cspell/cspell-pipe@8.14.4":
- version "8.14.4"
- resolved "https://registry.yarnpkg.com/@cspell/cspell-pipe/-/cspell-pipe-8.14.4.tgz#5e81509d7c2763ac0e8c09b7989fe95e36fe0a05"
- integrity sha512-CLLdouqfrQ4rqdQdPu0Oo+HHCU/oLYoEsK1nNPb28cZTFxnn0cuSPKB6AMPBJmMwdfJ6fMD0BCKNbEe1UNLHcw==
-
-"@cspell/cspell-resolver@8.14.4":
- version "8.14.4"
- resolved "https://registry.yarnpkg.com/@cspell/cspell-resolver/-/cspell-resolver-8.14.4.tgz#839258970996c8262b290f6e8fbbac27d43fb0b8"
- integrity sha512-s3uZyymJ04yn8+zlTp7Pt1WRSlAel6XVo+iZRxls3LSvIP819KK64DoyjCD2Uon0Vg9P/K7aAPt8GcxDcnJtgA==
+ "@cspell/dict-en_us" "^4.3.26"
+ "@cspell/dict-filetypes" "^3.0.7"
+ "@cspell/dict-flutter" "^1.0.3"
+ "@cspell/dict-fonts" "^4.0.3"
+ "@cspell/dict-fsharp" "^1.0.4"
+ "@cspell/dict-fullstack" "^3.2.3"
+ "@cspell/dict-gaming-terms" "^1.0.8"
+ "@cspell/dict-git" "^3.0.3"
+ "@cspell/dict-golang" "^6.0.16"
+ "@cspell/dict-google" "^1.0.4"
+ "@cspell/dict-haskell" "^4.0.4"
+ "@cspell/dict-html" "^4.0.9"
+ "@cspell/dict-html-symbol-entities" "^4.0.3"
+ "@cspell/dict-java" "^5.0.10"
+ "@cspell/dict-julia" "^1.0.4"
+ "@cspell/dict-k8s" "^1.0.9"
+ "@cspell/dict-latex" "^4.0.3"
+ "@cspell/dict-lorem-ipsum" "^4.0.3"
+ "@cspell/dict-lua" "^4.0.6"
+ "@cspell/dict-makefile" "^1.0.3"
+ "@cspell/dict-monkeyc" "^1.0.9"
+ "@cspell/dict-node" "^5.0.4"
+ "@cspell/dict-npm" "^5.1.8"
+ "@cspell/dict-php" "^4.0.13"
+ "@cspell/dict-powershell" "^5.0.13"
+ "@cspell/dict-public-licenses" "^2.0.11"
+ "@cspell/dict-python" "^4.2.12"
+ "@cspell/dict-r" "^2.0.4"
+ "@cspell/dict-ruby" "^5.0.7"
+ "@cspell/dict-rust" "^4.0.9"
+ "@cspell/dict-scala" "^5.0.6"
+ "@cspell/dict-software-terms" "^4.1.11"
+ "@cspell/dict-sql" "^2.1.8"
+ "@cspell/dict-svelte" "^1.0.5"
+ "@cspell/dict-swift" "^2.0.4"
+ "@cspell/dict-terraform" "^1.0.5"
+ "@cspell/dict-typescript" "^3.1.10"
+ "@cspell/dict-vue" "^3.0.3"
+
+"@cspell/cspell-json-reporter@8.15.4":
+ version "8.15.4"
+ resolved "https://registry.yarnpkg.com/@cspell/cspell-json-reporter/-/cspell-json-reporter-8.15.4.tgz#f8902234bd000040d40ae3574860d221c991aff9"
+ integrity sha512-solraYhZG4l++NeVCOtpc8DMvwHc46TmJt8DQbgvKtk6wOjTEcFrwKfA6Ei9YKbvyebJlpWMenO3goOll0loYg==
+ dependencies:
+ "@cspell/cspell-types" "8.15.4"
+
+"@cspell/cspell-pipe@8.15.4":
+ version "8.15.4"
+ resolved "https://registry.yarnpkg.com/@cspell/cspell-pipe/-/cspell-pipe-8.15.4.tgz#c3c958d3b900ccdcc4f2a8610fe464882e3f1759"
+ integrity sha512-WfCmZVFC6mX6vYlf02hWwelcSBTbDQgc5YqY+1miuMk+OHSUAHSACjZId6/a4IAID94xScvFfj7jgrdejUVvIQ==
+
+"@cspell/cspell-resolver@8.15.4":
+ version "8.15.4"
+ resolved "https://registry.yarnpkg.com/@cspell/cspell-resolver/-/cspell-resolver-8.15.4.tgz#83ade61a1e11b88be756a805138ec8b31191e0d0"
+ integrity sha512-Zr428o+uUTqywrdKyjluJVnDPVAJEqZ1chQLKIrHggUah1cgs5aQ7rZ+0Rv5euYMlC2idZnP7IL6TDaIib80oA==
dependencies:
global-directory "^4.0.1"
-"@cspell/cspell-service-bus@8.14.4":
- version "8.14.4"
- resolved "https://registry.yarnpkg.com/@cspell/cspell-service-bus/-/cspell-service-bus-8.14.4.tgz#3c081578c7a369e4a737311e8ee31e709a48abb8"
- integrity sha512-i3UG+ep63akNsDXZrtGgICNF3MLBHtvKe/VOIH6+L+NYaAaVHqqQvOY9MdUwt1HXh8ElzfwfoRp36wc5aAvt6g==
+"@cspell/cspell-service-bus@8.15.4":
+ version "8.15.4"
+ resolved "https://registry.yarnpkg.com/@cspell/cspell-service-bus/-/cspell-service-bus-8.15.4.tgz#76a0c380e0102a4521ce96a64ade580331ca8404"
+ integrity sha512-pXYofnV/V9Y3LZdfFGbmhdxPX/ABjiD3wFjGHt5YhIU9hjVVuvjFlgY7pH2AvRjs4F8xKXv1ReWl44BJOL9gLA==
-"@cspell/cspell-types@8.14.4":
- version "8.14.4"
- resolved "https://registry.yarnpkg.com/@cspell/cspell-types/-/cspell-types-8.14.4.tgz#93ceff0bcefe75c259ae3475961f580f3de36e79"
- integrity sha512-VXwikqdHgjOVperVVCn2DOe8W3rPIswwZtMHfRYnagpzZo/TOntIjkXPJSfTtl/cFyx5DnCBsDH8ytKGlMeHkw==
+"@cspell/cspell-types@8.15.4":
+ version "8.15.4"
+ resolved "https://registry.yarnpkg.com/@cspell/cspell-types/-/cspell-types-8.15.4.tgz#307db2055ff669d99487c1772edb393243bb5098"
+ integrity sha512-1hDtgYDQVW11zgtrr12EmGW45Deoi7IjZOhzPFLb+3WkhZ46ggWdbrRalWwBolQPDDo6+B2Q6WXz5hdND+Tpwg==
-"@cspell/dict-ada@^4.0.2":
- version "4.0.2"
- resolved "https://registry.yarnpkg.com/@cspell/dict-ada/-/dict-ada-4.0.2.tgz#8da2216660aeb831a0d9055399a364a01db5805a"
- integrity sha512-0kENOWQeHjUlfyId/aCM/mKXtkEgV0Zu2RhUXCBr4hHo9F9vph+Uu8Ww2b0i5a4ZixoIkudGA+eJvyxrG1jUpA==
+"@cspell/dict-ada@^4.0.5":
+ version "4.0.5"
+ resolved "https://registry.yarnpkg.com/@cspell/dict-ada/-/dict-ada-4.0.5.tgz#c14aae2faaecbad2d99f0d701e4700a48c68ef60"
+ integrity sha512-6/RtZ/a+lhFVmrx/B7bfP7rzC4yjEYe8o74EybXcvu4Oue6J4Ey2WSYj96iuodloj1LWrkNCQyX5h4Pmcj0Iag==
-"@cspell/dict-aws@^4.0.4":
- version "4.0.4"
- resolved "https://registry.yarnpkg.com/@cspell/dict-aws/-/dict-aws-4.0.4.tgz#638a38df18c93d5cb74607b24ab4e1498825d565"
- integrity sha512-6AWI/Kkf+RcX/J81VX8+GKLeTgHWEr/OMhGk3dHQzWK66RaqDJCGDqi7494ghZKcBB7dGa3U5jcKw2FZHL/u3w==
+"@cspell/dict-aws@^4.0.7":
+ version "4.0.7"
+ resolved "https://registry.yarnpkg.com/@cspell/dict-aws/-/dict-aws-4.0.7.tgz#f96f3b70cd52a25b895eb08e297de5a5cc3fc5b6"
+ integrity sha512-PoaPpa2NXtSkhGIMIKhsJUXB6UbtTt6Ao3x9JdU9kn7fRZkwD4RjHDGqulucIOz7KeEX/dNRafap6oK9xHe4RA==
-"@cspell/dict-bash@^4.1.4":
- version "4.1.4"
- resolved "https://registry.yarnpkg.com/@cspell/dict-bash/-/dict-bash-4.1.4.tgz#a7942df189d3cc5ebced5b877d64ddbb24301137"
- integrity sha512-W/AHoQcJYn3Vn/tUiXX2+6D/bhfzdDshwcbQWv9TdiNlXP9P6UJjDKWbxyA5ogJCsR2D0X9Kx11oV8E58siGKQ==
+"@cspell/dict-bash@^4.1.8":
+ version "4.1.8"
+ resolved "https://registry.yarnpkg.com/@cspell/dict-bash/-/dict-bash-4.1.8.tgz#26dc898e06eddea069cf1ad475ee0e867c89e632"
+ integrity sha512-I2CM2pTNthQwW069lKcrVxchJGMVQBzru2ygsHCwgidXRnJL/NTjAPOFTxN58Jc1bf7THWghfEDyKX/oyfc0yg==
-"@cspell/dict-companies@^3.1.4":
- version "3.1.4"
- resolved "https://registry.yarnpkg.com/@cspell/dict-companies/-/dict-companies-3.1.4.tgz#2e7094416432b8547ec335683f5aac9a49dce47e"
- integrity sha512-y9e0amzEK36EiiKx3VAA+SHQJPpf2Qv5cCt5eTUSggpTkiFkCh6gRKQ97rVlrKh5GJrqinDwYIJtTsxuh2vy2Q==
+"@cspell/dict-companies@^3.1.7":
+ version "3.1.7"
+ resolved "https://registry.yarnpkg.com/@cspell/dict-companies/-/dict-companies-3.1.7.tgz#c9abd6f5293f103062f54dde01f2bee939189f79"
+ integrity sha512-ncVs/efuAkP1/tLDhWbXukBjgZ5xOUfe03neHMWsE8zvXXc5+Lw6TX5jaJXZLOoES/f4j4AhRE20jsPCF5pm+A==
-"@cspell/dict-cpp@^5.1.16":
- version "5.1.16"
- resolved "https://registry.yarnpkg.com/@cspell/dict-cpp/-/dict-cpp-5.1.16.tgz#e6557d5b916ebff02045b60f7016749e085921b0"
- integrity sha512-32fU5RkuOM55IRcxjByiSoKbjr+C4danDfYjHaQNRWdvjzJzci3fLDGA2wTXiclkgDODxGiV8LCTUwCz+3TNWA==
+"@cspell/dict-cpp@^5.1.22":
+ version "5.1.22"
+ resolved "https://registry.yarnpkg.com/@cspell/dict-cpp/-/dict-cpp-5.1.22.tgz#ee14d2b193c0a25dc58c609979f1500cd2f6e870"
+ integrity sha512-g1/8P5/Q+xnIc8Js4UtBg3XOhcFrFlFbG3UWVtyEx49YTf0r9eyDtDt1qMMDBZT91pyCwLcAEbwS+4i5PIfNZw==
-"@cspell/dict-cryptocurrencies@^5.0.0":
- version "5.0.0"
- resolved "https://registry.yarnpkg.com/@cspell/dict-cryptocurrencies/-/dict-cryptocurrencies-5.0.0.tgz#19fbc7bdbec76ce64daf7d53a6d0f3cfff7d0038"
- integrity sha512-Z4ARIw5+bvmShL+4ZrhDzGhnc9znaAGHOEMaB/GURdS/jdoreEDY34wdN0NtdLHDO5KO7GduZnZyqGdRoiSmYA==
+"@cspell/dict-cryptocurrencies@^5.0.3":
+ version "5.0.3"
+ resolved "https://registry.yarnpkg.com/@cspell/dict-cryptocurrencies/-/dict-cryptocurrencies-5.0.3.tgz#502f9fffcb2835a3379668ddebdc487678ce6207"
+ integrity sha512-bl5q+Mk+T3xOZ12+FG37dB30GDxStza49Rmoax95n37MTLksk9wBo1ICOlPJ6PnDUSyeuv4SIVKgRKMKkJJglA==
-"@cspell/dict-csharp@^4.0.2":
- version "4.0.2"
- resolved "https://registry.yarnpkg.com/@cspell/dict-csharp/-/dict-csharp-4.0.2.tgz#e55659dbe594e744d86b1baf0f3397fe57b1e283"
- integrity sha512-1JMofhLK+4p4KairF75D3A924m5ERMgd1GvzhwK2geuYgd2ZKuGW72gvXpIV7aGf52E3Uu1kDXxxGAiZ5uVG7g==
+"@cspell/dict-csharp@^4.0.5":
+ version "4.0.5"
+ resolved "https://registry.yarnpkg.com/@cspell/dict-csharp/-/dict-csharp-4.0.5.tgz#c677c50be09ca5bb3a2cc0be15f3cd05141fd2f7"
+ integrity sha512-c/sFnNgtRwRJxtC3JHKkyOm+U3/sUrltFeNwml9VsxKBHVmvlg4tk4ar58PdpW9/zTlGUkWi2i85//DN1EsUCA==
-"@cspell/dict-css@^4.0.13":
- version "4.0.13"
- resolved "https://registry.yarnpkg.com/@cspell/dict-css/-/dict-css-4.0.13.tgz#b95310ba67694d25bcb055786dde65e091621d14"
- integrity sha512-WfOQkqlAJTo8eIQeztaH0N0P+iF5hsJVKFuhy4jmARPISy8Efcv8QXk2/IVbmjJH0/ZV7dKRdnY5JFVXuVz37g==
+"@cspell/dict-css@^4.0.16":
+ version "4.0.16"
+ resolved "https://registry.yarnpkg.com/@cspell/dict-css/-/dict-css-4.0.16.tgz#b7b87b5ea0f1157b023205bdb00070a7d231e367"
+ integrity sha512-70qu7L9z/JR6QLyJPk38fNTKitlIHnfunx0wjpWQUQ8/jGADIhMCrz6hInBjqPNdtGpYm8d1dNFyF8taEkOgrQ==
-"@cspell/dict-dart@^2.2.1":
- version "2.2.1"
- resolved "https://registry.yarnpkg.com/@cspell/dict-dart/-/dict-dart-2.2.1.tgz#d5ef7632240cb19c8892e66ba5ed1089ab8e46a3"
- integrity sha512-yriKm7QkoPx3JPSSOcw6iX9gOb2N50bOo/wqWviqPYbhpMRh9Xiv6dkUy3+ot+21GuShZazO8X6U5+Vw67XEwg==
+"@cspell/dict-dart@^2.2.4":
+ version "2.2.4"
+ resolved "https://registry.yarnpkg.com/@cspell/dict-dart/-/dict-dart-2.2.4.tgz#8b877161ccdc65cead912b742b71aa55099c1706"
+ integrity sha512-of/cVuUIZZK/+iqefGln8G3bVpfyN6ZtH+LyLkHMoR5tEj+2vtilGNk9ngwyR8L4lEqbKuzSkOxgfVjsXf5PsQ==
-"@cspell/dict-data-science@^2.0.1":
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/@cspell/dict-data-science/-/dict-data-science-2.0.1.tgz#ef8040821567786d76c6153ac3e4bc265ca65b59"
- integrity sha512-xeutkzK0eBe+LFXOFU2kJeAYO6IuFUc1g7iRLr7HeCmlC4rsdGclwGHh61KmttL3+YHQytYStxaRBdGAXWC8Lw==
+"@cspell/dict-data-science@^2.0.5":
+ version "2.0.5"
+ resolved "https://registry.yarnpkg.com/@cspell/dict-data-science/-/dict-data-science-2.0.5.tgz#816e9b394c2a423d14cdc9a5de5d6fc6141d3900"
+ integrity sha512-nNSILXmhSJox9/QoXICPQgm8q5PbiSQP4afpbkBqPi/u/b3K9MbNH5HvOOa6230gxcGdbZ9Argl2hY/U8siBlg==
-"@cspell/dict-django@^4.1.0":
- version "4.1.0"
- resolved "https://registry.yarnpkg.com/@cspell/dict-django/-/dict-django-4.1.0.tgz#2d4b765daf3c83e733ef3e06887ea34403a4de7a"
- integrity sha512-bKJ4gPyrf+1c78Z0Oc4trEB9MuhcB+Yg+uTTWsvhY6O2ncFYbB/LbEZfqhfmmuK/XJJixXfI1laF2zicyf+l0w==
+"@cspell/dict-django@^4.1.3":
+ version "4.1.3"
+ resolved "https://registry.yarnpkg.com/@cspell/dict-django/-/dict-django-4.1.3.tgz#a02a4a9ef8c9f47344f2d4a0c3964bcb62069ef5"
+ integrity sha512-yBspeL3roJlO0a1vKKNaWABURuHdHZ9b1L8d3AukX0AsBy9snSggc8xCavPmSzNfeMDXbH+1lgQiYBd3IW03fg==
-"@cspell/dict-docker@^1.1.7":
- version "1.1.7"
- resolved "https://registry.yarnpkg.com/@cspell/dict-docker/-/dict-docker-1.1.7.tgz#bcf933283fbdfef19c71a642e7e8c38baf9014f2"
- integrity sha512-XlXHAr822euV36GGsl2J1CkBIVg3fZ6879ZOg5dxTIssuhUOCiV2BuzKZmt6aIFmcdPmR14+9i9Xq+3zuxeX0A==
+"@cspell/dict-docker@^1.1.11":
+ version "1.1.11"
+ resolved "https://registry.yarnpkg.com/@cspell/dict-docker/-/dict-docker-1.1.11.tgz#6fce86eb6d86d73f77e18d3e7b9747bad3ca98de"
+ integrity sha512-s0Yhb16/R+UT1y727ekbR/itWQF3Qz275DR1ahOa66wYtPjHUXmhM3B/LT3aPaX+hD6AWmK23v57SuyfYHUjsw==
-"@cspell/dict-dotnet@^5.0.5":
- version "5.0.5"
- resolved "https://registry.yarnpkg.com/@cspell/dict-dotnet/-/dict-dotnet-5.0.5.tgz#0f614ef6fa052e7598a6fe20770a1e5bb19f0de1"
- integrity sha512-gjg0L97ee146wX47dnA698cHm85e7EOpf9mVrJD8DmEaqoo/k1oPy2g7c7LgKxK9XnqwoXxhLNnngPrwXOoEtQ==
+"@cspell/dict-dotnet@^5.0.8":
+ version "5.0.8"
+ resolved "https://registry.yarnpkg.com/@cspell/dict-dotnet/-/dict-dotnet-5.0.8.tgz#8a110ca302946025e0273a9940079483ec33a88a"
+ integrity sha512-MD8CmMgMEdJAIPl2Py3iqrx3B708MbCIXAuOeZ0Mzzb8YmLmiisY7QEYSZPg08D7xuwARycP0Ki+bb0GAkFSqg==
-"@cspell/dict-elixir@^4.0.3":
- version "4.0.3"
- resolved "https://registry.yarnpkg.com/@cspell/dict-elixir/-/dict-elixir-4.0.3.tgz#57c25843e46cf3463f97da72d9ef8e37c818296f"
- integrity sha512-g+uKLWvOp9IEZvrIvBPTr/oaO6619uH/wyqypqvwpmnmpjcfi8+/hqZH8YNKt15oviK8k4CkINIqNhyndG9d9Q==
+"@cspell/dict-elixir@^4.0.6":
+ version "4.0.6"
+ resolved "https://registry.yarnpkg.com/@cspell/dict-elixir/-/dict-elixir-4.0.6.tgz#3d8965c558d8afd190356e9a900b02c546741feb"
+ integrity sha512-TfqSTxMHZ2jhiqnXlVKM0bUADtCvwKQv2XZL/DI0rx3doG8mEMS8SGPOmiyyGkHpR/pGOq18AFH3BEm4lViHIw==
-"@cspell/dict-en-common-misspellings@^2.0.4":
- version "2.0.4"
- resolved "https://registry.yarnpkg.com/@cspell/dict-en-common-misspellings/-/dict-en-common-misspellings-2.0.4.tgz#725c5b2c83faff71fcd2183dd04a154c78eed674"
- integrity sha512-lvOiRjV/FG4pAGZL3PN2GCVHSTCE92cwhfLGGkOsQtxSmef6WCHfHwp9auafkBlX0yFQSKDfq6/TlpQbjbJBtQ==
+"@cspell/dict-en-common-misspellings@^2.0.7":
+ version "2.0.7"
+ resolved "https://registry.yarnpkg.com/@cspell/dict-en-common-misspellings/-/dict-en-common-misspellings-2.0.7.tgz#62861cc9e813c947ebd71c7a50fc720767b4b543"
+ integrity sha512-qNFo3G4wyabcwnM+hDrMYKN9vNVg/k9QkhqSlSst6pULjdvPyPs1mqz1689xO/v9t8e6sR4IKc3CgUXDMTYOpA==
"@cspell/dict-en-gb@1.1.33":
version "1.1.33"
resolved "https://registry.yarnpkg.com/@cspell/dict-en-gb/-/dict-en-gb-1.1.33.tgz#7f1fd90fc364a5cb77111b5438fc9fcf9cc6da0e"
integrity sha512-tKSSUf9BJEV+GJQAYGw5e+ouhEe2ZXE620S7BLKe3ZmpnjlNG9JqlnaBhkIMxKnNFkLY2BP/EARzw31AZnOv4g==
-"@cspell/dict-en_us@^4.3.23":
- version "4.3.23"
- resolved "https://registry.yarnpkg.com/@cspell/dict-en_us/-/dict-en_us-4.3.23.tgz#3362b75a5051405816728ea1bb5ce997582ed383"
- integrity sha512-l0SoEQBsi3zDSl3OuL4/apBkxjuj4hLIg/oy6+gZ7LWh03rKdF6VNtSZNXWAmMY+pmb1cGA3ouleTiJIglbsIg==
+"@cspell/dict-en_us@^4.3.26":
+ version "4.3.26"
+ resolved "https://registry.yarnpkg.com/@cspell/dict-en_us/-/dict-en_us-4.3.26.tgz#f0d2c9492715e85b60a78f62f03918525639aa48"
+ integrity sha512-hDbHYJsi3UgU1J++B0WLiYhWQdsmve3CH53FIaMRAdhrWOHcuw7h1dYkQXHFEP5lOjaq53KUHp/oh5su6VkIZg==
-"@cspell/dict-filetypes@^3.0.4":
- version "3.0.4"
- resolved "https://registry.yarnpkg.com/@cspell/dict-filetypes/-/dict-filetypes-3.0.4.tgz#aca71c7bb8c8805b54f382d98ded5ec75ebc1e36"
- integrity sha512-IBi8eIVdykoGgIv5wQhOURi5lmCNJq0we6DvqKoPQJHthXbgsuO1qrHSiUVydMiQl/XvcnUWTMeAlVUlUClnVg==
-
-"@cspell/dict-flutter@^1.0.0":
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/@cspell/dict-flutter/-/dict-flutter-1.0.0.tgz#9179aeb5e7544c061ffa3e5080a4c015f88efee3"
- integrity sha512-W7k1VIc4KeV8BjEBxpA3cqpzbDWjfb7oXkEb0LecBCBp5Z7kcfnjT1YVotTx/U9PGyAOBhDaEdgZACVGNQhayw==
+"@cspell/dict-filetypes@^3.0.7":
+ version "3.0.8"
+ resolved "https://registry.yarnpkg.com/@cspell/dict-filetypes/-/dict-filetypes-3.0.8.tgz#016d523ca2c34dea972ea0ca931255868348d81a"
+ integrity sha512-D3N8sm/iptzfVwsib/jvpX+K/++rM8SRpLDFUaM4jxm8EyGmSIYRbKZvdIv5BkAWmMlTWoRqlLn7Yb1b11jKJg==
-"@cspell/dict-fonts@^4.0.0":
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/@cspell/dict-fonts/-/dict-fonts-4.0.0.tgz#9bc8beb2a7b068b4fdb45cb994b36fd184316327"
- integrity sha512-t9V4GeN/m517UZn63kZPUYP3OQg5f0OBLSd3Md5CU3eH1IFogSvTzHHnz4Wqqbv8NNRiBZ3HfdY/pqREZ6br3Q==
+"@cspell/dict-flutter@^1.0.3":
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/@cspell/dict-flutter/-/dict-flutter-1.0.3.tgz#23e552209ab2238733d30ca3f2a141359756af51"
+ integrity sha512-52C9aUEU22ptpgYh6gQyIdA4MP6NPwzbEqndfgPh3Sra191/kgs7CVqXiO1qbtZa9gnYHUoVApkoxRE7mrXHfg==
-"@cspell/dict-fsharp@^1.0.1":
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/@cspell/dict-fsharp/-/dict-fsharp-1.0.1.tgz#d62c699550a39174f182f23c8c1330a795ab5f53"
- integrity sha512-23xyPcD+j+NnqOjRHgW3IU7Li912SX9wmeefcY0QxukbAxJ/vAN4rBpjSwwYZeQPAn3fxdfdNZs03fg+UM+4yQ==
+"@cspell/dict-fonts@^4.0.3":
+ version "4.0.3"
+ resolved "https://registry.yarnpkg.com/@cspell/dict-fonts/-/dict-fonts-4.0.3.tgz#abf578c10a2e7b2bd8f4374002677625288560d9"
+ integrity sha512-sPd17kV5qgYXLteuHFPn5mbp/oCHKgitNfsZLFC3W2fWEgZlhg4hK+UGig3KzrYhhvQ8wBnmZrAQm0TFKCKzsA==
-"@cspell/dict-fullstack@^3.2.0":
- version "3.2.0"
- resolved "https://registry.yarnpkg.com/@cspell/dict-fullstack/-/dict-fullstack-3.2.0.tgz#16dd2bd3f03166c8f48600ef032ae1ce184c7b8e"
- integrity sha512-sIGQwU6G3rLTo+nx0GKyirR5dQSFeTIzFTOrURw51ISf+jKG9a3OmvsVtc2OANfvEAOLOC9Wfd8WYhmsO8KRDQ==
+"@cspell/dict-fsharp@^1.0.4":
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/@cspell/dict-fsharp/-/dict-fsharp-1.0.4.tgz#19a7263a61ca89cd3ec9c17537e424907b81ef38"
+ integrity sha512-G5wk0o1qyHUNi9nVgdE1h5wl5ylq7pcBjX8vhjHcO4XBq20D5eMoXjwqMo/+szKAqzJ+WV3BgAL50akLKrT9Rw==
-"@cspell/dict-gaming-terms@^1.0.5":
- version "1.0.5"
- resolved "https://registry.yarnpkg.com/@cspell/dict-gaming-terms/-/dict-gaming-terms-1.0.5.tgz#d6ca40eb34a4c99847fd58a7354cd2c651065156"
- integrity sha512-C3riccZDD3d9caJQQs1+MPfrUrQ+0KHdlj9iUR1QD92FgTOF6UxoBpvHUUZ9YSezslcmpFQK4xQQ5FUGS7uWfw==
+"@cspell/dict-fullstack@^3.2.3":
+ version "3.2.3"
+ resolved "https://registry.yarnpkg.com/@cspell/dict-fullstack/-/dict-fullstack-3.2.3.tgz#f6fff74eff00c6759cba510168acada0619004cc"
+ integrity sha512-62PbndIyQPH11mAv0PyiyT0vbwD0AXEocPpHlCHzfb5v9SspzCCbzQ/LIBiFmyRa+q5LMW35CnSVu6OXdT+LKg==
-"@cspell/dict-git@^3.0.0":
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/@cspell/dict-git/-/dict-git-3.0.0.tgz#c275af86041a2b59a7facce37525e2af05653b95"
- integrity sha512-simGS/lIiXbEaqJu9E2VPoYW1OTC2xrwPPXNXFMa2uo/50av56qOuaxDrZ5eH1LidFXwoc8HROCHYeKoNrDLSw==
+"@cspell/dict-gaming-terms@^1.0.8":
+ version "1.0.8"
+ resolved "https://registry.yarnpkg.com/@cspell/dict-gaming-terms/-/dict-gaming-terms-1.0.8.tgz#fb8a737f61e7cf560b4de7b2aaeae952f2550398"
+ integrity sha512-7OL0zTl93WFWhhtpXFrtm9uZXItC3ncAs8d0iQDMMFVNU1rBr6raBNxJskxE5wx2Ant12fgI66ZGVagXfN+yfA==
-"@cspell/dict-golang@^6.0.12":
- version "6.0.12"
- resolved "https://registry.yarnpkg.com/@cspell/dict-golang/-/dict-golang-6.0.12.tgz#a9d4c53edfec34d06a226a9af6af0df899bd720f"
- integrity sha512-LEPeoqd+4O+vceHF73S7D7+LYfrAjOvp4Dqzh4MT30ruzlQ77yHRSuYOJtrFN1GK5ntAt/ILSVOKg9sgsz1Llg==
+"@cspell/dict-git@^3.0.3":
+ version "3.0.3"
+ resolved "https://registry.yarnpkg.com/@cspell/dict-git/-/dict-git-3.0.3.tgz#3a3805ab9902bffc9255ec48f648145b957eb30b"
+ integrity sha512-LSxB+psZ0qoj83GkyjeEH/ZViyVsGEF/A6BAo8Nqc0w0HjD2qX/QR4sfA6JHUgQ3Yi/ccxdK7xNIo67L2ScW5A==
-"@cspell/dict-google@^1.0.1":
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/@cspell/dict-google/-/dict-google-1.0.1.tgz#34701471a616011aeaaf480d4834436b6b6b1da5"
- integrity sha512-dQr4M3n95uOhtloNSgB9tYYGXGGEGEykkFyRtfcp5pFuEecYUa0BSgtlGKx9RXVtJtKgR+yFT/a5uQSlt8WjqQ==
+"@cspell/dict-golang@^6.0.16":
+ version "6.0.16"
+ resolved "https://registry.yarnpkg.com/@cspell/dict-golang/-/dict-golang-6.0.16.tgz#b247a801404f9a65e7c8674893bdb5aad42353a2"
+ integrity sha512-hZOBlgcguv2Hdc93n2zjdAQm1j3grsN9T9WhPnQ1wh2vUDoCLEujg+6gWhjcLb8ECOcwZTWgNyQLWeOxEsAj/w==
-"@cspell/dict-haskell@^4.0.1":
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/@cspell/dict-haskell/-/dict-haskell-4.0.1.tgz#e9fca7c452411ff11926e23ffed2b50bb9b95e47"
- integrity sha512-uRrl65mGrOmwT7NxspB4xKXFUenNC7IikmpRZW8Uzqbqcu7ZRCUfstuVH7T1rmjRgRkjcIjE4PC11luDou4wEQ==
+"@cspell/dict-google@^1.0.4":
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/@cspell/dict-google/-/dict-google-1.0.4.tgz#e15a7ea2dee73800231a81840a59d3b50d49346f"
+ integrity sha512-JThUT9eiguCja1mHHLwYESgxkhk17Gv7P3b1S7ZJzXw86QyVHPrbpVoMpozHk0C9o+Ym764B7gZGKmw9uMGduQ==
-"@cspell/dict-html-symbol-entities@^4.0.0":
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/@cspell/dict-html-symbol-entities/-/dict-html-symbol-entities-4.0.0.tgz#4d86ac18a4a11fdb61dfb6f5929acd768a52564f"
- integrity sha512-HGRu+48ErJjoweR5IbcixxETRewrBb0uxQBd6xFGcxbEYCX8CnQFTAmKI5xNaIt2PKaZiJH3ijodGSqbKdsxhw==
+"@cspell/dict-haskell@^4.0.4":
+ version "4.0.4"
+ resolved "https://registry.yarnpkg.com/@cspell/dict-haskell/-/dict-haskell-4.0.4.tgz#37e9cb9a7f5be337a697bcffd0a0d25e80aab50d"
+ integrity sha512-EwQsedEEnND/vY6tqRfg9y7tsnZdxNqOxLXSXTsFA6JRhUlr8Qs88iUUAfsUzWc4nNmmzQH2UbtT25ooG9x4nA==
-"@cspell/dict-html@^4.0.5":
- version "4.0.5"
- resolved "https://registry.yarnpkg.com/@cspell/dict-html/-/dict-html-4.0.5.tgz#03a5182148d80e6c25f71339dbb2b7c5b9894ef8"
- integrity sha512-p0brEnRybzSSWi8sGbuVEf7jSTDmXPx7XhQUb5bgG6b54uj+Z0Qf0V2n8b/LWwIPJNd1GygaO9l8k3HTCy1h4w==
+"@cspell/dict-html-symbol-entities@^4.0.3":
+ version "4.0.3"
+ resolved "https://registry.yarnpkg.com/@cspell/dict-html-symbol-entities/-/dict-html-symbol-entities-4.0.3.tgz#bf2887020ca4774413d8b1f27c9b6824ba89e9ef"
+ integrity sha512-aABXX7dMLNFdSE8aY844X4+hvfK7977sOWgZXo4MTGAmOzR8524fjbJPswIBK7GaD3+SgFZ2yP2o0CFvXDGF+A==
-"@cspell/dict-java@^5.0.7":
- version "5.0.7"
- resolved "https://registry.yarnpkg.com/@cspell/dict-java/-/dict-java-5.0.7.tgz#c0b32d3c208b6419a5eddd010e87196976be2694"
- integrity sha512-ejQ9iJXYIq7R09BScU2y5OUGrSqwcD+J5mHFOKbduuQ5s/Eh/duz45KOzykeMLI6KHPVxhBKpUPBWIsfewECpQ==
+"@cspell/dict-html@^4.0.9":
+ version "4.0.10"
+ resolved "https://registry.yarnpkg.com/@cspell/dict-html/-/dict-html-4.0.10.tgz#7b536b2adca4b58ed92752c9d3c7ffc724dd5991"
+ integrity sha512-I9uRAcdtHbh0wEtYZlgF0TTcgH0xaw1B54G2CW+tx4vHUwlde/+JBOfIzird4+WcMv4smZOfw+qHf7puFUbI5g==
-"@cspell/dict-julia@^1.0.1":
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/@cspell/dict-julia/-/dict-julia-1.0.1.tgz#900001417f1c4ea689530adfcc034c848458a0aa"
- integrity sha512-4JsCLCRhhLMLiaHpmR7zHFjj1qOauzDI5ZzCNQS31TUMfsOo26jAKDfo0jljFAKgw5M2fEG7sKr8IlPpQAYrmQ==
+"@cspell/dict-java@^5.0.10":
+ version "5.0.10"
+ resolved "https://registry.yarnpkg.com/@cspell/dict-java/-/dict-java-5.0.10.tgz#e6383ca645046b9f05a04a2c2e858fcc80c6fc63"
+ integrity sha512-pVNcOnmoGiNL8GSVq4WbX/Vs2FGS0Nej+1aEeGuUY9CU14X8yAVCG+oih5ZoLt1jaR8YfR8byUF8wdp4qG4XIw==
-"@cspell/dict-k8s@^1.0.6":
- version "1.0.6"
- resolved "https://registry.yarnpkg.com/@cspell/dict-k8s/-/dict-k8s-1.0.6.tgz#d46c97136f1504b65dfb6a188005d4ac81d3f461"
- integrity sha512-srhVDtwrd799uxMpsPOQqeDJY+gEocgZpoK06EFrb4GRYGhv7lXo9Fb+xQMyQytzOW9dw4DNOEck++nacDuymg==
+"@cspell/dict-julia@^1.0.4":
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/@cspell/dict-julia/-/dict-julia-1.0.4.tgz#e478c20d742cd6857b6de41dc61a92036dafb4bc"
+ integrity sha512-bFVgNX35MD3kZRbXbJVzdnN7OuEqmQXGpdOi9jzB40TSgBTlJWA4nxeAKV4CPCZxNRUGnLH0p05T/AD7Aom9/w==
-"@cspell/dict-latex@^4.0.0":
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/@cspell/dict-latex/-/dict-latex-4.0.0.tgz#85054903db834ea867174795d162e2a8f0e9c51e"
- integrity sha512-LPY4y6D5oI7D3d+5JMJHK/wxYTQa2lJMSNxps2JtuF8hbAnBQb3igoWEjEbIbRRH1XBM0X8dQqemnjQNCiAtxQ==
+"@cspell/dict-k8s@^1.0.9":
+ version "1.0.9"
+ resolved "https://registry.yarnpkg.com/@cspell/dict-k8s/-/dict-k8s-1.0.9.tgz#e9392a002797c67ffc3e96893156cc15af3774d1"
+ integrity sha512-Q7GELSQIzo+BERl2ya/nBEnZeQC+zJP19SN1pI6gqDYraM51uYJacbbcWLYYO2Y+5joDjNt/sd/lJtLaQwoSlA==
-"@cspell/dict-lorem-ipsum@^4.0.0":
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/@cspell/dict-lorem-ipsum/-/dict-lorem-ipsum-4.0.0.tgz#2793a5dbfde474a546b0caecc40c38fdf076306e"
- integrity sha512-1l3yjfNvMzZPibW8A7mQU4kTozwVZVw0AvFEdy+NcqtbxH+TvbSkNMqROOFWrkD2PjnKG0+Ea0tHI2Pi6Gchnw==
+"@cspell/dict-latex@^4.0.3":
+ version "4.0.3"
+ resolved "https://registry.yarnpkg.com/@cspell/dict-latex/-/dict-latex-4.0.3.tgz#a1254c7d9c3a2d70cd6391a9f2f7694431b1b2cb"
+ integrity sha512-2KXBt9fSpymYHxHfvhUpjUFyzrmN4c4P8mwIzweLyvqntBT3k0YGZJSriOdjfUjwSygrfEwiuPI1EMrvgrOMJw==
-"@cspell/dict-lua@^4.0.3":
+"@cspell/dict-lorem-ipsum@^4.0.3":
version "4.0.3"
- resolved "https://registry.yarnpkg.com/@cspell/dict-lua/-/dict-lua-4.0.3.tgz#2d23c8f7e74b4e62000678d80e7d1ebb10b003e0"
- integrity sha512-lDHKjsrrbqPaea13+G9s0rtXjMO06gPXPYRjRYawbNmo4E/e3XFfVzeci3OQDQNDmf2cPOwt9Ef5lu2lDmwfJg==
+ resolved "https://registry.yarnpkg.com/@cspell/dict-lorem-ipsum/-/dict-lorem-ipsum-4.0.3.tgz#c5fc631d934f1daf8b10c88b795278701a2469ec"
+ integrity sha512-WFpDi/PDYHXft6p0eCXuYnn7mzMEQLVeqpO+wHSUd+kz5ADusZ4cpslAA4wUZJstF1/1kMCQCZM6HLZic9bT8A==
-"@cspell/dict-makefile@^1.0.0":
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/@cspell/dict-makefile/-/dict-makefile-1.0.0.tgz#5afb2910873ebbc01ab8d9c38661c4c93d0e5a40"
- integrity sha512-3W9tHPcSbJa6s0bcqWo6VisEDTSN5zOtDbnPabF7rbyjRpNo0uHXHRJQF8gAbFzoTzBBhgkTmrfSiuyQm7vBUQ==
+"@cspell/dict-lua@^4.0.6":
+ version "4.0.6"
+ resolved "https://registry.yarnpkg.com/@cspell/dict-lua/-/dict-lua-4.0.6.tgz#7de412bfaead794445e26d566aec222e20ad69ba"
+ integrity sha512-Jwvh1jmAd9b+SP9e1GkS2ACbqKKRo9E1f9GdjF/ijmooZuHU0hPyqvnhZzUAxO1egbnNjxS/J2T6iUtjAUK2KQ==
-"@cspell/dict-monkeyc@^1.0.6":
- version "1.0.6"
- resolved "https://registry.yarnpkg.com/@cspell/dict-monkeyc/-/dict-monkeyc-1.0.6.tgz#042d042fc34a20194c8de032130808f44b241375"
- integrity sha512-oO8ZDu/FtZ55aq9Mb67HtaCnsLn59xvhO/t2mLLTHAp667hJFxpp7bCtr2zOrR1NELzFXmKln/2lw/PvxMSvrA==
+"@cspell/dict-makefile@^1.0.3":
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/@cspell/dict-makefile/-/dict-makefile-1.0.3.tgz#08d3349bf7cbd8f5dacf8641f3d35092ca0b8b38"
+ integrity sha512-R3U0DSpvTs6qdqfyBATnePj9Q/pypkje0Nj26mQJ8TOBQutCRAJbr2ZFAeDjgRx5EAJU/+8txiyVF97fbVRViw==
-"@cspell/dict-node@^5.0.1":
- version "5.0.1"
- resolved "https://registry.yarnpkg.com/@cspell/dict-node/-/dict-node-5.0.1.tgz#77e17c576a897a3391fce01c1cc5da60bb4c2268"
- integrity sha512-lax/jGz9h3Dv83v8LHa5G0bf6wm8YVRMzbjJPG/9rp7cAGPtdrga+XANFq+B7bY5+jiSA3zvj10LUFCFjnnCCg==
+"@cspell/dict-monkeyc@^1.0.9":
+ version "1.0.9"
+ resolved "https://registry.yarnpkg.com/@cspell/dict-monkeyc/-/dict-monkeyc-1.0.9.tgz#58b5f6f15fc7c11ce0eeffd0742fba4b39fc0b8b"
+ integrity sha512-Jvf6g5xlB4+za3ThvenYKREXTEgzx5gMUSzrAxIiPleVG4hmRb/GBSoSjtkGaibN3XxGx5x809gSTYCA/IHCpA==
-"@cspell/dict-npm@^5.1.4":
- version "5.1.5"
- resolved "https://registry.yarnpkg.com/@cspell/dict-npm/-/dict-npm-5.1.5.tgz#f3a7317988052494f776a6b60e3bffb3f063a006"
- integrity sha512-oAOGWuJYU3DlO+cAsStKMWN8YEkBue25cRC9EwdiL5Z84nchU20UIoYrLfIQejMlZca+1GyrNeyxRAgn4KiivA==
+"@cspell/dict-node@^5.0.4":
+ version "5.0.4"
+ resolved "https://registry.yarnpkg.com/@cspell/dict-node/-/dict-node-5.0.4.tgz#dfe1f159a1ffb1c4f389ec43b15f705123113658"
+ integrity sha512-Hz5hiuOvZTd7Cp1IBqUZ7/ChwJeQpD5BJuwCaDn4mPNq4iMcQ1iWBYMThvNVqCEDgKv63X52nT8RAWacss98qg==
-"@cspell/dict-php@^4.0.10":
- version "4.0.10"
- resolved "https://registry.yarnpkg.com/@cspell/dict-php/-/dict-php-4.0.10.tgz#e2ad4d3e30ec009824d9663a795f6281ae39caaf"
- integrity sha512-NfTZdp6kcZDF1PvgQ6cY0zE4FUO5rSwNmBH/iwCBuaLfJAFQ97rgjxo+D2bic4CFwNjyHutnHPtjJBRANO5XQw==
+"@cspell/dict-npm@^5.1.8":
+ version "5.1.8"
+ resolved "https://registry.yarnpkg.com/@cspell/dict-npm/-/dict-npm-5.1.8.tgz#d179e555d351aecd4c7e5a87756f3b1192701ee8"
+ integrity sha512-AJELYXeB4fQdIoNfmuaQxB1Hli3cX6XPsQCjfBxlu0QYXhrjB/IrCLLQAjWIywDqJiWyGUFTz4DqaANm8C/r9Q==
-"@cspell/dict-powershell@^5.0.8":
- version "5.0.8"
- resolved "https://registry.yarnpkg.com/@cspell/dict-powershell/-/dict-powershell-5.0.8.tgz#185c454c633e72ebd708328f2cf6dbbc5028ae0a"
- integrity sha512-Eg64BccQp5oEJ+V/O2G27KaLWmuOL2AWMOs2470adUihOleRfW8j9XwAEGCS+JKSnDb2mksWA72Z6kDqH138IQ==
+"@cspell/dict-php@^4.0.13":
+ version "4.0.13"
+ resolved "https://registry.yarnpkg.com/@cspell/dict-php/-/dict-php-4.0.13.tgz#86f1e6fb2174b2b0fa012baf86c448b2730f04f9"
+ integrity sha512-P6sREMZkhElzz/HhXAjahnICYIqB/HSGp1EhZh+Y6IhvC15AzgtDP8B8VYCIsQof6rPF1SQrFwunxOv8H1e2eg==
-"@cspell/dict-public-licenses@^2.0.8":
- version "2.0.8"
- resolved "https://registry.yarnpkg.com/@cspell/dict-public-licenses/-/dict-public-licenses-2.0.8.tgz#ed8c3b5b22f28129cf3517821740599f05733b68"
- integrity sha512-Sup+tFS7cDV0fgpoKtUqEZ6+fA/H+XUgBiqQ/Fbs6vUE3WCjJHOIVsP+udHuyMH7iBfJ4UFYOYeORcY4EaKdMg==
+"@cspell/dict-powershell@^5.0.13":
+ version "5.0.13"
+ resolved "https://registry.yarnpkg.com/@cspell/dict-powershell/-/dict-powershell-5.0.13.tgz#f557aa04ee9bda4fe091308a0bcaea09ed12fa76"
+ integrity sha512-0qdj0XZIPmb77nRTynKidRJKTU0Fl+10jyLbAhFTuBWKMypVY06EaYFnwhsgsws/7nNX8MTEQuewbl9bWFAbsg==
+
+"@cspell/dict-public-licenses@^2.0.11":
+ version "2.0.11"
+ resolved "https://registry.yarnpkg.com/@cspell/dict-public-licenses/-/dict-public-licenses-2.0.11.tgz#37550c4e0cd445991caba528bf4ba58ce7a935c3"
+ integrity sha512-rR5KjRUSnVKdfs5G+gJ4oIvQvm8+NJ6cHWY2N+GE69/FSGWDOPHxulCzeGnQU/c6WWZMSimG9o49i9r//lUQyA==
-"@cspell/dict-python@^4.2.6":
- version "4.2.6"
- resolved "https://registry.yarnpkg.com/@cspell/dict-python/-/dict-python-4.2.6.tgz#fce9950d59c6707442af04701d4ed7c7be333901"
- integrity sha512-Hkz399qDGEbfXi9GYa2hDl7GahglI86JmS2F1KP8sfjLXofUgtnknyC5NWc86nzHcP38pZiPqPbTigyDYw5y8A==
+"@cspell/dict-python@^4.2.12":
+ version "4.2.12"
+ resolved "https://registry.yarnpkg.com/@cspell/dict-python/-/dict-python-4.2.12.tgz#ea6298bb72a6bcf2c188d5c55142e0afab8a6c1c"
+ integrity sha512-U25eOFu+RE0aEcF2AsxZmq3Lic7y9zspJ9SzjrC0mfJz+yr3YmSCw4E0blMD3mZoNcf7H/vMshuKIY5AY36U+Q==
dependencies:
- "@cspell/dict-data-science" "^2.0.1"
+ "@cspell/dict-data-science" "^2.0.5"
-"@cspell/dict-r@^2.0.1":
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/@cspell/dict-r/-/dict-r-2.0.1.tgz#73474fb7cce45deb9094ebf61083fbf5913f440a"
- integrity sha512-KCmKaeYMLm2Ip79mlYPc8p+B2uzwBp4KMkzeLd5E6jUlCL93Y5Nvq68wV5fRLDRTf7N1LvofkVFWfDcednFOgA==
+"@cspell/dict-r@^2.0.4":
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/@cspell/dict-r/-/dict-r-2.0.4.tgz#31b5abd91cc12aebfffdde4be4d2902668789311"
+ integrity sha512-cBpRsE/U0d9BRhiNRMLMH1PpWgw+N+1A2jumgt1if9nBGmQw4MUpg2u9I0xlFVhstTIdzXiLXMxP45cABuiUeQ==
-"@cspell/dict-ruby@^5.0.3":
- version "5.0.3"
- resolved "https://registry.yarnpkg.com/@cspell/dict-ruby/-/dict-ruby-5.0.3.tgz#614e9a3d4dcd720e750c037b9dfb6001da8b25e0"
- integrity sha512-V1xzv9hN6u8r6SM4CkYdsxs4ov8gjXXo0Twfx5kWhLXbEVxTXDMt7ohLTqpy2XlF5mutixZdbHMeFiAww8v+Ug==
+"@cspell/dict-ruby@^5.0.7":
+ version "5.0.7"
+ resolved "https://registry.yarnpkg.com/@cspell/dict-ruby/-/dict-ruby-5.0.7.tgz#3593a955baaffe3c5d28fb178b72fdf93c7eec71"
+ integrity sha512-4/d0hcoPzi5Alk0FmcyqlzFW9lQnZh9j07MJzPcyVO62nYJJAGKaPZL2o4qHeCS/od/ctJC5AHRdoUm0ktsw6Q==
-"@cspell/dict-rust@^4.0.5":
- version "4.0.5"
- resolved "https://registry.yarnpkg.com/@cspell/dict-rust/-/dict-rust-4.0.5.tgz#41f3e26fdd3d121c3a24c122d4a703abbb48c4c3"
- integrity sha512-DIvlPRDemjKQy8rCqftAgGNZxY5Bg+Ps7qAIJjxkSjmMETyDgl0KTVuaJPt7EK4jJt6uCZ4ILy96npsHDPwoXA==
+"@cspell/dict-rust@^4.0.9":
+ version "4.0.9"
+ resolved "https://registry.yarnpkg.com/@cspell/dict-rust/-/dict-rust-4.0.9.tgz#8af5e405f3280afffe41f212da3ae0e777243842"
+ integrity sha512-Dhr6TIZsMV92xcikKIWei6p/qswS4M+gTkivpWwz4/1oaVk2nRrxJmCdRoVkJlZkkAc17rjxrS12mpnJZI0iWw==
-"@cspell/dict-scala@^5.0.3":
- version "5.0.3"
- resolved "https://registry.yarnpkg.com/@cspell/dict-scala/-/dict-scala-5.0.3.tgz#85a469b2d139766b6307befc89243928e3d82b39"
- integrity sha512-4yGb4AInT99rqprxVNT9TYb1YSpq58Owzq7zi3ZS5T0u899Y4VsxsBiOgHnQ/4W+ygi+sp+oqef8w8nABR2lkg==
+"@cspell/dict-scala@^5.0.6":
+ version "5.0.6"
+ resolved "https://registry.yarnpkg.com/@cspell/dict-scala/-/dict-scala-5.0.6.tgz#5e925def2fe6dc27ee2ad1c452941c3d6790fb6d"
+ integrity sha512-tl0YWAfjUVb4LyyE4JIMVE8DlLzb1ecHRmIWc4eT6nkyDqQgHKzdHsnusxFEFMVLIQomgSg0Zz6hJ5S1E4W4ww==
-"@cspell/dict-software-terms@^4.1.3":
- version "4.1.4"
- resolved "https://registry.yarnpkg.com/@cspell/dict-software-terms/-/dict-software-terms-4.1.4.tgz#9b0da3e0674230d757e82ef67171db0764e17a16"
- integrity sha512-AHS25sYEzWze/aFglp9ODKSu+phjkuGx+OLwIcmOnvyn8axtSq5GCn9UqS4XG1/Qn0UG2Lgb4i5PJbZ0QNPNXQ==
+"@cspell/dict-software-terms@^4.1.11":
+ version "4.1.11"
+ resolved "https://registry.yarnpkg.com/@cspell/dict-software-terms/-/dict-software-terms-4.1.11.tgz#54e1cfcda53f308135215f7163797d7ed8f69ee4"
+ integrity sha512-77CTHxWFTVw6tVoMN8WBMrlNW2F2FbgATwD/6vcOuiyrJUmh8klN5ZK3m+yyK3ZzsnaW2Bduoc0fw2Ckcm/riQ==
-"@cspell/dict-sql@^2.1.5":
- version "2.1.5"
- resolved "https://registry.yarnpkg.com/@cspell/dict-sql/-/dict-sql-2.1.5.tgz#068c7a8840d75418fd46a0b062c0ed2d5742f2b8"
- integrity sha512-FmxanytHXss7GAWAXmgaxl3icTCW7YxlimyOSPNfm+njqeUDjw3kEv4mFNDDObBJv8Ec5AWCbUDkWIpkE3IpKg==
+"@cspell/dict-sql@^2.1.8":
+ version "2.1.8"
+ resolved "https://registry.yarnpkg.com/@cspell/dict-sql/-/dict-sql-2.1.8.tgz#45ea53b3e57fd2cc5f839f49b644aa743dac4990"
+ integrity sha512-dJRE4JV1qmXTbbGm6WIcg1knmR6K5RXnQxF4XHs5HA3LAjc/zf77F95i5LC+guOGppVF6Hdl66S2UyxT+SAF3A==
-"@cspell/dict-svelte@^1.0.2":
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/@cspell/dict-svelte/-/dict-svelte-1.0.2.tgz#0c866b08a7a6b33bbc1a3bdbe6a1b484ca15cdaa"
- integrity sha512-rPJmnn/GsDs0btNvrRBciOhngKV98yZ9SHmg8qI6HLS8hZKvcXc0LMsf9LLuMK1TmS2+WQFAan6qeqg6bBxL2Q==
+"@cspell/dict-svelte@^1.0.5":
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/@cspell/dict-svelte/-/dict-svelte-1.0.5.tgz#09752e01ff6667e737566d9dfc704c8dcc9a6492"
+ integrity sha512-sseHlcXOqWE4Ner9sg8KsjxwSJ2yssoJNqFHR9liWVbDV+m7kBiUtn2EB690TihzVsEmDr/0Yxrbb5Bniz70mA==
-"@cspell/dict-swift@^2.0.1":
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/@cspell/dict-swift/-/dict-swift-2.0.1.tgz#06ec86e52e9630c441d3c19605657457e33d7bb6"
- integrity sha512-gxrCMUOndOk7xZFmXNtkCEeroZRnS2VbeaIPiymGRHj5H+qfTAzAKxtv7jJbVA3YYvEzWcVE2oKDP4wcbhIERw==
+"@cspell/dict-swift@^2.0.4":
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/@cspell/dict-swift/-/dict-swift-2.0.4.tgz#bc19522418ed68cf914736b612c4e4febbf07e8d"
+ integrity sha512-CsFF0IFAbRtYNg0yZcdaYbADF5F3DsM8C4wHnZefQy8YcHP/qjAF/GdGfBFBLx+XSthYuBlo2b2XQVdz3cJZBw==
-"@cspell/dict-terraform@^1.0.1":
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/@cspell/dict-terraform/-/dict-terraform-1.0.1.tgz#81648af2e7f19e8b3188be5e7b1a2d2b6627f58b"
- integrity sha512-29lmUUnZgPh+ieZ5hunick8hzNIpNRtiJh9vAusNskPCrig3RTW6u7F+GG1a8uyslbzSw+Irjf40PTOan1OJJA==
+"@cspell/dict-terraform@^1.0.5":
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/@cspell/dict-terraform/-/dict-terraform-1.0.5.tgz#14c427ae47d2f78b4acd6fe9ed12bcae53aec441"
+ integrity sha512-qH3epPB2d6d5w1l4hR2OsnN8qDQ4P0z6oDB7+YiNH+BoECXv4Z38MIV1H8cxIzD2wkzkt2JTcFYaVW72MDZAlg==
-"@cspell/dict-typescript@^3.1.6":
- version "3.1.6"
- resolved "https://registry.yarnpkg.com/@cspell/dict-typescript/-/dict-typescript-3.1.6.tgz#2d5351786787bf3609da65ba17d9bc345995a36d"
- integrity sha512-1beC6O4P/j23VuxX+i0+F7XqPVc3hhiAzGJHEKqnWf5cWAXQtg0xz3xQJ5MvYx2a7iLaSa+lu7+05vG9UHyu9Q==
+"@cspell/dict-typescript@^3.1.10":
+ version "3.1.11"
+ resolved "https://registry.yarnpkg.com/@cspell/dict-typescript/-/dict-typescript-3.1.11.tgz#40586f13b0337bd9cba958e0661b35888580b249"
+ integrity sha512-FwvK5sKbwrVpdw0e9+1lVTl8FPoHYvfHRuQRQz2Ql5XkC0gwPPkpoyD1zYImjIyZRoYXk3yp9j8ss4iz7A7zoQ==
-"@cspell/dict-vue@^3.0.0":
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/@cspell/dict-vue/-/dict-vue-3.0.0.tgz#68ccb432ad93fcb0fd665352d075ae9a64ea9250"
- integrity sha512-niiEMPWPV9IeRBRzZ0TBZmNnkK3olkOPYxC1Ny2AX4TGlYRajcW0WUtoSHmvvjZNfWLSg2L6ruiBeuPSbjnG6A==
+"@cspell/dict-vue@^3.0.3":
+ version "3.0.3"
+ resolved "https://registry.yarnpkg.com/@cspell/dict-vue/-/dict-vue-3.0.3.tgz#295c288f6fd363879898223202ec3be048663b98"
+ integrity sha512-akmYbrgAGumqk1xXALtDJcEcOMYBYMnkjpmGzH13Ozhq1mkPF4VgllFQlm1xYde+BUKNnzMgPEzxrL2qZllgYA==
-"@cspell/dynamic-import@8.14.4":
- version "8.14.4"
- resolved "https://registry.yarnpkg.com/@cspell/dynamic-import/-/dynamic-import-8.14.4.tgz#c3a8a9f5a8c6d6f8ccd2612a367bcc870dd07244"
- integrity sha512-GjKsBJvPXp4dYRqsMn7n1zpnKbnpfJnlKLOVeoFBh8fi4n06G50xYr+G25CWX1WT3WFaALAavvVICEUPrVsuqg==
+"@cspell/dynamic-import@8.15.4":
+ version "8.15.4"
+ resolved "https://registry.yarnpkg.com/@cspell/dynamic-import/-/dynamic-import-8.15.4.tgz#6aee2c81a3a45d3ec6c3f225fbe24557d46e0f85"
+ integrity sha512-tr0F6EYN6qtniNvt1Uib+PgYQHeo4dQHXE2Optap+hYTOoQ2VoQ+SwBVjZ+Q2bmSAB0fmOyf0AvgsUtnWIpavw==
dependencies:
import-meta-resolve "^4.1.0"
-"@cspell/filetypes@8.14.4":
- version "8.14.4"
- resolved "https://registry.yarnpkg.com/@cspell/filetypes/-/filetypes-8.14.4.tgz#2f8b705d5b7df68817702899f9a94282ac4eef40"
- integrity sha512-qd68dD7xTA4Mnf/wjIKYz2SkiTBshIM+yszOUtLa06YJm0aocoNQ25FHXyYEQYm9NQXCYnRWWA02sFMGs8Sv/w==
+"@cspell/filetypes@8.15.4":
+ version "8.15.4"
+ resolved "https://registry.yarnpkg.com/@cspell/filetypes/-/filetypes-8.15.4.tgz#cdc64f21f5b1b824490aa003d53b9a07703c5818"
+ integrity sha512-sNl6jr3ym/4151EY76qlI/00HHsiLZBqW7Vb1tqCzsgSg3EpL30ddjr74So6Sg2PN26Yf09hvxGTJzXn1R4aYw==
-"@cspell/strong-weak-map@8.14.4":
- version "8.14.4"
- resolved "https://registry.yarnpkg.com/@cspell/strong-weak-map/-/strong-weak-map-8.14.4.tgz#31a34bc7963d2c18d6cda391b2ddda58b9cb3061"
- integrity sha512-Uyfck64TfVU24wAP3BLGQ5EsAfzIZiLfN90NhttpEM7GlOBmbGrEJd4hNOwfpYsE/TT80eGWQVPRTLr5SDbXFA==
+"@cspell/strong-weak-map@8.15.4":
+ version "8.15.4"
+ resolved "https://registry.yarnpkg.com/@cspell/strong-weak-map/-/strong-weak-map-8.15.4.tgz#0e5419862e0a8634e2db20a9e660b827321a6436"
+ integrity sha512-m5DeQksbhJFqcSYF8Q0Af/WXmXCMAJocCUShkzOXK+uZNXnvhBZN7VyQ9hL+GRzX8JTPEPdVcz2lFyVE5p+LzQ==
-"@cspell/url@8.14.4":
- version "8.14.4"
- resolved "https://registry.yarnpkg.com/@cspell/url/-/url-8.14.4.tgz#46c17d7da0f04fe032ece932ed8137852062341c"
- integrity sha512-htHhNF8WrM/NfaLSWuTYw0NqVgFRVHYSyHlRT3i/Yv5xvErld8Gw7C6ldm+0TLjoGlUe6X1VV72JSir7+yLp/Q==
+"@cspell/url@8.15.4":
+ version "8.15.4"
+ resolved "https://registry.yarnpkg.com/@cspell/url/-/url-8.15.4.tgz#759a9832e9fd6f9fd022c4eb3031c1b28c272faa"
+ integrity sha512-K2oZu/oLQPs5suRpLS8uu04O3YMUioSlEU1D66fRoOxzI5NzLt7i7yMg3HQHjChGa09N5bzqmrVdhmQrRZXwGg==
-"@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0":
+"@eslint-community/eslint-utils@^4.2.0":
version "4.4.0"
resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz#a23514e8fb9af1269d5f7788aa556798d61c6b59"
integrity sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==
dependencies:
eslint-visitor-keys "^3.3.0"
-"@eslint-community/regexpp@^4.5.1", "@eslint-community/regexpp@^4.6.1":
- version "4.6.2"
- resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.6.2.tgz#1816b5f6948029c5eaacb0703b850ee0cb37d8f8"
- integrity sha512-pPTNuaAG3QMH+buKyBIGJs3g/S5y0caxw0ygM3YyE6yJFySwiGGSzA+mM3KJ8QQvzeLh3blwgSonkFjgQdxzMw==
+"@eslint-community/eslint-utils@^4.4.0":
+ version "4.4.1"
+ resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.1.tgz#d1145bf2c20132d6400495d6df4bf59362fd9d56"
+ integrity sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==
+ dependencies:
+ eslint-visitor-keys "^3.4.3"
-"@eslint/eslintrc@^2.1.1":
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.1.1.tgz#18d635e24ad35f7276e8a49d135c7d3ca6a46f93"
- integrity sha512-9t7ZA7NGGK8ckelF0PQCfcxIUzs1Md5rrO6U/c+FIQNanea5UZC0wqKXH4vHBccmu4ZJgZ2idtPeW7+Q2npOEA==
+"@eslint-community/regexpp@^4.10.0":
+ version "4.12.1"
+ resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.12.1.tgz#cfc6cffe39df390a3841cde2abccf92eaa7ae0e0"
+ integrity sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==
+
+"@eslint-community/regexpp@^4.6.1":
+ version "4.11.1"
+ resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.11.1.tgz#a547badfc719eb3e5f4b556325e542fbe9d7a18f"
+ integrity sha512-m4DVN9ZqskZoLU5GlWZadwDnYo3vAEydiUayB9widCl9ffWx2IvPnp6n3on5rJmziJSw9Bv+Z3ChDVdMwXCY8Q==
+
+"@eslint/eslintrc@^2.1.4":
+ version "2.1.4"
+ resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.1.4.tgz#388a269f0f25c1b6adc317b5a2c55714894c70ad"
+ integrity sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==
dependencies:
ajv "^6.12.4"
debug "^4.3.2"
@@ -506,139 +489,26 @@
minimatch "^3.1.2"
strip-json-comments "^3.1.1"
-"@eslint/js@^8.46.0":
- version "8.46.0"
- resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.46.0.tgz#3f7802972e8b6fe3f88ed1aabc74ec596c456db6"
- integrity sha512-a8TLtmPi8xzPkCbp/OGFUo5yhRkHM2Ko9kOWP4znJr0WAhWyThaw3PnwX4vOTWOAMsV2uRt32PPDcEz63esSaA==
-
-"@ethereum-waffle/chai@4.0.10":
- version "4.0.10"
- resolved "https://registry.yarnpkg.com/@ethereum-waffle/chai/-/chai-4.0.10.tgz#6f600a40b6fdaed331eba42b8625ff23f3a0e59a"
- integrity sha512-X5RepE7Dn8KQLFO7HHAAe+KeGaX/by14hn90wePGBhzL54tq4Y8JscZFu+/LCwCl6TnkAAy5ebiMoqJ37sFtWw==
- dependencies:
- "@ethereum-waffle/provider" "4.0.5"
- debug "^4.3.4"
- json-bigint "^1.0.0"
-
-"@ethereum-waffle/compiler@4.0.3":
- version "4.0.3"
- resolved "https://registry.yarnpkg.com/@ethereum-waffle/compiler/-/compiler-4.0.3.tgz#069e2df24b879b8a7b78857bad6f8bf6ebc8a5b1"
- integrity sha512-5x5U52tSvEVJS6dpCeXXKvRKyf8GICDwiTwUvGD3/WD+DpvgvaoHOL82XqpTSUHgV3bBq6ma5/8gKUJUIAnJCw==
- dependencies:
- "@resolver-engine/imports" "^0.3.3"
- "@resolver-engine/imports-fs" "^0.3.3"
- "@typechain/ethers-v5" "^10.0.0"
- "@types/mkdirp" "^0.5.2"
- "@types/node-fetch" "^2.6.1"
- mkdirp "^0.5.1"
- node-fetch "^2.6.7"
-
-"@ethereum-waffle/ens@4.0.3":
- version "4.0.3"
- resolved "https://registry.yarnpkg.com/@ethereum-waffle/ens/-/ens-4.0.3.tgz#4a46ac926414f3c83b4e8cc2562c8e2aee06377a"
- integrity sha512-PVLcdnTbaTfCrfSOrvtlA9Fih73EeDvFS28JQnT5M5P4JMplqmchhcZB1yg/fCtx4cvgHlZXa0+rOCAk2Jk0Jw==
-
-"@ethereum-waffle/mock-contract@4.0.4":
- version "4.0.4"
- resolved "https://registry.yarnpkg.com/@ethereum-waffle/mock-contract/-/mock-contract-4.0.4.tgz#f13fea29922d87a4d2e7c4fc8fe72ea04d2c13de"
- integrity sha512-LwEj5SIuEe9/gnrXgtqIkWbk2g15imM/qcJcxpLyAkOj981tQxXmtV4XmQMZsdedEsZ/D/rbUAOtZbgwqgUwQA==
-
-"@ethereum-waffle/provider@4.0.5":
- version "4.0.5"
- resolved "https://registry.yarnpkg.com/@ethereum-waffle/provider/-/provider-4.0.5.tgz#8a65dbf0263f4162c9209608205dee1c960e716b"
- integrity sha512-40uzfyzcrPh+Gbdzv89JJTMBlZwzya1YLDyim8mVbEqYLP5VRYWoGp0JMyaizgV3hMoUFRqJKVmIUw4v7r3hYw==
- dependencies:
- "@ethereum-waffle/ens" "4.0.3"
- "@ganache/ethereum-options" "0.1.4"
- debug "^4.3.4"
- ganache "7.4.3"
-
-"@ethereumjs/block@^3.5.0", "@ethereumjs/block@^3.6.0", "@ethereumjs/block@^3.6.2":
- version "3.6.3"
- resolved "https://registry.yarnpkg.com/@ethereumjs/block/-/block-3.6.3.tgz#d96cbd7af38b92ebb3424223dbf773f5ccd27f84"
- integrity sha512-CegDeryc2DVKnDkg5COQrE0bJfw/p0v3GBk2W5/Dj5dOVfEmb50Ux0GLnSPypooLnfqjwFaorGuT9FokWB3GRg==
- dependencies:
- "@ethereumjs/common" "^2.6.5"
- "@ethereumjs/tx" "^3.5.2"
- ethereumjs-util "^7.1.5"
- merkle-patricia-tree "^4.2.4"
-
-"@ethereumjs/blockchain@^5.5.0":
- version "5.5.3"
- resolved "https://registry.yarnpkg.com/@ethereumjs/blockchain/-/blockchain-5.5.3.tgz#aa49a6a04789da6b66b5bcbb0d0b98efc369f640"
- integrity sha512-bi0wuNJ1gw4ByNCV56H0Z4Q7D+SxUbwyG12Wxzbvqc89PXLRNR20LBcSUZRKpN0+YCPo6m0XZL/JLio3B52LTw==
- dependencies:
- "@ethereumjs/block" "^3.6.2"
- "@ethereumjs/common" "^2.6.4"
- "@ethereumjs/ethash" "^1.1.0"
- debug "^4.3.3"
- ethereumjs-util "^7.1.5"
- level-mem "^5.0.1"
- lru-cache "^5.1.1"
- semaphore-async-await "^1.5.1"
-
-"@ethereumjs/common@2.6.0":
- version "2.6.0"
- resolved "https://registry.yarnpkg.com/@ethereumjs/common/-/common-2.6.0.tgz#feb96fb154da41ee2cc2c5df667621a440f36348"
- integrity sha512-Cq2qS0FTu6O2VU1sgg+WyU9Ps0M6j/BEMHN+hRaECXCV/r0aI78u4N6p52QW/BDVhwWZpCdrvG8X7NJdzlpNUA==
- dependencies:
- crc-32 "^1.2.0"
- ethereumjs-util "^7.1.3"
-
-"@ethereumjs/common@^2.6.0", "@ethereumjs/common@^2.6.4", "@ethereumjs/common@^2.6.5":
- version "2.6.5"
- resolved "https://registry.yarnpkg.com/@ethereumjs/common/-/common-2.6.5.tgz#0a75a22a046272579d91919cb12d84f2756e8d30"
- integrity sha512-lRyVQOeCDaIVtgfbowla32pzeDv2Obr8oR8Put5RdUBNRGr1VGPGQNGP6elWIpgK3YdpzqTOh4GyUGOureVeeA==
- dependencies:
- crc-32 "^1.2.0"
- ethereumjs-util "^7.1.5"
-
-"@ethereumjs/ethash@^1.1.0":
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/@ethereumjs/ethash/-/ethash-1.1.0.tgz#7c5918ffcaa9cb9c1dc7d12f77ef038c11fb83fb"
- integrity sha512-/U7UOKW6BzpA+Vt+kISAoeDie1vAvY4Zy2KF5JJb+So7+1yKmJeJEHOGSnQIj330e9Zyl3L5Nae6VZyh2TJnAA==
- dependencies:
- "@ethereumjs/block" "^3.5.0"
- "@types/levelup" "^4.3.0"
- buffer-xor "^2.0.1"
- ethereumjs-util "^7.1.1"
- miller-rabin "^4.0.0"
+"@eslint/js@8.57.1":
+ version "8.57.1"
+ resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.57.1.tgz#de633db3ec2ef6a3c89e2f19038063e8a122e2c2"
+ integrity sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==
-"@ethereumjs/tx@3.4.0":
- version "3.4.0"
- resolved "https://registry.yarnpkg.com/@ethereumjs/tx/-/tx-3.4.0.tgz#7eb1947eefa55eb9cf05b3ca116fb7a3dbd0bce7"
- integrity sha512-WWUwg1PdjHKZZxPPo274ZuPsJCWV3SqATrEKQP1n2DrVYVP1aZIYpo/mFaA0BDoE0tIQmBeimRCEA0Lgil+yYw==
- dependencies:
- "@ethereumjs/common" "^2.6.0"
- ethereumjs-util "^7.1.3"
+"@ethereumjs/rlp@^4.0.1":
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/@ethereumjs/rlp/-/rlp-4.0.1.tgz#626fabfd9081baab3d0a3074b0c7ecaf674aaa41"
+ integrity sha512-tqsQiBQDQdmPWE1xkkBq4rlSW5QZpLOUJ5RJh2/9fug+q9tnUhuZoVLk7s0scUIKTOzEtR72DFBXI4WiZcMpvw==
-"@ethereumjs/tx@^3.4.0", "@ethereumjs/tx@^3.5.2":
- version "3.5.2"
- resolved "https://registry.yarnpkg.com/@ethereumjs/tx/-/tx-3.5.2.tgz#197b9b6299582ad84f9527ca961466fce2296c1c"
- integrity sha512-gQDNJWKrSDGu2w7w0PzVXVBNMzb7wwdDOmOqczmhNjqFxFuIbhVJDwiGEnxFNC2/b8ifcZzY7MLcluizohRzNw==
+"@ethereumjs/util@^8.1.0":
+ version "8.1.0"
+ resolved "https://registry.yarnpkg.com/@ethereumjs/util/-/util-8.1.0.tgz#299df97fb6b034e0577ce9f94c7d9d1004409ed4"
+ integrity sha512-zQ0IqbdX8FZ9aw11vP+dZkKDkS+kgIvQPHnSAXzP9pLu+Rfu3D3XEeLbicvoXJTYnhZiPmsZUxgdzXwNKxRPbA==
dependencies:
- "@ethereumjs/common" "^2.6.4"
- ethereumjs-util "^7.1.5"
+ "@ethereumjs/rlp" "^4.0.1"
+ ethereum-cryptography "^2.0.0"
+ micro-ftch "^0.3.1"
-"@ethereumjs/vm@5.6.0":
- version "5.6.0"
- resolved "https://registry.yarnpkg.com/@ethereumjs/vm/-/vm-5.6.0.tgz#e0ca62af07de820143674c30b776b86c1983a464"
- integrity sha512-J2m/OgjjiGdWF2P9bj/4LnZQ1zRoZhY8mRNVw/N3tXliGI8ai1sI1mlDPkLpeUUM4vq54gH6n0ZlSpz8U/qlYQ==
- dependencies:
- "@ethereumjs/block" "^3.6.0"
- "@ethereumjs/blockchain" "^5.5.0"
- "@ethereumjs/common" "^2.6.0"
- "@ethereumjs/tx" "^3.4.0"
- async-eventemitter "^0.2.4"
- core-js-pure "^3.0.1"
- debug "^2.2.0"
- ethereumjs-util "^7.1.3"
- functional-red-black-tree "^1.0.1"
- mcl-wasm "^0.7.1"
- merkle-patricia-tree "^4.2.2"
- rustbn.js "~0.2.0"
-
-"@ethersproject/abi@5.7.0", "@ethersproject/abi@^5.0.9", "@ethersproject/abi@^5.6.3", "@ethersproject/abi@^5.7.0":
+"@ethersproject/abi@^5.0.9", "@ethersproject/abi@^5.1.2":
version "5.7.0"
resolved "https://registry.yarnpkg.com/@ethersproject/abi/-/abi-5.7.0.tgz#b3f3e045bbbeed1af3947335c247ad625a44e449"
integrity sha512-351ktp42TiRcYB3H1OP8yajPeAQstMW/yCFokj/AthP9bLHzQFPlOrxOcwYEDkUAICmOHljvN4K39OMTMUa9RA==
@@ -653,22 +523,7 @@
"@ethersproject/properties" "^5.7.0"
"@ethersproject/strings" "^5.7.0"
-"@ethersproject/abi@^5.1.2":
- version "5.4.1"
- resolved "https://registry.yarnpkg.com/@ethersproject/abi/-/abi-5.4.1.tgz#6ac28fafc9ef6f5a7a37e30356a2eb31fa05d39b"
- integrity sha512-9mhbjUk76BiSluiiW4BaYyI58KSbDMMQpCLdsAR+RsT2GyATiNYxVv+pGWRrekmsIdY3I+hOqsYQSTkc8L/mcg==
- dependencies:
- "@ethersproject/address" "^5.4.0"
- "@ethersproject/bignumber" "^5.4.0"
- "@ethersproject/bytes" "^5.4.0"
- "@ethersproject/constants" "^5.4.0"
- "@ethersproject/hash" "^5.4.0"
- "@ethersproject/keccak256" "^5.4.0"
- "@ethersproject/logger" "^5.4.0"
- "@ethersproject/properties" "^5.4.0"
- "@ethersproject/strings" "^5.4.0"
-
-"@ethersproject/abstract-provider@5.7.0", "@ethersproject/abstract-provider@^5.7.0":
+"@ethersproject/abstract-provider@^5.7.0":
version "5.7.0"
resolved "https://registry.yarnpkg.com/@ethersproject/abstract-provider/-/abstract-provider-5.7.0.tgz#b0a8550f88b6bf9d51f90e4795d48294630cb9ef"
integrity sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw==
@@ -681,20 +536,7 @@
"@ethersproject/transactions" "^5.7.0"
"@ethersproject/web" "^5.7.0"
-"@ethersproject/abstract-provider@^5.4.0":
- version "5.4.1"
- resolved "https://registry.yarnpkg.com/@ethersproject/abstract-provider/-/abstract-provider-5.4.1.tgz#e404309a29f771bd4d28dbafadcaa184668c2a6e"
- integrity sha512-3EedfKI3LVpjSKgAxoUaI+gB27frKsxzm+r21w9G60Ugk+3wVLQwhi1LsEJAKNV7WoZc8CIpNrATlL1QFABjtQ==
- dependencies:
- "@ethersproject/bignumber" "^5.4.0"
- "@ethersproject/bytes" "^5.4.0"
- "@ethersproject/logger" "^5.4.0"
- "@ethersproject/networks" "^5.4.0"
- "@ethersproject/properties" "^5.4.0"
- "@ethersproject/transactions" "^5.4.0"
- "@ethersproject/web" "^5.4.0"
-
-"@ethersproject/abstract-signer@5.7.0", "@ethersproject/abstract-signer@^5.7.0":
+"@ethersproject/abstract-signer@^5.7.0":
version "5.7.0"
resolved "https://registry.yarnpkg.com/@ethersproject/abstract-signer/-/abstract-signer-5.7.0.tgz#13f4f32117868452191a4649723cb086d2b596b2"
integrity sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ==
@@ -705,18 +547,7 @@
"@ethersproject/logger" "^5.7.0"
"@ethersproject/properties" "^5.7.0"
-"@ethersproject/abstract-signer@^5.4.0":
- version "5.4.1"
- resolved "https://registry.yarnpkg.com/@ethersproject/abstract-signer/-/abstract-signer-5.4.1.tgz#e4e9abcf4dd4f1ba0db7dff9746a5f78f355ea81"
- integrity sha512-SkkFL5HVq1k4/25dM+NWP9MILgohJCgGv5xT5AcRruGz4ILpfHeBtO/y6j+Z3UN/PAjDeb4P7E51Yh8wcGNLGA==
- dependencies:
- "@ethersproject/abstract-provider" "^5.4.0"
- "@ethersproject/bignumber" "^5.4.0"
- "@ethersproject/bytes" "^5.4.0"
- "@ethersproject/logger" "^5.4.0"
- "@ethersproject/properties" "^5.4.0"
-
-"@ethersproject/address@5.7.0", "@ethersproject/address@^5.7.0":
+"@ethersproject/address@^5.0.2", "@ethersproject/address@^5.7.0":
version "5.7.0"
resolved "https://registry.yarnpkg.com/@ethersproject/address/-/address-5.7.0.tgz#19b56c4d74a3b0a46bfdbb6cfcc0a153fc697f37"
integrity sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==
@@ -727,40 +558,14 @@
"@ethersproject/logger" "^5.7.0"
"@ethersproject/rlp" "^5.7.0"
-"@ethersproject/address@^5.0.2", "@ethersproject/address@^5.4.0":
- version "5.4.0"
- resolved "https://registry.yarnpkg.com/@ethersproject/address/-/address-5.4.0.tgz#ba2d00a0f8c4c0854933b963b9a3a9f6eb4a37a3"
- integrity sha512-SD0VgOEkcACEG/C6xavlU1Hy3m5DGSXW3CUHkaaEHbAPPsgi0coP5oNPsxau8eTlZOk/bpa/hKeCNoK5IzVI2Q==
- dependencies:
- "@ethersproject/bignumber" "^5.4.0"
- "@ethersproject/bytes" "^5.4.0"
- "@ethersproject/keccak256" "^5.4.0"
- "@ethersproject/logger" "^5.4.0"
- "@ethersproject/rlp" "^5.4.0"
-
-"@ethersproject/base64@5.7.0", "@ethersproject/base64@^5.7.0":
+"@ethersproject/base64@^5.7.0":
version "5.7.0"
resolved "https://registry.yarnpkg.com/@ethersproject/base64/-/base64-5.7.0.tgz#ac4ee92aa36c1628173e221d0d01f53692059e1c"
integrity sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ==
dependencies:
"@ethersproject/bytes" "^5.7.0"
-"@ethersproject/base64@^5.4.0":
- version "5.4.0"
- resolved "https://registry.yarnpkg.com/@ethersproject/base64/-/base64-5.4.0.tgz#7252bf65295954c9048c7ca5f43e5c86441b2a9a"
- integrity sha512-CjQw6E17QDSSC5jiM9YpF7N1aSCHmYGMt9bWD8PWv6YPMxjsys2/Q8xLrROKI3IWJ7sFfZ8B3flKDTM5wlWuZQ==
- dependencies:
- "@ethersproject/bytes" "^5.4.0"
-
-"@ethersproject/basex@5.7.0", "@ethersproject/basex@^5.7.0":
- version "5.7.0"
- resolved "https://registry.yarnpkg.com/@ethersproject/basex/-/basex-5.7.0.tgz#97034dc7e8938a8ca943ab20f8a5e492ece4020b"
- integrity sha512-ywlh43GwZLv2Voc2gQVTKBoVQ1mti3d8HK5aMxsfu/nRDnMmNqaSJ3r3n85HBByT8OpoY96SXM1FogC533T4zw==
- dependencies:
- "@ethersproject/bytes" "^5.7.0"
- "@ethersproject/properties" "^5.7.0"
-
-"@ethersproject/bignumber@5.7.0", "@ethersproject/bignumber@^5.7.0":
+"@ethersproject/bignumber@^5.7.0":
version "5.7.0"
resolved "https://registry.yarnpkg.com/@ethersproject/bignumber/-/bignumber-5.7.0.tgz#e2f03837f268ba655ffba03a57853e18a18dc9c2"
integrity sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==
@@ -769,60 +574,21 @@
"@ethersproject/logger" "^5.7.0"
bn.js "^5.2.1"
-"@ethersproject/bignumber@^5.4.0":
- version "5.4.2"
- resolved "https://registry.yarnpkg.com/@ethersproject/bignumber/-/bignumber-5.4.2.tgz#44232e015ae4ce82ac034de549eb3583c71283d8"
- integrity sha512-oIBDhsKy5bs7j36JlaTzFgNPaZjiNDOXsdSgSpXRucUl+UA6L/1YLlFeI3cPAoodcenzF4nxNPV13pcy7XbWjA==
- dependencies:
- "@ethersproject/bytes" "^5.4.0"
- "@ethersproject/logger" "^5.4.0"
- bn.js "^4.11.9"
-
-"@ethersproject/bytes@5.7.0", "@ethersproject/bytes@^5.7.0":
+"@ethersproject/bytes@^5.7.0":
version "5.7.0"
resolved "https://registry.yarnpkg.com/@ethersproject/bytes/-/bytes-5.7.0.tgz#a00f6ea8d7e7534d6d87f47188af1148d71f155d"
integrity sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==
dependencies:
"@ethersproject/logger" "^5.7.0"
-"@ethersproject/bytes@^5.4.0":
- version "5.4.0"
- resolved "https://registry.yarnpkg.com/@ethersproject/bytes/-/bytes-5.4.0.tgz#56fa32ce3bf67153756dbaefda921d1d4774404e"
- integrity sha512-H60ceqgTHbhzOj4uRc/83SCN9d+BSUnOkrr2intevqdtEMO1JFVZ1XL84OEZV+QjV36OaZYxtnt4lGmxcGsPfA==
- dependencies:
- "@ethersproject/logger" "^5.4.0"
-
-"@ethersproject/constants@5.7.0", "@ethersproject/constants@^5.7.0":
+"@ethersproject/constants@^5.7.0":
version "5.7.0"
resolved "https://registry.yarnpkg.com/@ethersproject/constants/-/constants-5.7.0.tgz#df80a9705a7e08984161f09014ea012d1c75295e"
integrity sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==
dependencies:
"@ethersproject/bignumber" "^5.7.0"
-"@ethersproject/constants@^5.4.0":
- version "5.4.0"
- resolved "https://registry.yarnpkg.com/@ethersproject/constants/-/constants-5.4.0.tgz#ee0bdcb30bf1b532d2353c977bf2ef1ee117958a"
- integrity sha512-tzjn6S7sj9+DIIeKTJLjK9WGN2Tj0P++Z8ONEIlZjyoTkBuODN+0VfhAyYksKi43l1Sx9tX2VlFfzjfmr5Wl3Q==
- dependencies:
- "@ethersproject/bignumber" "^5.4.0"
-
-"@ethersproject/contracts@5.7.0", "@ethersproject/contracts@^5.7.0":
- version "5.7.0"
- resolved "https://registry.yarnpkg.com/@ethersproject/contracts/-/contracts-5.7.0.tgz#c305e775abd07e48aa590e1a877ed5c316f8bd1e"
- integrity sha512-5GJbzEU3X+d33CdfPhcyS+z8MzsTrBGk/sc+G+59+tPa9yFkl6HQ9D6L0QMgNTA9q8dT0XKxxkyp883XsQvbbg==
- dependencies:
- "@ethersproject/abi" "^5.7.0"
- "@ethersproject/abstract-provider" "^5.7.0"
- "@ethersproject/abstract-signer" "^5.7.0"
- "@ethersproject/address" "^5.7.0"
- "@ethersproject/bignumber" "^5.7.0"
- "@ethersproject/bytes" "^5.7.0"
- "@ethersproject/constants" "^5.7.0"
- "@ethersproject/logger" "^5.7.0"
- "@ethersproject/properties" "^5.7.0"
- "@ethersproject/transactions" "^5.7.0"
-
-"@ethersproject/hash@5.7.0", "@ethersproject/hash@^5.7.0":
+"@ethersproject/hash@^5.7.0":
version "5.7.0"
resolved "https://registry.yarnpkg.com/@ethersproject/hash/-/hash-5.7.0.tgz#eb7aca84a588508369562e16e514b539ba5240a7"
integrity sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g==
@@ -837,58 +603,7 @@
"@ethersproject/properties" "^5.7.0"
"@ethersproject/strings" "^5.7.0"
-"@ethersproject/hash@^5.4.0":
- version "5.4.0"
- resolved "https://registry.yarnpkg.com/@ethersproject/hash/-/hash-5.4.0.tgz#d18a8e927e828e22860a011f39e429d388344ae0"
- integrity sha512-xymAM9tmikKgbktOCjW60Z5sdouiIIurkZUr9oW5NOex5uwxrbsYG09kb5bMcNjlVeJD3yPivTNzViIs1GCbqA==
- dependencies:
- "@ethersproject/abstract-signer" "^5.4.0"
- "@ethersproject/address" "^5.4.0"
- "@ethersproject/bignumber" "^5.4.0"
- "@ethersproject/bytes" "^5.4.0"
- "@ethersproject/keccak256" "^5.4.0"
- "@ethersproject/logger" "^5.4.0"
- "@ethersproject/properties" "^5.4.0"
- "@ethersproject/strings" "^5.4.0"
-
-"@ethersproject/hdnode@5.7.0", "@ethersproject/hdnode@^5.7.0":
- version "5.7.0"
- resolved "https://registry.yarnpkg.com/@ethersproject/hdnode/-/hdnode-5.7.0.tgz#e627ddc6b466bc77aebf1a6b9e47405ca5aef9cf"
- integrity sha512-OmyYo9EENBPPf4ERhR7oj6uAtUAhYGqOnIS+jE5pTXvdKBS99ikzq1E7Iv0ZQZ5V36Lqx1qZLeak0Ra16qpeOg==
- dependencies:
- "@ethersproject/abstract-signer" "^5.7.0"
- "@ethersproject/basex" "^5.7.0"
- "@ethersproject/bignumber" "^5.7.0"
- "@ethersproject/bytes" "^5.7.0"
- "@ethersproject/logger" "^5.7.0"
- "@ethersproject/pbkdf2" "^5.7.0"
- "@ethersproject/properties" "^5.7.0"
- "@ethersproject/sha2" "^5.7.0"
- "@ethersproject/signing-key" "^5.7.0"
- "@ethersproject/strings" "^5.7.0"
- "@ethersproject/transactions" "^5.7.0"
- "@ethersproject/wordlists" "^5.7.0"
-
-"@ethersproject/json-wallets@5.7.0", "@ethersproject/json-wallets@^5.7.0":
- version "5.7.0"
- resolved "https://registry.yarnpkg.com/@ethersproject/json-wallets/-/json-wallets-5.7.0.tgz#5e3355287b548c32b368d91014919ebebddd5360"
- integrity sha512-8oee5Xgu6+RKgJTkvEMl2wDgSPSAQ9MB/3JYjFV9jlKvcYHUXZC+cQp0njgmxdHkYWn8s6/IqIZYm0YWCjO/0g==
- dependencies:
- "@ethersproject/abstract-signer" "^5.7.0"
- "@ethersproject/address" "^5.7.0"
- "@ethersproject/bytes" "^5.7.0"
- "@ethersproject/hdnode" "^5.7.0"
- "@ethersproject/keccak256" "^5.7.0"
- "@ethersproject/logger" "^5.7.0"
- "@ethersproject/pbkdf2" "^5.7.0"
- "@ethersproject/properties" "^5.7.0"
- "@ethersproject/random" "^5.7.0"
- "@ethersproject/strings" "^5.7.0"
- "@ethersproject/transactions" "^5.7.0"
- aes-js "3.0.0"
- scrypt-js "3.0.1"
-
-"@ethersproject/keccak256@5.7.0", "@ethersproject/keccak256@^5.7.0":
+"@ethersproject/keccak256@^5.7.0":
version "5.7.0"
resolved "https://registry.yarnpkg.com/@ethersproject/keccak256/-/keccak256-5.7.0.tgz#3186350c6e1cd6aba7940384ec7d6d9db01f335a"
integrity sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==
@@ -896,95 +611,26 @@
"@ethersproject/bytes" "^5.7.0"
js-sha3 "0.8.0"
-"@ethersproject/keccak256@^5.4.0":
- version "5.4.0"
- resolved "https://registry.yarnpkg.com/@ethersproject/keccak256/-/keccak256-5.4.0.tgz#7143b8eea4976080241d2bd92e3b1f1bf7025318"
- integrity sha512-FBI1plWet+dPUvAzPAeHzRKiPpETQzqSUWR1wXJGHVWi4i8bOSrpC3NwpkPjgeXG7MnugVc1B42VbfnQikyC/A==
- dependencies:
- "@ethersproject/bytes" "^5.4.0"
- js-sha3 "0.5.7"
-
-"@ethersproject/logger@5.7.0", "@ethersproject/logger@^5.7.0":
+"@ethersproject/logger@^5.7.0":
version "5.7.0"
resolved "https://registry.yarnpkg.com/@ethersproject/logger/-/logger-5.7.0.tgz#6ce9ae168e74fecf287be17062b590852c311892"
integrity sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==
-"@ethersproject/logger@^5.4.0":
- version "5.4.1"
- resolved "https://registry.yarnpkg.com/@ethersproject/logger/-/logger-5.4.1.tgz#503bd33683538b923c578c07d1c2c0dd18672054"
- integrity sha512-DZ+bRinnYLPw1yAC64oRl0QyVZj43QeHIhVKfD/+YwSz4wsv1pfwb5SOFjz+r710YEWzU6LrhuSjpSO+6PeE4A==
-
-"@ethersproject/networks@5.7.1", "@ethersproject/networks@^5.7.0":
+"@ethersproject/networks@^5.7.0":
version "5.7.1"
resolved "https://registry.yarnpkg.com/@ethersproject/networks/-/networks-5.7.1.tgz#118e1a981d757d45ccea6bb58d9fd3d9db14ead6"
integrity sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ==
dependencies:
"@ethersproject/logger" "^5.7.0"
-"@ethersproject/networks@^5.4.0":
- version "5.4.2"
- resolved "https://registry.yarnpkg.com/@ethersproject/networks/-/networks-5.4.2.tgz#2247d977626e97e2c3b8ee73cd2457babde0ce35"
- integrity sha512-eekOhvJyBnuibfJnhtK46b8HimBc5+4gqpvd1/H9LEl7Q7/qhsIhM81dI9Fcnjpk3jB1aTy6bj0hz3cifhNeYw==
- dependencies:
- "@ethersproject/logger" "^5.4.0"
-
-"@ethersproject/pbkdf2@5.7.0", "@ethersproject/pbkdf2@^5.7.0":
- version "5.7.0"
- resolved "https://registry.yarnpkg.com/@ethersproject/pbkdf2/-/pbkdf2-5.7.0.tgz#d2267d0a1f6e123f3771007338c47cccd83d3102"
- integrity sha512-oR/dBRZR6GTyaofd86DehG72hY6NpAjhabkhxgr3X2FpJtJuodEl2auADWBZfhDHgVCbu3/H/Ocq2uC6dpNjjw==
- dependencies:
- "@ethersproject/bytes" "^5.7.0"
- "@ethersproject/sha2" "^5.7.0"
-
-"@ethersproject/properties@5.7.0", "@ethersproject/properties@^5.7.0":
+"@ethersproject/properties@^5.7.0":
version "5.7.0"
resolved "https://registry.yarnpkg.com/@ethersproject/properties/-/properties-5.7.0.tgz#a6e12cb0439b878aaf470f1902a176033067ed30"
integrity sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==
dependencies:
"@ethersproject/logger" "^5.7.0"
-"@ethersproject/properties@^5.4.0":
- version "5.4.1"
- resolved "https://registry.yarnpkg.com/@ethersproject/properties/-/properties-5.4.1.tgz#9f051f976ce790142c6261ccb7b826eaae1f2f36"
- integrity sha512-cyCGlF8wWlIZyizsj2PpbJ9I7rIlUAfnHYwy/T90pdkSn/NFTa5YWZx2wTJBe9V7dD65dcrrEMisCRUJiq6n3w==
- dependencies:
- "@ethersproject/logger" "^5.4.0"
-
-"@ethersproject/providers@5.7.2", "@ethersproject/providers@^5.7.1", "@ethersproject/providers@^5.7.2":
- version "5.7.2"
- resolved "https://registry.yarnpkg.com/@ethersproject/providers/-/providers-5.7.2.tgz#f8b1a4f275d7ce58cf0a2eec222269a08beb18cb"
- integrity sha512-g34EWZ1WWAVgr4aptGlVBF8mhl3VWjv+8hoAnzStu8Ah22VHBsuGzP17eb6xDVRzw895G4W7vvx60lFFur/1Rg==
- dependencies:
- "@ethersproject/abstract-provider" "^5.7.0"
- "@ethersproject/abstract-signer" "^5.7.0"
- "@ethersproject/address" "^5.7.0"
- "@ethersproject/base64" "^5.7.0"
- "@ethersproject/basex" "^5.7.0"
- "@ethersproject/bignumber" "^5.7.0"
- "@ethersproject/bytes" "^5.7.0"
- "@ethersproject/constants" "^5.7.0"
- "@ethersproject/hash" "^5.7.0"
- "@ethersproject/logger" "^5.7.0"
- "@ethersproject/networks" "^5.7.0"
- "@ethersproject/properties" "^5.7.0"
- "@ethersproject/random" "^5.7.0"
- "@ethersproject/rlp" "^5.7.0"
- "@ethersproject/sha2" "^5.7.0"
- "@ethersproject/strings" "^5.7.0"
- "@ethersproject/transactions" "^5.7.0"
- "@ethersproject/web" "^5.7.0"
- bech32 "1.1.4"
- ws "7.4.6"
-
-"@ethersproject/random@5.7.0", "@ethersproject/random@^5.7.0":
- version "5.7.0"
- resolved "https://registry.yarnpkg.com/@ethersproject/random/-/random-5.7.0.tgz#af19dcbc2484aae078bb03656ec05df66253280c"
- integrity sha512-19WjScqRA8IIeWclFme75VMXSBvi4e6InrUNuaR4s5pTF2qNhcGdCUwdxUVGtDDqC00sDLCO93jPQoDUH4HVmQ==
- dependencies:
- "@ethersproject/bytes" "^5.7.0"
- "@ethersproject/logger" "^5.7.0"
-
-"@ethersproject/rlp@5.7.0", "@ethersproject/rlp@^5.7.0":
+"@ethersproject/rlp@^5.7.0":
version "5.7.0"
resolved "https://registry.yarnpkg.com/@ethersproject/rlp/-/rlp-5.7.0.tgz#de39e4d5918b9d74d46de93af80b7685a9c21304"
integrity sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==
@@ -992,24 +638,7 @@
"@ethersproject/bytes" "^5.7.0"
"@ethersproject/logger" "^5.7.0"
-"@ethersproject/rlp@^5.4.0":
- version "5.4.0"
- resolved "https://registry.yarnpkg.com/@ethersproject/rlp/-/rlp-5.4.0.tgz#de61afda5ff979454e76d3b3310a6c32ad060931"
- integrity sha512-0I7MZKfi+T5+G8atId9QaQKHRvvasM/kqLyAH4XxBCBchAooH2EX5rL9kYZWwcm3awYV+XC7VF6nLhfeQFKVPg==
- dependencies:
- "@ethersproject/bytes" "^5.4.0"
- "@ethersproject/logger" "^5.4.0"
-
-"@ethersproject/sha2@5.7.0", "@ethersproject/sha2@^5.7.0":
- version "5.7.0"
- resolved "https://registry.yarnpkg.com/@ethersproject/sha2/-/sha2-5.7.0.tgz#9a5f7a7824ef784f7f7680984e593a800480c9fb"
- integrity sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw==
- dependencies:
- "@ethersproject/bytes" "^5.7.0"
- "@ethersproject/logger" "^5.7.0"
- hash.js "1.1.7"
-
-"@ethersproject/signing-key@5.7.0", "@ethersproject/signing-key@^5.7.0":
+"@ethersproject/signing-key@^5.7.0":
version "5.7.0"
resolved "https://registry.yarnpkg.com/@ethersproject/signing-key/-/signing-key-5.7.0.tgz#06b2df39411b00bc57c7c09b01d1e41cf1b16ab3"
integrity sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q==
@@ -1021,31 +650,7 @@
elliptic "6.5.4"
hash.js "1.1.7"
-"@ethersproject/signing-key@^5.4.0":
- version "5.4.0"
- resolved "https://registry.yarnpkg.com/@ethersproject/signing-key/-/signing-key-5.4.0.tgz#2f05120984e81cf89a3d5f6dec5c68ee0894fbec"
- integrity sha512-q8POUeywx6AKg2/jX9qBYZIAmKSB4ubGXdQ88l40hmATj29JnG5pp331nAWwwxPn2Qao4JpWHNZsQN+bPiSW9A==
- dependencies:
- "@ethersproject/bytes" "^5.4.0"
- "@ethersproject/logger" "^5.4.0"
- "@ethersproject/properties" "^5.4.0"
- bn.js "^4.11.9"
- elliptic "6.5.4"
- hash.js "1.1.7"
-
-"@ethersproject/solidity@5.7.0", "@ethersproject/solidity@^5.7.0":
- version "5.7.0"
- resolved "https://registry.yarnpkg.com/@ethersproject/solidity/-/solidity-5.7.0.tgz#5e9c911d8a2acce2a5ebb48a5e2e0af20b631cb8"
- integrity sha512-HmabMd2Dt/raavyaGukF4XxizWKhKQ24DoLtdNbBmNKUOPqwjsKQSdV9GQtj9CBEea9DlzETlVER1gYeXXBGaA==
- dependencies:
- "@ethersproject/bignumber" "^5.7.0"
- "@ethersproject/bytes" "^5.7.0"
- "@ethersproject/keccak256" "^5.7.0"
- "@ethersproject/logger" "^5.7.0"
- "@ethersproject/sha2" "^5.7.0"
- "@ethersproject/strings" "^5.7.0"
-
-"@ethersproject/strings@5.7.0", "@ethersproject/strings@^5.7.0":
+"@ethersproject/strings@^5.7.0":
version "5.7.0"
resolved "https://registry.yarnpkg.com/@ethersproject/strings/-/strings-5.7.0.tgz#54c9d2a7c57ae8f1205c88a9d3a56471e14d5ed2"
integrity sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg==
@@ -1054,16 +659,7 @@
"@ethersproject/constants" "^5.7.0"
"@ethersproject/logger" "^5.7.0"
-"@ethersproject/strings@^5.4.0":
- version "5.4.0"
- resolved "https://registry.yarnpkg.com/@ethersproject/strings/-/strings-5.4.0.tgz#fb12270132dd84b02906a8d895ae7e7fa3d07d9a"
- integrity sha512-k/9DkH5UGDhv7aReXLluFG5ExurwtIpUfnDNhQA29w896Dw3i4uDTz01Quaptbks1Uj9kI8wo9tmW73wcIEaWA==
- dependencies:
- "@ethersproject/bytes" "^5.4.0"
- "@ethersproject/constants" "^5.4.0"
- "@ethersproject/logger" "^5.4.0"
-
-"@ethersproject/transactions@5.7.0", "@ethersproject/transactions@^5.6.2", "@ethersproject/transactions@^5.7.0":
+"@ethersproject/transactions@^5.7.0":
version "5.7.0"
resolved "https://registry.yarnpkg.com/@ethersproject/transactions/-/transactions-5.7.0.tgz#91318fc24063e057885a6af13fdb703e1f993d3b"
integrity sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ==
@@ -1078,52 +674,7 @@
"@ethersproject/rlp" "^5.7.0"
"@ethersproject/signing-key" "^5.7.0"
-"@ethersproject/transactions@^5.4.0":
- version "5.4.0"
- resolved "https://registry.yarnpkg.com/@ethersproject/transactions/-/transactions-5.4.0.tgz#a159d035179334bd92f340ce0f77e83e9e1522e0"
- integrity sha512-s3EjZZt7xa4BkLknJZ98QGoIza94rVjaEed0rzZ/jB9WrIuu/1+tjvYCWzVrystXtDswy7TPBeIepyXwSYa4WQ==
- dependencies:
- "@ethersproject/address" "^5.4.0"
- "@ethersproject/bignumber" "^5.4.0"
- "@ethersproject/bytes" "^5.4.0"
- "@ethersproject/constants" "^5.4.0"
- "@ethersproject/keccak256" "^5.4.0"
- "@ethersproject/logger" "^5.4.0"
- "@ethersproject/properties" "^5.4.0"
- "@ethersproject/rlp" "^5.4.0"
- "@ethersproject/signing-key" "^5.4.0"
-
-"@ethersproject/units@5.7.0":
- version "5.7.0"
- resolved "https://registry.yarnpkg.com/@ethersproject/units/-/units-5.7.0.tgz#637b563d7e14f42deeee39245275d477aae1d8b1"
- integrity sha512-pD3xLMy3SJu9kG5xDGI7+xhTEmGXlEqXU4OfNapmfnxLVY4EMSSRp7j1k7eezutBPH7RBN/7QPnwR7hzNlEFeg==
- dependencies:
- "@ethersproject/bignumber" "^5.7.0"
- "@ethersproject/constants" "^5.7.0"
- "@ethersproject/logger" "^5.7.0"
-
-"@ethersproject/wallet@5.7.0":
- version "5.7.0"
- resolved "https://registry.yarnpkg.com/@ethersproject/wallet/-/wallet-5.7.0.tgz#4e5d0790d96fe21d61d38fb40324e6c7ef350b2d"
- integrity sha512-MhmXlJXEJFBFVKrDLB4ZdDzxcBxQ3rLyCkhNqVu3CDYvR97E+8r01UgrI+TI99Le+aYm/in/0vp86guJuM7FCA==
- dependencies:
- "@ethersproject/abstract-provider" "^5.7.0"
- "@ethersproject/abstract-signer" "^5.7.0"
- "@ethersproject/address" "^5.7.0"
- "@ethersproject/bignumber" "^5.7.0"
- "@ethersproject/bytes" "^5.7.0"
- "@ethersproject/hash" "^5.7.0"
- "@ethersproject/hdnode" "^5.7.0"
- "@ethersproject/json-wallets" "^5.7.0"
- "@ethersproject/keccak256" "^5.7.0"
- "@ethersproject/logger" "^5.7.0"
- "@ethersproject/properties" "^5.7.0"
- "@ethersproject/random" "^5.7.0"
- "@ethersproject/signing-key" "^5.7.0"
- "@ethersproject/transactions" "^5.7.0"
- "@ethersproject/wordlists" "^5.7.0"
-
-"@ethersproject/web@5.7.1", "@ethersproject/web@^5.7.0":
+"@ethersproject/web@^5.7.0":
version "5.7.1"
resolved "https://registry.yarnpkg.com/@ethersproject/web/-/web-5.7.1.tgz#de1f285b373149bee5928f4eb7bcb87ee5fbb4ae"
integrity sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w==
@@ -1134,97 +685,18 @@
"@ethersproject/properties" "^5.7.0"
"@ethersproject/strings" "^5.7.0"
-"@ethersproject/web@^5.4.0":
- version "5.4.0"
- resolved "https://registry.yarnpkg.com/@ethersproject/web/-/web-5.4.0.tgz#49fac173b96992334ed36a175538ba07a7413d1f"
- integrity sha512-1bUusGmcoRLYgMn6c1BLk1tOKUIFuTg8j+6N8lYlbMpDesnle+i3pGSagGNvwjaiLo4Y5gBibwctpPRmjrh4Og==
- dependencies:
- "@ethersproject/base64" "^5.4.0"
- "@ethersproject/bytes" "^5.4.0"
- "@ethersproject/logger" "^5.4.0"
- "@ethersproject/properties" "^5.4.0"
- "@ethersproject/strings" "^5.4.0"
-
-"@ethersproject/wordlists@5.7.0", "@ethersproject/wordlists@^5.7.0":
- version "5.7.0"
- resolved "https://registry.yarnpkg.com/@ethersproject/wordlists/-/wordlists-5.7.0.tgz#8fb2c07185d68c3e09eb3bfd6e779ba2774627f5"
- integrity sha512-S2TFNJNfHWVHNE6cNDjbVlZ6MgE17MIxMbMg2zv3wn+3XSJGosL1m9ZVv3GXCf/2ymSsQ+hRI5IzoMJTG6aoVA==
- dependencies:
- "@ethersproject/bytes" "^5.7.0"
- "@ethersproject/hash" "^5.7.0"
- "@ethersproject/logger" "^5.7.0"
- "@ethersproject/properties" "^5.7.0"
- "@ethersproject/strings" "^5.7.0"
-
-"@ganache/ethereum-address@0.1.4":
- version "0.1.4"
- resolved "https://registry.yarnpkg.com/@ganache/ethereum-address/-/ethereum-address-0.1.4.tgz#0e6d66f4a24f64bf687cb3ff7358fb85b9d9005e"
- integrity sha512-sTkU0M9z2nZUzDeHRzzGlW724xhMLXo2LeX1hixbnjHWY1Zg1hkqORywVfl+g5uOO8ht8T0v+34IxNxAhmWlbw==
- dependencies:
- "@ganache/utils" "0.1.4"
-
-"@ganache/ethereum-options@0.1.4":
- version "0.1.4"
- resolved "https://registry.yarnpkg.com/@ganache/ethereum-options/-/ethereum-options-0.1.4.tgz#6a559abb44225e2b8741a8f78a19a46714a71cd6"
- integrity sha512-i4l46taoK2yC41FPkcoDlEVoqHS52wcbHPqJtYETRWqpOaoj9hAg/EJIHLb1t6Nhva2CdTO84bG+qlzlTxjAHw==
- dependencies:
- "@ganache/ethereum-address" "0.1.4"
- "@ganache/ethereum-utils" "0.1.4"
- "@ganache/options" "0.1.4"
- "@ganache/utils" "0.1.4"
- bip39 "3.0.4"
- seedrandom "3.0.5"
-
-"@ganache/ethereum-utils@0.1.4":
- version "0.1.4"
- resolved "https://registry.yarnpkg.com/@ganache/ethereum-utils/-/ethereum-utils-0.1.4.tgz#fae4b5b9e642e751ff1fa0cd7316c92996317257"
- integrity sha512-FKXF3zcdDrIoCqovJmHLKZLrJ43234Em2sde/3urUT/10gSgnwlpFmrv2LUMAmSbX3lgZhW/aSs8krGhDevDAg==
- dependencies:
- "@ethereumjs/common" "2.6.0"
- "@ethereumjs/tx" "3.4.0"
- "@ethereumjs/vm" "5.6.0"
- "@ganache/ethereum-address" "0.1.4"
- "@ganache/rlp" "0.1.4"
- "@ganache/utils" "0.1.4"
- emittery "0.10.0"
- ethereumjs-abi "0.6.8"
- ethereumjs-util "7.1.3"
-
-"@ganache/options@0.1.4":
- version "0.1.4"
- resolved "https://registry.yarnpkg.com/@ganache/options/-/options-0.1.4.tgz#325b07e6de85094667aaaaf3d653e32404a04b78"
- integrity sha512-zAe/craqNuPz512XQY33MOAG6Si1Xp0hCvfzkBfj2qkuPcbJCq6W/eQ5MB6SbXHrICsHrZOaelyqjuhSEmjXRw==
- dependencies:
- "@ganache/utils" "0.1.4"
- bip39 "3.0.4"
- seedrandom "3.0.5"
-
-"@ganache/rlp@0.1.4":
- version "0.1.4"
- resolved "https://registry.yarnpkg.com/@ganache/rlp/-/rlp-0.1.4.tgz#f4043afda83e1a14a4f80607b103daf166a9b374"
- integrity sha512-Do3D1H6JmhikB+6rHviGqkrNywou/liVeFiKIpOBLynIpvZhRCgn3SEDxyy/JovcaozTo/BynHumfs5R085MFQ==
- dependencies:
- "@ganache/utils" "0.1.4"
- rlp "2.2.6"
-
-"@ganache/utils@0.1.4":
- version "0.1.4"
- resolved "https://registry.yarnpkg.com/@ganache/utils/-/utils-0.1.4.tgz#25d60d7689e3dda6a8a7ad70e3646f07c2c39a1f"
- integrity sha512-oatUueU3XuXbUbUlkyxeLLH3LzFZ4y5aSkNbx6tjSIhVTPeh+AuBKYt4eQ73FFcTB3nj/gZoslgAh5CN7O369w==
- dependencies:
- emittery "0.10.0"
- keccak "3.0.1"
- seedrandom "3.0.5"
- optionalDependencies:
- "@trufflesuite/bigint-buffer" "1.1.9"
+"@fastify/busboy@^2.0.0":
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/@fastify/busboy/-/busboy-2.1.1.tgz#b9da6a878a371829a0502c9b6c1c143ef6663f4d"
+ integrity sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==
-"@humanwhocodes/config-array@^0.11.10":
- version "0.11.10"
- resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.10.tgz#5a3ffe32cc9306365fb3fd572596cd602d5e12d2"
- integrity sha512-KVVjQmNUepDVGXNuoRRdmmEjruj0KfiGSbS8LVc12LMsWDQzRXJ0qdhN8L8uUigKpfEHRhlaQFY0ib1tnUbNeQ==
+"@humanwhocodes/config-array@^0.13.0":
+ version "0.13.0"
+ resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.13.0.tgz#fb907624df3256d04b9aa2df50d7aa97ec648748"
+ integrity sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==
dependencies:
- "@humanwhocodes/object-schema" "^1.2.1"
- debug "^4.1.1"
+ "@humanwhocodes/object-schema" "^2.0.3"
+ debug "^4.3.1"
minimatch "^3.0.5"
"@humanwhocodes/module-importer@^1.0.1":
@@ -1232,10 +704,10 @@
resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c"
integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==
-"@humanwhocodes/object-schema@^1.2.1":
- version "1.2.1"
- resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45"
- integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==
+"@humanwhocodes/object-schema@^2.0.3":
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz#4a2868d75d6d6963e423bcf90b7fd1be343409d3"
+ integrity sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==
"@metamask/eth-sig-util@^4.0.0":
version "4.0.1"
@@ -1248,11 +720,47 @@
tweetnacl "^1.0.3"
tweetnacl-util "^0.15.1"
+"@noble/curves@1.2.0":
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.2.0.tgz#92d7e12e4e49b23105a2555c6984d41733d65c35"
+ integrity sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw==
+ dependencies:
+ "@noble/hashes" "1.3.2"
+
+"@noble/curves@1.4.2", "@noble/curves@~1.4.0":
+ version "1.4.2"
+ resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.4.2.tgz#40309198c76ed71bc6dbf7ba24e81ceb4d0d1fe9"
+ integrity sha512-TavHr8qycMChk8UwMld0ZDRvatedkzWfH8IiaeGCfymOP5i0hSCozz9vHOL0nkwk7HRMlFnAiKpS2jrUmSybcw==
+ dependencies:
+ "@noble/hashes" "1.4.0"
+
+"@noble/curves@1.6.0", "@noble/curves@^1.4.0", "@noble/curves@~1.6.0":
+ version "1.6.0"
+ resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.6.0.tgz#be5296ebcd5a1730fccea4786d420f87abfeb40b"
+ integrity sha512-TlaHRXDehJuRNR9TfZDNQ45mMEd5dwUwmicsafcIX4SsNiqnCHKjE/1alYPd/lDRVhxdhUAlv8uEhMCI5zjIJQ==
+ dependencies:
+ "@noble/hashes" "1.5.0"
+
"@noble/hashes@1.2.0", "@noble/hashes@~1.2.0":
version "1.2.0"
resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.2.0.tgz#a3150eeb09cc7ab207ebf6d7b9ad311a9bdbed12"
integrity sha512-FZfhjEDbT5GRswV3C6uvLPHMiVD6lQBmpoX5+eSiPaMTXte/IKqI5dykDxzZB/WBeK/CDuQRBWarPdi3FNY2zQ==
+"@noble/hashes@1.3.2":
+ version "1.3.2"
+ resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.3.2.tgz#6f26dbc8fbc7205873ce3cee2f690eba0d421b39"
+ integrity sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==
+
+"@noble/hashes@1.4.0", "@noble/hashes@~1.4.0":
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.4.0.tgz#45814aa329f30e4fe0ba49426f49dfccdd066426"
+ integrity sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==
+
+"@noble/hashes@1.5.0", "@noble/hashes@^1.3.3", "@noble/hashes@^1.4.0", "@noble/hashes@~1.5.0":
+ version "1.5.0"
+ resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.5.0.tgz#abadc5ca20332db2b1b2aa3e496e9af1213570b0"
+ integrity sha512-1j6kQFb7QRru7eKN3ZDvRcP13rugwdxZqCjbiAVZfIJwgj2A65UmT4TgARXGlXgnRkORLTDTrO19ZErt7+QXgA==
+
"@noble/secp256k1@1.7.1", "@noble/secp256k1@~1.7.0":
version "1.7.1"
resolved "https://registry.yarnpkg.com/@noble/secp256k1/-/secp256k1-1.7.1.tgz#b251c70f824ce3ca7f8dc3df08d58f005cc0507c"
@@ -1279,389 +787,375 @@
"@nodelib/fs.scandir" "2.1.5"
fastq "^1.6.0"
-"@nomicfoundation/ethereumjs-block@5.0.1":
- version "5.0.1"
- resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-block/-/ethereumjs-block-5.0.1.tgz#6f89664f55febbd723195b6d0974773d29ee133d"
- integrity sha512-u1Yioemi6Ckj3xspygu/SfFvm8vZEO8/Yx5a1QLzi6nVU0jz3Pg2OmHKJ5w+D9Ogk1vhwRiqEBAqcb0GVhCyHw==
- dependencies:
- "@nomicfoundation/ethereumjs-common" "4.0.1"
- "@nomicfoundation/ethereumjs-rlp" "5.0.1"
- "@nomicfoundation/ethereumjs-trie" "6.0.1"
- "@nomicfoundation/ethereumjs-tx" "5.0.1"
- "@nomicfoundation/ethereumjs-util" "9.0.1"
- ethereum-cryptography "0.1.3"
- ethers "^5.7.1"
-
-"@nomicfoundation/ethereumjs-blockchain@7.0.1":
- version "7.0.1"
- resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-blockchain/-/ethereumjs-blockchain-7.0.1.tgz#80e0bd3535bfeb9baa29836b6f25123dab06a726"
- integrity sha512-NhzndlGg829XXbqJEYrF1VeZhAwSPgsK/OB7TVrdzft3y918hW5KNd7gIZ85sn6peDZOdjBsAXIpXZ38oBYE5A==
- dependencies:
- "@nomicfoundation/ethereumjs-block" "5.0.1"
- "@nomicfoundation/ethereumjs-common" "4.0.1"
- "@nomicfoundation/ethereumjs-ethash" "3.0.1"
- "@nomicfoundation/ethereumjs-rlp" "5.0.1"
- "@nomicfoundation/ethereumjs-trie" "6.0.1"
- "@nomicfoundation/ethereumjs-tx" "5.0.1"
- "@nomicfoundation/ethereumjs-util" "9.0.1"
- abstract-level "^1.0.3"
- debug "^4.3.3"
- ethereum-cryptography "0.1.3"
- level "^8.0.0"
- lru-cache "^5.1.1"
- memory-level "^1.0.0"
-
-"@nomicfoundation/ethereumjs-common@4.0.1":
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-common/-/ethereumjs-common-4.0.1.tgz#4702d82df35b07b5407583b54a45bf728e46a2f0"
- integrity sha512-OBErlkfp54GpeiE06brBW/TTbtbuBJV5YI5Nz/aB2evTDo+KawyEzPjBlSr84z/8MFfj8wS2wxzQX1o32cev5g==
+"@nomicfoundation/edr-darwin-arm64@0.6.4":
+ version "0.6.4"
+ resolved "https://registry.yarnpkg.com/@nomicfoundation/edr-darwin-arm64/-/edr-darwin-arm64-0.6.4.tgz#6eaa64a6ea5201e4c92b121f2b7fd197b26e450a"
+ integrity sha512-QNQErISLgssV9+qia8sIjRANqtbW8snSDvjspixT/kSQ5ZSGxxctTg7x72wPSrcu8+EBEveIe5uqENIp5GH8HQ==
+
+"@nomicfoundation/edr-darwin-x64@0.6.4":
+ version "0.6.4"
+ resolved "https://registry.yarnpkg.com/@nomicfoundation/edr-darwin-x64/-/edr-darwin-x64-0.6.4.tgz#d15ca89e9deef7d0a710cf90e79f3cc270a5a999"
+ integrity sha512-cjVmREiwByyc9+oGfvAh49IAw+oVJHF9WWYRD+Tm/ZlSpnEVWxrGNBak2bd/JSYjn+mZE7gmWS4SMRi4nKaLUg==
+
+"@nomicfoundation/edr-linux-arm64-gnu@0.6.4":
+ version "0.6.4"
+ resolved "https://registry.yarnpkg.com/@nomicfoundation/edr-linux-arm64-gnu/-/edr-linux-arm64-gnu-0.6.4.tgz#e73c41ca015dfddb5f4cb6cd3d9b2cbe5cc28989"
+ integrity sha512-96o9kRIVD6W5VkgKvUOGpWyUGInVQ5BRlME2Fa36YoNsRQMaKtmYJEU0ACosYES6ZTpYC8U5sjMulvPtVoEfOA==
+
+"@nomicfoundation/edr-linux-arm64-musl@0.6.4":
+ version "0.6.4"
+ resolved "https://registry.yarnpkg.com/@nomicfoundation/edr-linux-arm64-musl/-/edr-linux-arm64-musl-0.6.4.tgz#90906f733e4ad26657baeb22d28855d934ab7541"
+ integrity sha512-+JVEW9e5plHrUfQlSgkEj/UONrIU6rADTEk+Yp9pbe+mzNkJdfJYhs5JYiLQRP4OjxH4QOrXI97bKU6FcEbt5Q==
+
+"@nomicfoundation/edr-linux-x64-gnu@0.6.4":
+ version "0.6.4"
+ resolved "https://registry.yarnpkg.com/@nomicfoundation/edr-linux-x64-gnu/-/edr-linux-x64-gnu-0.6.4.tgz#11b8bd73df145a192e5a08199e5e81995fcde502"
+ integrity sha512-nzYWW+fO3EZItOeP4CrdMgDXfaGBIBkKg0Y/7ySpUxLqzut40O4Mb0/+quqLAFkacUSWMlFp8nsmypJfOH5zoA==
+
+"@nomicfoundation/edr-linux-x64-musl@0.6.4":
+ version "0.6.4"
+ resolved "https://registry.yarnpkg.com/@nomicfoundation/edr-linux-x64-musl/-/edr-linux-x64-musl-0.6.4.tgz#a34b9a2c9e34853207824dc81622668a069ca642"
+ integrity sha512-QFRoE9qSQ2boRrVeQ1HdzU+XN7NUgwZ1SIy5DQt4d7jCP+5qTNsq8LBNcqhRBOATgO63nsweNUhxX/Suj5r1Sw==
+
+"@nomicfoundation/edr-win32-x64-msvc@0.6.4":
+ version "0.6.4"
+ resolved "https://registry.yarnpkg.com/@nomicfoundation/edr-win32-x64-msvc/-/edr-win32-x64-msvc-0.6.4.tgz#ca035c6f66ae9f88fa3ef123a1f3a2099cce7a5a"
+ integrity sha512-2yopjelNkkCvIjUgBGhrn153IBPLwnsDeNiq6oA0WkeM8tGmQi4td+PGi9jAriUDAkc59Yoi2q9hYA6efiY7Zw==
+
+"@nomicfoundation/edr@^0.6.4":
+ version "0.6.4"
+ resolved "https://registry.yarnpkg.com/@nomicfoundation/edr/-/edr-0.6.4.tgz#1cd336c46a60f5af774e6cf0f1943f49f63dded6"
+ integrity sha512-YgrSuT3yo5ZQkbvBGqQ7hG+RDvz3YygSkddg4tb1Z0Y6pLXFzwrcEwWaJCFAVeeZxdxGfCgGMUYgRVneK+WXkw==
+ dependencies:
+ "@nomicfoundation/edr-darwin-arm64" "0.6.4"
+ "@nomicfoundation/edr-darwin-x64" "0.6.4"
+ "@nomicfoundation/edr-linux-arm64-gnu" "0.6.4"
+ "@nomicfoundation/edr-linux-arm64-musl" "0.6.4"
+ "@nomicfoundation/edr-linux-x64-gnu" "0.6.4"
+ "@nomicfoundation/edr-linux-x64-musl" "0.6.4"
+ "@nomicfoundation/edr-win32-x64-msvc" "0.6.4"
+
+"@nomicfoundation/ethereumjs-common@4.0.4":
+ version "4.0.4"
+ resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-common/-/ethereumjs-common-4.0.4.tgz#9901f513af2d4802da87c66d6f255b510bef5acb"
+ integrity sha512-9Rgb658lcWsjiicr5GzNCjI1llow/7r0k50dLL95OJ+6iZJcVbi15r3Y0xh2cIO+zgX0WIHcbzIu6FeQf9KPrg==
dependencies:
- "@nomicfoundation/ethereumjs-util" "9.0.1"
- crc-32 "^1.2.0"
+ "@nomicfoundation/ethereumjs-util" "9.0.4"
-"@nomicfoundation/ethereumjs-ethash@3.0.1":
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-ethash/-/ethereumjs-ethash-3.0.1.tgz#65ca494d53e71e8415c9a49ef48bc921c538fc41"
- integrity sha512-KDjGIB5igzWOp8Ik5I6QiRH5DH+XgILlplsHR7TEuWANZA759G6krQ6o8bvj+tRUz08YygMQu/sGd9mJ1DYT8w==
- dependencies:
- "@nomicfoundation/ethereumjs-block" "5.0.1"
- "@nomicfoundation/ethereumjs-rlp" "5.0.1"
- "@nomicfoundation/ethereumjs-util" "9.0.1"
- abstract-level "^1.0.3"
- bigint-crypto-utils "^3.0.23"
- ethereum-cryptography "0.1.3"
+"@nomicfoundation/ethereumjs-rlp@5.0.4":
+ version "5.0.4"
+ resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-rlp/-/ethereumjs-rlp-5.0.4.tgz#66c95256fc3c909f6fb18f6a586475fc9762fa30"
+ integrity sha512-8H1S3s8F6QueOc/X92SdrA4RDenpiAEqMg5vJH99kcQaCy/a3Q6fgseo75mgWlbanGJXSlAPtnCeG9jvfTYXlw==
-"@nomicfoundation/ethereumjs-evm@2.0.1":
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-evm/-/ethereumjs-evm-2.0.1.tgz#f35681e203363f69ce2b3d3bf9f44d4e883ca1f1"
- integrity sha512-oL8vJcnk0Bx/onl+TgQOQ1t/534GKFaEG17fZmwtPFeH8S5soiBYPCLUrvANOl4sCp9elYxIMzIiTtMtNNN8EQ==
- dependencies:
- "@ethersproject/providers" "^5.7.1"
- "@nomicfoundation/ethereumjs-common" "4.0.1"
- "@nomicfoundation/ethereumjs-tx" "5.0.1"
- "@nomicfoundation/ethereumjs-util" "9.0.1"
- debug "^4.3.3"
- ethereum-cryptography "0.1.3"
- mcl-wasm "^0.7.1"
- rustbn.js "~0.2.0"
-
-"@nomicfoundation/ethereumjs-rlp@5.0.1":
- version "5.0.1"
- resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-rlp/-/ethereumjs-rlp-5.0.1.tgz#0b30c1cf77d125d390408e391c4bb5291ef43c28"
- integrity sha512-xtxrMGa8kP4zF5ApBQBtjlSbN5E2HI8m8FYgVSYAnO6ssUoY5pVPGy2H8+xdf/bmMa22Ce8nWMH3aEW8CcqMeQ==
-
-"@nomicfoundation/ethereumjs-statemanager@2.0.1":
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-statemanager/-/ethereumjs-statemanager-2.0.1.tgz#8824a97938db4471911e2d2f140f79195def5935"
- integrity sha512-B5ApMOnlruVOR7gisBaYwFX+L/AP7i/2oAahatssjPIBVDF6wTX1K7Qpa39E/nzsH8iYuL3krkYeUFIdO3EMUQ==
+"@nomicfoundation/ethereumjs-tx@5.0.4":
+ version "5.0.4"
+ resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-tx/-/ethereumjs-tx-5.0.4.tgz#b0ceb58c98cc34367d40a30d255d6315b2f456da"
+ integrity sha512-Xjv8wAKJGMrP1f0n2PeyfFCCojHd7iS3s/Ab7qzF1S64kxZ8Z22LCMynArYsVqiFx6rzYy548HNVEyI+AYN/kw==
dependencies:
- "@nomicfoundation/ethereumjs-common" "4.0.1"
- "@nomicfoundation/ethereumjs-rlp" "5.0.1"
- debug "^4.3.3"
+ "@nomicfoundation/ethereumjs-common" "4.0.4"
+ "@nomicfoundation/ethereumjs-rlp" "5.0.4"
+ "@nomicfoundation/ethereumjs-util" "9.0.4"
ethereum-cryptography "0.1.3"
- ethers "^5.7.1"
- js-sdsl "^4.1.4"
-"@nomicfoundation/ethereumjs-trie@6.0.1":
- version "6.0.1"
- resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-trie/-/ethereumjs-trie-6.0.1.tgz#662c55f6b50659fd4b22ea9f806a7401cafb7717"
- integrity sha512-A64It/IMpDVODzCgxDgAAla8jNjNtsoQZIzZUfIV5AY6Coi4nvn7+VReBn5itlxMiL2yaTlQr9TRWp3CSI6VoA==
+"@nomicfoundation/ethereumjs-util@9.0.4":
+ version "9.0.4"
+ resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-util/-/ethereumjs-util-9.0.4.tgz#84c5274e82018b154244c877b76bc049a4ed7b38"
+ integrity sha512-sLOzjnSrlx9Bb9EFNtHzK/FJFsfg2re6bsGqinFinH1gCqVfz9YYlXiMWwDM4C/L4ywuHFCYwfKTVr/QHQcU0Q==
dependencies:
- "@nomicfoundation/ethereumjs-rlp" "5.0.1"
- "@nomicfoundation/ethereumjs-util" "9.0.1"
- "@types/readable-stream" "^2.3.13"
- ethereum-cryptography "0.1.3"
- readable-stream "^3.6.0"
-
-"@nomicfoundation/ethereumjs-tx@5.0.1":
- version "5.0.1"
- resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-tx/-/ethereumjs-tx-5.0.1.tgz#7629dc2036b4a33c34e9f0a592b43227ef4f0c7d"
- integrity sha512-0HwxUF2u2hrsIM1fsasjXvlbDOq1ZHFV2dd1yGq8CA+MEYhaxZr8OTScpVkkxqMwBcc5y83FyPl0J9MZn3kY0w==
- dependencies:
- "@chainsafe/ssz" "^0.9.2"
- "@ethersproject/providers" "^5.7.2"
- "@nomicfoundation/ethereumjs-common" "4.0.1"
- "@nomicfoundation/ethereumjs-rlp" "5.0.1"
- "@nomicfoundation/ethereumjs-util" "9.0.1"
+ "@nomicfoundation/ethereumjs-rlp" "5.0.4"
ethereum-cryptography "0.1.3"
-"@nomicfoundation/ethereumjs-util@9.0.1":
- version "9.0.1"
- resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-util/-/ethereumjs-util-9.0.1.tgz#530cda8bae33f8b5020a8f199ed1d0a2ce48ec89"
- integrity sha512-TwbhOWQ8QoSCFhV/DDfSmyfFIHjPjFBj957219+V3jTZYZ2rf9PmDtNOeZWAE3p3vlp8xb02XGpd0v6nTUPbsA==
+"@nomicfoundation/hardhat-chai-matchers@^2.0.8":
+ version "2.0.8"
+ resolved "https://registry.yarnpkg.com/@nomicfoundation/hardhat-chai-matchers/-/hardhat-chai-matchers-2.0.8.tgz#9c7cfc4ad0f0a5e9cf16aba8ab668c02f6e273aa"
+ integrity sha512-Z5PiCXH4xhNLASROlSUOADfhfpfhYO6D7Hn9xp8PddmHey0jq704cr6kfU8TRrQ4PUZbpfsZadPj+pCfZdjPIg==
dependencies:
- "@chainsafe/ssz" "^0.10.0"
- "@nomicfoundation/ethereumjs-rlp" "5.0.1"
- ethereum-cryptography "0.1.3"
-
-"@nomicfoundation/ethereumjs-vm@7.0.1":
- version "7.0.1"
- resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-vm/-/ethereumjs-vm-7.0.1.tgz#7d035e0993bcad10716c8b36e61dfb87fa3ca05f"
- integrity sha512-rArhyn0jPsS/D+ApFsz3yVJMQ29+pVzNZ0VJgkzAZ+7FqXSRtThl1C1prhmlVr3YNUlfpZ69Ak+RUT4g7VoOuQ==
- dependencies:
- "@nomicfoundation/ethereumjs-block" "5.0.1"
- "@nomicfoundation/ethereumjs-blockchain" "7.0.1"
- "@nomicfoundation/ethereumjs-common" "4.0.1"
- "@nomicfoundation/ethereumjs-evm" "2.0.1"
- "@nomicfoundation/ethereumjs-rlp" "5.0.1"
- "@nomicfoundation/ethereumjs-statemanager" "2.0.1"
- "@nomicfoundation/ethereumjs-trie" "6.0.1"
- "@nomicfoundation/ethereumjs-tx" "5.0.1"
- "@nomicfoundation/ethereumjs-util" "9.0.1"
- debug "^4.3.3"
- ethereum-cryptography "0.1.3"
- mcl-wasm "^0.7.1"
- rustbn.js "~0.2.0"
-
-"@nomicfoundation/solidity-analyzer-darwin-arm64@0.1.1":
- version "0.1.1"
- resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer-darwin-arm64/-/solidity-analyzer-darwin-arm64-0.1.1.tgz#4c858096b1c17fe58a474fe81b46815f93645c15"
- integrity sha512-KcTodaQw8ivDZyF+D76FokN/HdpgGpfjc/gFCImdLUyqB6eSWVaZPazMbeAjmfhx3R0zm/NYVzxwAokFKgrc0w==
+ "@types/chai-as-promised" "^7.1.3"
+ chai-as-promised "^7.1.1"
+ deep-eql "^4.0.1"
+ ordinal "^1.0.3"
-"@nomicfoundation/solidity-analyzer-darwin-x64@0.1.1":
- version "0.1.1"
- resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer-darwin-x64/-/solidity-analyzer-darwin-x64-0.1.1.tgz#6e25ccdf6e2d22389c35553b64fe6f3fdaec432c"
- integrity sha512-XhQG4BaJE6cIbjAVtzGOGbK3sn1BO9W29uhk9J8y8fZF1DYz0Doj8QDMfpMu+A6TjPDs61lbsmeYodIDnfveSA==
-
-"@nomicfoundation/solidity-analyzer-freebsd-x64@0.1.1":
- version "0.1.1"
- resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer-freebsd-x64/-/solidity-analyzer-freebsd-x64-0.1.1.tgz#0a224ea50317139caeebcdedd435c28a039d169c"
- integrity sha512-GHF1VKRdHW3G8CndkwdaeLkVBi5A9u2jwtlS7SLhBc8b5U/GcoL39Q+1CSO3hYqePNP+eV5YI7Zgm0ea6kMHoA==
-
-"@nomicfoundation/solidity-analyzer-linux-arm64-gnu@0.1.1":
- version "0.1.1"
- resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer-linux-arm64-gnu/-/solidity-analyzer-linux-arm64-gnu-0.1.1.tgz#dfa085d9ffab9efb2e7b383aed3f557f7687ac2b"
- integrity sha512-g4Cv2fO37ZsUENQ2vwPnZc2zRenHyAxHcyBjKcjaSmmkKrFr64yvzeNO8S3GBFCo90rfochLs99wFVGT/0owpg==
-
-"@nomicfoundation/solidity-analyzer-linux-arm64-musl@0.1.1":
- version "0.1.1"
- resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer-linux-arm64-musl/-/solidity-analyzer-linux-arm64-musl-0.1.1.tgz#c9e06b5d513dd3ab02a7ac069c160051675889a4"
- integrity sha512-WJ3CE5Oek25OGE3WwzK7oaopY8xMw9Lhb0mlYuJl/maZVo+WtP36XoQTb7bW/i8aAdHW5Z+BqrHMux23pvxG3w==
-
-"@nomicfoundation/solidity-analyzer-linux-x64-gnu@0.1.1":
- version "0.1.1"
- resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer-linux-x64-gnu/-/solidity-analyzer-linux-x64-gnu-0.1.1.tgz#8d328d16839e52571f72f2998c81e46bf320f893"
- integrity sha512-5WN7leSr5fkUBBjE4f3wKENUy9HQStu7HmWqbtknfXkkil+eNWiBV275IOlpXku7v3uLsXTOKpnnGHJYI2qsdA==
-
-"@nomicfoundation/solidity-analyzer-linux-x64-musl@0.1.1":
- version "0.1.1"
- resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer-linux-x64-musl/-/solidity-analyzer-linux-x64-musl-0.1.1.tgz#9b49d0634b5976bb5ed1604a1e1b736f390959bb"
- integrity sha512-KdYMkJOq0SYPQMmErv/63CwGwMm5XHenEna9X9aB8mQmhDBrYrlAOSsIPgFCUSL0hjxE3xHP65/EPXR/InD2+w==
-
-"@nomicfoundation/solidity-analyzer-win32-arm64-msvc@0.1.1":
- version "0.1.1"
- resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer-win32-arm64-msvc/-/solidity-analyzer-win32-arm64-msvc-0.1.1.tgz#e2867af7264ebbcc3131ef837878955dd6a3676f"
- integrity sha512-VFZASBfl4qiBYwW5xeY20exWhmv6ww9sWu/krWSesv3q5hA0o1JuzmPHR4LPN6SUZj5vcqci0O6JOL8BPw+APg==
-
-"@nomicfoundation/solidity-analyzer-win32-ia32-msvc@0.1.1":
- version "0.1.1"
- resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer-win32-ia32-msvc/-/solidity-analyzer-win32-ia32-msvc-0.1.1.tgz#0685f78608dd516c8cdfb4896ed451317e559585"
- integrity sha512-JnFkYuyCSA70j6Si6cS1A9Gh1aHTEb8kOTBApp/c7NRTFGNMH8eaInKlyuuiIbvYFhlXW4LicqyYuWNNq9hkpQ==
-
-"@nomicfoundation/solidity-analyzer-win32-x64-msvc@0.1.1":
- version "0.1.1"
- resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer-win32-x64-msvc/-/solidity-analyzer-win32-x64-msvc-0.1.1.tgz#c9a44f7108646f083b82e851486e0f6aeb785836"
- integrity sha512-HrVJr6+WjIXGnw3Q9u6KQcbZCtk0caVWhCdFADySvRyUxJ8PnzlaP+MhwNE8oyT8OZ6ejHBRrrgjSqDCFXGirw==
-
-"@nomicfoundation/solidity-analyzer@^0.1.0":
- version "0.1.1"
- resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer/-/solidity-analyzer-0.1.1.tgz#f5f4d36d3f66752f59a57e7208cd856f3ddf6f2d"
- integrity sha512-1LMtXj1puAxyFusBgUIy5pZk3073cNXYnXUpuNKFghHbIit/xZgbk0AokpUADbNm3gyD6bFWl3LRFh3dhVdREg==
- optionalDependencies:
- "@nomicfoundation/solidity-analyzer-darwin-arm64" "0.1.1"
- "@nomicfoundation/solidity-analyzer-darwin-x64" "0.1.1"
- "@nomicfoundation/solidity-analyzer-freebsd-x64" "0.1.1"
- "@nomicfoundation/solidity-analyzer-linux-arm64-gnu" "0.1.1"
- "@nomicfoundation/solidity-analyzer-linux-arm64-musl" "0.1.1"
- "@nomicfoundation/solidity-analyzer-linux-x64-gnu" "0.1.1"
- "@nomicfoundation/solidity-analyzer-linux-x64-musl" "0.1.1"
- "@nomicfoundation/solidity-analyzer-win32-arm64-msvc" "0.1.1"
- "@nomicfoundation/solidity-analyzer-win32-ia32-msvc" "0.1.1"
- "@nomicfoundation/solidity-analyzer-win32-x64-msvc" "0.1.1"
-
-"@nomiclabs/hardhat-ethers@^2.1.0":
- version "2.2.3"
- resolved "https://registry.yarnpkg.com/@nomiclabs/hardhat-ethers/-/hardhat-ethers-2.2.3.tgz#b41053e360c31a32c2640c9a45ee981a7e603fe0"
- integrity sha512-YhzPdzb612X591FOe68q+qXVXGG2ANZRvDo0RRUtimev85rCrAlv/TLMEZw5c+kq9AbzocLTVX/h2jVIFPL9Xg==
+"@nomicfoundation/hardhat-ethers@^3.0.8":
+ version "3.0.8"
+ resolved "https://registry.yarnpkg.com/@nomicfoundation/hardhat-ethers/-/hardhat-ethers-3.0.8.tgz#af078f566373abeb77e11cbe69fe3dd47f8bfc27"
+ integrity sha512-zhOZ4hdRORls31DTOqg+GmEZM0ujly8GGIuRY7t7szEk2zW/arY1qDug/py8AEktT00v5K+b6RvbVog+va51IA==
+ dependencies:
+ debug "^4.1.1"
+ lodash.isequal "^4.5.0"
-"@nomiclabs/hardhat-etherscan@^3.1.0":
- version "3.1.7"
- resolved "https://registry.yarnpkg.com/@nomiclabs/hardhat-etherscan/-/hardhat-etherscan-3.1.7.tgz#72e3d5bd5d0ceb695e097a7f6f5ff6fcbf062b9a"
- integrity sha512-tZ3TvSgpvsQ6B6OGmo1/Au6u8BrAkvs1mIC/eURA3xgIfznUZBhmpne8hv7BXUzw9xNL3fXdpOYgOQlVMTcoHQ==
+"@nomicfoundation/hardhat-verify@^1.1.1":
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/@nomicfoundation/hardhat-verify/-/hardhat-verify-1.1.1.tgz#6a433d777ce0172d1f0edf7f2d3e1df14b3ecfc1"
+ integrity sha512-9QsTYD7pcZaQFEA3tBb/D/oCStYDiEVDN7Dxeo/4SCyHRSm86APypxxdOMEPlGmXsAvd+p1j/dTODcpxb8aztA==
dependencies:
"@ethersproject/abi" "^5.1.2"
"@ethersproject/address" "^5.0.2"
cbor "^8.1.0"
chalk "^2.4.2"
debug "^4.1.1"
- fs-extra "^7.0.1"
- lodash "^4.17.11"
+ lodash.clonedeep "^4.5.0"
semver "^6.3.0"
table "^6.8.0"
undici "^5.14.0"
-"@nomiclabs/hardhat-waffle@^2.0.2":
- version "2.0.6"
- resolved "https://registry.yarnpkg.com/@nomiclabs/hardhat-waffle/-/hardhat-waffle-2.0.6.tgz#d11cb063a5f61a77806053e54009c40ddee49a54"
- integrity sha512-+Wz0hwmJGSI17B+BhU/qFRZ1l6/xMW82QGXE/Gi+WTmwgJrQefuBs1lIf7hzQ1hLk6hpkvb/zwcNkpVKRYTQYg==
+"@nomicfoundation/slang-darwin-arm64@0.17.0":
+ version "0.17.0"
+ resolved "https://registry.yarnpkg.com/@nomicfoundation/slang-darwin-arm64/-/slang-darwin-arm64-0.17.0.tgz#8cded3c24322624e3b6618760caba8e840bd1c1d"
+ integrity sha512-O0q94EUtoWy9A5kOTOa9/khtxXDYnLqmuda9pQELurSiwbQEVCPQL8kb34VbOW+ifdre66JM/05Xw9JWhIZ9sA==
+
+"@nomicfoundation/slang-darwin-x64@0.17.0":
+ version "0.17.0"
+ resolved "https://registry.yarnpkg.com/@nomicfoundation/slang-darwin-x64/-/slang-darwin-x64-0.17.0.tgz#6ebeb33a2ced89fc6023f6cda4af96403486038a"
+ integrity sha512-IaDbHzvT08sBK2HyGzonWhq1uu8IxdjmTqAWHr25Oh/PYnamdi8u4qchZXXYKz/DHLoYN3vIpBXoqLQIomhD/g==
+
+"@nomicfoundation/slang-linux-arm64-gnu@0.17.0":
+ version "0.17.0"
+ resolved "https://registry.yarnpkg.com/@nomicfoundation/slang-linux-arm64-gnu/-/slang-linux-arm64-gnu-0.17.0.tgz#41c7e57a9b1a3aee6911f0cab22e683c149fb470"
+ integrity sha512-Lj4anvOsQZxs1SycG8VyT2Rl2oqIhyLSUCgGepTt3CiJ/bM+8r8bLJIgh8vKkki4BWz49YsYIgaJB2IPv8FFTw==
+
+"@nomicfoundation/slang-linux-arm64-musl@0.17.0":
+ version "0.17.0"
+ resolved "https://registry.yarnpkg.com/@nomicfoundation/slang-linux-arm64-musl/-/slang-linux-arm64-musl-0.17.0.tgz#9c4b51689274ae75c2c8a4cddd2e1cc0a79c191d"
+ integrity sha512-/xkTCa9d5SIWUBQE3BmLqDFfJRr4yUBwbl4ynPiGUpRXrD69cs6pWKkwjwz/FdBpXqVo36I+zY95qzoTj/YhOA==
+
+"@nomicfoundation/slang-linux-x64-gnu@0.17.0":
+ version "0.17.0"
+ resolved "https://registry.yarnpkg.com/@nomicfoundation/slang-linux-x64-gnu/-/slang-linux-x64-gnu-0.17.0.tgz#c3a3b6a7b775fc617832958d10e6664bf86d39d0"
+ integrity sha512-oe5IO5vntOqYvTd67deCHPIWuSuWm6aYtT2/0Kqz2/VLtGz4ClEulBSRwfnNzBVtw2nksWipE1w8BzhImI7Syg==
+
+"@nomicfoundation/slang-linux-x64-musl@0.17.0":
+ version "0.17.0"
+ resolved "https://registry.yarnpkg.com/@nomicfoundation/slang-linux-x64-musl/-/slang-linux-x64-musl-0.17.0.tgz#725118ff99a7217b9f1d1bd84411d9442084077d"
+ integrity sha512-PpYCI5K/kgLAMXaPY0V4VST5gCDprEOh7z/47tbI8kJQumI5odjsj/Cs8MpTo7/uRH6flKYbVNgUzcocWVYrAQ==
+
+"@nomicfoundation/slang-win32-arm64-msvc@0.17.0":
+ version "0.17.0"
+ resolved "https://registry.yarnpkg.com/@nomicfoundation/slang-win32-arm64-msvc/-/slang-win32-arm64-msvc-0.17.0.tgz#9c8bc4ccf21eaaac0cfcb6d3954ede4e2dea4c02"
+ integrity sha512-u/Mkf7OjokdBilP7QOJj6QYJU4/mjkbKnTX21wLyCIzeVWS7yafRPYpBycKIBj2pRRZ6ceAY5EqRpb0aiCq+0Q==
+
+"@nomicfoundation/slang-win32-ia32-msvc@0.17.0":
+ version "0.17.0"
+ resolved "https://registry.yarnpkg.com/@nomicfoundation/slang-win32-ia32-msvc/-/slang-win32-ia32-msvc-0.17.0.tgz#3fc5d00a3f8c1d85a5e94146af78a5526a4f3d27"
+ integrity sha512-XJBVQfNnZQUv0tP2JSJ573S+pmgrLWgqSZOGaMllnB/TL1gRci4Z7dYRJUF2s82GlRJE+FHSI2Ro6JISKmlXCg==
+
+"@nomicfoundation/slang-win32-x64-msvc@0.17.0":
+ version "0.17.0"
+ resolved "https://registry.yarnpkg.com/@nomicfoundation/slang-win32-x64-msvc/-/slang-win32-x64-msvc-0.17.0.tgz#f6a5e3250fa07cbda49151edeb80f09090e5b71a"
+ integrity sha512-zPGsAeiTfqfPNYHD8BfrahQmYzA78ZraoHKTGraq/1xwJwzBK4bu/NtvVA4pJjBV+B4L6DCxVhSbpn40q26JQA==
+
+"@nomicfoundation/slang@^0.17.0":
+ version "0.17.0"
+ resolved "https://registry.yarnpkg.com/@nomicfoundation/slang/-/slang-0.17.0.tgz#d9c25cd711ebf3490c9d0c99e9b4ca2481341a6b"
+ integrity sha512-1GlkGRcGpVnjFw9Z1vvDKOKo2mzparFt7qrl2pDxWp+jrVtlvej98yCMX52pVyrYE7ZeOSZFnx/DtsSgoukStQ==
+ dependencies:
+ "@nomicfoundation/slang-darwin-arm64" "0.17.0"
+ "@nomicfoundation/slang-darwin-x64" "0.17.0"
+ "@nomicfoundation/slang-linux-arm64-gnu" "0.17.0"
+ "@nomicfoundation/slang-linux-arm64-musl" "0.17.0"
+ "@nomicfoundation/slang-linux-x64-gnu" "0.17.0"
+ "@nomicfoundation/slang-linux-x64-musl" "0.17.0"
+ "@nomicfoundation/slang-win32-arm64-msvc" "0.17.0"
+ "@nomicfoundation/slang-win32-ia32-msvc" "0.17.0"
+ "@nomicfoundation/slang-win32-x64-msvc" "0.17.0"
+
+"@nomicfoundation/solidity-analyzer-darwin-arm64@0.1.2":
+ version "0.1.2"
+ resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer-darwin-arm64/-/solidity-analyzer-darwin-arm64-0.1.2.tgz#3a9c3b20d51360b20affb8f753e756d553d49557"
+ integrity sha512-JaqcWPDZENCvm++lFFGjrDd8mxtf+CtLd2MiXvMNTBD33dContTZ9TWETwNFwg7JTJT5Q9HEecH7FA+HTSsIUw==
-"@openzeppelin/contracts-upgradeable@^4.4.2":
- version "4.8.0"
- resolved "https://registry.yarnpkg.com/@openzeppelin/contracts-upgradeable/-/contracts-upgradeable-4.8.0.tgz#26688982f46969018e3ed3199e72a07c8d114275"
- integrity sha512-5GeFgqMiDlqGT8EdORadp1ntGF0qzWZLmEY7Wbp/yVhN7/B3NNzCxujuI77ktlyG81N3CUZP8cZe3ZAQ/cW10w==
+"@nomicfoundation/solidity-analyzer-darwin-x64@0.1.2":
+ version "0.1.2"
+ resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer-darwin-x64/-/solidity-analyzer-darwin-x64-0.1.2.tgz#74dcfabeb4ca373d95bd0d13692f44fcef133c28"
+ integrity sha512-fZNmVztrSXC03e9RONBT+CiksSeYcxI1wlzqyr0L7hsQlK1fzV+f04g2JtQ1c/Fe74ZwdV6aQBdd6Uwl1052sw==
+
+"@nomicfoundation/solidity-analyzer-linux-arm64-gnu@0.1.2":
+ version "0.1.2"
+ resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer-linux-arm64-gnu/-/solidity-analyzer-linux-arm64-gnu-0.1.2.tgz#4af5849a89e5a8f511acc04f28eb5d4460ba2b6a"
+ integrity sha512-3d54oc+9ZVBuB6nbp8wHylk4xh0N0Gc+bk+/uJae+rUgbOBwQSfuGIbAZt1wBXs5REkSmynEGcqx6DutoK0tPA==
+
+"@nomicfoundation/solidity-analyzer-linux-arm64-musl@0.1.2":
+ version "0.1.2"
+ resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer-linux-arm64-musl/-/solidity-analyzer-linux-arm64-musl-0.1.2.tgz#54036808a9a327b2ff84446c130a6687ee702a8e"
+ integrity sha512-iDJfR2qf55vgsg7BtJa7iPiFAsYf2d0Tv/0B+vhtnI16+wfQeTbP7teookbGvAo0eJo7aLLm0xfS/GTkvHIucA==
+
+"@nomicfoundation/solidity-analyzer-linux-x64-gnu@0.1.2":
+ version "0.1.2"
+ resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer-linux-x64-gnu/-/solidity-analyzer-linux-x64-gnu-0.1.2.tgz#466cda0d6e43691986c944b909fc6dbb8cfc594e"
+ integrity sha512-9dlHMAt5/2cpWyuJ9fQNOUXFB/vgSFORg1jpjX1Mh9hJ/MfZXlDdHQ+DpFCs32Zk5pxRBb07yGvSHk9/fezL+g==
+
+"@nomicfoundation/solidity-analyzer-linux-x64-musl@0.1.2":
+ version "0.1.2"
+ resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer-linux-x64-musl/-/solidity-analyzer-linux-x64-musl-0.1.2.tgz#2b35826987a6e94444140ac92310baa088ee7f94"
+ integrity sha512-GzzVeeJob3lfrSlDKQw2bRJ8rBf6mEYaWY+gW0JnTDHINA0s2gPR4km5RLIj1xeZZOYz4zRw+AEeYgLRqB2NXg==
+
+"@nomicfoundation/solidity-analyzer-win32-x64-msvc@0.1.2":
+ version "0.1.2"
+ resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer-win32-x64-msvc/-/solidity-analyzer-win32-x64-msvc-0.1.2.tgz#e6363d13b8709ca66f330562337dbc01ce8bbbd9"
+ integrity sha512-Fdjli4DCcFHb4Zgsz0uEJXZ2K7VEO+w5KVv7HmT7WO10iODdU9csC2az4jrhEsRtiR9Gfd74FlG0NYlw1BMdyA==
+
+"@nomicfoundation/solidity-analyzer@^0.1.0":
+ version "0.1.2"
+ resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer/-/solidity-analyzer-0.1.2.tgz#8bcea7d300157bf3a770a851d9f5c5e2db34ac55"
+ integrity sha512-q4n32/FNKIhQ3zQGGw5CvPF6GTvDCpYwIf7bEY/dZTZbgfDsHyjJwURxUJf3VQuuJj+fDIFl4+KkBVbw4Ef6jA==
+ optionalDependencies:
+ "@nomicfoundation/solidity-analyzer-darwin-arm64" "0.1.2"
+ "@nomicfoundation/solidity-analyzer-darwin-x64" "0.1.2"
+ "@nomicfoundation/solidity-analyzer-linux-arm64-gnu" "0.1.2"
+ "@nomicfoundation/solidity-analyzer-linux-arm64-musl" "0.1.2"
+ "@nomicfoundation/solidity-analyzer-linux-x64-gnu" "0.1.2"
+ "@nomicfoundation/solidity-analyzer-linux-x64-musl" "0.1.2"
+ "@nomicfoundation/solidity-analyzer-win32-x64-msvc" "0.1.2"
"@openzeppelin/contracts-upgradeable@^4.7.1":
- version "4.7.1"
- resolved "https://registry.yarnpkg.com/@openzeppelin/contracts-upgradeable/-/contracts-upgradeable-4.7.1.tgz#f63fc384255d6ac139e0a2561aa207fd7c14183c"
- integrity sha512-5EFiZld3DYFd8aTL8eeMnhnaWh1/oXLXFNuFMrgF3b1DNPshF3LCyO7VR6lc+gac2URJ0BlVcZoCfkk/3MoEfg==
+ version "4.9.6"
+ resolved "https://registry.yarnpkg.com/@openzeppelin/contracts-upgradeable/-/contracts-upgradeable-4.9.6.tgz#38b21708a719da647de4bb0e4802ee235a0d24df"
+ integrity sha512-m4iHazOsOCv1DgM7eD7GupTJ+NFVujRZt1wzddDPSVGpWdKq1SKkla5htKG7+IS4d2XOCtzkUNwRZ7Vq5aEUMA==
-"@openzeppelin/defender-base-client@^1.46.0":
- version "1.47.1"
- resolved "https://registry.yarnpkg.com/@openzeppelin/defender-base-client/-/defender-base-client-1.47.1.tgz#2044fd048d73778a42eb0c5ae6f1370d0ab4bac9"
- integrity sha512-xnopi1tZIh1zY9KF3mo9S2YgMP0I3T11r6jiO1teAw6M0U5Fx2SCjfCVoKV7CLAQGH1VHmAZ7w2CmcEsFvlQng==
+"@openzeppelin/defender-sdk-base-client@^1.14.4", "@openzeppelin/defender-sdk-base-client@^1.15.0":
+ version "1.15.0"
+ resolved "https://registry.yarnpkg.com/@openzeppelin/defender-sdk-base-client/-/defender-sdk-base-client-1.15.0.tgz#5c6af6929c399dd7ef9ca1eb4ca042ae7e772367"
+ integrity sha512-nuf/xegMIuKCO0hMrxI1KQKTzQw1iCl/9kew2nJM9MrFIohhfEXItc5rbJRoV/jehmK/Jhi9ATF9OHH09StEsQ==
dependencies:
- amazon-cognito-identity-js "^6.0.1"
+ amazon-cognito-identity-js "^6.3.6"
async-retry "^1.3.3"
- axios "^1.4.0"
- lodash "^4.17.19"
- node-fetch "^2.6.0"
-"@openzeppelin/hardhat-upgrades@^1.14.0":
- version "1.28.0"
- resolved "https://registry.yarnpkg.com/@openzeppelin/hardhat-upgrades/-/hardhat-upgrades-1.28.0.tgz#6361f313a8a879d8a08a5e395acf0933bc190950"
- integrity sha512-7sb/Jf+X+uIufOBnmHR0FJVWuxEs2lpxjJnLNN6eCJCP8nD0v+Ot5lTOW2Qb/GFnh+fLvJtEkhkowz4ZQ57+zQ==
+"@openzeppelin/defender-sdk-deploy-client@^1.14.4":
+ version "1.15.0"
+ resolved "https://registry.yarnpkg.com/@openzeppelin/defender-sdk-deploy-client/-/defender-sdk-deploy-client-1.15.0.tgz#affbeb93bf633ab9914ae7ca6326ff9dcdbbb670"
+ integrity sha512-2ODMN4j5pPYWyIOvA/zRQmJ0tJyqi6NV3S/PyvufBXa3oj/MDnVO5bMGSQFH0M2VE3bg+i/rcUb0hdbX9Rtm5Q==
dependencies:
- "@openzeppelin/defender-base-client" "^1.46.0"
- "@openzeppelin/platform-deploy-client" "^0.8.0"
- "@openzeppelin/upgrades-core" "^1.27.0"
+ "@openzeppelin/defender-sdk-base-client" "^1.15.0"
+ axios "^1.7.2"
+ lodash "^4.17.21"
+
+"@openzeppelin/defender-sdk-network-client@^1.14.4":
+ version "1.15.0"
+ resolved "https://registry.yarnpkg.com/@openzeppelin/defender-sdk-network-client/-/defender-sdk-network-client-1.15.0.tgz#43eb2bb06fa69a127305f073089fa3201a65367c"
+ integrity sha512-tNynCqFB1XYancq/8yGuj0HCSIyNLSRSuH53Hp2Tl+DpM7W5vIkzSRfvJJxC+8Sld83bVavyNJzTN9xid992Ag==
+ dependencies:
+ "@openzeppelin/defender-sdk-base-client" "^1.15.0"
+ axios "^1.7.2"
+ lodash "^4.17.21"
+
+"@openzeppelin/hardhat-upgrades@^3.1.1":
+ version "3.5.0"
+ resolved "https://registry.yarnpkg.com/@openzeppelin/hardhat-upgrades/-/hardhat-upgrades-3.5.0.tgz#90ed0508fed8415b7fa9ee1c04ade8ec57091d46"
+ integrity sha512-Ju/JnT7NRiOMi5m5Y0dGiz37d8wnjVBep1v5Vr7+6+MFNuQa1yddUEVWhWhoEw4udI3/mYwyw4Sfz3sq7vhicQ==
+ dependencies:
+ "@openzeppelin/defender-sdk-base-client" "^1.14.4"
+ "@openzeppelin/defender-sdk-deploy-client" "^1.14.4"
+ "@openzeppelin/defender-sdk-network-client" "^1.14.4"
+ "@openzeppelin/upgrades-core" "^1.40.0"
chalk "^4.1.0"
debug "^4.1.1"
+ ethereumjs-util "^7.1.5"
proper-lockfile "^4.1.1"
+ undici "^6.11.1"
-"@openzeppelin/platform-deploy-client@^0.8.0":
- version "0.8.0"
- resolved "https://registry.yarnpkg.com/@openzeppelin/platform-deploy-client/-/platform-deploy-client-0.8.0.tgz#af6596275a19c283d6145f0128cc1247d18223c1"
- integrity sha512-POx3AsnKwKSV/ZLOU/gheksj0Lq7Is1q2F3pKmcFjGZiibf+4kjGxr4eSMrT+2qgKYZQH1ZLQZ+SkbguD8fTvA==
- dependencies:
- "@ethersproject/abi" "^5.6.3"
- "@openzeppelin/defender-base-client" "^1.46.0"
- axios "^0.21.2"
- lodash "^4.17.19"
- node-fetch "^2.6.0"
-
-"@openzeppelin/upgrades-core@^1.27.0":
- version "1.27.3"
- resolved "https://registry.yarnpkg.com/@openzeppelin/upgrades-core/-/upgrades-core-1.27.3.tgz#d5578e3a3ccd18a61fc585945be67951480238b5"
- integrity sha512-IqlSMUkno1XKF4L46aUqZ4BqHxj4dF0BRGrFcKeG2Q0vrsKoazhY67JG9bO+wMYG4zxl6jgmG0bd5ef9HLcLmw==
+"@openzeppelin/upgrades-core@^1.40.0":
+ version "1.40.0"
+ resolved "https://registry.yarnpkg.com/@openzeppelin/upgrades-core/-/upgrades-core-1.40.0.tgz#f01647afb99b46356b3e7b98e3b2c7f864d85add"
+ integrity sha512-4bPSXdEqHsNRL5T1ybPLneWGYjzGl6XWGWkv7aUoFFgz8mOdarstRBX1Wi4XJFw6IeHPUI7mMSQr2jdz8Y2ypQ==
dependencies:
- cbor "^8.0.0"
+ "@nomicfoundation/slang" "^0.17.0"
+ cbor "^9.0.0"
chalk "^4.1.0"
compare-versions "^6.0.0"
debug "^4.1.1"
ethereumjs-util "^7.0.3"
+ minimatch "^9.0.5"
minimist "^1.2.7"
proper-lockfile "^4.1.1"
- solidity-ast "^0.4.15"
-
-"@resolver-engine/core@^0.3.3":
- version "0.3.3"
- resolved "https://registry.yarnpkg.com/@resolver-engine/core/-/core-0.3.3.tgz#590f77d85d45bc7ecc4e06c654f41345db6ca967"
- integrity sha512-eB8nEbKDJJBi5p5SrvrvILn4a0h42bKtbCTri3ZxCGt6UvoQyp7HnGOfki944bUjBSHKK3RvgfViHn+kqdXtnQ==
- dependencies:
- debug "^3.1.0"
- is-url "^1.2.4"
- request "^2.85.0"
-
-"@resolver-engine/fs@^0.3.3":
- version "0.3.3"
- resolved "https://registry.yarnpkg.com/@resolver-engine/fs/-/fs-0.3.3.tgz#fbf83fa0c4f60154a82c817d2fe3f3b0c049a973"
- integrity sha512-wQ9RhPUcny02Wm0IuJwYMyAG8fXVeKdmhm8xizNByD4ryZlx6PP6kRen+t/haF43cMfmaV7T3Cx6ChOdHEhFUQ==
- dependencies:
- "@resolver-engine/core" "^0.3.3"
- debug "^3.1.0"
-
-"@resolver-engine/imports-fs@^0.3.3":
- version "0.3.3"
- resolved "https://registry.yarnpkg.com/@resolver-engine/imports-fs/-/imports-fs-0.3.3.tgz#4085db4b8d3c03feb7a425fbfcf5325c0d1e6c1b"
- integrity sha512-7Pjg/ZAZtxpeyCFlZR5zqYkz+Wdo84ugB5LApwriT8XFeQoLwGUj4tZFFvvCuxaNCcqZzCYbonJgmGObYBzyCA==
- dependencies:
- "@resolver-engine/fs" "^0.3.3"
- "@resolver-engine/imports" "^0.3.3"
- debug "^3.1.0"
+ solidity-ast "^0.4.51"
+
+"@renovatebot/pep440@^3.0.20":
+ version "3.0.20"
+ resolved "https://registry.yarnpkg.com/@renovatebot/pep440/-/pep440-3.0.20.tgz#eac961dec19ac7dca488c1ec20a91df17161f0e2"
+ integrity sha512-Jw8jzHh2r1LAPTrjQlIwh/+8J3N2MqXZgPuTt6HdNeJIBjJskV8bsEfGs9rBzXi/omeHob3BXnvlECu2rCCUYw==
+
+"@safe-global/api-kit@2.5.4":
+ version "2.5.4"
+ resolved "https://registry.yarnpkg.com/@safe-global/api-kit/-/api-kit-2.5.4.tgz#1759f5f04aee82656f826a9a067be0c01c4ec77c"
+ integrity sha512-L12qTaEQdQqdlPhsjC+JCpH5qxphyegPptrc98cRFnxsES0Dz3i/2df7kSAIntaYIP4aFEbulpVwOjOgWf+hDQ==
+ dependencies:
+ "@safe-global/protocol-kit" "^5.0.4"
+ "@safe-global/types-kit" "^1.0.0"
+ node-fetch "^2.7.0"
+ viem "^2.21.8"
+
+"@safe-global/api-kit@^2.4.1":
+ version "2.5.3"
+ resolved "https://registry.yarnpkg.com/@safe-global/api-kit/-/api-kit-2.5.3.tgz#8b0e996836a55e1c4cac6609b97a46c48bcb58fc"
+ integrity sha512-BHKKKohtM6cqtWmu2BIBl5YVMFeIzE1kBe2kfDi0JG9UbzTKYUYU8d/RnteFe5Nj/KiO7F7bJ708Z7ZxQ9Ap0g==
+ dependencies:
+ "@safe-global/protocol-kit" "^5.0.3"
+ "@safe-global/types-kit" "^1.0.0"
+ node-fetch "^2.7.0"
+ viem "^2.21.8"
+
+"@safe-global/protocol-kit@^5.0.1", "@safe-global/protocol-kit@^5.0.3":
+ version "5.0.3"
+ resolved "https://registry.yarnpkg.com/@safe-global/protocol-kit/-/protocol-kit-5.0.3.tgz#187cfdeaf892c832265cb356d0ef5e230cb8fc4f"
+ integrity sha512-xVpuj1Ge/XYdLucPe36MXl09yK83f3drPqFK0UPhrONg//SP/K/sgyXnKy5o4zJrjidNV9V0PV7Xw84HOqOxtg==
+ dependencies:
+ "@noble/hashes" "^1.3.3"
+ "@safe-global/safe-deployments" "^1.37.12"
+ "@safe-global/safe-modules-deployments" "^2.2.4"
+ "@safe-global/types-kit" "^1.0.0"
+ abitype "^1.0.2"
+ semver "^7.6.3"
+ viem "^2.21.8"
+
+"@safe-global/protocol-kit@^5.0.4":
+ version "5.0.4"
+ resolved "https://registry.yarnpkg.com/@safe-global/protocol-kit/-/protocol-kit-5.0.4.tgz#bd1b02520f0a68183de83bcd474e2dc3881c8c28"
+ integrity sha512-e2BhyiS/7jMzJY8oNpkMIHWAViENyL42/SAvFOcFsEc6JBvnh+4GGvLRwLVEiQ8e+54sJinRjo1/iTCrTIoqOQ==
+ dependencies:
+ "@noble/hashes" "^1.3.3"
+ "@safe-global/safe-deployments" "^1.37.14"
+ "@safe-global/safe-modules-deployments" "^2.2.4"
+ "@safe-global/types-kit" "^1.0.0"
+ abitype "^1.0.2"
+ semver "^7.6.3"
+ viem "^2.21.8"
-"@resolver-engine/imports@^0.3.3":
- version "0.3.3"
- resolved "https://registry.yarnpkg.com/@resolver-engine/imports/-/imports-0.3.3.tgz#badfb513bb3ff3c1ee9fd56073e3144245588bcc"
- integrity sha512-anHpS4wN4sRMwsAbMXhMfOD/y4a4Oo0Cw/5+rue7hSwGWsDOQaAU1ClK1OxjUC35/peazxEl8JaSRRS+Xb8t3Q==
+"@safe-global/safe-core-sdk-types@^5.0.1":
+ version "5.1.0"
+ resolved "https://registry.yarnpkg.com/@safe-global/safe-core-sdk-types/-/safe-core-sdk-types-5.1.0.tgz#af8d877b9af231242d023c7182f78ff4223bc3f4"
+ integrity sha512-UzXR4zWmVzux25FcIm4H049QhZZpVpIBL5HE+V0p5gHpArZROL+t24fZmsKUf403CtBxIJM5zZSVQL0nFJi+IQ==
dependencies:
- "@resolver-engine/core" "^0.3.3"
- debug "^3.1.0"
- hosted-git-info "^2.6.0"
- path-browserify "^1.0.0"
- url "^0.11.0"
+ abitype "^1.0.2"
-"@safe-global/safe-core-sdk-types@^1.9.0", "@safe-global/safe-core-sdk-types@^1.9.2":
- version "1.10.1"
- resolved "https://registry.yarnpkg.com/@safe-global/safe-core-sdk-types/-/safe-core-sdk-types-1.10.1.tgz#94331b982671d2f2b8cc23114c58baf63d460c81"
- integrity sha512-BKvuYTLOlY16Rq6qCXglmnL6KxInDuXMFqZMaCzwDKiEh+uoHu3xCumG5tVtWOkCgBF4XEZXMqwZUiLcon7IsA==
+"@safe-global/safe-deployments@^1.37.12":
+ version "1.37.12"
+ resolved "https://registry.yarnpkg.com/@safe-global/safe-deployments/-/safe-deployments-1.37.12.tgz#c01b0a272991ae0e63a37d506024a809de53c370"
+ integrity sha512-6UM5wS6b0h4Uu2BCK6sWLNC5UYFBd1Xu4YsuZpoSjlo/6UDbbK6lzYVEgtqbsy8p1z2ZO+Z73WgRo3mlh7awig==
dependencies:
- "@ethersproject/bignumber" "^5.7.0"
- "@ethersproject/contracts" "^5.7.0"
- "@safe-global/safe-deployments" "^1.20.2"
- web3-core "^1.8.1"
- web3-utils "^1.8.1"
-
-"@safe-global/safe-core-sdk-utils@^1.7.4":
- version "1.7.4"
- resolved "https://registry.yarnpkg.com/@safe-global/safe-core-sdk-utils/-/safe-core-sdk-utils-1.7.4.tgz#810d36cf9629129a28eb1b9c6e690b163834b572"
- integrity sha512-ITocwSWlFUA1K9VMP/eJiMfgbP/I9qDxAaFz7ukj5N5NZD3ihVQZkmqML6hjse5UhrfjCnfIEcLkNZhtB2XC2Q==
- dependencies:
- "@safe-global/safe-core-sdk-types" "^1.9.2"
- semver "^7.3.8"
- web3-utils "^1.8.1"
-
-"@safe-global/safe-core-sdk@^3.3.2":
- version "3.3.4"
- resolved "https://registry.yarnpkg.com/@safe-global/safe-core-sdk/-/safe-core-sdk-3.3.4.tgz#d404287f9b910feab3e692243aaf62494ff2d2a9"
- integrity sha512-tgcK7VWo66Z8632xaYDzUHQ8InPOaI10ELk1wCrO/C3QjPwxjIozbMGOMzF4RZPCSJX2YAHowAvOgmEukgSkxA==
- dependencies:
- "@ethersproject/solidity" "^5.7.0"
- "@safe-global/safe-core-sdk-types" "^1.9.2"
- "@safe-global/safe-core-sdk-utils" "^1.7.4"
- "@safe-global/safe-deployments" "^1.25.0"
- ethereumjs-util "^7.1.5"
- semver "^7.3.8"
- web3-utils "^1.8.1"
+ semver "^7.6.2"
-"@safe-global/safe-deployments@^1.20.2", "@safe-global/safe-deployments@^1.25.0":
- version "1.26.0"
- resolved "https://registry.yarnpkg.com/@safe-global/safe-deployments/-/safe-deployments-1.26.0.tgz#b83615b3b5a66e736e08f8ecf2801ed988e9e007"
- integrity sha512-Tw89O4/paT19ieMoiWQbqRApb0Bef/DxweS9rxodXAM5EQModkbyFXGZca+YxXE67sLvWjLr2jJUOxwze8mhGw==
+"@safe-global/safe-deployments@^1.37.14":
+ version "1.37.14"
+ resolved "https://registry.yarnpkg.com/@safe-global/safe-deployments/-/safe-deployments-1.37.14.tgz#31c1d1ff924d94ce639c136bef154de3adf5f75e"
+ integrity sha512-uHpYizq52j1arwWRxHbEbrZsECD5tG87NwLo/xDViRVw/GIrkRC6HerkzfZwiHVjVrC8gN8o3ApLsknYbxrF4w==
dependencies:
- semver "^7.3.7"
+ semver "^7.6.2"
-"@safe-global/safe-ethers-lib@^1.9.2":
- version "1.9.4"
- resolved "https://registry.yarnpkg.com/@safe-global/safe-ethers-lib/-/safe-ethers-lib-1.9.4.tgz#049989a302c6f2010c574cf3a834b0cfb9cf67c5"
- integrity sha512-WhzcmNun0s0VxeVQKRqaapV0vEpdm76zZBR2Du+S+58u1r57OjZkOSL2Gru0tdwkt3FIZZtE3OhDu09M70pVkA==
- dependencies:
- "@safe-global/safe-core-sdk-types" "^1.9.2"
- "@safe-global/safe-core-sdk-utils" "^1.7.4"
- ethers "5.7.2"
+"@safe-global/safe-modules-deployments@^2.2.4":
+ version "2.2.4"
+ resolved "https://registry.yarnpkg.com/@safe-global/safe-modules-deployments/-/safe-modules-deployments-2.2.4.tgz#6e3b22af3a4eeba8e0a8f0952e575d25c5be216e"
+ integrity sha512-m396ZrBPhZVYkapTTIuizyOOtoZsCKbicl0ztgDFfDbi7KbS6AtDP6cV89AYosQxUQS+v0q4ksQd30/j3L1BtQ==
-"@safe-global/safe-service-client@^2.0.0":
- version "2.0.2"
- resolved "https://registry.yarnpkg.com/@safe-global/safe-service-client/-/safe-service-client-2.0.2.tgz#85e00017cb7f63d4cc9c9bf9702bd9cb7b27e62e"
- integrity sha512-UFmA53EMRU++2mzo547+tCWaw2BknpbuMDjR786pPgm5dhB4ADattTdV7pYqYBMWn4uGoGgb2kaImEq097bATQ==
+"@safe-global/types-kit@^1.0.0":
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/@safe-global/types-kit/-/types-kit-1.0.0.tgz#d1f29d65a8ac22f03b0cd3ab54fb518dcf7a85c3"
+ integrity sha512-jZNUeHbWobeVrURbcEvfas4Q1IDasQni5UYm2umUtAR6SBDazp1kGni8IjZPRKq3+8q+fYwu9FmKpX50rUYn3w==
dependencies:
- "@ethersproject/abstract-signer" "^5.7.0"
- "@safe-global/safe-core-sdk-types" "^1.9.2"
- node-fetch "^2.6.6"
+ abitype "^1.0.2"
-"@scure/base@~1.1.0":
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/@scure/base/-/base-1.1.1.tgz#ebb651ee52ff84f420097055f4bf46cfba403938"
- integrity sha512-ZxOhsSyxYwLJj3pLZCefNitxsj093tb2vq90mp2txoYeBqbcjDjqFhyM8eUjq/uFm6zJ+mUuqxlS2FkuSY1MTA==
+"@scure/base@~1.1.0", "@scure/base@~1.1.6", "@scure/base@~1.1.7", "@scure/base@~1.1.8":
+ version "1.1.9"
+ resolved "https://registry.yarnpkg.com/@scure/base/-/base-1.1.9.tgz#e5e142fbbfe251091f9c5f1dd4c834ac04c3dbd1"
+ integrity sha512-8YKhl8GHiNI/pU2VMaofa2Tor7PJRAjwQLBBuilkJ9L5+13yVbC7JO/wS7piioAvPSwR3JKM1IJ/u4xQzbcXKg==
"@scure/bip32@1.1.5":
version "1.1.5"
@@ -1672,6 +1166,24 @@
"@noble/secp256k1" "~1.7.0"
"@scure/base" "~1.1.0"
+"@scure/bip32@1.4.0":
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/@scure/bip32/-/bip32-1.4.0.tgz#4e1f1e196abedcef395b33b9674a042524e20d67"
+ integrity sha512-sVUpc0Vq3tXCkDGYVWGIZTRfnvu8LoTDaev7vbwh0omSvVORONr960MQWdKqJDCReIEmTj3PAr73O3aoxz7OPg==
+ dependencies:
+ "@noble/curves" "~1.4.0"
+ "@noble/hashes" "~1.4.0"
+ "@scure/base" "~1.1.6"
+
+"@scure/bip32@1.5.0":
+ version "1.5.0"
+ resolved "https://registry.yarnpkg.com/@scure/bip32/-/bip32-1.5.0.tgz#dd4a2e1b8a9da60e012e776d954c4186db6328e6"
+ integrity sha512-8EnFYkqEQdnkuGBVpCzKxyIwDCBLDVj3oiX0EKUFre/tOjL/Hqba1D6n/8RcmaQy4f95qQFrO2A8Sr6ybh4NRw==
+ dependencies:
+ "@noble/curves" "~1.6.0"
+ "@noble/hashes" "~1.5.0"
+ "@scure/base" "~1.1.7"
+
"@scure/bip39@1.1.1":
version "1.1.1"
resolved "https://registry.yarnpkg.com/@scure/bip39/-/bip39-1.1.1.tgz#b54557b2e86214319405db819c4b6a370cf340c5"
@@ -1680,6 +1192,22 @@
"@noble/hashes" "~1.2.0"
"@scure/base" "~1.1.0"
+"@scure/bip39@1.3.0":
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/@scure/bip39/-/bip39-1.3.0.tgz#0f258c16823ddd00739461ac31398b4e7d6a18c3"
+ integrity sha512-disdg7gHuTDZtY+ZdkmLpPCk7fxZSu3gBiEGuoC1XYxv9cGx3Z6cpTggCgW6odSOOIXCiDjuGejW+aJKCY/pIQ==
+ dependencies:
+ "@noble/hashes" "~1.4.0"
+ "@scure/base" "~1.1.6"
+
+"@scure/bip39@1.4.0":
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/@scure/bip39/-/bip39-1.4.0.tgz#664d4f851564e2e1d4bffa0339f9546ea55960a6"
+ integrity sha512-BEEm6p8IueV/ZTfQLp/0vhw4NPnT9oWf5+28nvmeUICjP99f4vr2d+qc7AVGDDtwRep6ifR43Yed9ERVmiITzw==
+ dependencies:
+ "@noble/hashes" "~1.5.0"
+ "@scure/base" "~1.1.8"
+
"@sentry/core@5.30.0":
version "5.30.0"
resolved "https://registry.yarnpkg.com/@sentry/core/-/core-5.30.0.tgz#6b203664f69e75106ee8b5a2fe1d717379b331f3"
@@ -1748,24 +1276,10 @@
"@sentry/types" "5.30.0"
tslib "^1.9.3"
-"@sinonjs/commons@^1.7.0":
- version "1.8.3"
- resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.8.3.tgz#3802ddd21a50a949b6721ddd72da36e67e7f1b2d"
- integrity sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ==
- dependencies:
- type-detect "4.0.8"
-
-"@sinonjs/fake-timers@^7.1.0":
- version "7.1.2"
- resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-7.1.2.tgz#2524eae70c4910edccf99b2f4e6efc5894aff7b5"
- integrity sha512-iQADsW4LBMISqZ6Ci1dupJL9pprqwcVFTcOsEmQOEhW+KLCVn/Y4Jrvg2k19fIHCp+iFprriYPTdRcQR8NbUPg==
- dependencies:
- "@sinonjs/commons" "^1.7.0"
-
"@skalenetwork/etherbase-interfaces@^0.0.1-develop.20":
- version "0.0.1-develop.20"
- resolved "https://registry.yarnpkg.com/@skalenetwork/etherbase-interfaces/-/etherbase-interfaces-0.0.1-develop.20.tgz#33f61e18d695fd47063aa39dce4df335d26b9528"
- integrity sha512-j3xnuQtOtjvjAoUMJgSUFxRa9/Egkg1RyA8r6PjcEb33VksE4LWLBy0PNFUFehLZv48595JROTcViGeXXwg5HQ==
+ version "0.0.1"
+ resolved "https://registry.yarnpkg.com/@skalenetwork/etherbase-interfaces/-/etherbase-interfaces-0.0.1.tgz#97ed2069256a835efa1b088a58de17e2783a9e71"
+ integrity sha512-CgAo41sSL1KT9e1d3sUTxW5WPbEvHQwoqo3hLt+VW/6kGYukCuW4AHWMyDr5Jjw9KtjDKSOySDcoukhaeKxToQ==
"@skalenetwork/ima-interfaces@2.0.0":
version "2.0.0"
@@ -1774,6 +1288,23 @@
dependencies:
"@skalenetwork/skale-manager-interfaces" "^0.1.2"
+"@skalenetwork/skale-contracts-ethers-v6@^1.0.2-develop.30":
+ version "1.0.2-develop.30"
+ resolved "https://registry.yarnpkg.com/@skalenetwork/skale-contracts-ethers-v6/-/skale-contracts-ethers-v6-1.0.2-develop.30.tgz#d4adf188041fa5de7c34d6cefbabdd4835547266"
+ integrity sha512-mWYCyK1kneEAd4RsAYXoiVj2kmcYhKtB/gnAGM7nOGaaLjMsHPGLxGU9bGytiZZRiwGf5758x/F2Trrn5bKR9g==
+ dependencies:
+ "@skalenetwork/skale-contracts" "1.0.2-develop.30"
+ ethers "^6.13.4"
+
+"@skalenetwork/skale-contracts@1.0.2-develop.30":
+ version "1.0.2-develop.30"
+ resolved "https://registry.yarnpkg.com/@skalenetwork/skale-contracts/-/skale-contracts-1.0.2-develop.30.tgz#ed165d49ef6de6c4bbc831a741b206ffb833d5ab"
+ integrity sha512-h84NQxobzbI5KZcPZtcgKZYL9/iOJym2mF876pfUY7ftBd0aIu/xtJqIPfeoAcDaevhxJEg9QeabCXKp+9tbCA==
+ dependencies:
+ "@renovatebot/pep440" "^3.0.20"
+ axios "^1.4.0"
+ semver "^7.6.0"
+
"@skalenetwork/skale-manager-interfaces@2.0.0":
version "2.0.0"
resolved "https://registry.yarnpkg.com/@skalenetwork/skale-manager-interfaces/-/skale-manager-interfaces-2.0.0.tgz#afb63131e5c498cfa69219567f9f52b85f0856c9"
@@ -1784,25 +1315,25 @@
resolved "https://registry.yarnpkg.com/@skalenetwork/skale-manager-interfaces/-/skale-manager-interfaces-0.1.2.tgz#88e543c8cc298cd0cc9559892d746d2d74786da8"
integrity sha512-gapSQJahwWMlTB/xp/kMzB6k+9+Skx/N0fvEloiW4CUrkGkSa8+fj16YmUXX45p1hOc45W+JydiJPNgZtx32Dg==
-"@skalenetwork/upgrade-tools@^2.0.2":
- version "2.0.2"
- resolved "https://registry.yarnpkg.com/@skalenetwork/upgrade-tools/-/upgrade-tools-2.0.2.tgz#533a2d43d43706fc1898e003523464cee49ec11e"
- integrity sha512-by5I3TM7RBi4G8FsicwxQE13rqx+XbPYf75x+CJnTELAFxg5UqMaPArG+YlHT2kBjl6O5OsESkCRtwbPcbIjsg==
- dependencies:
- "@openzeppelin/contracts-upgradeable" "^4.4.2"
- "@safe-global/safe-core-sdk" "^3.3.2"
- "@safe-global/safe-core-sdk-types" "^1.9.0"
- "@safe-global/safe-ethers-lib" "^1.9.2"
- "@safe-global/safe-service-client" "^2.0.0"
- axios "^0.27.2"
+"@skalenetwork/upgrade-tools@3.0.0-develop.34":
+ version "3.0.0-develop.34"
+ resolved "https://registry.yarnpkg.com/@skalenetwork/upgrade-tools/-/upgrade-tools-3.0.0-develop.34.tgz#8dfe1f64f241fd734acdbe0f5e35010847aa992b"
+ integrity sha512-yA4S8y/eHJwjxe3288+A4aLjt0z+Wj40pphbQ3poug/p4Uny17jj2+FMG+JN/EQjwkXLNI/BD8m66atOOeoQ8A==
+ dependencies:
+ "@safe-global/api-kit" "^2.4.1"
+ "@safe-global/protocol-kit" "^5.0.1"
+ "@safe-global/safe-core-sdk-types" "^5.0.1"
+ "@skalenetwork/skale-contracts-ethers-v6" "^1.0.2-develop.30"
+ axios "^1.4.0"
ethereumjs-util "^7.1.4"
+ semaphore-async-await "^1.5.1"
-"@smithy/types@^2.0.2":
- version "2.0.2"
- resolved "https://registry.yarnpkg.com/@smithy/types/-/types-2.0.2.tgz#49d42724c909e845bfd80a2e195740614ce497f3"
- integrity sha512-wcymEjIXQ9+NEfE5Yt5TInAqe1o4n+Nh+rh00AwoazppmUt8tdo6URhc5gkDcOYrcvlDVAZE7uG69nDpEGUKxw==
+"@smithy/types@^3.5.0":
+ version "3.6.0"
+ resolved "https://registry.yarnpkg.com/@smithy/types/-/types-3.6.0.tgz#03a52bfd62ee4b7b2a1842c8ae3ada7a0a5ff3a4"
+ integrity sha512-8VXK/KzOHefoC65yRgCn5vG1cysPJjHnOVt9d0ybFQSmJgQj152vMn4EkYhGuaOmnnZvCPav/KnYyE6/KsNZ2w==
dependencies:
- tslib "^2.5.0"
+ tslib "^2.6.2"
"@solidity-parser/parser@^0.13.2":
version "0.13.2"
@@ -1811,12 +1342,10 @@
dependencies:
antlr4ts "^0.5.0-alpha.4"
-"@solidity-parser/parser@^0.16.0":
- version "0.16.1"
- resolved "https://registry.yarnpkg.com/@solidity-parser/parser/-/parser-0.16.1.tgz#f7c8a686974e1536da0105466c4db6727311253c"
- integrity sha512-PdhRFNhbTtu3x8Axm0uYpqOy/lODYQK+MlYSgqIsq2L8SFYEHJPHNUiOTAJbDGzNjjr1/n9AcIayxafR/fWmYw==
- dependencies:
- antlr4ts "^0.5.0-alpha.4"
+"@solidity-parser/parser@^0.18.0":
+ version "0.18.0"
+ resolved "https://registry.yarnpkg.com/@solidity-parser/parser/-/parser-0.18.0.tgz#8e77a02a09ecce957255a2f48c9a7178ec191908"
+ integrity sha512-yfORGUIPgLck41qyN7nbwJRAx17/jAIXCTanHOJZhB6PJ1iAk/84b/xlsVKFSyNyLXIj0dhppoE0+CRws7wlzA==
"@trufflesuite/bigint-buffer@1.1.10":
version "1.1.10"
@@ -1825,13 +1354,6 @@
dependencies:
node-gyp-build "4.4.0"
-"@trufflesuite/bigint-buffer@1.1.9":
- version "1.1.9"
- resolved "https://registry.yarnpkg.com/@trufflesuite/bigint-buffer/-/bigint-buffer-1.1.9.tgz#e2604d76e1e4747b74376d68f1312f9944d0d75d"
- integrity sha512-bdM5cEGCOhDSwminryHJbRmXc1x7dPKg6Pqns3qyTwFlxsqUgxE29lsERS3PlIW1HTjoIGMUqsk1zQQwST1Yxw==
- dependencies:
- node-gyp-build "4.3.0"
-
"@trufflesuite/uws-js-unofficial@20.30.0-unofficial.0":
version "20.30.0-unofficial.0"
resolved "https://registry.yarnpkg.com/@trufflesuite/uws-js-unofficial/-/uws-js-unofficial-20.30.0-unofficial.0.tgz#2fbc2f8ef7e82fbeea6abaf7e8a9d42a02b479d3"
@@ -1842,38 +1364,25 @@
bufferutil "4.0.7"
utf-8-validate "6.0.3"
-"@typechain/ethers-v5@^10.0.0":
- version "10.2.1"
- resolved "https://registry.yarnpkg.com/@typechain/ethers-v5/-/ethers-v5-10.2.1.tgz#50241e6957683281ecfa03fb5a6724d8a3ce2391"
- integrity sha512-n3tQmCZjRE6IU4h6lqUGiQ1j866n5MTCBJreNEHHVWXa2u9GJTaeYyU1/k+1qLutkyw+sS6VAN+AbeiTqsxd/A==
- dependencies:
- lodash "^4.17.15"
- ts-essentials "^7.0.1"
-
-"@typechain/ethers-v5@^11.1.1":
- version "11.1.1"
- resolved "https://registry.yarnpkg.com/@typechain/ethers-v5/-/ethers-v5-11.1.1.tgz#23a358135a302140cf89a186592464dd6bbf1f98"
- integrity sha512-D9WyUrCJ4Z5Gg8T00HWLpuqn1CqSDXlCiUOOpLaWoCbnZrE2jSIOUwR9blBZNo6LE5058e3niVu6xk205Et7tg==
+"@typechain/ethers-v6@^0.5.1":
+ version "0.5.1"
+ resolved "https://registry.yarnpkg.com/@typechain/ethers-v6/-/ethers-v6-0.5.1.tgz#42fe214a19a8b687086c93189b301e2b878797ea"
+ integrity sha512-F+GklO8jBWlsaVV+9oHaPh5NJdd6rAKN4tklGfInX1Q7h0xPgVLP39Jl3eCulPB5qexI71ZFHwbljx4ZXNfouA==
dependencies:
lodash "^4.17.15"
ts-essentials "^7.0.1"
-"@typechain/hardhat@^7.0.0":
- version "7.0.0"
- resolved "https://registry.yarnpkg.com/@typechain/hardhat/-/hardhat-7.0.0.tgz#ffa7465328150e793007fee616ae7b76ed20784d"
- integrity sha512-XB79i5ewg9Met7gMVGfgVkmypicbnI25T5clJBEooMoW2161p4zvKFpoS2O+lBppQyMrPIZkdvl2M3LMDayVcA==
+"@typechain/hardhat@^9.1.0":
+ version "9.1.0"
+ resolved "https://registry.yarnpkg.com/@typechain/hardhat/-/hardhat-9.1.0.tgz#6985015f01dfb37ef2ca8a29c742d05890351ddc"
+ integrity sha512-mtaUlzLlkqTlfPwB3FORdejqBskSnh+Jl8AIJGjXNAQfRQ4ofHADPl1+oU7Z3pAJzmZbUXII8MhOLQltcHgKnA==
dependencies:
fs-extra "^9.1.0"
-"@types/abstract-leveldown@*":
- version "7.2.1"
- resolved "https://registry.yarnpkg.com/@types/abstract-leveldown/-/abstract-leveldown-7.2.1.tgz#bb16403c17754b0c4d5772d71d03b924a03d4c80"
- integrity sha512-YK8irIC+eMrrmtGx0H4ISn9GgzLd9dojZWJaMbjp1YHLl2VqqNFBNrL5Q3KjGf4VE3sf/4hmq6EhQZ7kZp1NoQ==
-
-"@types/bn.js@*":
- version "5.1.0"
- resolved "https://registry.yarnpkg.com/@types/bn.js/-/bn.js-5.1.0.tgz#32c5d271503a12653c62cf4d2b45e6eab8cebc68"
- integrity sha512-QSSVYj7pYFN49kW77o2s9xTCwZ8F2xLbjLLSEVh8D2F4JUhZtPAGOFLTD+ffqksBx/u4cE/KImFjyhqCjn/LIA==
+"@types/bn.js@*", "@types/bn.js@^5.1.0":
+ version "5.1.6"
+ resolved "https://registry.yarnpkg.com/@types/bn.js/-/bn.js-5.1.6.tgz#9ba818eec0c85e4d3c679518428afdf611d03203"
+ integrity sha512-Xh8vSwUeMKeYYrj3cX4lGQgFSF/N03r+tv4AiLl1SucqV+uTQpxRcnM8AkXKHwYP9ZPXOYXRr2KPXpVlIvqh9w==
dependencies:
"@types/node" "*"
@@ -1884,80 +1393,59 @@
dependencies:
"@types/node" "*"
-"@types/bn.js@^5.1.0", "@types/bn.js@^5.1.1":
- version "5.1.1"
- resolved "https://registry.yarnpkg.com/@types/bn.js/-/bn.js-5.1.1.tgz#b51e1b55920a4ca26e9285ff79936bbdec910682"
- integrity sha512-qNrYbZqMx0uJAfKnKclPh+dTwK33KfLHYqtyODwd5HnXOjnkhc4qgn3BrK6RWyGZm5+sIFE7Q7Vz6QQtJB7w7g==
- dependencies:
- "@types/node" "*"
-
"@types/chai-almost@^1.0.1":
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/@types/chai-almost/-/chai-almost-1.0.1.tgz#e8a2de03b53c22e9a2dd2c85ef98bde5f19b685c"
- integrity sha512-UwJTbGAP8Jc84JwpSeCEiE50LBvE7MD4pWYsWdwgZG/umPjUlAYCEMK4WnzbEQO/08HH2jDJ+Ikm9CPzHWdGGQ==
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/@types/chai-almost/-/chai-almost-1.0.3.tgz#bfd9767d5816895dc18c1b453ee07b4626a9a8f2"
+ integrity sha512-NMLjvnFjgxS0Z36whNuoma2p/2Fu6m+dV8eddO8tRAztMAqTqYxFYGyJNsAsOlwx89siUMfxQ1Wdqew2xXsiEg==
dependencies:
"@types/chai" "*"
"@types/chai-as-promised@^7.1.3":
- version "7.1.4"
- resolved "https://registry.yarnpkg.com/@types/chai-as-promised/-/chai-as-promised-7.1.4.tgz#caf64e76fb056b8c8ced4b761ed499272b737601"
- integrity sha512-1y3L1cHePcIm5vXkh1DSGf/zQq5n5xDKG1fpCvf18+uOkpce0Z1ozNFPkyWsVswK7ntN1sZBw3oU6gmN+pDUcA==
+ version "7.1.8"
+ resolved "https://registry.yarnpkg.com/@types/chai-as-promised/-/chai-as-promised-7.1.8.tgz#f2b3d82d53c59626b5d6bbc087667ccb4b677fe9"
+ integrity sha512-ThlRVIJhr69FLlh6IctTXFkmhtP3NpMZ2QGq69StYLyKZFp/HOp1VdKZj7RvfNWYYcJ1xlbLGLLWj1UvP5u/Gw==
dependencies:
"@types/chai" "*"
-"@types/chai@*", "@types/chai@^4.2.12":
- version "4.2.22"
- resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.2.22.tgz#47020d7e4cf19194d43b5202f35f75bd2ad35ce7"
- integrity sha512-tFfcE+DSTzWAgifkjik9AySNqIyNoYwmR+uecPwwD/XRNfvOjmC/FjCxpiUGDkDVDphPfCUecSQVFw+lN3M3kQ==
+"@types/chai@*":
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/@types/chai/-/chai-5.0.0.tgz#7f981e71e69c9b2d422f58f78de1c59179782133"
+ integrity sha512-+DwhEHAaFPPdJ2ral3kNHFQXnTfscEEFsUxzD+d7nlcLrFK23JtNjH71RGasTcHb88b4vVi4mTyfpf8u2L8bdA==
+
+"@types/chai@^4.2.12":
+ version "4.3.20"
+ resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.3.20.tgz#cb291577ed342ca92600430841a00329ba05cecc"
+ integrity sha512-/pC9HAB5I/xMlc5FP77qjCnI16ChlJfW0tGa0IUcFn38VJrTV6DeZ60NU5KZBtaOZqjdpwTWohz5HU1RrhiYxQ==
"@types/elliptic@^6.4.14":
- version "6.4.14"
- resolved "https://registry.yarnpkg.com/@types/elliptic/-/elliptic-6.4.14.tgz#7bbaad60567a588c1f08b10893453e6b9b4de48e"
- integrity sha512-z4OBcDAU0GVwDTuwJzQCiL6188QvZMkvoERgcVjq0/mPM8jCfdwZ3x5zQEVoL9WCAru3aG5wl3Z5Ww5wBWn7ZQ==
+ version "6.4.18"
+ resolved "https://registry.yarnpkg.com/@types/elliptic/-/elliptic-6.4.18.tgz#bc96e26e1ccccbabe8b6f0e409c85898635482e1"
+ integrity sha512-UseG6H5vjRiNpQvrhy4VF/JXdA3V/Fp5amvveaL+fs28BZ6xIKJBPnUPRlEaZpysD9MbpfaLi8lbl7PGUAkpWw==
dependencies:
"@types/bn.js" "*"
"@types/glob@^7.1.1":
- version "7.1.4"
- resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.1.4.tgz#ea59e21d2ee5c517914cb4bc8e4153b99e566672"
- integrity sha512-w+LsMxKyYQm347Otw+IfBXOv9UWVjpHpCDdbBMt8Kz/xbvCYNjP+0qPh91Km3iKfSRLBB0P7fAMf0KHrPu+MyA==
+ version "7.2.0"
+ resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.2.0.tgz#bc1b5bf3aa92f25bd5dd39f35c57361bdce5b2eb"
+ integrity sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==
dependencies:
"@types/minimatch" "*"
"@types/node" "*"
-"@types/json-schema@^7.0.12":
- version "7.0.12"
- resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.12.tgz#d70faba7039d5fca54c83c7dbab41051d2b6f6cb"
- integrity sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==
-
-"@types/level-errors@*":
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/@types/level-errors/-/level-errors-3.0.0.tgz#15c1f4915a5ef763b51651b15e90f6dc081b96a8"
- integrity sha512-/lMtoq/Cf/2DVOm6zE6ORyOM+3ZVm/BvzEZVxUhf6bgh8ZHglXlBqxbxSlJeVp8FCbD3IVvk/VbsaNmDjrQvqQ==
-
-"@types/levelup@^4.3.0":
- version "4.3.3"
- resolved "https://registry.yarnpkg.com/@types/levelup/-/levelup-4.3.3.tgz#4dc2b77db079b1cf855562ad52321aa4241b8ef4"
- integrity sha512-K+OTIjJcZHVlZQN1HmU64VtrC0jC3dXWQozuEIR9zVvltIk90zaGPM2AgT+fIkChpzHhFE3YnvFLCbLtzAmexA==
- dependencies:
- "@types/abstract-leveldown" "*"
- "@types/level-errors" "*"
- "@types/node" "*"
-
"@types/lru-cache@5.1.1", "@types/lru-cache@^5.1.0":
version "5.1.1"
resolved "https://registry.yarnpkg.com/@types/lru-cache/-/lru-cache-5.1.1.tgz#c48c2e27b65d2a153b19bfc1a317e30872e01eef"
integrity sha512-ssE3Vlrys7sdIzs5LOxCzTVMsU7i9oa/IaW92wF32JFb3CVczqOkru2xspuKczHEbG3nvmPY7IFqVmGGHdNbYw==
"@types/minimatch@*":
- version "3.0.5"
- resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.5.tgz#1001cc5e6a3704b83c236027e77f2f58ea010f40"
- integrity sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==
+ version "5.1.2"
+ resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-5.1.2.tgz#07508b45797cb81ec3f273011b054cd0755eddca"
+ integrity sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==
"@types/minimist@^1.2.0":
- version "1.2.2"
- resolved "https://registry.yarnpkg.com/@types/minimist/-/minimist-1.2.2.tgz#ee771e2ba4b3dc5b372935d549fd9617bf345b8c"
- integrity sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==
+ version "1.2.5"
+ resolved "https://registry.yarnpkg.com/@types/minimist/-/minimist-1.2.5.tgz#ec10755e871497bcd83efe927e43ec46e8c0747e"
+ integrity sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag==
"@types/mkdirp@^0.5.2":
version "0.5.2"
@@ -1971,48 +1459,31 @@
resolved "https://registry.yarnpkg.com/@types/mocha/-/mocha-9.1.1.tgz#e7c4f1001eefa4b8afbd1eee27a237fee3bf29c4"
integrity sha512-Z61JK7DKDtdKTWwLeElSEBcWGRLY8g95ic5FoQqI9CMx0ns/Ghep3B4DfcEimiKMvtamNVULVNKEsiwV3aQmXw==
-"@types/node-fetch@^2.6.1":
- version "2.6.4"
- resolved "https://registry.yarnpkg.com/@types/node-fetch/-/node-fetch-2.6.4.tgz#1bc3a26de814f6bf466b25aeb1473fa1afe6a660"
- integrity sha512-1ZX9fcN4Rvkvgv4E6PAY5WXUFWFcRWxZa3EW83UjycOB9ljJCedb2CupIP4RZMEwF/M3eTcCihbBRgwtGbg5Rg==
- dependencies:
- "@types/node" "*"
- form-data "^3.0.0"
-
"@types/node@*":
- version "20.4.5"
- resolved "https://registry.yarnpkg.com/@types/node/-/node-20.4.5.tgz#9dc0a5cb1ccce4f7a731660935ab70b9c00a5d69"
- integrity sha512-rt40Nk13II9JwQBdeYqmbn2Q6IVTA5uPhvSO+JVqdXw/6/4glI6oR9ezty/A9Hg5u7JH4OmYmuQ+XvjKm0Datg==
-
-"@types/node@11.11.6":
- version "11.11.6"
- resolved "https://registry.yarnpkg.com/@types/node/-/node-11.11.6.tgz#df929d1bb2eee5afdda598a41930fe50b43eaa6a"
- integrity sha512-Exw4yUWMBXM3X+8oqzJNRqZSwUAaS4+7NdvHqQuFi/d+synz++xmX3QIf+BFqneW8N31R8Ky+sikfZUXq07ggQ==
+ version "22.7.8"
+ resolved "https://registry.yarnpkg.com/@types/node/-/node-22.7.8.tgz#a1dbf0dc5f71bdd2642fc89caef65d58747ce825"
+ integrity sha512-a922jJy31vqR5sk+kAdIENJjHblqcZ4RmERviFsER4WJcEONqxKcjNOlk0q7OUfrF5sddT+vng070cdfMlrPLg==
+ dependencies:
+ undici-types "~6.19.2"
-"@types/node@^12.12.6":
- version "12.20.27"
- resolved "https://registry.yarnpkg.com/@types/node/-/node-12.20.27.tgz#4141fcad57c332a120591de883e26fe4bb14aaea"
- integrity sha512-qZdePUDSLAZRXXV234bLBEUM0nAQjoxbcSwp1rqSMUe1rZ47mwU6OjciR/JvF1Oo8mc0ys6GE0ks0HGgqAZoGg==
+"@types/node@22.7.5":
+ version "22.7.5"
+ resolved "https://registry.yarnpkg.com/@types/node/-/node-22.7.5.tgz#cfde981727a7ab3611a481510b473ae54442b92b"
+ integrity sha512-jML7s2NAzMWc//QSJ1a3prpk78cOPchGvXJsC3C6R6PSMoooztvRVQEz89gmBTBY1SPMaqo5teB4uNHPdetShQ==
+ dependencies:
+ undici-types "~6.19.2"
"@types/pbkdf2@^3.0.0":
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/@types/pbkdf2/-/pbkdf2-3.1.0.tgz#039a0e9b67da0cdc4ee5dab865caa6b267bb66b1"
- integrity sha512-Cf63Rv7jCQ0LaL8tNXmEyqTHuIJxRdlS5vMh1mj5voN4+QFhVZnlZruezqpWYDiJ8UTzhP0VmeLXCmBk66YrMQ==
+ version "3.1.2"
+ resolved "https://registry.yarnpkg.com/@types/pbkdf2/-/pbkdf2-3.1.2.tgz#2dc43808e9985a2c69ff02e2d2027bd4fe33e8dc"
+ integrity sha512-uRwJqmiXmh9++aSu1VNEn3iIxWOhd8AHXNSdlaLfdAAdSTY9jYVeGWnzejM3dvrkbqE3/hyQkQQ29IFATEGlew==
dependencies:
"@types/node" "*"
"@types/prettier@^2.1.1":
- version "2.4.0"
- resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.4.0.tgz#900b13362610ccd3570fb6eefb911a6732973d00"
- integrity sha512-WHRsy5nMpjXfU9B0LqOqPT06EI2+8Xv5NERy0pLxJLbU98q7uhcGogQzfX+rXpU7S5mgHsLxHrLCufZcV/P8TQ==
-
-"@types/readable-stream@^2.3.13":
- version "2.3.15"
- resolved "https://registry.yarnpkg.com/@types/readable-stream/-/readable-stream-2.3.15.tgz#3d79c9ceb1b6a57d5f6e6976f489b9b5384321ae"
- integrity sha512-oM5JSKQCcICF1wvGgmecmHldZ48OZamtMxcGGVICOJA8o8cahXC1zEVAif8iwoc5j8etxFaRFnf095+CDsuoFQ==
- dependencies:
- "@types/node" "*"
- safe-buffer "~5.1.1"
+ version "2.7.3"
+ resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.7.3.tgz#3e51a17e291d01d17d3fc61422015a933af7a08f"
+ integrity sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA==
"@types/resolve@^0.0.8":
version "0.0.8"
@@ -2022,9 +1493,9 @@
"@types/node" "*"
"@types/secp256k1@^4.0.1":
- version "4.0.3"
- resolved "https://registry.yarnpkg.com/@types/secp256k1/-/secp256k1-4.0.3.tgz#1b8e55d8e00f08ee7220b4d59a6abe89c37a901c"
- integrity sha512-Da66lEIFeIz9ltsdMZcpQvmrmmoqrfju8pm1BH8WbYjZSwUgCwXLb9C+9XYogwBITnbsSaMdVPb2ekf7TV+03w==
+ version "4.0.6"
+ resolved "https://registry.yarnpkg.com/@types/secp256k1/-/secp256k1-4.0.6.tgz#d60ba2349a51c2cbc5e816dcd831a42029d376bf"
+ integrity sha512-hHxJU6PAEUn0TP4S/ZOzuTUvJWuZ6eIKeNKb5RBpODvSl6hp1Wrw4s7ATY50rklRCScUDpHzVA/DQdSjJ3UoYQ==
dependencies:
"@types/node" "*"
@@ -2033,111 +1504,111 @@
resolved "https://registry.yarnpkg.com/@types/seedrandom/-/seedrandom-3.0.1.tgz#1254750a4fec4aff2ebec088ccd0bb02e91fedb4"
integrity sha512-giB9gzDeiCeloIXDgzFBCgjj1k4WxcDrZtGl6h1IqmUPlxF+Nx8Ve+96QCyDZ/HseB/uvDsKbpib9hU5cU53pw==
-"@types/semver@^7.5.0":
- version "7.5.0"
- resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.0.tgz#591c1ce3a702c45ee15f47a42ade72c2fd78978a"
- integrity sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw==
-
"@types/sinon-chai@^3.2.5":
- version "3.2.5"
- resolved "https://registry.yarnpkg.com/@types/sinon-chai/-/sinon-chai-3.2.5.tgz#df21ae57b10757da0b26f512145c065f2ad45c48"
- integrity sha512-bKQqIpew7mmIGNRlxW6Zli/QVyc3zikpGzCa797B/tRnD9OtHvZ/ts8sYXV+Ilj9u3QRaUEM8xrjgd1gwm1BpQ==
+ version "3.2.12"
+ resolved "https://registry.yarnpkg.com/@types/sinon-chai/-/sinon-chai-3.2.12.tgz#c7cb06bee44a534ec84f3a5534c3a3a46fd779b6"
+ integrity sha512-9y0Gflk3b0+NhQZ/oxGtaAJDvRywCa5sIyaVnounqLvmf93yBF4EgIRspePtkMs3Tr844nCclYMlcCNmLCvjuQ==
dependencies:
"@types/chai" "*"
"@types/sinon" "*"
"@types/sinon@*":
- version "10.0.5"
- resolved "https://registry.yarnpkg.com/@types/sinon/-/sinon-10.0.5.tgz#01e7037ac0c6c5c54c1606463421ad5c6afc43e7"
- integrity sha512-BrAUy0yq3n84XOykYGvGbDir9nBIYwQm2NdBNQT0DbtDLqh/5nMUsjz5XfwrefFNLPE9B6g8yLOZREpvw0J40A==
- dependencies:
- "@sinonjs/fake-timers" "^7.1.0"
-
-"@typescript-eslint/eslint-plugin@^6.2.1":
- version "6.2.1"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.2.1.tgz#41b79923fee46a745a3a50cba1c33c622aa3c79a"
- integrity sha512-iZVM/ALid9kO0+I81pnp1xmYiFyqibAHzrqX4q5YvvVEyJqY+e6rfTXSCsc2jUxGNqJqTfFSSij/NFkZBiBzLw==
- dependencies:
- "@eslint-community/regexpp" "^4.5.1"
- "@typescript-eslint/scope-manager" "6.2.1"
- "@typescript-eslint/type-utils" "6.2.1"
- "@typescript-eslint/utils" "6.2.1"
- "@typescript-eslint/visitor-keys" "6.2.1"
- debug "^4.3.4"
+ version "17.0.3"
+ resolved "https://registry.yarnpkg.com/@types/sinon/-/sinon-17.0.3.tgz#9aa7e62f0a323b9ead177ed23a36ea757141a5fa"
+ integrity sha512-j3uovdn8ewky9kRBG19bOwaZbexJu/XjtkHyjvUgt4xfPFz18dcORIMqnYh66Fx3Powhcr85NT5+er3+oViapw==
+ dependencies:
+ "@types/sinonjs__fake-timers" "*"
+
+"@types/sinonjs__fake-timers@*":
+ version "8.1.5"
+ resolved "https://registry.yarnpkg.com/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-8.1.5.tgz#5fd3592ff10c1e9695d377020c033116cc2889f2"
+ integrity sha512-mQkU2jY8jJEF7YHjHvsQO8+3ughTL1mcnn96igfhONmR+fUPSKIkefQYpSe8bsly2Ep7oQbn/6VG5/9/0qcArQ==
+
+"@typescript-eslint/eslint-plugin@^8.14.0":
+ version "8.14.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.14.0.tgz#7dc0e419c87beadc8f554bf5a42e5009ed3748dc"
+ integrity sha512-tqp8H7UWFaZj0yNO6bycd5YjMwxa6wIHOLZvWPkidwbgLCsBMetQoGj7DPuAlWa2yGO3H48xmPwjhsSPPCGU5w==
+ dependencies:
+ "@eslint-community/regexpp" "^4.10.0"
+ "@typescript-eslint/scope-manager" "8.14.0"
+ "@typescript-eslint/type-utils" "8.14.0"
+ "@typescript-eslint/utils" "8.14.0"
+ "@typescript-eslint/visitor-keys" "8.14.0"
graphemer "^1.4.0"
- ignore "^5.2.4"
+ ignore "^5.3.1"
natural-compare "^1.4.0"
- natural-compare-lite "^1.4.0"
- semver "^7.5.4"
- ts-api-utils "^1.0.1"
+ ts-api-utils "^1.3.0"
-"@typescript-eslint/parser@^6.2.1":
- version "6.2.1"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-6.2.1.tgz#e18a31eea1cca8841a565f1701960c8123ed07f9"
- integrity sha512-Ld+uL1kYFU8e6btqBFpsHkwQ35rw30IWpdQxgOqOh4NfxSDH6uCkah1ks8R/RgQqI5hHPXMaLy9fbFseIe+dIg==
+"@typescript-eslint/parser@^8.14.0":
+ version "8.14.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-8.14.0.tgz#0a7e9dbc11bc07716ab2d7b1226217e9f6b51fc8"
+ integrity sha512-2p82Yn9juUJq0XynBXtFCyrBDb6/dJombnz6vbo6mgQEtWHfvHbQuEa9kAOVIt1c9YFwi7H6WxtPj1kg+80+RA==
dependencies:
- "@typescript-eslint/scope-manager" "6.2.1"
- "@typescript-eslint/types" "6.2.1"
- "@typescript-eslint/typescript-estree" "6.2.1"
- "@typescript-eslint/visitor-keys" "6.2.1"
+ "@typescript-eslint/scope-manager" "8.14.0"
+ "@typescript-eslint/types" "8.14.0"
+ "@typescript-eslint/typescript-estree" "8.14.0"
+ "@typescript-eslint/visitor-keys" "8.14.0"
debug "^4.3.4"
-"@typescript-eslint/scope-manager@6.2.1":
- version "6.2.1"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-6.2.1.tgz#b6f43a867b84e5671fe531f2b762e0b68f7cf0c4"
- integrity sha512-UCqBF9WFqv64xNsIEPfBtenbfodPXsJ3nPAr55mGPkQIkiQvgoWNo+astj9ZUfJfVKiYgAZDMnM6dIpsxUMp3Q==
+"@typescript-eslint/scope-manager@8.14.0":
+ version "8.14.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-8.14.0.tgz#01f37c147a735cd78f0ff355e033b9457da1f373"
+ integrity sha512-aBbBrnW9ARIDn92Zbo7rguLnqQ/pOrUguVpbUwzOhkFg2npFDwTgPGqFqE0H5feXcOoJOfX3SxlJaKEVtq54dw==
dependencies:
- "@typescript-eslint/types" "6.2.1"
- "@typescript-eslint/visitor-keys" "6.2.1"
+ "@typescript-eslint/types" "8.14.0"
+ "@typescript-eslint/visitor-keys" "8.14.0"
-"@typescript-eslint/type-utils@6.2.1":
- version "6.2.1"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-6.2.1.tgz#8eb8a2cccdf39cd7cf93e02bd2c3782dc90b0525"
- integrity sha512-fTfCgomBMIgu2Dh2Or3gMYgoNAnQm3RLtRp+jP7A8fY+LJ2+9PNpi5p6QB5C4RSP+U3cjI0vDlI3mspAkpPVbQ==
+"@typescript-eslint/type-utils@8.14.0":
+ version "8.14.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-8.14.0.tgz#455c6af30c336b24a1af28bc4f81b8dd5d74d94d"
+ integrity sha512-Xcz9qOtZuGusVOH5Uk07NGs39wrKkf3AxlkK79RBK6aJC1l03CobXjJbwBPSidetAOV+5rEVuiT1VSBUOAsanQ==
dependencies:
- "@typescript-eslint/typescript-estree" "6.2.1"
- "@typescript-eslint/utils" "6.2.1"
+ "@typescript-eslint/typescript-estree" "8.14.0"
+ "@typescript-eslint/utils" "8.14.0"
debug "^4.3.4"
- ts-api-utils "^1.0.1"
+ ts-api-utils "^1.3.0"
-"@typescript-eslint/types@6.2.1":
- version "6.2.1"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-6.2.1.tgz#7fcdeceb503aab601274bf5e210207050d88c8ab"
- integrity sha512-528bGcoelrpw+sETlyM91k51Arl2ajbNT9L4JwoXE2dvRe1yd8Q64E4OL7vHYw31mlnVsf+BeeLyAZUEQtqahQ==
+"@typescript-eslint/types@8.14.0":
+ version "8.14.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-8.14.0.tgz#0d33d8d0b08479c424e7d654855fddf2c71e4021"
+ integrity sha512-yjeB9fnO/opvLJFAsPNYlKPnEM8+z4og09Pk504dkqonT02AyL5Z9SSqlE0XqezS93v6CXn49VHvB2G7XSsl0g==
-"@typescript-eslint/typescript-estree@6.2.1":
- version "6.2.1"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-6.2.1.tgz#2af6e90c1e91cb725a5fe1682841a3f74549389e"
- integrity sha512-G+UJeQx9AKBHRQBpmvr8T/3K5bJa485eu+4tQBxFq0KoT22+jJyzo1B50JDT9QdC1DEmWQfdKsa8ybiNWYsi0Q==
+"@typescript-eslint/typescript-estree@8.14.0":
+ version "8.14.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-8.14.0.tgz#a7a3a5a53a6c09313e12fb4531d4ff582ee3c312"
+ integrity sha512-OPXPLYKGZi9XS/49rdaCbR5j/S14HazviBlUQFvSKz3npr3NikF+mrgK7CFVur6XEt95DZp/cmke9d5i3vtVnQ==
dependencies:
- "@typescript-eslint/types" "6.2.1"
- "@typescript-eslint/visitor-keys" "6.2.1"
+ "@typescript-eslint/types" "8.14.0"
+ "@typescript-eslint/visitor-keys" "8.14.0"
debug "^4.3.4"
- globby "^11.1.0"
+ fast-glob "^3.3.2"
is-glob "^4.0.3"
- semver "^7.5.4"
- ts-api-utils "^1.0.1"
+ minimatch "^9.0.4"
+ semver "^7.6.0"
+ ts-api-utils "^1.3.0"
-"@typescript-eslint/utils@6.2.1":
- version "6.2.1"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-6.2.1.tgz#2aa4279ec13053d05615bcbde2398e1e8f08c334"
- integrity sha512-eBIXQeupYmxVB6S7x+B9SdBeB6qIdXKjgQBge2J+Ouv8h9Cxm5dHf/gfAZA6dkMaag+03HdbVInuXMmqFB/lKQ==
+"@typescript-eslint/utils@8.14.0":
+ version "8.14.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-8.14.0.tgz#ac2506875e03aba24e602364e43b2dfa45529dbd"
+ integrity sha512-OGqj6uB8THhrHj0Fk27DcHPojW7zKwKkPmHXHvQ58pLYp4hy8CSUdTKykKeh+5vFqTTVmjz0zCOOPKRovdsgHA==
dependencies:
"@eslint-community/eslint-utils" "^4.4.0"
- "@types/json-schema" "^7.0.12"
- "@types/semver" "^7.5.0"
- "@typescript-eslint/scope-manager" "6.2.1"
- "@typescript-eslint/types" "6.2.1"
- "@typescript-eslint/typescript-estree" "6.2.1"
- semver "^7.5.4"
-
-"@typescript-eslint/visitor-keys@6.2.1":
- version "6.2.1"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-6.2.1.tgz#442e7c09fe94b715a54ebe30e967987c3c41fbf4"
- integrity sha512-iTN6w3k2JEZ7cyVdZJTVJx2Lv7t6zFA8DCrJEHD2mwfc16AEvvBWVhbFh34XyG2NORCd0viIgQY1+u7kPI0WpA==
+ "@typescript-eslint/scope-manager" "8.14.0"
+ "@typescript-eslint/types" "8.14.0"
+ "@typescript-eslint/typescript-estree" "8.14.0"
+
+"@typescript-eslint/visitor-keys@8.14.0":
+ version "8.14.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-8.14.0.tgz#2418d5a54669af9658986ade4e6cfb7767d815ad"
+ integrity sha512-vG0XZo8AdTH9OE6VFRwAZldNc7qtJ/6NLGWak+BtENuEUXGZgFpihILPiBvKXvJ2nFu27XNGC6rKiwuaoMbYzQ==
dependencies:
- "@typescript-eslint/types" "6.2.1"
- eslint-visitor-keys "^3.4.1"
+ "@typescript-eslint/types" "8.14.0"
+ eslint-visitor-keys "^3.4.3"
+
+"@ungap/structured-clone@^1.2.0":
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.2.0.tgz#756641adb587851b5ccb3e095daf27ae581c8406"
+ integrity sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==
abbrev@1:
version "1.1.1"
@@ -2147,21 +1618,14 @@ abbrev@1:
abbrev@1.0.x:
version "1.0.9"
resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.0.9.tgz#91b4792588a7738c25f35dd6f63752a2f8776135"
- integrity sha1-kbR5JYinc4wl813W9jdSovh3YTU=
-
-abort-controller@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/abort-controller/-/abort-controller-3.0.0.tgz#eaf54d53b62bae4138e809ca225c8439a6efb392"
- integrity sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==
- dependencies:
- event-target-shim "^5.0.0"
+ integrity sha512-LEyx4aLEC3x6T0UguF6YILf+ntvmOaWsVfENmIW0E9H09vKlLDGelMjjSm0jkDHALj8A8quZ/HapKNigzwge+Q==
-abortcontroller-polyfill@^1.7.3:
- version "1.7.5"
- resolved "https://registry.yarnpkg.com/abortcontroller-polyfill/-/abortcontroller-polyfill-1.7.5.tgz#6738495f4e901fbb57b6c0611d0c75f76c485bed"
- integrity sha512-JMJ5soJWP18htbbxJjG7bG6yuI6pRhgJ0scHHTfkUjf6wjP912xZWvM+A4sJK3gqd9E8fcPbDnOefbA9Th/FIQ==
+abitype@1.0.6, abitype@^1.0.2:
+ version "1.0.6"
+ resolved "https://registry.yarnpkg.com/abitype/-/abitype-1.0.6.tgz#76410903e1d88e34f1362746e2d407513c38565b"
+ integrity sha512-MMSqYh4+C/aVqI2RQaWqbvI4Kxo5cQV40WQ4QFtDnNzCkqChm8MuENhElmynZlO0qUy/ObkEUaXtKqYnx1Kp3A==
-abstract-level@1.0.3, abstract-level@^1.0.0, abstract-level@^1.0.2, abstract-level@^1.0.3:
+abstract-level@1.0.3:
version "1.0.3"
resolved "https://registry.yarnpkg.com/abstract-level/-/abstract-level-1.0.3.tgz#78a67d3d84da55ee15201486ab44c09560070741"
integrity sha512-t6jv+xHy+VYwc4xqZMn2Pa9DjcdzvzZmQGRjTFc8spIbRGHgBrEKbPq+rYXc7CCo0lxgYvSgKVg9qZAhpVQSjA==
@@ -2186,28 +1650,6 @@ abstract-leveldown@7.2.0, abstract-leveldown@^7.2.0:
level-supports "^2.0.1"
queue-microtask "^1.2.3"
-abstract-leveldown@^6.2.1:
- version "6.3.0"
- resolved "https://registry.yarnpkg.com/abstract-leveldown/-/abstract-leveldown-6.3.0.tgz#d25221d1e6612f820c35963ba4bd739928f6026a"
- integrity sha512-TU5nlYgta8YrBMNpc9FwQzRbiXsj49gsALsXadbGHt9CROPzX5fB0rWDR5mtdpOOKa5XqRFpbj1QroPAoPzVjQ==
- dependencies:
- buffer "^5.5.0"
- immediate "^3.2.3"
- level-concat-iterator "~2.0.0"
- level-supports "~1.0.0"
- xtend "~4.0.0"
-
-abstract-leveldown@~6.2.1:
- version "6.2.3"
- resolved "https://registry.yarnpkg.com/abstract-leveldown/-/abstract-leveldown-6.2.3.tgz#036543d87e3710f2528e47040bc3261b77a9a8eb"
- integrity sha512-BsLm5vFMRUrrLeCcRc+G0t2qOaTzpoJQLOubq2XM72eNpjF5UdU5o/5NvlNhx95XHcAvcl8OMXr4mlg/fRgUXQ==
- dependencies:
- buffer "^5.5.0"
- immediate "^3.2.3"
- level-concat-iterator "~2.0.0"
- level-supports "~1.0.0"
- xtend "~4.0.0"
-
acorn-jsx@^5.0.0, acorn-jsx@^5.3.2:
version "5.3.2"
resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937"
@@ -2219,24 +1661,19 @@ acorn@^6.0.7:
integrity sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==
acorn@^8.9.0:
- version "8.10.0"
- resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.10.0.tgz#8be5b3907a67221a81ab23c7889c4c5526b62ec5"
- integrity sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==
-
-address@^1.0.1:
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/address/-/address-1.1.2.tgz#bf1116c9c758c51b7a933d296b72c221ed9428b6"
- integrity sha512-aT6camzM4xEA54YVJYSqxz1kv4IHnQZRtThJJHhUMRExaU5spC7jX5ugSwTaTgJliIgs4VhZOk7htClvQ/LmRA==
+ version "8.13.0"
+ resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.13.0.tgz#2a30d670818ad16ddd6a35d3842dacec9e5d7ca3"
+ integrity sha512-8zSiw54Oxrdym50NlZ9sUusyO1Z1ZchgRLWRaK6c86XJFClyCgFKetdowBg5bKxyp/u+CDBJG4Mpp0m3HLZl9w==
adm-zip@^0.4.16:
version "0.4.16"
resolved "https://registry.yarnpkg.com/adm-zip/-/adm-zip-0.4.16.tgz#cf4c508fdffab02c269cbc7f471a875f05570365"
integrity sha512-TFi4HBKSGfIKsK5YCkKaaFG2m4PEDyViZmEwof3MTIgzimHLto6muaHVpbrljdIvIrFZzEq/p4nafOeLcYegrg==
-aes-js@3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/aes-js/-/aes-js-3.0.0.tgz#e21df10ad6c2053295bcbb8dab40b09dbea87e4d"
- integrity sha1-4h3xCtbCBTKVvLuNq0Cwnb6ofk0=
+aes-js@4.0.0-beta.5:
+ version "4.0.0-beta.5"
+ resolved "https://registry.yarnpkg.com/aes-js/-/aes-js-4.0.0-beta.5.tgz#8d2452c52adedebc3a3e28465d858c11ca315873"
+ integrity sha512-G965FqalsNyrPqgEGON7nIx1e/OVENSgiEIzyC63haUMuvNnwIgIjMs52hlTCKhkBny7A2ORNlfY9Zu+jmGk1Q==
agent-base@6:
version "6.0.2"
@@ -2253,7 +1690,7 @@ aggregate-error@^3.0.0:
clean-stack "^2.0.0"
indent-string "^4.0.0"
-ajv@^6.10.2, ajv@^6.12.3, ajv@^6.12.4, ajv@^6.6.1, ajv@^6.9.1:
+ajv@^6.10.2, ajv@^6.12.4, ajv@^6.6.1, ajv@^6.9.1:
version "6.12.6"
resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4"
integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==
@@ -2264,19 +1701,19 @@ ajv@^6.10.2, ajv@^6.12.3, ajv@^6.12.4, ajv@^6.6.1, ajv@^6.9.1:
uri-js "^4.2.2"
ajv@^8.0.1:
- version "8.12.0"
- resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.12.0.tgz#d1a0527323e22f53562c567c00991577dfbe19d1"
- integrity sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==
+ version "8.17.1"
+ resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.17.1.tgz#37d9a5c776af6bc92d7f4f9510eba4c0a60d11a6"
+ integrity sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==
dependencies:
- fast-deep-equal "^3.1.1"
+ fast-deep-equal "^3.1.3"
+ fast-uri "^3.0.1"
json-schema-traverse "^1.0.0"
require-from-string "^2.0.2"
- uri-js "^4.2.2"
-amazon-cognito-identity-js@^6.0.1:
- version "6.3.1"
- resolved "https://registry.yarnpkg.com/amazon-cognito-identity-js/-/amazon-cognito-identity-js-6.3.1.tgz#d9a4c1a92f4b059330df8ea075f65106d2605409"
- integrity sha512-PxBdufgS8uZShrcIFAsRjmqNXsh/4fXOWUGQOUhKLHWWK1pcp/y+VeFF48avXIWefM8XwsT3JlN6m9J2eHt4LA==
+amazon-cognito-identity-js@^6.3.6:
+ version "6.3.12"
+ resolved "https://registry.yarnpkg.com/amazon-cognito-identity-js/-/amazon-cognito-identity-js-6.3.12.tgz#af73df033094ad4c679c19cf6122b90058021619"
+ integrity sha512-s7NKDZgx336cp+oDeUtB2ZzT8jWJp/v2LWuYl+LQtMEODe22RF1IJ4nRiDATp+rp1pTffCZcm44Quw4jx2bqNg==
dependencies:
"@aws-crypto/sha256-js" "1.2.2"
buffer "4.9.2"
@@ -2287,17 +1724,19 @@ amazon-cognito-identity-js@^6.0.1:
amdefine@>=0.0.4:
version "1.0.1"
resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5"
- integrity sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=
+ integrity sha512-S2Hw0TtNkMJhIabBwIojKL9YHO5T0n5eNqWJ7Lrlel/zDbftQpxpapi8tZs3X1HWa+u+QeydGmzzNU0m09+Rcg==
-ansi-colors@3.2.3:
- version "3.2.3"
- resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.2.3.tgz#57d35b8686e851e2cc04c403f1c00203976a1813"
- integrity sha512-LEHHyuhlPY3TmuUYMh2oz89lTShfvgbmzaBcxve9t/9Wuy7Dwf4yoAKcND7KFT1HAQfqZ12qtc+DUrBMeKF9nw==
+ansi-align@^3.0.0:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-3.0.1.tgz#0cdf12e111ace773a86e9a1fad1225c43cb19a59"
+ integrity sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==
+ dependencies:
+ string-width "^4.1.0"
-ansi-colors@4.1.1, ansi-colors@^4.1.1:
- version "4.1.1"
- resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348"
- integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==
+ansi-colors@^4.1.1, ansi-colors@^4.1.3:
+ version "4.1.3"
+ resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.3.tgz#37611340eb2243e70cc604cad35d63270d48781b"
+ integrity sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==
ansi-escapes@^3.2.0:
version "3.2.0"
@@ -2312,25 +1751,20 @@ ansi-escapes@^4.3.0:
type-fest "^0.21.3"
ansi-regex@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998"
- integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.1.tgz#123d6479e92ad45ad897d4054e3c7ca7db4944e1"
+ integrity sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==
ansi-regex@^4.1.0:
- version "4.1.0"
- resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997"
- integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==
+ version "4.1.1"
+ resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.1.tgz#164daac87ab2d6f6db3a29875e2d1766582dabed"
+ integrity sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==
ansi-regex@^5.0.1:
version "5.0.1"
resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304"
integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==
-ansi-regex@^6.0.1:
- version "6.1.0"
- resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.1.0.tgz#95ec409c69619d6cb1b8b34f14b660ef28ebd654"
- integrity sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==
-
ansi-styles@^3.2.0, ansi-styles@^3.2.1:
version "3.2.1"
resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d"
@@ -2355,7 +1789,7 @@ antlr4ts@^0.5.0-alpha.4:
resolved "https://registry.yarnpkg.com/antlr4ts/-/antlr4ts-0.5.0-alpha.4.tgz#71702865a87478ed0b40c0709f422cf14d51652a"
integrity sha512-WPQDt1B74OfPv/IMS2ekXAKkTZIHl88uMetg6q3OTqgFxZ/dxDXI0EWLyZid/1Pe6hTftyg5N7gel5wNAGxXyQ==
-anymatch@~3.1.1:
+anymatch@~3.1.2:
version "3.1.3"
resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e"
integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==
@@ -2363,14 +1797,6 @@ anymatch@~3.1.1:
normalize-path "^3.0.0"
picomatch "^2.0.4"
-anymatch@~3.1.2:
- version "3.1.2"
- resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716"
- integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==
- dependencies:
- normalize-path "^3.0.0"
- picomatch "^2.0.4"
-
arg@^4.1.0:
version "4.1.3"
resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089"
@@ -2398,14 +1824,6 @@ array-back@^4.0.1, array-back@^4.0.2:
resolved "https://registry.yarnpkg.com/array-back/-/array-back-4.0.2.tgz#8004e999a6274586beeb27342168652fdb89fa1e"
integrity sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg==
-array-buffer-byte-length@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz#fabe8bc193fea865f317fe7807085ee0dee5aead"
- integrity sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==
- dependencies:
- call-bind "^1.0.2"
- is-array-buffer "^3.0.1"
-
array-timsort@^1.0.3:
version "1.0.3"
resolved "https://registry.yarnpkg.com/array-timsort/-/array-timsort-1.0.3.tgz#3c9e4199e54fb2b9c3fe5976396a21614ef0d926"
@@ -2416,41 +1834,6 @@ array-union@^2.1.0:
resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d"
integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==
-array.prototype.reduce@^1.0.5:
- version "1.0.5"
- resolved "https://registry.yarnpkg.com/array.prototype.reduce/-/array.prototype.reduce-1.0.5.tgz#6b20b0daa9d9734dd6bc7ea66b5bbce395471eac"
- integrity sha512-kDdugMl7id9COE8R7MHF5jWk7Dqt/fs4Pv+JXoICnYwqpjjjbUurz6w5fT5IG6brLdJhv6/VoHB0H7oyIBXd+Q==
- dependencies:
- call-bind "^1.0.2"
- define-properties "^1.1.4"
- es-abstract "^1.20.4"
- es-array-method-boxes-properly "^1.0.0"
- is-string "^1.0.7"
-
-arraybuffer.prototype.slice@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.1.tgz#9b5ea3868a6eebc30273da577eb888381c0044bb"
- integrity sha512-09x0ZWFEjj4WD8PDbykUwo3t9arLn8NIzmmYEJFpYekOAQjpkGSyrQhNoRTcwwcFRu+ycWF78QZ63oWTqSjBcw==
- dependencies:
- array-buffer-byte-length "^1.0.0"
- call-bind "^1.0.2"
- define-properties "^1.2.0"
- get-intrinsic "^1.2.1"
- is-array-buffer "^3.0.2"
- is-shared-array-buffer "^1.0.2"
-
-asn1@~0.2.3:
- version "0.2.6"
- resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.6.tgz#0d3a7bb6e64e02a90c0303b31f292868ea09a08d"
- integrity sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==
- dependencies:
- safer-buffer "~2.1.0"
-
-assert-plus@1.0.0, assert-plus@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525"
- integrity sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==
-
assertion-error@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-1.1.0.tgz#e60b6b0e8f301bd97e5375215bda406c85118c0b"
@@ -2459,7 +1842,7 @@ assertion-error@^1.1.0:
ast-parents@0.0.1:
version "0.0.1"
resolved "https://registry.yarnpkg.com/ast-parents/-/ast-parents-0.0.1.tgz#508fd0f05d0c48775d9eccda2e174423261e8dd3"
- integrity sha1-UI/Q8F0MSHddnszaLhdEIyYejdM=
+ integrity sha512-XHusKxKz3zoYk1ic8Un640joHbFMhbqneyoZfoKnEGtf2ey9Uh/IdpcQplODdO/kENaMIWsD0nJm4+wX3UNLHA==
astral-regex@^1.0.0:
version "1.0.0"
@@ -2471,7 +1854,7 @@ astral-regex@^2.0.0:
resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31"
integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==
-async-eventemitter@0.2.4, async-eventemitter@^0.2.4:
+async-eventemitter@0.2.4:
version "0.2.4"
resolved "https://registry.yarnpkg.com/async-eventemitter/-/async-eventemitter-0.2.4.tgz#f5e7c8ca7d3e46aab9ec40a292baf686a0bafaca"
integrity sha512-pd20BwL7Yt1zwDFy+8MX8F1+WCT8aQeKj0kQnTrH9WaeRETlRamVhD0JtRPmrV4GfOJ2F9CvdQkZeZhnh2TuHw==
@@ -2488,61 +1871,38 @@ async-retry@^1.3.3:
async@1.x:
version "1.5.2"
resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a"
- integrity sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=
+ integrity sha512-nSVgobk4rv61R9PUSDtYt7mPVB2olxNR5RWJcAsH676/ef11bUZwvu7+RGYrYauVdDPcO519v68wRhXQtxsV9w==
async@^2.4.0:
- version "2.6.3"
- resolved "https://registry.yarnpkg.com/async/-/async-2.6.3.tgz#d72625e2344a3656e3a3ad4fa749fa83299d82ff"
- integrity sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==
+ version "2.6.4"
+ resolved "https://registry.yarnpkg.com/async/-/async-2.6.4.tgz#706b7ff6084664cd7eae713f6f965433b5504221"
+ integrity sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==
dependencies:
lodash "^4.17.14"
asynckit@^0.4.0:
version "0.4.0"
resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"
- integrity sha1-x57Zf380y48robyXkLzDZkdLS3k=
+ integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==
at-least-node@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2"
integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==
-available-typed-arrays@^1.0.5:
- version "1.0.5"
- resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz#92f95616501069d07d10edb2fc37d3e1c65123b7"
- integrity sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==
-
-aws-sign2@~0.7.0:
- version "0.7.0"
- resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8"
- integrity sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==
-
-aws4@^1.8.0:
- version "1.12.0"
- resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.12.0.tgz#ce1c9d143389679e253b314241ea9aa5cec980d3"
- integrity sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg==
-
-axios@^0.21.2, axios@^0.21.4:
+axios@^0.21.4:
version "0.21.4"
resolved "https://registry.yarnpkg.com/axios/-/axios-0.21.4.tgz#c67b90dc0568e5c1cf2b0b858c43ba28e2eda575"
integrity sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==
dependencies:
follow-redirects "^1.14.0"
-axios@^0.27.2:
- version "0.27.2"
- resolved "https://registry.yarnpkg.com/axios/-/axios-0.27.2.tgz#207658cc8621606e586c85db4b41a750e756d972"
- integrity sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==
- dependencies:
- follow-redirects "^1.14.9"
- form-data "^4.0.0"
-
-axios@^1.4.0:
- version "1.4.0"
- resolved "https://registry.yarnpkg.com/axios/-/axios-1.4.0.tgz#38a7bf1224cd308de271146038b551d725f0be1f"
- integrity sha512-S4XCWMEmzvo64T9GfvQDOXgYRDJ/wsSZc7Jvdgx5u1sd0JwsuPLqb3SYmusag+edF6ziyMensPVqLTSc1PiSEA==
+axios@^1.4.0, axios@^1.7.2:
+ version "1.7.7"
+ resolved "https://registry.yarnpkg.com/axios/-/axios-1.7.7.tgz#2f554296f9892a72ac8d8e4c5b79c14a91d0a47f"
+ integrity sha512-S4kL7XrjgBmvdGut0sN3yJxqYzrDOnivkBiN0OFs6hLiUam3UPvswUo0kqGyhqUZGEOytHyumEdXsAkgCOUf3Q==
dependencies:
- follow-redirects "^1.15.0"
+ follow-redirects "^1.15.6"
form-data "^4.0.0"
proxy-from-env "^1.1.0"
@@ -2552,9 +1912,9 @@ balanced-match@^1.0.0:
integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==
base-x@^3.0.2:
- version "3.0.9"
- resolved "https://registry.yarnpkg.com/base-x/-/base-x-3.0.9.tgz#6349aaabb58526332de9f60995e548a53fe21320"
- integrity sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ==
+ version "3.0.10"
+ resolved "https://registry.yarnpkg.com/base-x/-/base-x-3.0.10.tgz#62de58653f8762b5d6f8d9fe30fa75f7b2585a75"
+ integrity sha512-7d0s06rR9rYaIWHkpfLIFICM/tkSVdoPC9qYAQRpxn9DdKNWNsKC0uk++akckyLq16Tx2WIinnZ6WRriAt6njQ==
dependencies:
safe-buffer "^5.0.1"
@@ -2563,42 +1923,10 @@ base64-js@^1.0.2, base64-js@^1.3.1:
resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a"
integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==
-bcrypt-pbkdf@^1.0.0:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e"
- integrity sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==
- dependencies:
- tweetnacl "^0.14.3"
-
-bech32@1.1.4:
- version "1.1.4"
- resolved "https://registry.yarnpkg.com/bech32/-/bech32-1.1.4.tgz#e38c9f37bf179b8eb16ae3a772b40c356d4832e9"
- integrity sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==
-
-bigint-crypto-utils@^3.0.23:
- version "3.3.0"
- resolved "https://registry.yarnpkg.com/bigint-crypto-utils/-/bigint-crypto-utils-3.3.0.tgz#72ad00ae91062cf07f2b1def9594006c279c1d77"
- integrity sha512-jOTSb+drvEDxEq6OuUybOAv/xxoh3cuYRUIPyu8sSHQNKM303UQ2R1DAo45o1AkcIXw6fzbaFI1+xGGdaXs2lg==
-
-bignumber.js@^9.0.0:
- version "9.0.1"
- resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-9.0.1.tgz#8d7ba124c882bfd8e43260c67475518d0689e4e5"
- integrity sha512-IdZR9mh6ahOBv/hYGiXyVuyCetmGJhtYkqLBpTStdhEGjegpPlUawydyaF3pbIOFynJTpllEs+NP+CS9jKFLjA==
-
binary-extensions@^2.0.0:
- version "2.2.0"
- resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d"
- integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==
-
-bip39@3.0.4:
- version "3.0.4"
- resolved "https://registry.yarnpkg.com/bip39/-/bip39-3.0.4.tgz#5b11fed966840b5e1b8539f0f54ab6392969b2a0"
- integrity sha512-YZKQlb752TrUWqHWj7XAwCSjYEgGAk+/Aas3V7NyjQeZYsztO8JnQUaCWhcnL4T+jL8nvB8typ2jRPzTlgugNw==
- dependencies:
- "@types/node" "11.11.6"
- create-hash "^1.1.0"
- pbkdf2 "^3.0.9"
- randombytes "^2.0.1"
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.3.0.tgz#f6e14a97858d327252200242d4ccfe522c445522"
+ integrity sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==
blakejs@^1.1.0:
version "1.2.1"
@@ -2608,9 +1936,9 @@ blakejs@^1.1.0:
bn.js@4.11.6:
version "4.11.6"
resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.6.tgz#53344adb14617a13f6e8dd2ce28905d1c0ba3215"
- integrity sha1-UzRK2xRhehP26N0s4okF0cC6MhU=
+ integrity sha512-XWwnNNFCuuSQ0m3r3C4LE3EiORltHd9M05pq6FOlVeiophzRbMo50Sbz1ehl8K3Z+jw9+vmgnXefY1hz8X+2wA==
-bn.js@^4.0.0, bn.js@^4.11.0, bn.js@^4.11.1, bn.js@^4.11.8, bn.js@^4.11.9:
+bn.js@^4.11.0, bn.js@^4.11.8, bn.js@^4.11.9:
version "4.12.0"
resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88"
integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==
@@ -2620,6 +1948,20 @@ bn.js@^5.1.2, bn.js@^5.2.0, bn.js@^5.2.1:
resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.1.tgz#0bc527a6a0d18d0aa8d5b0538ce4a77dccfa7b70"
integrity sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==
+boxen@^5.1.2:
+ version "5.1.2"
+ resolved "https://registry.yarnpkg.com/boxen/-/boxen-5.1.2.tgz#788cb686fc83c1f486dfa8a40c68fc2b831d2b50"
+ integrity sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ==
+ dependencies:
+ ansi-align "^3.0.0"
+ camelcase "^6.2.0"
+ chalk "^4.1.0"
+ cli-boxes "^2.2.1"
+ string-width "^4.2.2"
+ type-fest "^0.20.2"
+ widest-line "^3.1.0"
+ wrap-ansi "^7.0.0"
+
brace-expansion@^1.1.7:
version "1.1.11"
resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
@@ -2635,36 +1977,19 @@ brace-expansion@^2.0.1:
dependencies:
balanced-match "^1.0.0"
-braces@^3.0.1, braces@~3.0.2:
- version "3.0.2"
- resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107"
- integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==
- dependencies:
- fill-range "^7.0.1"
-
-braces@^3.0.3:
+braces@^3.0.3, braces@~3.0.2:
version "3.0.3"
resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.3.tgz#490332f40919452272d55a8480adc0c441358789"
integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==
dependencies:
fill-range "^7.1.1"
-brorand@^1.0.1, brorand@^1.1.0:
+brorand@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f"
integrity sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==
-browser-level@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/browser-level/-/browser-level-1.0.1.tgz#36e8c3183d0fe1c405239792faaab5f315871011"
- integrity sha512-XECYKJ+Dbzw0lbydyQuJzwNXtOpbMSq737qxJN11sIRTErOMShvDpbzTlgju7orJKvx4epULolZAuJGLzCmWRQ==
- dependencies:
- abstract-level "^1.0.2"
- catering "^2.1.1"
- module-error "^1.0.2"
- run-parallel-limit "^1.1.0"
-
-browser-stdout@1.3.1:
+browser-stdout@^1.3.1:
version "1.3.1"
resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60"
integrity sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==
@@ -2707,13 +2032,6 @@ buffer-xor@^1.0.3:
resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9"
integrity sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==
-buffer-xor@^2.0.1:
- version "2.0.2"
- resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-2.0.2.tgz#34f7c64f04c777a1f8aac5e661273bb9dd320289"
- integrity sha512-eHslX0bin3GB+Lx2p7lEYRShRewuNZL3fUl4qlVJGGiwoPGftmt8JQgk2Y9Ji5/01TnVDo33E5b5O3vUB1HdqQ==
- dependencies:
- safe-buffer "^5.1.1"
-
buffer@4.9.2:
version "4.9.2"
resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.2.tgz#230ead344002988644841ab0244af8c44bbe3ef8"
@@ -2723,14 +2041,6 @@ buffer@4.9.2:
ieee754 "^1.1.4"
isarray "^1.0.0"
-buffer@^5.5.0, buffer@^5.6.0:
- version "5.7.1"
- resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0"
- integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==
- dependencies:
- base64-js "^1.3.1"
- ieee754 "^1.1.13"
-
buffer@^6.0.3:
version "6.0.3"
resolved "https://registry.yarnpkg.com/buffer/-/buffer-6.0.3.tgz#2ace578459cc8fbe2a70aaa8f52ee63b6a74c6c6"
@@ -2753,89 +2063,45 @@ bufferutil@4.0.7:
dependencies:
node-gyp-build "^4.3.0"
-bufferutil@^4.0.1:
- version "4.0.4"
- resolved "https://registry.yarnpkg.com/bufferutil/-/bufferutil-4.0.4.tgz#ab81373d313a6ead0d734e98c448c722734ae7bb"
- integrity sha512-VNxjXUCrF3LvbLgwfkTb5LsFvk6pGIn7OBb9x+3o+iJ6mKw0JTUp4chBFc88hi1aspeZGeZG9jAIbpFYPQSLZw==
- dependencies:
- node-gyp-build "^4.2.0"
-
-busboy@^1.6.0:
- version "1.6.0"
- resolved "https://registry.yarnpkg.com/busboy/-/busboy-1.6.0.tgz#966ea36a9502e43cdb9146962523b92f531f6893"
- integrity sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==
- dependencies:
- streamsearch "^1.1.0"
-
-bytes@3.1.0:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6"
- integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==
-
-call-bind@^1.0.0, call-bind@^1.0.2:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c"
- integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==
- dependencies:
- function-bind "^1.1.1"
- get-intrinsic "^1.0.2"
+bytes@3.1.2:
+ version "3.1.2"
+ resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5"
+ integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==
caller-callsite@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/caller-callsite/-/caller-callsite-2.0.0.tgz#847e0fce0a223750a9a027c54b33731ad3154134"
- integrity sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ=
+ integrity sha512-JuG3qI4QOftFsZyOn1qq87fq5grLIyk1JYd5lJmdA+fG7aQ9pA/i3JIJGcO3q0MrRcHlOt1U+ZeHW8Dq9axALQ==
dependencies:
callsites "^2.0.0"
caller-path@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-2.0.0.tgz#468f83044e369ab2010fac5f06ceee15bb2cb1f4"
- integrity sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=
+ integrity sha512-MCL3sf6nCSXOwCTzvPKhN18TU7AHTvdtam8DAogxcrJ8Rjfbbg7Lgng64H9Iy+vUV6VGFClN/TyxBkAebLRR4A==
dependencies:
caller-callsite "^2.0.0"
callsites@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/callsites/-/callsites-2.0.0.tgz#06eb84f00eea413da86affefacbffb36093b3c50"
- integrity sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=
+ integrity sha512-ksWePWBloaWPxJYQ8TL0JHvtci6G5QTKwQ95RcWAa/lzoAKuAOflGdAK92hpHXjkwb8zLxoLNUoNYZgVsaJzvQ==
callsites@^3.0.0, callsites@^3.1.0:
version "3.1.0"
resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73"
integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==
-camelcase@^5.0.0:
- version "5.3.1"
- resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320"
- integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==
-
-camelcase@^6.0.0:
+camelcase@^6.0.0, camelcase@^6.2.0:
version "6.3.0"
resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a"
integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==
-case@^1.6.3:
- version "1.6.3"
- resolved "https://registry.yarnpkg.com/case/-/case-1.6.3.tgz#0a4386e3e9825351ca2e6216c60467ff5f1ea1c9"
- integrity sha512-mzDSXIPaFwVDvZAHqZ9VlbyF4yyXRuX6IvB06WvPYkqJVO24kX1PPhv9bfpKNFZyxYFmmgo03HUiD8iklmJYRQ==
-
-caseless@~0.12.0:
- version "0.12.0"
- resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc"
- integrity sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==
-
-catering@^2.0.0, catering@^2.1.0, catering@^2.1.1:
+catering@^2.0.0, catering@^2.1.0:
version "2.1.1"
resolved "https://registry.yarnpkg.com/catering/-/catering-2.1.1.tgz#66acba06ed5ee28d5286133982a927de9a04b510"
integrity sha512-K7Qy8O9p76sL3/3m7/zLKbRkyOlSZAgzEaLhyj2mXS8PsCud2Eo4hAb8aLtZqHh0QGqLcb9dlJSu6lHRVENm1w==
-cbor@^8.0.0:
- version "8.0.0"
- resolved "https://registry.yarnpkg.com/cbor/-/cbor-8.0.0.tgz#51657d26a99a6a1866f8c3258e948576eb17d709"
- integrity sha512-nMmaLWbj7+bC6MsApKRIig8h+yjgNLhPLXaCelq5+C7mpWsHgIcseZSdvgexSY5uE1Q3m2uPvIDZwSdxdo7qig==
- dependencies:
- nofilter "^3.0.2"
-
cbor@^8.1.0:
version "8.1.0"
resolved "https://registry.yarnpkg.com/cbor/-/cbor-8.1.0.tgz#cfc56437e770b73417a2ecbfc9caf6b771af60d5"
@@ -2843,32 +2109,40 @@ cbor@^8.1.0:
dependencies:
nofilter "^3.1.0"
+cbor@^9.0.0:
+ version "9.0.2"
+ resolved "https://registry.yarnpkg.com/cbor/-/cbor-9.0.2.tgz#536b4f2d544411e70ec2b19a2453f10f83cd9fdb"
+ integrity sha512-JPypkxsB10s9QOWwa6zwPzqE1Md3vqpPc+cai4sAecuCsRyAtAl/pMyhPlMbT/xtPnm2dznJZYRLui57qiRhaQ==
+ dependencies:
+ nofilter "^3.1.0"
+
chai-almost@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/chai-almost/-/chai-almost-1.0.1.tgz#43d026cf3be79a1cd513cf15af840a81243a4b60"
- integrity sha1-Q9AmzzvnmhzVE88Vr4QKgSQ6S2A=
+ integrity sha512-UrNSx5f2B1/ESrOz0a4iLpDnQvDnK/3O0ZE/KGYQ+NcndKy0VQkMkv8yoGIHNSbjzKBid3EAMdDMA5wb9CxvSA==
dependencies:
deep-eql "^2.0.2"
type-detect "^4.0.3"
chai-as-promised@^7.1.1:
- version "7.1.1"
- resolved "https://registry.yarnpkg.com/chai-as-promised/-/chai-as-promised-7.1.1.tgz#08645d825deb8696ee61725dbf590c012eb00ca0"
- integrity sha512-azL6xMoi+uxu6z4rhWQ1jbdUhOMhis2PvscD/xjLqNMkv3BPPp2JyyuTHOrf9BOosGpNQ11v6BKv/g57RXbiaA==
+ version "7.1.2"
+ resolved "https://registry.yarnpkg.com/chai-as-promised/-/chai-as-promised-7.1.2.tgz#70cd73b74afd519754161386421fb71832c6d041"
+ integrity sha512-aBDHZxRzYnUYuIAIPBH2s511DjlKPzXNlXSGFC8CwmroWQLfrW0LtE1nK3MAwwNhJPa9raEjNCmRoFpG0Hurdw==
dependencies:
check-error "^1.0.2"
chai@^4.2.0:
- version "4.3.4"
- resolved "https://registry.yarnpkg.com/chai/-/chai-4.3.4.tgz#b55e655b31e1eac7099be4c08c21964fce2e6c49"
- integrity sha512-yS5H68VYOCtN1cjfwumDSuzn/9c+yza4f3reKXlE5rUg7SFcCEy90gJvydNgOYtblyf4Zi6jIWRnXOgErta0KA==
+ version "4.5.0"
+ resolved "https://registry.yarnpkg.com/chai/-/chai-4.5.0.tgz#707e49923afdd9b13a8b0b47d33d732d13812fd8"
+ integrity sha512-RITGBfijLkBddZvnn8jdqoTypxvqbOLYQkGGxXzeFjVHvudaPw0HNFD9x928/eUwYWd2dPCugVqspGALTZZQKw==
dependencies:
assertion-error "^1.1.0"
- check-error "^1.0.2"
- deep-eql "^3.0.1"
- get-func-name "^2.0.0"
+ check-error "^1.0.3"
+ deep-eql "^4.1.3"
+ get-func-name "^2.0.2"
+ loupe "^2.3.6"
pathval "^1.1.1"
- type-detect "^4.0.5"
+ type-detect "^4.1.0"
chalk-template@^1.1.0:
version "1.1.0"
@@ -2877,7 +2151,7 @@ chalk-template@^1.1.0:
dependencies:
chalk "^5.2.0"
-chalk@^2.0.0, chalk@^2.1.0, chalk@^2.4.1, chalk@^2.4.2:
+chalk@^2.1.0, chalk@^2.4.1, chalk@^2.4.2:
version "2.4.2"
resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424"
integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==
@@ -2904,30 +2178,17 @@ chardet@^0.7.0:
resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e"
integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==
-check-error@^1.0.2:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/check-error/-/check-error-1.0.2.tgz#574d312edd88bb5dd8912e9286dd6c0aed4aac82"
- integrity sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=
-
-chokidar@3.3.0:
- version "3.3.0"
- resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.3.0.tgz#12c0714668c55800f659e262d4962a97faf554a6"
- integrity sha512-dGmKLDdT3Gdl7fBUe8XK+gAtGmzy5Fn0XkkWQuYxGIgWVPPse2CxFA5mtrlD0TOHaHjEUqkWNyP1XdHoJES/4A==
+check-error@^1.0.2, check-error@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/check-error/-/check-error-1.0.3.tgz#a6502e4312a7ee969f646e83bb3ddd56281bd694"
+ integrity sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==
dependencies:
- anymatch "~3.1.1"
- braces "~3.0.2"
- glob-parent "~5.1.0"
- is-binary-path "~2.1.0"
- is-glob "~4.0.1"
- normalize-path "~3.0.0"
- readdirp "~3.2.0"
- optionalDependencies:
- fsevents "~2.1.1"
+ get-func-name "^2.0.2"
-chokidar@3.5.3:
- version "3.5.3"
- resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd"
- integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==
+chokidar@^3.5.3:
+ version "3.6.0"
+ resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.6.0.tgz#197c6cc669ef2a8dc5e7b4d97ee4e092c3eb0d5b"
+ integrity sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==
dependencies:
anymatch "~3.1.2"
braces "~3.0.2"
@@ -2939,20 +2200,12 @@ chokidar@3.5.3:
optionalDependencies:
fsevents "~2.3.2"
-chokidar@^3.4.0:
- version "3.5.2"
- resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.2.tgz#dba3976fcadb016f66fd365021d91600d01c1e75"
- integrity sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ==
+chokidar@^4.0.0:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-4.0.1.tgz#4a6dff66798fb0f72a94f616abbd7e1a19f31d41"
+ integrity sha512-n8enUVCED/KVRQlab1hr3MVpcVMvxtZjmEa956u+4YijlmQED223XMSYj2tLuKvr4jcCTzNNMpQDUer72MMmzA==
dependencies:
- anymatch "~3.1.2"
- braces "~3.0.2"
- glob-parent "~5.1.2"
- is-binary-path "~2.1.0"
- is-glob "~4.0.1"
- normalize-path "~3.0.0"
- readdirp "~3.6.0"
- optionalDependencies:
- fsevents "~2.3.2"
+ readdirp "^4.0.1"
ci-info@^2.0.0:
version "2.0.0"
@@ -2967,17 +2220,6 @@ cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3:
inherits "^2.0.1"
safe-buffer "^5.0.1"
-classic-level@^1.2.0:
- version "1.3.0"
- resolved "https://registry.yarnpkg.com/classic-level/-/classic-level-1.3.0.tgz#5e36680e01dc6b271775c093f2150844c5edd5c8"
- integrity sha512-iwFAJQYtqRTRM0F6L8h4JCt00ZSGdOyqh7yVrhhjrOpFhmBjNlRUey64MCiyo6UmQHMJ+No3c81nujPv+n9yrg==
- dependencies:
- abstract-level "^1.0.2"
- catering "^2.1.0"
- module-error "^1.0.1"
- napi-macros "^2.2.2"
- node-gyp-build "^4.3.0"
-
clean-stack@^2.0.0:
version "2.2.0"
resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b"
@@ -2991,10 +2233,15 @@ clear-module@^4.1.2:
parent-module "^2.0.0"
resolve-from "^5.0.0"
+cli-boxes@^2.2.1:
+ version "2.2.1"
+ resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-2.2.1.tgz#ddd5035d25094fce220e9cab40a45840a440318f"
+ integrity sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==
+
cli-cursor@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5"
- integrity sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=
+ integrity sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==
dependencies:
restore-cursor "^2.0.0"
@@ -3003,15 +2250,6 @@ cli-width@^2.0.0:
resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.1.tgz#b0433d0b4e9c847ef18868a4ef16fd5fc8271c48"
integrity sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==
-cliui@^5.0.0:
- version "5.0.0"
- resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5"
- integrity sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==
- dependencies:
- string-width "^3.1.0"
- strip-ansi "^5.2.0"
- wrap-ansi "^5.1.0"
-
cliui@^7.0.2:
version "7.0.4"
resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f"
@@ -3038,14 +2276,14 @@ color-convert@^2.0.1:
color-name@1.1.3:
version "1.1.3"
resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25"
- integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=
+ integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==
color-name@~1.1.4:
version "1.1.4"
resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2"
integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
-combined-stream@^1.0.6, combined-stream@^1.0.8, combined-stream@~1.0.6:
+combined-stream@^1.0.8:
version "1.0.8"
resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f"
integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==
@@ -3082,11 +2320,6 @@ commander@2.18.0:
resolved "https://registry.yarnpkg.com/commander/-/commander-2.18.0.tgz#2bf063ddee7c7891176981a2cc798e5754bc6970"
integrity sha512-6CYPa+JP2ftfRU2qkDK+UTVeQYosOg/2GbcjIcKPHfinyOLPVGXu/ovN86RP49Re5ndJK1N0kuiidFFuepc4ZQ==
-commander@3.0.2:
- version "3.0.2"
- resolved "https://registry.yarnpkg.com/commander/-/commander-3.0.2.tgz#6837c3fb677ad9933d1cfba42dd14d5117d6b39e"
- integrity sha512-Gar0ASD4BDyKC4hl4DwHqDrmvjoxWKZigVnAbn5H1owvm4CxCPdb0HQDehwNYMJpla5+M2tPmPARzhtYuwpHow==
-
commander@^12.1.0:
version "12.1.0"
resolved "https://registry.yarnpkg.com/commander/-/commander-12.1.0.tgz#01423b36f501259fdaac4d0e4d60c96c991585d3"
@@ -3109,29 +2342,19 @@ comment-json@^4.2.5:
repeat-string "^1.6.1"
compare-versions@^6.0.0:
- version "6.0.0"
- resolved "https://registry.yarnpkg.com/compare-versions/-/compare-versions-6.0.0.tgz#a3edb527e4487bfab9a8b62ffe70cebc9b87675b"
- integrity sha512-s2MzYxfRsE9f/ow8hjn7ysa7pod1xhHdQMsgiJtKx6XSNf4x2N1KG4fjrkUmXcP/e9Y2ZX4zB6sHIso0Lm6evQ==
+ version "6.1.1"
+ resolved "https://registry.yarnpkg.com/compare-versions/-/compare-versions-6.1.1.tgz#7af3cc1099ba37d244b3145a9af5201b629148a9"
+ integrity sha512-4hm4VPpIecmlg59CHXnRDnqGplJFrbLG4aFEl5vl6cK1u76ws3LLvX7ikFnTDl5vo39sjWD6AaDPYodJp/NNHg==
concat-map@0.0.1:
version "0.0.1"
resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
- integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=
+ integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==
cookie@^0.4.1:
- version "0.4.1"
- resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.1.tgz#afd713fe26ebd21ba95ceb61f9a8116e50a537d1"
- integrity sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA==
-
-core-js-pure@^3.0.1:
- version "3.32.0"
- resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.32.0.tgz#5d79f85da7a4373e9a06494ccbef995a4c639f8b"
- integrity sha512-qsev1H+dTNYpDUEURRuOXMvpdtAnNEvQWS/FMJ2Vb5AY8ZP4rAPQldkE27joykZPJTe0+IVgHZYh1P5Xu1/i1g==
-
-core-util-is@1.0.2:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
- integrity sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==
+ version "0.4.2"
+ resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.2.tgz#0e41f24de5ecf317947c82fc789e06a884824432"
+ integrity sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==
core-util-is@^1.0.3:
version "1.0.3"
@@ -3148,14 +2371,6 @@ cosmiconfig@^5.0.7:
js-yaml "^3.13.1"
parse-json "^4.0.0"
-crc-32@^1.2.0:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/crc-32/-/crc-32-1.2.0.tgz#cb2db6e29b88508e32d9dd0ec1693e7b41a18208"
- integrity sha512-1uBwHxF+Y/4yF5G48fwnKq6QsIXheor3ZLPT80yGBV1oEUwpPojlEhQbWKVw1VwcTQyMGHK1/XMmTjmlsmTTGA==
- dependencies:
- exit-on-epipe "~1.0.1"
- printj "~1.1.0"
-
create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196"
@@ -3179,13 +2394,6 @@ create-hmac@^1.1.4, create-hmac@^1.1.7:
safe-buffer "^5.0.1"
sha.js "^2.4.8"
-cross-fetch@^3.1.4:
- version "3.1.8"
- resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.1.8.tgz#0327eba65fd68a7d119f8fb2bf9334a1a7956f82"
- integrity sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg==
- dependencies:
- node-fetch "^2.6.12"
-
cross-spawn@^6.0.5:
version "6.0.5"
resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4"
@@ -3206,80 +2414,80 @@ cross-spawn@^7.0.2:
shebang-command "^2.0.0"
which "^2.0.1"
-cspell-config-lib@8.14.4:
- version "8.14.4"
- resolved "https://registry.yarnpkg.com/cspell-config-lib/-/cspell-config-lib-8.14.4.tgz#4642d22c4db22dd1b8923005ff369a24ff541f62"
- integrity sha512-cnUeJfniTiebqCaQmIUnbSrPrTH7xzKRQjJDHAEV0WYnOG2MhRXI13OzytdFdhkVBdStmgTzTCJKE7x+kmU2NA==
+cspell-config-lib@8.15.4:
+ version "8.15.4"
+ resolved "https://registry.yarnpkg.com/cspell-config-lib/-/cspell-config-lib-8.15.4.tgz#c9530304e072cbc8d9d4cd76fdb3abcf45dab8af"
+ integrity sha512-vUgikQTRkRMTdkZqSs7F2cTdPpX61cTjr/9L/VCkXkbW38ObCr4650ioiF1Wq3zDF3Gy2bc4ECTpD2PZUXX5SA==
dependencies:
- "@cspell/cspell-types" "8.14.4"
+ "@cspell/cspell-types" "8.15.4"
comment-json "^4.2.5"
- yaml "^2.5.1"
+ yaml "^2.6.0"
-cspell-dictionary@8.14.4:
- version "8.14.4"
- resolved "https://registry.yarnpkg.com/cspell-dictionary/-/cspell-dictionary-8.14.4.tgz#d6bfaa972785b184499d7f81791c913440229de4"
- integrity sha512-pZvQHxpAW5fZAnt3ZKKy3s7M+3CX2t8tCS3uJrpEHIynlCawpG0fPF78rVE5o+g0dON36Lguc/BUuSN4IWKLmQ==
+cspell-dictionary@8.15.4:
+ version "8.15.4"
+ resolved "https://registry.yarnpkg.com/cspell-dictionary/-/cspell-dictionary-8.15.4.tgz#be701af741a0be1a8680674bcbd3dadd7bc5c1fe"
+ integrity sha512-8+p/l9Saac7qyCbqtELneDoT7CwHu9gYmnI8uXMu34/lPGjhVhy10ZeI0+t1djaO2YyASK400YFKq5uP/5KulA==
dependencies:
- "@cspell/cspell-pipe" "8.14.4"
- "@cspell/cspell-types" "8.14.4"
- cspell-trie-lib "8.14.4"
+ "@cspell/cspell-pipe" "8.15.4"
+ "@cspell/cspell-types" "8.15.4"
+ cspell-trie-lib "8.15.4"
fast-equals "^5.0.1"
-cspell-gitignore@8.14.4:
- version "8.14.4"
- resolved "https://registry.yarnpkg.com/cspell-gitignore/-/cspell-gitignore-8.14.4.tgz#bb53748ed93af980ed7c5772577ccdedada85293"
- integrity sha512-RwfQEW5hD7CpYwS7m3b0ONG0nTLKP6bL2tvMdl7qtaYkL7ztGdsBTtLD1pmwqUsCbiN5RuaOxhYOYeRcpFRIkQ==
+cspell-gitignore@8.15.4:
+ version "8.15.4"
+ resolved "https://registry.yarnpkg.com/cspell-gitignore/-/cspell-gitignore-8.15.4.tgz#79bcfcc343466cc483c1805baf0c53f6bdef1753"
+ integrity sha512-9n5PpQ8gEf8YcvEtoZGZ2Ma6wnqSFkD2GrmyjISy39DfIX/jNLN7GX2wJm6OD2P4FjXer95ypmIb/JWTlfmbTw==
dependencies:
- "@cspell/url" "8.14.4"
- cspell-glob "8.14.4"
- cspell-io "8.14.4"
+ "@cspell/url" "8.15.4"
+ cspell-glob "8.15.4"
+ cspell-io "8.15.4"
find-up-simple "^1.0.0"
-cspell-glob@8.14.4:
- version "8.14.4"
- resolved "https://registry.yarnpkg.com/cspell-glob/-/cspell-glob-8.14.4.tgz#b5abbaa291f3d17d5e52a33d26193a29761e30c8"
- integrity sha512-C/xTS5nujMRMuguibq92qMVP767mtxrur7DcVolCvpzcivm1RB5NtIN0OctQxTyMbnmKeQv1t4epRKQ9A8vWRg==
+cspell-glob@8.15.4:
+ version "8.15.4"
+ resolved "https://registry.yarnpkg.com/cspell-glob/-/cspell-glob-8.15.4.tgz#24934982f3ecf664a32618f0fdf3965de63f05da"
+ integrity sha512-TTfRRHRAN+PN9drIz4MAEgKKYnPThBOlPMdFddyuisvU33Do1sPAnqkkOjTEFdi3jAA5KwnSva68SVH6IzzMBQ==
dependencies:
- "@cspell/url" "8.14.4"
+ "@cspell/url" "8.15.4"
micromatch "^4.0.8"
-cspell-grammar@8.14.4:
- version "8.14.4"
- resolved "https://registry.yarnpkg.com/cspell-grammar/-/cspell-grammar-8.14.4.tgz#a047c9d365127f9e7688eebb649b14a8a7b0ce9e"
- integrity sha512-yaSKAAJDiamsw3FChbw4HXb2RvTQrDsLelh1+T4MavarOIcAxXrqAJ8ysqm++g+S/ooJz2YO8YWIyzJKxcMf8g==
- dependencies:
- "@cspell/cspell-pipe" "8.14.4"
- "@cspell/cspell-types" "8.14.4"
-
-cspell-io@8.14.4:
- version "8.14.4"
- resolved "https://registry.yarnpkg.com/cspell-io/-/cspell-io-8.14.4.tgz#fa80333f473fd04973b850c25116b6392f6c88a3"
- integrity sha512-o6OTWRyx/Az+PFhr1B0wMAwqG070hFC9g73Fkxd8+rHX0rfRS69QZH7LgSmZytqbZIMxCTDGdsLl33MFGWCbZQ==
- dependencies:
- "@cspell/cspell-service-bus" "8.14.4"
- "@cspell/url" "8.14.4"
-
-cspell-lib@8.14.4:
- version "8.14.4"
- resolved "https://registry.yarnpkg.com/cspell-lib/-/cspell-lib-8.14.4.tgz#f59f3141c3b9b44b46defc927365e484a1f7d1cc"
- integrity sha512-qdkUkKtm+nmgpA4jQbmQTuepDfjHBDWvs3zDuEwVIVFq/h8gnXrRr75gJ3RYdTy+vOOqHPoLLqgxyqkUUrUGXA==
- dependencies:
- "@cspell/cspell-bundled-dicts" "8.14.4"
- "@cspell/cspell-pipe" "8.14.4"
- "@cspell/cspell-resolver" "8.14.4"
- "@cspell/cspell-types" "8.14.4"
- "@cspell/dynamic-import" "8.14.4"
- "@cspell/filetypes" "8.14.4"
- "@cspell/strong-weak-map" "8.14.4"
- "@cspell/url" "8.14.4"
+cspell-grammar@8.15.4:
+ version "8.15.4"
+ resolved "https://registry.yarnpkg.com/cspell-grammar/-/cspell-grammar-8.15.4.tgz#28619d564f4c128618fcecb1d71e31e30b69d213"
+ integrity sha512-MKiKyYi05mRtXOxPoTv3Ksi0GwYLiK84Uq0C+5PaMrnIjXeed0bsddSFXCT+7ywFJc7PdjhTtz0M/9WWK3UgbA==
+ dependencies:
+ "@cspell/cspell-pipe" "8.15.4"
+ "@cspell/cspell-types" "8.15.4"
+
+cspell-io@8.15.4:
+ version "8.15.4"
+ resolved "https://registry.yarnpkg.com/cspell-io/-/cspell-io-8.15.4.tgz#5d55471cbcff9f2d061a6f3504cd525152da754e"
+ integrity sha512-rXIEREPTFV9dwwg4EKfvzqlCNOvT6910AYED5YrSt8Y68usRJ9lbqdx0BrDndVCd33bp1o+9JBfHuRiFIQC81g==
+ dependencies:
+ "@cspell/cspell-service-bus" "8.15.4"
+ "@cspell/url" "8.15.4"
+
+cspell-lib@8.15.4:
+ version "8.15.4"
+ resolved "https://registry.yarnpkg.com/cspell-lib/-/cspell-lib-8.15.4.tgz#ebab39a5e9f74d2a50c588cd8397f0a2f5f7c4d0"
+ integrity sha512-iLp/625fvCyFFxSyZYLMgqHIKcrhN4hT7Hw5+ySa38Bp/OfA81ANqWHpsDQ0bGsALTRn/DHBpQYj4xCW/aN9tw==
+ dependencies:
+ "@cspell/cspell-bundled-dicts" "8.15.4"
+ "@cspell/cspell-pipe" "8.15.4"
+ "@cspell/cspell-resolver" "8.15.4"
+ "@cspell/cspell-types" "8.15.4"
+ "@cspell/dynamic-import" "8.15.4"
+ "@cspell/filetypes" "8.15.4"
+ "@cspell/strong-weak-map" "8.15.4"
+ "@cspell/url" "8.15.4"
clear-module "^4.1.2"
comment-json "^4.2.5"
- cspell-config-lib "8.14.4"
- cspell-dictionary "8.14.4"
- cspell-glob "8.14.4"
- cspell-grammar "8.14.4"
- cspell-io "8.14.4"
- cspell-trie-lib "8.14.4"
+ cspell-config-lib "8.15.4"
+ cspell-dictionary "8.15.4"
+ cspell-glob "8.15.4"
+ cspell-grammar "8.15.4"
+ cspell-io "8.15.4"
+ cspell-trie-lib "8.15.4"
env-paths "^3.0.0"
fast-equals "^5.0.1"
gensequence "^7.0.0"
@@ -3289,99 +2497,50 @@ cspell-lib@8.14.4:
vscode-uri "^3.0.8"
xdg-basedir "^5.1.0"
-cspell-trie-lib@8.14.4:
- version "8.14.4"
- resolved "https://registry.yarnpkg.com/cspell-trie-lib/-/cspell-trie-lib-8.14.4.tgz#1cc1d1110edc0d208a027b1bdc3cbec1a15ea7f8"
- integrity sha512-zu8EJ33CH+FA5lwTRGqS//Q6phO0qtgEmODMR1KPlD7WlrfTFMb3bWFsLo/tiv5hjpsn7CM6dYDAAgBOSkoyhQ==
+cspell-trie-lib@8.15.4:
+ version "8.15.4"
+ resolved "https://registry.yarnpkg.com/cspell-trie-lib/-/cspell-trie-lib-8.15.4.tgz#48027e9bddc311f4b578b47286fc5d530c6da14a"
+ integrity sha512-sg9klsNHyrfos0Boiio+qy5d6fI9cCNjBqFYrNxvpKpwZ4gEzDzjgEKdZY1C76RD2KoBQ8I1NF5YcGc0+hhhCw==
dependencies:
- "@cspell/cspell-pipe" "8.14.4"
- "@cspell/cspell-types" "8.14.4"
+ "@cspell/cspell-pipe" "8.15.4"
+ "@cspell/cspell-types" "8.15.4"
gensequence "^7.0.0"
cspell@^8.14.4:
- version "8.14.4"
- resolved "https://registry.yarnpkg.com/cspell/-/cspell-8.14.4.tgz#a160fefcaf7158b8fa435245936b4f0426dc8736"
- integrity sha512-R5Awb3i/RKaVVcZzFt8dkN3M6VnifIEDYBcbzbmYjZ/Eq+ASF+QTmI0E9WPhMEcFM1nd7YOyXnETo560yRdoKw==
- dependencies:
- "@cspell/cspell-json-reporter" "8.14.4"
- "@cspell/cspell-pipe" "8.14.4"
- "@cspell/cspell-types" "8.14.4"
- "@cspell/dynamic-import" "8.14.4"
- "@cspell/url" "8.14.4"
+ version "8.15.4"
+ resolved "https://registry.yarnpkg.com/cspell/-/cspell-8.15.4.tgz#8292a6ece4ef05f0602c4ba6fb9ef8e962cb0433"
+ integrity sha512-hUOxcwmNWuHzVeGHyN5v/T9MkyCE5gi0mvatxsM794B2wOuR1ZORgjZH62P2HY1uBkXe/x5C6ITWrSyh0WgAcg==
+ dependencies:
+ "@cspell/cspell-json-reporter" "8.15.4"
+ "@cspell/cspell-pipe" "8.15.4"
+ "@cspell/cspell-types" "8.15.4"
+ "@cspell/dynamic-import" "8.15.4"
+ "@cspell/url" "8.15.4"
chalk "^5.3.0"
chalk-template "^1.1.0"
commander "^12.1.0"
- cspell-dictionary "8.14.4"
- cspell-gitignore "8.14.4"
- cspell-glob "8.14.4"
- cspell-io "8.14.4"
- cspell-lib "8.14.4"
- fast-glob "^3.3.2"
+ cspell-dictionary "8.15.4"
+ cspell-gitignore "8.15.4"
+ cspell-glob "8.15.4"
+ cspell-io "8.15.4"
+ cspell-lib "8.15.4"
fast-json-stable-stringify "^2.1.0"
file-entry-cache "^9.1.0"
get-stdin "^9.0.0"
semver "^7.6.3"
- strip-ansi "^7.1.0"
-
-d@1, d@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/d/-/d-1.0.1.tgz#8698095372d58dbee346ffd0c7093f99f8f9eb5a"
- integrity sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==
- dependencies:
- es5-ext "^0.10.50"
- type "^1.0.1"
-
-dashdash@^1.12.0:
- version "1.14.1"
- resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0"
- integrity sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==
- dependencies:
- assert-plus "^1.0.0"
+ tinyglobby "^0.2.9"
death@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/death/-/death-1.1.0.tgz#01aa9c401edd92750514470b8266390c66c67318"
- integrity sha1-AaqcQB7dknUFFEcLgmY5DGbGcxg=
-
-debug@3.2.6:
- version "3.2.6"
- resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b"
- integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==
- dependencies:
- ms "^2.1.1"
-
-debug@4, debug@^4.0.1, debug@^4.1.1:
- version "4.3.2"
- resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.2.tgz#f0a49c18ac8779e31d4a0c6029dfb76873c7428b"
- integrity sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==
- dependencies:
- ms "2.1.2"
-
-debug@4.3.4, debug@^4.3.1, debug@^4.3.2, debug@^4.3.3, debug@^4.3.4:
- version "4.3.4"
- resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865"
- integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==
- dependencies:
- ms "2.1.2"
-
-debug@^2.2.0, debug@^2.6.0:
- version "2.6.9"
- resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
- integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==
- dependencies:
- ms "2.0.0"
+ integrity sha512-vsV6S4KVHvTGxbEcij7hkWRv0It+sGGWVOM67dQde/o5Xjnr+KmLjxWJii2uEObIrt1CcM9w0Yaovx+iOlIL+w==
-debug@^3.1.0:
- version "3.2.7"
- resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a"
- integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==
+debug@4, debug@^4.0.1, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4, debug@^4.3.5:
+ version "4.3.7"
+ resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.7.tgz#87945b4151a011d76d95a198d7111c865c360a52"
+ integrity sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==
dependencies:
- ms "^2.1.1"
-
-decamelize@^1.2.0:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290"
- integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=
+ ms "^2.1.3"
decamelize@^4.0.0:
version "4.0.0"
@@ -3391,14 +2550,14 @@ decamelize@^4.0.0:
deep-eql@^2.0.2:
version "2.0.2"
resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-2.0.2.tgz#b1bac06e56f0a76777686d50c9feb75c2ed7679a"
- integrity sha1-sbrAblbwp2d3aG1Qyf63XC7XZ5o=
+ integrity sha512-uts3fF4HnV1bcNx8K5c9NMjXXKtLOf1obUMq04uEuMaF8i1m0SfugbpDMd59cYfodQcMqeUISvL4Pmx5NZ7lcw==
dependencies:
type-detect "^3.0.0"
-deep-eql@^3.0.1:
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-3.0.1.tgz#dfc9404400ad1c8fe023e7da1df1c147c4b444df"
- integrity sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==
+deep-eql@^4.0.1, deep-eql@^4.1.3:
+ version "4.1.4"
+ resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-4.1.4.tgz#d0d3912865911bb8fac5afb4e3acfa6a28dc72b7"
+ integrity sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg==
dependencies:
type-detect "^4.0.0"
@@ -3412,62 +2571,26 @@ deep-is@^0.1.3, deep-is@~0.1.3:
resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831"
integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==
-deferred-leveldown@~5.3.0:
- version "5.3.0"
- resolved "https://registry.yarnpkg.com/deferred-leveldown/-/deferred-leveldown-5.3.0.tgz#27a997ad95408b61161aa69bd489b86c71b78058"
- integrity sha512-a59VOT+oDy7vtAbLRCZwWgxu2BaCfd5Hk7wxJd48ei7I+nsg8Orlb9CLG0PMZienk9BSUKgeAqkO2+Lw+1+Ukw==
- dependencies:
- abstract-leveldown "~6.2.1"
- inherits "^2.0.3"
-
-define-properties@^1.1.2, define-properties@^1.1.4, define-properties@^1.2.0:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.2.0.tgz#52988570670c9eacedd8064f4a990f2405849bd5"
- integrity sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==
- dependencies:
- has-property-descriptors "^1.0.0"
- object-keys "^1.1.1"
-
-define-properties@^1.1.3:
- version "1.1.3"
- resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1"
- integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==
- dependencies:
- object-keys "^1.0.12"
-
delayed-stream@~1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619"
- integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk=
-
-depd@~1.1.2:
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9"
- integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=
+ integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==
-detect-port@^1.3.0:
- version "1.3.0"
- resolved "https://registry.yarnpkg.com/detect-port/-/detect-port-1.3.0.tgz#d9c40e9accadd4df5cac6a782aefd014d573d1f1"
- integrity sha512-E+B1gzkl2gqxt1IhUzwjrxBKRqx1UzC3WLONHinn8S3T6lwV/agVCyitiFOsGJ/eYuEUBvD71MZHy3Pv1G9doQ==
- dependencies:
- address "^1.0.1"
- debug "^2.6.0"
-
-diff@3.5.0:
- version "3.5.0"
- resolved "https://registry.yarnpkg.com/diff/-/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12"
- integrity sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==
-
-diff@5.0.0:
- version "5.0.0"
- resolved "https://registry.yarnpkg.com/diff/-/diff-5.0.0.tgz#7ed6ad76d859d030787ec35855f5b1daf31d852b"
- integrity sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==
+depd@2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df"
+ integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==
diff@^4.0.1:
version "4.0.2"
resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d"
integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==
+diff@^5.2.0:
+ version "5.2.0"
+ resolved "https://registry.yarnpkg.com/diff/-/diff-5.2.0.tgz#26ded047cd1179b78b9537d5ef725503ce1ae531"
+ integrity sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==
+
difflib@^0.2.4:
version "0.2.4"
resolved "https://registry.yarnpkg.com/difflib/-/difflib-0.2.4.tgz#b5e30361a6db023176d562892db85940a718f47e"
@@ -3490,19 +2613,11 @@ doctrine@^3.0.0:
esutils "^2.0.2"
dotenv@^16.0.0:
- version "16.3.1"
- resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.3.1.tgz#369034de7d7e5b120972693352a3bf112172cc3e"
- integrity sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ==
-
-ecc-jsbn@~0.1.1:
- version "0.1.2"
- resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9"
- integrity sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==
- dependencies:
- jsbn "~0.1.0"
- safer-buffer "^2.1.0"
+ version "16.4.5"
+ resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.4.5.tgz#cdd3b3b604cb327e286b4762e13502f717cb099f"
+ integrity sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==
-elliptic@6.5.4, elliptic@^6.5.2, elliptic@^6.5.4:
+elliptic@6.5.4:
version "6.5.4"
resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb"
integrity sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==
@@ -3515,6 +2630,19 @@ elliptic@6.5.4, elliptic@^6.5.2, elliptic@^6.5.4:
minimalistic-assert "^1.0.1"
minimalistic-crypto-utils "^1.0.1"
+elliptic@^6.5.2, elliptic@^6.5.4, elliptic@^6.5.7:
+ version "6.5.7"
+ resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.7.tgz#8ec4da2cb2939926a1b9a73619d768207e647c8b"
+ integrity sha512-ESVCtTwiA+XhY3wyh24QqRGBoP3rEdDUl3EDUUo9tft074fi19IrdpH7hLCMMP3CIj7jb3W96rn8lt/BqIlt5Q==
+ dependencies:
+ bn.js "^4.11.9"
+ brorand "^1.1.0"
+ hash.js "^1.0.0"
+ hmac-drbg "^1.0.1"
+ inherits "^2.0.4"
+ minimalistic-assert "^1.0.1"
+ minimalistic-crypto-utils "^1.0.1"
+
emittery@0.10.0:
version "0.10.0"
resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.10.0.tgz#bb373c660a9d421bb44706ec4967ed50c02a8026"
@@ -3530,22 +2658,13 @@ emoji-regex@^8.0.0:
resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37"
integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==
-encoding-down@^6.3.0:
- version "6.3.0"
- resolved "https://registry.yarnpkg.com/encoding-down/-/encoding-down-6.3.0.tgz#b1c4eb0e1728c146ecaef8e32963c549e76d082b"
- integrity sha512-QKrV0iKR6MZVJV08QY0wp1e7vF6QbhnbQhb07bwpEyuz4uZiZgPlEGdkCROuFkUwdxlFaiPIhjyarH1ee/3vhw==
- dependencies:
- abstract-leveldown "^6.2.1"
- inherits "^2.0.3"
- level-codec "^9.0.0"
- level-errors "^2.0.0"
-
enquirer@^2.3.0:
- version "2.3.6"
- resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d"
- integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==
+ version "2.4.1"
+ resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.4.1.tgz#93334b3fbd74fc7097b224ab4a8fb7e40bf4ae56"
+ integrity sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==
dependencies:
ansi-colors "^4.1.1"
+ strip-ansi "^6.0.1"
env-paths@^2.2.0:
version "2.2.1"
@@ -3557,13 +2676,6 @@ env-paths@^3.0.0:
resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-3.0.0.tgz#2f1e89c2f6dbd3408e1b1711dd82d62e317f58da"
integrity sha512-dtJUTepzMW3Lm/NPxRf3wP4642UWhjL2sQxc+ym2YMj1m/H2zDNQOlezafzkHwn6sMstjHTwG6iQQsctDW/b1A==
-errno@~0.1.1:
- version "0.1.8"
- resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.8.tgz#8bb3e9c7d463be4976ff888f76b4809ebc2e811f"
- integrity sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==
- dependencies:
- prr "~1.0.1"
-
error-ex@^1.3.1:
version "1.3.2"
resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf"
@@ -3571,140 +2683,17 @@ error-ex@^1.3.1:
dependencies:
is-arrayish "^0.2.1"
-es-abstract@^1.18.5:
- version "1.18.6"
- resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.18.6.tgz#2c44e3ea7a6255039164d26559777a6d978cb456"
- integrity sha512-kAeIT4cku5eNLNuUKhlmtuk1/TRZvQoYccn6TO0cSVdf1kzB0T7+dYuVK9MWM7l+/53W2Q8M7N2c6MQvhXFcUQ==
- dependencies:
- call-bind "^1.0.2"
- es-to-primitive "^1.2.1"
- function-bind "^1.1.1"
- get-intrinsic "^1.1.1"
- get-symbol-description "^1.0.0"
- has "^1.0.3"
- has-symbols "^1.0.2"
- internal-slot "^1.0.3"
- is-callable "^1.2.4"
- is-negative-zero "^2.0.1"
- is-regex "^1.1.4"
- is-string "^1.0.7"
- object-inspect "^1.11.0"
- object-keys "^1.1.1"
- object.assign "^4.1.2"
- string.prototype.trimend "^1.0.4"
- string.prototype.trimstart "^1.0.4"
- unbox-primitive "^1.0.1"
-
-es-abstract@^1.19.0, es-abstract@^1.20.4, es-abstract@^1.21.2:
- version "1.22.1"
- resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.22.1.tgz#8b4e5fc5cefd7f1660f0f8e1a52900dfbc9d9ccc"
- integrity sha512-ioRRcXMO6OFyRpyzV3kE1IIBd4WG5/kltnzdxSCqoP8CMGs/Li+M1uF5o7lOkZVFjDs+NLesthnF66Pg/0q0Lw==
- dependencies:
- array-buffer-byte-length "^1.0.0"
- arraybuffer.prototype.slice "^1.0.1"
- available-typed-arrays "^1.0.5"
- call-bind "^1.0.2"
- es-set-tostringtag "^2.0.1"
- es-to-primitive "^1.2.1"
- function.prototype.name "^1.1.5"
- get-intrinsic "^1.2.1"
- get-symbol-description "^1.0.0"
- globalthis "^1.0.3"
- gopd "^1.0.1"
- has "^1.0.3"
- has-property-descriptors "^1.0.0"
- has-proto "^1.0.1"
- has-symbols "^1.0.3"
- internal-slot "^1.0.5"
- is-array-buffer "^3.0.2"
- is-callable "^1.2.7"
- is-negative-zero "^2.0.2"
- is-regex "^1.1.4"
- is-shared-array-buffer "^1.0.2"
- is-string "^1.0.7"
- is-typed-array "^1.1.10"
- is-weakref "^1.0.2"
- object-inspect "^1.12.3"
- object-keys "^1.1.1"
- object.assign "^4.1.4"
- regexp.prototype.flags "^1.5.0"
- safe-array-concat "^1.0.0"
- safe-regex-test "^1.0.0"
- string.prototype.trim "^1.2.7"
- string.prototype.trimend "^1.0.6"
- string.prototype.trimstart "^1.0.6"
- typed-array-buffer "^1.0.0"
- typed-array-byte-length "^1.0.0"
- typed-array-byte-offset "^1.0.0"
- typed-array-length "^1.0.4"
- unbox-primitive "^1.0.2"
- which-typed-array "^1.1.10"
-
-es-array-method-boxes-properly@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz#873f3e84418de4ee19c5be752990b2e44718d09e"
- integrity sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==
-
-es-set-tostringtag@^2.0.1:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz#338d502f6f674301d710b80c8592de8a15f09cd8"
- integrity sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==
- dependencies:
- get-intrinsic "^1.1.3"
- has "^1.0.3"
- has-tostringtag "^1.0.0"
-
-es-to-primitive@^1.2.1:
- version "1.2.1"
- resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a"
- integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==
- dependencies:
- is-callable "^1.1.4"
- is-date-object "^1.0.1"
- is-symbol "^1.0.2"
-
-es5-ext@^0.10.35, es5-ext@^0.10.50:
- version "0.10.53"
- resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.53.tgz#93c5a3acfdbef275220ad72644ad02ee18368de1"
- integrity sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q==
- dependencies:
- es6-iterator "~2.0.3"
- es6-symbol "~3.1.3"
- next-tick "~1.0.0"
-
-es6-iterator@~2.0.3:
- version "2.0.3"
- resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7"
- integrity sha1-p96IkUGgWpSwhUQDstCg+/qY87c=
- dependencies:
- d "1"
- es5-ext "^0.10.35"
- es6-symbol "^3.1.1"
-
-es6-promise@^4.2.8:
- version "4.2.8"
- resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.8.tgz#4eb21594c972bc40553d276e510539143db53e0a"
- integrity sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==
-
-es6-symbol@^3.1.1, es6-symbol@~3.1.3:
- version "3.1.3"
- resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.3.tgz#bad5d3c1bcdac28269f4cb331e431c78ac705d18"
- integrity sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==
- dependencies:
- d "^1.0.1"
- ext "^1.1.2"
-
escalade@^3.1.1:
- version "3.1.1"
- resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40"
- integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.2.0.tgz#011a3f69856ba189dffa7dc8fcce99d2a87903e5"
+ integrity sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==
-escape-string-regexp@1.0.5, escape-string-regexp@^1.0.5:
+escape-string-regexp@^1.0.5:
version "1.0.5"
resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
- integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=
+ integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==
-escape-string-regexp@4.0.0, escape-string-regexp@^4.0.0:
+escape-string-regexp@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34"
integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==
@@ -3712,7 +2701,7 @@ escape-string-regexp@4.0.0, escape-string-regexp@^4.0.0:
escodegen@1.8.x:
version "1.8.1"
resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.8.1.tgz#5a5b53af4693110bebb0867aa3430dd3b70a1018"
- integrity sha1-WltTr0aTEQvrsIZ6o0MN07cKEBg=
+ integrity sha512-yhi5S+mNTOuRvyW4gWlg5W1byMaQGWWSYHXsuFZ7GBo7tpyOwi2EdzMP/QWxh9hwkD2m+wDVHJsxhRIj+v/b/A==
dependencies:
esprima "^2.7.1"
estraverse "^1.9.1"
@@ -3749,10 +2738,10 @@ eslint-visitor-keys@^1.0.0, eslint-visitor-keys@^1.1.0:
resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e"
integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==
-eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4.2:
- version "3.4.2"
- resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.2.tgz#8c2095440eca8c933bedcadf16fefa44dbe9ba5f"
- integrity sha512-8drBzUEyZ2llkpCA67iYrgEssKDUu68V8ChqqOfFupIaG/LCVPUT+CoGJpT77zJprs4T/W7p07LP7zAIMuweVw==
+eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4.3:
+ version "3.4.3"
+ resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800"
+ integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==
eslint@^5.6.0:
version "5.16.0"
@@ -3797,17 +2786,18 @@ eslint@^5.6.0:
text-table "^0.2.0"
eslint@^8.46.0:
- version "8.46.0"
- resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.46.0.tgz#a06a0ff6974e53e643acc42d1dcf2e7f797b3552"
- integrity sha512-cIO74PvbW0qU8e0mIvk5IV3ToWdCq5FYG6gWPHHkx6gNdjlbAYvtfHmlCMXxjcoVaIdwy/IAt3+mDkZkfvb2Dg==
+ version "8.57.1"
+ resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.57.1.tgz#7df109654aba7e3bbe5c8eae533c5e461d3c6ca9"
+ integrity sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==
dependencies:
"@eslint-community/eslint-utils" "^4.2.0"
"@eslint-community/regexpp" "^4.6.1"
- "@eslint/eslintrc" "^2.1.1"
- "@eslint/js" "^8.46.0"
- "@humanwhocodes/config-array" "^0.11.10"
+ "@eslint/eslintrc" "^2.1.4"
+ "@eslint/js" "8.57.1"
+ "@humanwhocodes/config-array" "^0.13.0"
"@humanwhocodes/module-importer" "^1.0.1"
"@nodelib/fs.walk" "^1.2.8"
+ "@ungap/structured-clone" "^1.2.0"
ajv "^6.12.4"
chalk "^4.0.0"
cross-spawn "^7.0.2"
@@ -3815,7 +2805,7 @@ eslint@^8.46.0:
doctrine "^3.0.0"
escape-string-regexp "^4.0.0"
eslint-scope "^7.2.2"
- eslint-visitor-keys "^3.4.2"
+ eslint-visitor-keys "^3.4.3"
espree "^9.6.1"
esquery "^1.4.2"
esutils "^2.0.2"
@@ -3860,24 +2850,17 @@ espree@^9.6.0, espree@^9.6.1:
esprima@2.7.x, esprima@^2.7.1:
version "2.7.3"
resolved "https://registry.yarnpkg.com/esprima/-/esprima-2.7.3.tgz#96e3b70d5779f6ad49cd032673d1c312767ba581"
- integrity sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=
+ integrity sha512-OarPfz0lFCiW4/AV2Oy1Rp9qu0iusTKqykwTspGCZtPxmF81JR4MmIebvF1F9+UOKth2ZubLQ4XGGaU+hSn99A==
esprima@^4.0.0, esprima@^4.0.1:
version "4.0.1"
resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71"
integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==
-esquery@^1.0.1:
- version "1.4.0"
- resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.4.0.tgz#2148ffc38b82e8c7057dfed48425b3e61f0f24a5"
- integrity sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==
- dependencies:
- estraverse "^5.1.0"
-
-esquery@^1.4.2:
- version "1.5.0"
- resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.5.0.tgz#6ce17738de8577694edd7361c57182ac8cb0db0b"
- integrity sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==
+esquery@^1.0.1, esquery@^1.4.2:
+ version "1.6.0"
+ resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.6.0.tgz#91419234f804d852a82dceec3e16cdc22cf9dae7"
+ integrity sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==
dependencies:
estraverse "^5.1.0"
@@ -3891,7 +2874,7 @@ esrecurse@^4.1.0, esrecurse@^4.3.0:
estraverse@^1.9.1:
version "1.9.3"
resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-1.9.3.tgz#af67f2dc922582415950926091a4005d29c9bb44"
- integrity sha1-r2fy3JIlgkFZUJJgkaQAXSnJu0Q=
+ integrity sha512-25w1fMXQrGdoquWnScXZGckOv+Wes+JDnuN/+7ex3SauFRS72r2lFDec0EKPt2YD1wUJ/IrfEex+9yp4hfSOJA==
estraverse@^4.1.1:
version "4.3.0"
@@ -3899,9 +2882,9 @@ estraverse@^4.1.1:
integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==
estraverse@^5.1.0, estraverse@^5.2.0:
- version "5.2.0"
- resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.2.0.tgz#307df42547e6cc7324d3cf03c155d5cdb8c53880"
- integrity sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==
+ version "5.3.0"
+ resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123"
+ integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==
esutils@^2.0.2:
version "2.0.3"
@@ -3909,11 +2892,11 @@ esutils@^2.0.2:
integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==
ethereum-bloom-filters@^1.0.6:
- version "1.0.10"
- resolved "https://registry.yarnpkg.com/ethereum-bloom-filters/-/ethereum-bloom-filters-1.0.10.tgz#3ca07f4aed698e75bd134584850260246a5fed8a"
- integrity sha512-rxJ5OFN3RwjQxDcFP2Z5+Q9ho4eIdEmSc2ht0fCu8Se9nbXjZ7/031uXoUYJ87KHCOdVeiUuwSnoS7hmYAGVHA==
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/ethereum-bloom-filters/-/ethereum-bloom-filters-1.2.0.tgz#8294f074c1a6cbd32c39d2cc77ce86ff14797dab"
+ integrity sha512-28hyiE7HVsWubqhpVLVmZXFd4ITeHi+BUu05o9isf0GUpMtzBUi+8/gFrGaGYzvGAJQmJ3JKj77Mk9G98T84rA==
dependencies:
- js-sha3 "^0.8.0"
+ "@noble/hashes" "^1.4.0"
ethereum-cryptography@0.1.3, ethereum-cryptography@^0.1.3:
version "0.1.3"
@@ -3946,19 +2929,17 @@ ethereum-cryptography@^1.0.3:
"@scure/bip32" "1.1.5"
"@scure/bip39" "1.1.1"
-ethereum-waffle@^4.0.10:
- version "4.0.10"
- resolved "https://registry.yarnpkg.com/ethereum-waffle/-/ethereum-waffle-4.0.10.tgz#f1ef1564c0155236f1a66c6eae362a5d67c9f64c"
- integrity sha512-iw9z1otq7qNkGDNcMoeNeLIATF9yKl1M8AIeu42ElfNBplq0e+5PeasQmm8ybY/elkZ1XyRO0JBQxQdVRb8bqQ==
+ethereum-cryptography@^2.0.0, ethereum-cryptography@^2.1.2:
+ version "2.2.1"
+ resolved "https://registry.yarnpkg.com/ethereum-cryptography/-/ethereum-cryptography-2.2.1.tgz#58f2810f8e020aecb97de8c8c76147600b0b8ccf"
+ integrity sha512-r/W8lkHSiTLxUxW8Rf3u4HGB0xQweG2RyETjywylKZSzLWoWAijRz8WCuOtJ6wah+avllXBqZuk29HCCvhEIRg==
dependencies:
- "@ethereum-waffle/chai" "4.0.10"
- "@ethereum-waffle/compiler" "4.0.3"
- "@ethereum-waffle/mock-contract" "4.0.4"
- "@ethereum-waffle/provider" "4.0.5"
- solc "0.8.15"
- typechain "^8.0.0"
+ "@noble/curves" "1.4.2"
+ "@noble/hashes" "1.4.0"
+ "@scure/bip32" "1.4.0"
+ "@scure/bip39" "1.3.0"
-ethereumjs-abi@0.6.8, ethereumjs-abi@^0.6.8:
+ethereumjs-abi@^0.6.8:
version "0.6.8"
resolved "https://registry.yarnpkg.com/ethereumjs-abi/-/ethereumjs-abi-0.6.8.tgz#71bc152db099f70e62f108b7cdfca1b362c6fcae"
integrity sha512-Tx0r/iXI6r+lRsdvkFDlut0N08jWMnKRZ6Gkq+Nmw75lZe4e6o3EkSnkaBP5NF6+m5PTGAr9JP43N3LyeoglsA==
@@ -3966,17 +2947,6 @@ ethereumjs-abi@0.6.8, ethereumjs-abi@^0.6.8:
bn.js "^4.11.8"
ethereumjs-util "^6.0.0"
-ethereumjs-util@7.1.3:
- version "7.1.3"
- resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-7.1.3.tgz#b55d7b64dde3e3e45749e4c41288238edec32d23"
- integrity sha512-y+82tEbyASO0K0X1/SRhbJJoAlfcvq8JbrG4a5cjrOks7HS/36efU/0j2flxCPOUM++HFahk33kr/ZxyC4vNuw==
- dependencies:
- "@types/bn.js" "^5.1.0"
- bn.js "^5.1.2"
- create-hash "^1.1.2"
- ethereum-cryptography "^0.1.3"
- rlp "^2.2.4"
-
ethereumjs-util@^6.0.0, ethereumjs-util@^6.2.1:
version "6.2.1"
resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-6.2.1.tgz#fcb4e4dd5ceacb9d2305426ab1a5cd93e3163b69"
@@ -3990,19 +2960,7 @@ ethereumjs-util@^6.0.0, ethereumjs-util@^6.2.1:
ethjs-util "0.1.6"
rlp "^2.2.3"
-ethereumjs-util@^7.0.3, ethereumjs-util@^7.1.0:
- version "7.1.1"
- resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-7.1.1.tgz#236ef435f46820f0c420a708c0559b5897952069"
- integrity sha512-1CGBmCp3m8IMGHhAJF/icH8qjCJrfQtaZ9KW+cAVV8kyN5Lc1IRq3KjV77ILOutrCwiyf5y2gMyCrAUMoCf2Ag==
- dependencies:
- "@types/bn.js" "^5.1.0"
- bn.js "^5.1.2"
- create-hash "^1.1.2"
- ethereum-cryptography "^0.1.3"
- ethjs-util "0.1.6"
- rlp "^2.2.4"
-
-ethereumjs-util@^7.1.1, ethereumjs-util@^7.1.3, ethereumjs-util@^7.1.5:
+ethereumjs-util@^7.0.3, ethereumjs-util@^7.1.4, ethereumjs-util@^7.1.5:
version "7.1.5"
resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-7.1.5.tgz#9ecf04861e4fbbeed7465ece5f23317ad1129181"
integrity sha512-SDl5kKrQAudFBUe5OJM9Ac6WmMyYmXX/6sTmLZ3ffG2eY6ZIGBes3pEDxNN6V72WyOw4CPD5RomKdsa8DAAwLg==
@@ -4013,57 +2971,23 @@ ethereumjs-util@^7.1.1, ethereumjs-util@^7.1.3, ethereumjs-util@^7.1.5:
ethereum-cryptography "^0.1.3"
rlp "^2.2.4"
-ethereumjs-util@^7.1.4:
- version "7.1.4"
- resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-7.1.4.tgz#a6885bcdd92045b06f596c7626c3e89ab3312458"
- integrity sha512-p6KmuPCX4mZIqsQzXfmSx9Y0l2hqf+VkAiwSisW3UKUFdk8ZkAt+AYaor83z2nSi6CU2zSsXMlD80hAbNEGM0A==
+ethers@^6.1.0, ethers@^6.13.4:
+ version "6.13.4"
+ resolved "https://registry.yarnpkg.com/ethers/-/ethers-6.13.4.tgz#bd3e1c3dc1e7dc8ce10f9ffb4ee40967a651b53c"
+ integrity sha512-21YtnZVg4/zKkCQPjrDj38B1r4nQvTZLopUGMLQ1ePU2zV/joCfDC3t3iKQjWRzjjjbzR+mdAIoikeBRNkdllA==
dependencies:
- "@types/bn.js" "^5.1.0"
- bn.js "^5.1.2"
- create-hash "^1.1.2"
- ethereum-cryptography "^0.1.3"
- rlp "^2.2.4"
-
-ethers@5.7.2, ethers@^5.7.1, ethers@^5.7.2:
- version "5.7.2"
- resolved "https://registry.yarnpkg.com/ethers/-/ethers-5.7.2.tgz#3a7deeabbb8c030d4126b24f84e525466145872e"
- integrity sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg==
- dependencies:
- "@ethersproject/abi" "5.7.0"
- "@ethersproject/abstract-provider" "5.7.0"
- "@ethersproject/abstract-signer" "5.7.0"
- "@ethersproject/address" "5.7.0"
- "@ethersproject/base64" "5.7.0"
- "@ethersproject/basex" "5.7.0"
- "@ethersproject/bignumber" "5.7.0"
- "@ethersproject/bytes" "5.7.0"
- "@ethersproject/constants" "5.7.0"
- "@ethersproject/contracts" "5.7.0"
- "@ethersproject/hash" "5.7.0"
- "@ethersproject/hdnode" "5.7.0"
- "@ethersproject/json-wallets" "5.7.0"
- "@ethersproject/keccak256" "5.7.0"
- "@ethersproject/logger" "5.7.0"
- "@ethersproject/networks" "5.7.1"
- "@ethersproject/pbkdf2" "5.7.0"
- "@ethersproject/properties" "5.7.0"
- "@ethersproject/providers" "5.7.2"
- "@ethersproject/random" "5.7.0"
- "@ethersproject/rlp" "5.7.0"
- "@ethersproject/sha2" "5.7.0"
- "@ethersproject/signing-key" "5.7.0"
- "@ethersproject/solidity" "5.7.0"
- "@ethersproject/strings" "5.7.0"
- "@ethersproject/transactions" "5.7.0"
- "@ethersproject/units" "5.7.0"
- "@ethersproject/wallet" "5.7.0"
- "@ethersproject/web" "5.7.1"
- "@ethersproject/wordlists" "5.7.0"
+ "@adraffy/ens-normalize" "1.10.1"
+ "@noble/curves" "1.2.0"
+ "@noble/hashes" "1.3.2"
+ "@types/node" "22.7.5"
+ aes-js "4.0.0-beta.5"
+ tslib "2.7.0"
+ ws "8.17.1"
ethjs-unit@0.1.6:
version "0.1.6"
resolved "https://registry.yarnpkg.com/ethjs-unit/-/ethjs-unit-0.1.6.tgz#c665921e476e87bce2a9d588a6fe0405b2c41699"
- integrity sha1-xmWSHkduh7ziqdWIpv4EBbLEFpk=
+ integrity sha512-/Sn9Y0oKl0uqQuvgFk/zQgR7aw1g36qX/jzSQ5lSwlO0GigPymk4eGQfeNTD03w1dPOqfz8V77Cy43jH56pagw==
dependencies:
bn.js "4.11.6"
number-to-bn "1.7.0"
@@ -4076,16 +3000,6 @@ ethjs-util@0.1.6, ethjs-util@^0.1.6:
is-hex-prefixed "1.0.0"
strip-hex-prefix "1.0.0"
-event-target-shim@^5.0.0:
- version "5.0.1"
- resolved "https://registry.yarnpkg.com/event-target-shim/-/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789"
- integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==
-
-eventemitter3@4.0.4:
- version "4.0.4"
- resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.4.tgz#b5463ace635a083d018bdc7c917b4c5f10a85384"
- integrity sha512-rlaVLnVxtxvoyLsQQFBx53YmXHDxRIzzTLbdfxqi4yocpSjAxXwkU0cScM5JgSKMqEhrZpnvQ2D9gjylR0AimQ==
-
evp_bytestokey@^1.0.3:
version "1.0.3"
resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02"
@@ -4094,23 +3008,6 @@ evp_bytestokey@^1.0.3:
md5.js "^1.3.4"
safe-buffer "^5.1.1"
-exit-on-epipe@~1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/exit-on-epipe/-/exit-on-epipe-1.0.1.tgz#0bdd92e87d5285d267daa8171d0eb06159689692"
- integrity sha512-h2z5mrROTxce56S+pnvAV890uu7ls7f1kEvVGJbw1OlFH3/mlJ5bkXu0KRyW94v37zzHPiUd55iLn3DA7TjWpw==
-
-ext@^1.1.2:
- version "1.6.0"
- resolved "https://registry.yarnpkg.com/ext/-/ext-1.6.0.tgz#3871d50641e874cc172e2b53f919842d19db4c52"
- integrity sha512-sdBImtzkq2HpkdRLtlLWDa6w4DX22ijZLKx8BMPUuKe1c5lbN6xwQDQCxSfxBQnHZ13ls/FH0MQZx/q/gr6FQg==
- dependencies:
- type "^2.5.0"
-
-extend@~3.0.2:
- version "3.0.2"
- resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa"
- integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==
-
external-editor@^3.0.3:
version "3.1.0"
resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.1.0.tgz#cb03f740befae03ea4d283caed2741a83f335495"
@@ -4120,16 +3017,6 @@ external-editor@^3.0.3:
iconv-lite "^0.4.24"
tmp "^0.0.33"
-extsprintf@1.3.0:
- version "1.3.0"
- resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05"
- integrity sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==
-
-extsprintf@^1.2.0:
- version "1.4.1"
- resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.1.tgz#8d172c064867f235c0c84a596806d279bf4bcc07"
- integrity sha512-Wrk35e8ydCKDj/ArClo1VrPVmN8zph5V4AtHwIuHhvMXsKf73UT3BOD+azBIW+3wOJ4FhEH7zyaJCFvChjYvMA==
-
fast-base64-decode@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/fast-base64-decode/-/fast-base64-decode-1.0.0.tgz#b434a0dd7d92b12b43f26819300d2dafb83ee418"
@@ -4141,38 +3028,16 @@ fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3:
integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==
fast-diff@^1.1.2:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.2.0.tgz#73ee11982d86caaf7959828d519cfe927fac5f03"
- integrity sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.3.0.tgz#ece407fa550a64d638536cd727e129c61616e0f0"
+ integrity sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==
fast-equals@^5.0.1:
version "5.0.1"
resolved "https://registry.yarnpkg.com/fast-equals/-/fast-equals-5.0.1.tgz#a4eefe3c5d1c0d021aeed0bc10ba5e0c12ee405d"
integrity sha512-WF1Wi8PwwSY7/6Kx0vKXtw8RwuSGoM1bvDaJbu7MxDlR1vovZjIAKrnzyrThgAjm6JDTu0fVgWXDlMGspodfoQ==
-fast-glob@^3.0.3:
- version "3.2.7"
- resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.7.tgz#fd6cb7a2d7e9aa7a7846111e85a196d6b2f766a1"
- integrity sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==
- dependencies:
- "@nodelib/fs.stat" "^2.0.2"
- "@nodelib/fs.walk" "^1.2.3"
- glob-parent "^5.1.2"
- merge2 "^1.3.0"
- micromatch "^4.0.4"
-
-fast-glob@^3.2.9:
- version "3.3.1"
- resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.1.tgz#784b4e897340f3dbbef17413b3f11acf03c874c4"
- integrity sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==
- dependencies:
- "@nodelib/fs.stat" "^2.0.2"
- "@nodelib/fs.walk" "^1.2.3"
- glob-parent "^5.1.2"
- merge2 "^1.3.0"
- micromatch "^4.0.4"
-
-fast-glob@^3.3.2:
+fast-glob@^3.0.3, fast-glob@^3.3.2:
version "3.3.2"
resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.2.tgz#a904501e57cfdd2ffcded45e99a54fef55e46129"
integrity sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==
@@ -4191,19 +3056,29 @@ fast-json-stable-stringify@^2.0.0, fast-json-stable-stringify@^2.1.0:
fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.6:
version "2.0.6"
resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917"
- integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=
+ integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==
+
+fast-uri@^3.0.1:
+ version "3.0.3"
+ resolved "https://registry.yarnpkg.com/fast-uri/-/fast-uri-3.0.3.tgz#892a1c91802d5d7860de728f18608a0573142241"
+ integrity sha512-aLrHthzCjH5He4Z2H9YZ+v6Ujb9ocRuW6ZzkJQOrTxleEijANq4v1TsaPaVG1PZcuurEzrLcWRyYBYXD5cEiaw==
fastq@^1.6.0:
- version "1.13.0"
- resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.13.0.tgz#616760f88a7526bdfc596b7cab8c18938c36b98c"
- integrity sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==
+ version "1.17.1"
+ resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.17.1.tgz#2a523f07a4e7b1e81a42b91b8bf2254107753b47"
+ integrity sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==
dependencies:
reusify "^1.0.4"
+fdir@^6.4.0:
+ version "6.4.2"
+ resolved "https://registry.yarnpkg.com/fdir/-/fdir-6.4.2.tgz#ddaa7ce1831b161bc3657bb99cb36e1622702689"
+ integrity sha512-KnhMXsKSPZlAhp7+IjUkRZKPb4fUyccpDrdFXbi4QL1qkmFh9kVY09Yox+n4MaOb3lHZ1Tv829C3oaaXoMYPDQ==
+
figures@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962"
- integrity sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=
+ integrity sha512-Oa2M9atig69ZkfwiApY8F2Yy+tzMbazyvqv21R0NsSC8floSOC09BbT1ITWAdoMGQvJ/aZnR1KMwdx9tvHnTNA==
dependencies:
escape-string-regexp "^1.0.5"
@@ -4228,13 +3103,6 @@ file-entry-cache@^9.1.0:
dependencies:
flat-cache "^5.0.0"
-fill-range@^7.0.1:
- version "7.0.1"
- resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40"
- integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==
- dependencies:
- to-regex-range "^5.0.1"
-
fill-range@^7.1.1:
version "7.1.1"
resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.1.1.tgz#44265d3cac07e3ea7dc247516380643754a05292"
@@ -4254,14 +3122,14 @@ find-up-simple@^1.0.0:
resolved "https://registry.yarnpkg.com/find-up-simple/-/find-up-simple-1.0.0.tgz#21d035fde9fdbd56c8f4d2f63f32fd93a1cfc368"
integrity sha512-q7Us7kcjj2VMePAa02hDAF6d+MzsdsAWEwYyOpwUtlerRBkOEPBCRZrAV4XfcSN8fHAgaD0hP7miwoay6DCprw==
-find-up@3.0.0, find-up@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73"
- integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==
+find-up@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7"
+ integrity sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==
dependencies:
- locate-path "^3.0.0"
+ locate-path "^2.0.0"
-find-up@5.0.0, find-up@^5.0.0:
+find-up@^5.0.0:
version "5.0.0"
resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc"
integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==
@@ -4269,13 +3137,6 @@ find-up@5.0.0, find-up@^5.0.0:
locate-path "^6.0.0"
path-exists "^4.0.0"
-find-up@^2.1.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7"
- integrity sha1-RdG35QbHF93UgndaK3eSCjwMV6c=
- dependencies:
- locate-path "^2.0.0"
-
flat-cache@^2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-2.0.1.tgz#5d296d6f04bda44a4630a301413bdbc2ec085ec0"
@@ -4286,11 +3147,12 @@ flat-cache@^2.0.1:
write "1.0.3"
flat-cache@^3.0.4:
- version "3.0.4"
- resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11"
- integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.2.0.tgz#2c0c2d5040c99b1632771a9d105725c0115363ee"
+ integrity sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==
dependencies:
- flatted "^3.1.0"
+ flatted "^3.2.9"
+ keyv "^4.5.3"
rimraf "^3.0.2"
flat-cache@^5.0.0:
@@ -4301,13 +3163,6 @@ flat-cache@^5.0.0:
flatted "^3.3.1"
keyv "^4.5.4"
-flat@^4.1.0:
- version "4.1.1"
- resolved "https://registry.yarnpkg.com/flat/-/flat-4.1.1.tgz#a392059cc382881ff98642f5da4dde0a959f309b"
- integrity sha512-FmTtBsHskrU6FJ2VxCnsDb84wu9zhmO3cUX2kGFb5tuwhfXxGciiT0oRY+cck35QmG+NmGh5eLz6lLCpWTqwpA==
- dependencies:
- is-buffer "~2.0.3"
-
flat@^5.0.2:
version "5.0.2"
resolved "https://registry.yarnpkg.com/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241"
@@ -4318,70 +3173,25 @@ flatted@^2.0.0:
resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.2.tgz#4575b21e2bcee7434aa9be662f4b7b5f9c2b5138"
integrity sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==
-flatted@^3.1.0:
- version "3.2.7"
- resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.7.tgz#609f39207cb614b89d0765b477cb2d437fbf9787"
- integrity sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==
-
-flatted@^3.3.1:
+flatted@^3.2.9, flatted@^3.3.1:
version "3.3.1"
resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.3.1.tgz#21db470729a6734d4997002f439cb308987f567a"
integrity sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==
-follow-redirects@^1.12.1, follow-redirects@^1.14.0:
- version "1.14.4"
- resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.14.4.tgz#838fdf48a8bbdd79e52ee51fb1c94e3ed98b9379"
- integrity sha512-zwGkiSXC1MUJG/qmeIFH2HBJx9u0V46QGUe3YR1fXG8bXQxq7fLj0RjLZQ5nubr9qNJUZrH+xUcwXEoXNpfS+g==
-
-follow-redirects@^1.14.9, follow-redirects@^1.15.0:
- version "1.15.2"
- resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.2.tgz#b460864144ba63f2681096f274c4e57026da2c13"
- integrity sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==
-
-for-each@^0.3.3:
- version "0.3.3"
- resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e"
- integrity sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==
- dependencies:
- is-callable "^1.1.3"
-
-foreach@^2.0.5:
- version "2.0.5"
- resolved "https://registry.yarnpkg.com/foreach/-/foreach-2.0.5.tgz#0bee005018aeb260d0a3af3ae658dd0136ec1b99"
- integrity sha1-C+4AUBiusmDQo6865ljdATbsG5k=
-
-forever-agent@~0.6.1:
- version "0.6.1"
- resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91"
- integrity sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==
-
-form-data@^3.0.0:
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/form-data/-/form-data-3.0.1.tgz#ebd53791b78356a99af9a300d4282c4d5eb9755f"
- integrity sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==
- dependencies:
- asynckit "^0.4.0"
- combined-stream "^1.0.8"
- mime-types "^2.1.12"
+follow-redirects@^1.12.1, follow-redirects@^1.14.0, follow-redirects@^1.15.6:
+ version "1.15.9"
+ resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.9.tgz#a604fa10e443bf98ca94228d9eebcc2e8a2c8ee1"
+ integrity sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==
form-data@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452"
- integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.1.tgz#ba1076daaaa5bfd7e99c1a6cb02aa0a5cff90d48"
+ integrity sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==
dependencies:
asynckit "^0.4.0"
combined-stream "^1.0.8"
mime-types "^2.1.12"
-form-data@~2.3.2:
- version "2.3.3"
- resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6"
- integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==
- dependencies:
- asynckit "^0.4.0"
- combined-stream "^1.0.6"
- mime-types "^2.1.12"
-
fp-ts@1.19.3:
version "1.19.3"
resolved "https://registry.yarnpkg.com/fp-ts/-/fp-ts-1.19.3.tgz#261a60d1088fbff01f91256f91d21d0caaaaa96f"
@@ -4392,17 +3202,6 @@ fp-ts@^1.0.0:
resolved "https://registry.yarnpkg.com/fp-ts/-/fp-ts-1.19.5.tgz#3da865e585dfa1fdfd51785417357ac50afc520a"
integrity sha512-wDNqTimnzs8QqpldiId9OavWK2NptormjXnRJTQecNjzwfyp6P/8s/zG8e4h3ja3oqkKaY72UlTjQYt/1yXf9A==
-fs-extra@^0.30.0:
- version "0.30.0"
- resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-0.30.0.tgz#f233ffcc08d4da7d432daa449776989db1df93f0"
- integrity sha1-8jP/zAjU2n1DLapEl3aYnbHfk/A=
- dependencies:
- graceful-fs "^4.1.2"
- jsonfile "^2.1.0"
- klaw "^1.0.0"
- path-is-absolute "^1.0.0"
- rimraf "^2.2.8"
-
fs-extra@^7.0.0, fs-extra@^7.0.1:
version "7.0.1"
resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9"
@@ -4434,59 +3233,22 @@ fs-extra@^9.1.0:
fs.realpath@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
- integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8=
-
-fsevents@~2.1.1:
- version "2.1.3"
- resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.3.tgz#fb738703ae8d2f9fe900c33836ddebee8b97f23e"
- integrity sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==
+ integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==
fsevents@~2.3.2:
- version "2.3.2"
- resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a"
- integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==
-
-function-bind@^1.1.1:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d"
- integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==
+ version "2.3.3"
+ resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6"
+ integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==
-function.prototype.name@^1.1.5:
- version "1.1.5"
- resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.5.tgz#cce0505fe1ffb80503e6f9e46cc64e46a12a9621"
- integrity sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==
- dependencies:
- call-bind "^1.0.2"
- define-properties "^1.1.3"
- es-abstract "^1.19.0"
- functions-have-names "^1.2.2"
+function-bind@^1.1.2:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c"
+ integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==
-functional-red-black-tree@^1.0.1, functional-red-black-tree@~1.0.1:
+functional-red-black-tree@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327"
- integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=
-
-functions-have-names@^1.2.2, functions-have-names@^1.2.3:
- version "1.2.3"
- resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834"
- integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==
-
-ganache@7.4.3:
- version "7.4.3"
- resolved "https://registry.yarnpkg.com/ganache/-/ganache-7.4.3.tgz#e995f1250697264efbb34d4241c374a2b0271415"
- integrity sha512-RpEDUiCkqbouyE7+NMXG26ynZ+7sGiODU84Kz+FVoXUnQ4qQM4M8wif3Y4qUCt+D/eM1RVeGq0my62FPD6Y1KA==
- dependencies:
- "@trufflesuite/bigint-buffer" "1.1.10"
- "@types/bn.js" "^5.1.0"
- "@types/lru-cache" "5.1.1"
- "@types/seedrandom" "3.0.1"
- emittery "0.10.0"
- keccak "3.0.2"
- leveldown "6.1.0"
- secp256k1 "4.0.3"
- optionalDependencies:
- bufferutil "4.0.5"
- utf-8-validate "5.0.7"
+ integrity sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==
ganache@7.9.2:
version "7.9.2"
@@ -4514,55 +3276,21 @@ gensequence@^7.0.0:
resolved "https://registry.yarnpkg.com/gensequence/-/gensequence-7.0.0.tgz#bb6aedec8ff665e3a6c42f92823121e3a6ea7718"
integrity sha512-47Frx13aZh01afHJTB3zTtKIlFI6vWY+MYCN9Qpew6i52rfKjnhCF/l1YlC8UmEMvvntZZ6z4PiCcmyuedR2aQ==
-get-caller-file@^2.0.1, get-caller-file@^2.0.5:
+get-caller-file@^2.0.5:
version "2.0.5"
resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e"
integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==
-get-func-name@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/get-func-name/-/get-func-name-2.0.0.tgz#ead774abee72e20409433a066366023dd6887a41"
- integrity sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=
-
-get-intrinsic@^1.0.2, get-intrinsic@^1.1.0, get-intrinsic@^1.1.1:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.1.tgz#15f59f376f855c446963948f0d24cd3637b4abc6"
- integrity sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==
- dependencies:
- function-bind "^1.1.1"
- has "^1.0.3"
- has-symbols "^1.0.1"
-
-get-intrinsic@^1.1.3, get-intrinsic@^1.2.0, get-intrinsic@^1.2.1:
- version "1.2.1"
- resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.1.tgz#d295644fed4505fc9cde952c37ee12b477a83d82"
- integrity sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==
- dependencies:
- function-bind "^1.1.1"
- has "^1.0.3"
- has-proto "^1.0.1"
- has-symbols "^1.0.3"
+get-func-name@^2.0.1, get-func-name@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/get-func-name/-/get-func-name-2.0.2.tgz#0d7cf20cd13fda808669ffa88f4ffc7a3943fc41"
+ integrity sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==
get-stdin@^9.0.0:
version "9.0.0"
resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-9.0.0.tgz#3983ff82e03d56f1b2ea0d3e60325f39d703a575"
integrity sha512-dVKBjfWisLAicarI2Sf+JuBE/DghV4UzNAVe9yhEJuzeREd3JhOTE9cUaJTeSa77fsbQUK3pcOpJfM59+VKZaA==
-get-symbol-description@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.0.0.tgz#7fdb81c900101fbd564dd5f1a30af5aadc1e58d6"
- integrity sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==
- dependencies:
- call-bind "^1.0.2"
- get-intrinsic "^1.1.1"
-
-getpass@^0.1.1:
- version "0.1.7"
- resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa"
- integrity sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==
- dependencies:
- assert-plus "^1.0.0"
-
ghost-testrpc@^0.0.2:
version "0.0.2"
resolved "https://registry.yarnpkg.com/ghost-testrpc/-/ghost-testrpc-0.0.2.tgz#c4de9557b1d1ae7b2d20bbe474a91378ca90ce92"
@@ -4571,7 +3299,7 @@ ghost-testrpc@^0.0.2:
chalk "^2.4.2"
node-emoji "^1.10.0"
-glob-parent@^5.1.2, glob-parent@~5.1.0, glob-parent@~5.1.2:
+glob-parent@^5.1.2, glob-parent@~5.1.2:
version "5.1.2"
resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4"
integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==
@@ -4585,18 +3313,6 @@ glob-parent@^6.0.2:
dependencies:
is-glob "^4.0.3"
-glob@7.1.3:
- version "7.1.3"
- resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1"
- integrity sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==
- dependencies:
- fs.realpath "^1.0.0"
- inflight "^1.0.4"
- inherits "2"
- minimatch "^3.0.4"
- once "^1.3.0"
- path-is-absolute "^1.0.0"
-
glob@7.1.7:
version "7.1.7"
resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.7.tgz#3b193e9233f01d42d0b3f78294bbeeb418f94a90"
@@ -4609,7 +3325,7 @@ glob@7.1.7:
once "^1.3.0"
path-is-absolute "^1.0.0"
-glob@7.2.0, glob@^7.0.0, glob@^7.1.2, glob@^7.1.3:
+glob@7.2.0:
version "7.2.0"
resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023"
integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==
@@ -4624,7 +3340,7 @@ glob@7.2.0, glob@^7.0.0, glob@^7.1.2, glob@^7.1.3:
glob@^5.0.15:
version "5.0.15"
resolved "https://registry.yarnpkg.com/glob/-/glob-5.0.15.tgz#1bc936b9e02f4a603fcc222ecf7633d30b8b93b1"
- integrity sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=
+ integrity sha512-c9IPMazfRITpmAAKi22dK1VKxGDX9ehhqfABDriL/lzO92xcUKEJPQHrVA/2YHSNFB4iFlykVmWvwo48nr3OxA==
dependencies:
inflight "^1.0.4"
inherits "2"
@@ -4632,6 +3348,29 @@ glob@^5.0.15:
once "^1.3.0"
path-is-absolute "^1.0.0"
+glob@^7.0.0, glob@^7.1.2, glob@^7.1.3:
+ version "7.2.3"
+ resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b"
+ integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==
+ dependencies:
+ fs.realpath "^1.0.0"
+ inflight "^1.0.4"
+ inherits "2"
+ minimatch "^3.1.1"
+ once "^1.3.0"
+ path-is-absolute "^1.0.0"
+
+glob@^8.1.0:
+ version "8.1.0"
+ resolved "https://registry.yarnpkg.com/glob/-/glob-8.1.0.tgz#d388f656593ef708ee3e34640fdfb99a9fd1c33e"
+ integrity sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==
+ dependencies:
+ fs.realpath "^1.0.0"
+ inflight "^1.0.4"
+ inherits "2"
+ minimatch "^5.0.1"
+ once "^1.3.0"
+
global-directory@^4.0.1:
version "4.0.1"
resolved "https://registry.yarnpkg.com/global-directory/-/global-directory-4.0.1.tgz#4d7ac7cfd2cb73f304c53b8810891748df5e361e"
@@ -4661,19 +3400,12 @@ globals@^11.7.0:
integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==
globals@^13.19.0:
- version "13.20.0"
- resolved "https://registry.yarnpkg.com/globals/-/globals-13.20.0.tgz#ea276a1e508ffd4f1612888f9d1bad1e2717bf82"
- integrity sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==
+ version "13.24.0"
+ resolved "https://registry.yarnpkg.com/globals/-/globals-13.24.0.tgz#8432a19d78ce0c1e833949c36adb345400bb1171"
+ integrity sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==
dependencies:
type-fest "^0.20.2"
-globalthis@^1.0.3:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/globalthis/-/globalthis-1.0.3.tgz#5852882a52b80dc301b0660273e1ed082f0b6ccf"
- integrity sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==
- dependencies:
- define-properties "^1.1.3"
-
globby@^10.0.1:
version "10.0.2"
resolved "https://registry.yarnpkg.com/globby/-/globby-10.0.2.tgz#277593e745acaa4646c3ab411289ec47a0392543"
@@ -4688,92 +3420,49 @@ globby@^10.0.1:
merge2 "^1.2.3"
slash "^3.0.0"
-globby@^11.1.0:
- version "11.1.0"
- resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b"
- integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==
- dependencies:
- array-union "^2.1.0"
- dir-glob "^3.0.1"
- fast-glob "^3.2.9"
- ignore "^5.2.0"
- merge2 "^1.4.1"
- slash "^3.0.0"
-
-gopd@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.0.1.tgz#29ff76de69dac7489b7c0918a5788e56477c332c"
- integrity sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==
- dependencies:
- get-intrinsic "^1.1.3"
-
-graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.1.9, graceful-fs@^4.2.0, graceful-fs@^4.2.4:
- version "4.2.8"
- resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.8.tgz#e412b8d33f5e006593cbd3cee6df9f2cebbe802a"
- integrity sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==
+graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.4:
+ version "4.2.11"
+ resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3"
+ integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==
graphemer@^1.4.0:
version "1.4.0"
resolved "https://registry.yarnpkg.com/graphemer/-/graphemer-1.4.0.tgz#fb2f1d55e0e3a1849aeffc90c4fa0dd53a0e66c6"
integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==
-growl@1.10.5:
- version "1.10.5"
- resolved "https://registry.yarnpkg.com/growl/-/growl-1.10.5.tgz#f2735dc2283674fa67478b10181059355c369e5e"
- integrity sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==
-
handlebars@^4.0.1:
- version "4.7.7"
- resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.7.7.tgz#9ce33416aad02dbd6c8fafa8240d5d98004945a1"
- integrity sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==
+ version "4.7.8"
+ resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.7.8.tgz#41c42c18b1be2365439188c77c6afae71c0cd9e9"
+ integrity sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==
dependencies:
minimist "^1.2.5"
- neo-async "^2.6.0"
+ neo-async "^2.6.2"
source-map "^0.6.1"
wordwrap "^1.0.0"
optionalDependencies:
uglify-js "^3.1.4"
-har-schema@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92"
- integrity sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==
-
-har-validator@~5.1.3:
- version "5.1.5"
- resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.5.tgz#1f0803b9f8cb20c0fa13822df1ecddb36bde1efd"
- integrity sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==
- dependencies:
- ajv "^6.12.3"
- har-schema "^2.0.0"
-
-"hardhat@2.11.0 - 2.16.1":
- version "2.16.1"
- resolved "https://registry.yarnpkg.com/hardhat/-/hardhat-2.16.1.tgz#fd2288ce44f6846a70ba332b3d8158522447262a"
- integrity sha512-QpBjGXFhhSYoYBGEHyoau/A63crZOP+i3GbNxzLGkL6IklzT+piN14+wGnINNCg5BLSKisQI/RAySPzaWRcx/g==
+hardhat@^2.22.15:
+ version "2.22.15"
+ resolved "https://registry.yarnpkg.com/hardhat/-/hardhat-2.22.15.tgz#319b4948f875968fde3f0d09a7edfe74e16b1365"
+ integrity sha512-BpTGa9PE/sKAaHi4s/S1e9WGv63DR1m7Lzfd60C8gSEchDPfAJssVRSq0MZ2v2k76ig9m0kHAwVLf5teYwu/Mw==
dependencies:
"@ethersproject/abi" "^5.1.2"
"@metamask/eth-sig-util" "^4.0.0"
- "@nomicfoundation/ethereumjs-block" "5.0.1"
- "@nomicfoundation/ethereumjs-blockchain" "7.0.1"
- "@nomicfoundation/ethereumjs-common" "4.0.1"
- "@nomicfoundation/ethereumjs-evm" "2.0.1"
- "@nomicfoundation/ethereumjs-rlp" "5.0.1"
- "@nomicfoundation/ethereumjs-statemanager" "2.0.1"
- "@nomicfoundation/ethereumjs-trie" "6.0.1"
- "@nomicfoundation/ethereumjs-tx" "5.0.1"
- "@nomicfoundation/ethereumjs-util" "9.0.1"
- "@nomicfoundation/ethereumjs-vm" "7.0.1"
+ "@nomicfoundation/edr" "^0.6.4"
+ "@nomicfoundation/ethereumjs-common" "4.0.4"
+ "@nomicfoundation/ethereumjs-tx" "5.0.4"
+ "@nomicfoundation/ethereumjs-util" "9.0.4"
"@nomicfoundation/solidity-analyzer" "^0.1.0"
"@sentry/node" "^5.18.1"
"@types/bn.js" "^5.1.0"
"@types/lru-cache" "^5.1.0"
- abort-controller "^3.0.0"
adm-zip "^0.4.16"
aggregate-error "^3.0.0"
ansi-escapes "^4.3.0"
+ boxen "^5.1.2"
chalk "^2.4.2"
- chokidar "^3.4.0"
+ chokidar "^4.0.0"
ci-info "^2.0.0"
debug "^4.1.1"
enquirer "^2.3.0"
@@ -4786,6 +3475,7 @@ har-validator@~5.1.3:
glob "7.2.0"
immutable "^4.0.0-rc.12"
io-ts "1.10.4"
+ json-stream-stringify "^3.1.4"
keccak "^3.0.2"
lodash "^4.17.11"
mnemonist "^0.38.0"
@@ -4794,7 +3484,7 @@ har-validator@~5.1.3:
raw-body "^2.4.1"
resolve "1.17.0"
semver "^6.3.0"
- solc "0.7.3"
+ solc "0.8.26"
source-map-support "^0.5.13"
stacktrace-parser "^0.1.10"
tsort "0.0.1"
@@ -4802,71 +3492,25 @@ har-validator@~5.1.3:
uuid "^8.3.2"
ws "^7.4.6"
-has-bigints@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.1.tgz#64fe6acb020673e3b78db035a5af69aa9d07b113"
- integrity sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==
-
-has-bigints@^1.0.2:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.2.tgz#0871bd3e3d51626f6ca0966668ba35d5602d6eaa"
- integrity sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==
-
has-flag@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa"
- integrity sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=
+ integrity sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==
has-flag@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd"
- integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0=
+ integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==
has-flag@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b"
integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==
-has-own-prop@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/has-own-prop/-/has-own-prop-2.0.0.tgz#f0f95d58f65804f5d218db32563bb85b8e0417af"
- integrity sha512-Pq0h+hvsVm6dDEa8x82GnLSYHOzNDt7f0ddFa3FqcQlgzEiptPqL+XrOJNavjOzSYiYWIrgeVYYgGlLmnxwilQ==
-
-has-property-descriptors@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz#610708600606d36961ed04c196193b6a607fa861"
- integrity sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==
- dependencies:
- get-intrinsic "^1.1.1"
-
-has-proto@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.0.1.tgz#1885c1305538958aff469fef37937c22795408e0"
- integrity sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==
-
-has-symbols@^1.0.0, has-symbols@^1.0.3:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8"
- integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==
-
-has-symbols@^1.0.1, has-symbols@^1.0.2:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.2.tgz#165d3070c00309752a1236a479331e3ac56f1423"
- integrity sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==
-
-has-tostringtag@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz#7e133818a7d394734f941e73c3d3f9291e658b25"
- integrity sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==
- dependencies:
- has-symbols "^1.0.2"
-
-has@^1.0.3:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796"
- integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==
- dependencies:
- function-bind "^1.1.1"
+has-own-prop@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/has-own-prop/-/has-own-prop-2.0.0.tgz#f0f95d58f65804f5d218db32563bb85b8e0417af"
+ integrity sha512-Pq0h+hvsVm6dDEa8x82GnLSYHOzNDt7f0ddFa3FqcQlgzEiptPqL+XrOJNavjOzSYiYWIrgeVYYgGlLmnxwilQ==
hash-base@^3.0.0:
version "3.1.0"
@@ -4885,7 +3529,14 @@ hash.js@1.1.7, hash.js@^1.0.0, hash.js@^1.0.3, hash.js@^1.1.7:
inherits "^2.0.3"
minimalistic-assert "^1.0.1"
-he@1.2.0:
+hasown@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.2.tgz#003eaf91be7adc372e84ec59dc37252cedb80003"
+ integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==
+ dependencies:
+ function-bind "^1.1.2"
+
+he@^1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f"
integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==
@@ -4904,40 +3555,21 @@ hmac-drbg@^1.0.1:
minimalistic-assert "^1.0.0"
minimalistic-crypto-utils "^1.0.1"
-hosted-git-info@^2.6.0:
- version "2.8.9"
- resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9"
- integrity sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==
-
-http-errors@1.7.3:
- version "1.7.3"
- resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.3.tgz#6c619e4f9c60308c38519498c14fbb10aacebb06"
- integrity sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw==
+http-errors@2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3"
+ integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==
dependencies:
- depd "~1.1.2"
+ depd "2.0.0"
inherits "2.0.4"
- setprototypeof "1.1.1"
- statuses ">= 1.5.0 < 2"
- toidentifier "1.0.0"
-
-http-https@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/http-https/-/http-https-1.0.0.tgz#2f908dd5f1db4068c058cd6e6d4ce392c913389b"
- integrity sha1-L5CN1fHbQGjAWM1ubUzjkskTOJs=
-
-http-signature@~1.2.0:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1"
- integrity sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==
- dependencies:
- assert-plus "^1.0.0"
- jsprim "^1.2.2"
- sshpk "^1.7.0"
+ setprototypeof "1.2.0"
+ statuses "2.0.1"
+ toidentifier "1.0.1"
https-proxy-agent@^5.0.0:
- version "5.0.0"
- resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz#e2a90542abb68a762e0a0850f6c9edadfd8506b2"
- integrity sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==
+ version "5.0.1"
+ resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6"
+ integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==
dependencies:
agent-base "6"
debug "4"
@@ -4949,7 +3581,7 @@ iconv-lite@0.4.24, iconv-lite@^0.4.24:
dependencies:
safer-buffer ">= 2.1.2 < 3"
-ieee754@^1.1.13, ieee754@^1.1.4, ieee754@^1.2.1:
+ieee754@^1.1.4, ieee754@^1.2.1:
version "1.2.1"
resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352"
integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==
@@ -4959,35 +3591,20 @@ ignore@^4.0.6:
resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc"
integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==
-ignore@^5.1.1:
- version "5.1.8"
- resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.8.tgz#f150a8b50a34289b33e22f5889abd4d8016f0e57"
- integrity sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==
-
-ignore@^5.2.0, ignore@^5.2.4:
- version "5.2.4"
- resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.4.tgz#a291c0c6178ff1b960befe47fcdec301674a6324"
- integrity sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==
-
-immediate@^3.2.3:
- version "3.3.0"
- resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.3.0.tgz#1aef225517836bcdf7f2a2de2600c79ff0269266"
- integrity sha512-HR7EVodfFUdQCTIeySw+WDRFJlPcLOJbXfwwZ7Oom6tjsvZ3bOkCDJHehQC3nxJrv7+f9XecwazynjU8e4Vw3Q==
-
-immediate@~3.2.3:
- version "3.2.3"
- resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.2.3.tgz#d140fa8f614659bd6541233097ddaac25cdd991c"
- integrity sha512-RrGCXRm/fRVqMIhqXrGEX9rRADavPiDFSoMb/k64i9XMk8uH4r/Omi5Ctierj6XzNecwDbO4WuFbDD1zmpl3Tg==
+ignore@^5.1.1, ignore@^5.2.0, ignore@^5.3.1:
+ version "5.3.2"
+ resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.2.tgz#3cd40e729f3643fd87cb04e50bf0eb722bc596f5"
+ integrity sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==
immutable@^4.0.0-rc.12:
- version "4.0.0-rc.15"
- resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.0.0-rc.15.tgz#c30056f05eaaf5650fd15230586688fdd15c54bc"
- integrity sha512-v8+A3sNyaieoP9dHegl3tEYnIZa7vqNiSv0U6D7YddiZi34VjKy4GsIxrRHj2d8+CS3MeiVja5QyNe4JO/aEXA==
+ version "4.3.7"
+ resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.3.7.tgz#c70145fc90d89fb02021e65c84eb0226e4e5a381"
+ integrity sha512-1hqclzwYwjRDFLjcFxOM5AYkkG0rpFPpr1RLPMEuGczoS7YA8gLhy8SWXYRAA/XwfEHpfo3cw5JGioS32fnMRw==
import-fresh@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-2.0.0.tgz#d81355c15612d386c61f9ddd3922d4304822a546"
- integrity sha1-2BNVwVYS04bGH53dOSLUMEgipUY=
+ integrity sha512-eZ5H8rcgYazHbKC3PG4ClHNykCSxtAhxSSEM+2mb+7evD2CKF5V7c0dNum7AdpDh0ZdICwZY9sRSn8f+KH96sg==
dependencies:
caller-path "^2.0.0"
resolve-from "^3.0.0"
@@ -5008,7 +3625,7 @@ import-meta-resolve@^4.1.0:
imurmurhash@^0.1.4:
version "0.1.4"
resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea"
- integrity sha1-khi5srkoojixPcT7a21XbyMUU+o=
+ integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==
indent-string@^4.0.0:
version "4.0.0"
@@ -5018,12 +3635,12 @@ indent-string@^4.0.0:
inflight@^1.0.4:
version "1.0.6"
resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
- integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=
+ integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==
dependencies:
once "^1.3.0"
wrappy "1"
-inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1:
+inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4:
version "2.0.4"
resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
@@ -5057,24 +3674,6 @@ inquirer@^6.2.2:
strip-ansi "^5.1.0"
through "^2.3.6"
-internal-slot@^1.0.3:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.3.tgz#7347e307deeea2faac2ac6205d4bc7d34967f59c"
- integrity sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==
- dependencies:
- get-intrinsic "^1.1.0"
- has "^1.0.3"
- side-channel "^1.0.4"
-
-internal-slot@^1.0.5:
- version "1.0.5"
- resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.5.tgz#f2a2ee21f668f8627a4667f309dc0f4fb6674986"
- integrity sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==
- dependencies:
- get-intrinsic "^1.2.0"
- has "^1.0.3"
- side-channel "^1.0.4"
-
interpret@^1.0.0:
version "1.4.0"
resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.4.0.tgz#665ab8bc4da27a774a40584e812e3e0fa45b1a1e"
@@ -5087,34 +3686,10 @@ io-ts@1.10.4:
dependencies:
fp-ts "^1.0.0"
-is-arguments@^1.0.4:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.1.1.tgz#15b3f88fda01f2a97fec84ca761a560f123efa9b"
- integrity sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==
- dependencies:
- call-bind "^1.0.2"
- has-tostringtag "^1.0.0"
-
-is-array-buffer@^3.0.1, is-array-buffer@^3.0.2:
- version "3.0.2"
- resolved "https://registry.yarnpkg.com/is-array-buffer/-/is-array-buffer-3.0.2.tgz#f2653ced8412081638ecb0ebbd0c41c6e0aecbbe"
- integrity sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==
- dependencies:
- call-bind "^1.0.2"
- get-intrinsic "^1.2.0"
- is-typed-array "^1.1.10"
-
is-arrayish@^0.2.1:
version "0.2.1"
resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d"
- integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=
-
-is-bigint@^1.0.1:
- version "1.0.4"
- resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.4.tgz#08147a1875bc2b32005d41ccd8291dffc6691df3"
- integrity sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==
- dependencies:
- has-bigints "^1.0.1"
+ integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==
is-binary-path@~2.1.0:
version "2.1.0"
@@ -5123,105 +3698,49 @@ is-binary-path@~2.1.0:
dependencies:
binary-extensions "^2.0.0"
-is-boolean-object@^1.1.0:
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.2.tgz#5c6dc200246dd9321ae4b885a114bb1f75f63719"
- integrity sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==
- dependencies:
- call-bind "^1.0.2"
- has-tostringtag "^1.0.0"
-
-is-buffer@^2.0.5, is-buffer@~2.0.3:
+is-buffer@^2.0.5:
version "2.0.5"
resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.5.tgz#ebc252e400d22ff8d77fa09888821a24a658c191"
integrity sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==
-is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.4:
- version "1.2.4"
- resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.4.tgz#47301d58dd0259407865547853df6d61fe471945"
- integrity sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==
-
-is-callable@^1.2.7:
- version "1.2.7"
- resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055"
- integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==
-
-is-core-module@^2.2.0:
- version "2.6.0"
- resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.6.0.tgz#d7553b2526fe59b92ba3e40c8df757ec8a709e19"
- integrity sha512-wShG8vs60jKfPWpF2KZRaAtvt3a20OAn7+IJ6hLPECpSABLcKtFKTTI4ZtH5QcBruBHlq+WsdHWyz0BCZW7svQ==
- dependencies:
- has "^1.0.3"
-
-is-date-object@^1.0.1:
- version "1.0.5"
- resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.5.tgz#0841d5536e724c25597bf6ea62e1bd38298df31f"
- integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==
+is-core-module@^2.13.0:
+ version "2.15.1"
+ resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.15.1.tgz#a7363a25bee942fefab0de13bf6aa372c82dcc37"
+ integrity sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==
dependencies:
- has-tostringtag "^1.0.0"
+ hasown "^2.0.2"
is-directory@^0.3.1:
version "0.3.1"
resolved "https://registry.yarnpkg.com/is-directory/-/is-directory-0.3.1.tgz#61339b6f2475fc772fd9c9d83f5c8575dc154ae1"
- integrity sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=
+ integrity sha512-yVChGzahRFvbkscn2MlwGismPO12i9+znNruC5gVEntG3qu0xQMzsGg/JFbrsqDOHtHFPci+V5aP5T9I+yeKqw==
is-extglob@^2.1.1:
version "2.1.1"
resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"
- integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=
+ integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==
is-fullwidth-code-point@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f"
- integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=
+ integrity sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==
is-fullwidth-code-point@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d"
integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==
-is-generator-function@^1.0.7:
- version "1.0.10"
- resolved "https://registry.yarnpkg.com/is-generator-function/-/is-generator-function-1.0.10.tgz#f1558baf1ac17e0deea7c0415c438351ff2b3c72"
- integrity sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==
- dependencies:
- has-tostringtag "^1.0.0"
-
-is-glob@^4.0.0, is-glob@^4.0.3:
+is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1:
version "4.0.3"
resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084"
integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==
dependencies:
is-extglob "^2.1.1"
-is-glob@^4.0.1, is-glob@~4.0.1:
- version "4.0.2"
- resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.2.tgz#859fc2e731e58c902f99fcabccb75a7dd07d29d8"
- integrity sha512-ZZTOjRcDjuAAAv2cTBQP/lL59ZTArx77+7UzHdWW/XB1mrfp7DEaVpKmZ0XIzx+M7AxfhKcqV+nMetUQmFifwg==
- dependencies:
- is-extglob "^2.1.1"
-
is-hex-prefixed@1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/is-hex-prefixed/-/is-hex-prefixed-1.0.0.tgz#7d8d37e6ad77e5d127148913c573e082d777f554"
- integrity sha1-fY035q135dEnFIkTxXPggtd39VQ=
-
-is-negative-zero@^2.0.1:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.1.tgz#3de746c18dda2319241a53675908d8f766f11c24"
- integrity sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==
-
-is-negative-zero@^2.0.2:
- version "2.0.2"
- resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.2.tgz#7bf6f03a28003b8b3965de3ac26f664d765f3150"
- integrity sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==
-
-is-number-object@^1.0.4:
- version "1.0.6"
- resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.6.tgz#6a7aaf838c7f0686a50b4553f7e54a96494e89f0"
- integrity sha512-bEVOqiRcvo3zO1+G2lVMy+gkkEm9Yh7cDMRusKKu5ZJKPUYSJwICTKZrNKHA2EbSP0Tu0+6B/emsYNHZyn6K8g==
- dependencies:
- has-tostringtag "^1.0.0"
+ integrity sha512-WvtOiug1VFrE9v1Cydwm+FnXd3+w9GaeVUss5W4v/SLy3UW00vP+6iNF2SdnfiBoLy4bTqVdkftNGTUeOFVsbA==
is-number@^7.0.0:
version "7.0.0"
@@ -5238,89 +3757,20 @@ is-plain-obj@^2.1.0:
resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287"
integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==
-is-regex@^1.1.4:
- version "1.1.4"
- resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958"
- integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==
- dependencies:
- call-bind "^1.0.2"
- has-tostringtag "^1.0.0"
-
-is-shared-array-buffer@^1.0.2:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz#8f259c573b60b6a32d4058a1a07430c0a7344c79"
- integrity sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==
- dependencies:
- call-bind "^1.0.2"
-
-is-string@^1.0.5, is-string@^1.0.7:
- version "1.0.7"
- resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.7.tgz#0dd12bf2006f255bb58f695110eff7491eebc0fd"
- integrity sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==
- dependencies:
- has-tostringtag "^1.0.0"
-
-is-symbol@^1.0.2, is-symbol@^1.0.3:
- version "1.0.4"
- resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.4.tgz#a6dac93b635b063ca6872236de88910a57af139c"
- integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==
- dependencies:
- has-symbols "^1.0.2"
-
-is-typed-array@^1.1.10, is-typed-array@^1.1.9:
- version "1.1.12"
- resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.12.tgz#d0bab5686ef4a76f7a73097b95470ab199c57d4a"
- integrity sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==
- dependencies:
- which-typed-array "^1.1.11"
-
-is-typed-array@^1.1.3, is-typed-array@^1.1.7:
- version "1.1.8"
- resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.8.tgz#cbaa6585dc7db43318bc5b89523ea384a6f65e79"
- integrity sha512-HqH41TNZq2fgtGT8WHVFVJhBVGuY3AnP3Q36K8JKXUxSxRgk/d+7NjmwG2vo2mYmXK8UYZKu0qH8bVP5gEisjA==
- dependencies:
- available-typed-arrays "^1.0.5"
- call-bind "^1.0.2"
- es-abstract "^1.18.5"
- foreach "^2.0.5"
- has-tostringtag "^1.0.0"
-
-is-typedarray@^1.0.0, is-typedarray@~1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a"
- integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=
-
is-unicode-supported@^0.1.0:
version "0.1.0"
resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7"
integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==
-is-url@^1.2.4:
- version "1.2.4"
- resolved "https://registry.yarnpkg.com/is-url/-/is-url-1.2.4.tgz#04a4df46d28c4cff3d73d01ff06abeb318a1aa52"
- integrity sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==
-
-is-weakref@^1.0.2:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.0.2.tgz#9529f383a9338205e89765e0392efc2f100f06f2"
- integrity sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==
- dependencies:
- call-bind "^1.0.2"
-
isarray@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
- integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=
-
-isarray@^2.0.5:
- version "2.0.5"
- resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723"
- integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==
+ integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==
isexe@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
- integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=
+ integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==
isomorphic-unfetch@^3.0.0:
version "3.1.0"
@@ -5330,26 +3780,16 @@ isomorphic-unfetch@^3.0.0:
node-fetch "^2.6.1"
unfetch "^4.2.0"
-isstream@~0.1.2:
- version "0.1.2"
- resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a"
- integrity sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==
+isows@1.0.6:
+ version "1.0.6"
+ resolved "https://registry.yarnpkg.com/isows/-/isows-1.0.6.tgz#0da29d706fa51551c663c627ace42769850f86e7"
+ integrity sha512-lPHCayd40oW98/I0uvgaHKWCSvkzY27LjWLbtzOm64yQ+G3Q5npjjbdppU65iZXkK1Zt+kH9pfegli0AYfwYYw==
js-cookie@^2.2.1:
version "2.2.1"
resolved "https://registry.yarnpkg.com/js-cookie/-/js-cookie-2.2.1.tgz#69e106dc5d5806894562902aa5baec3744e9b2b8"
integrity sha512-HvdH2LzI/EAZcUwA8+0nKNtWHqS+ZmijLA30RwZA0bo7ToCckjK5MkGhjED9KoRcXO6BaGI3I9UIzSA1FKFPOQ==
-js-sdsl@^4.1.4:
- version "4.4.2"
- resolved "https://registry.yarnpkg.com/js-sdsl/-/js-sdsl-4.4.2.tgz#2e3c031b1f47d3aca8b775532e3ebb0818e7f847"
- integrity sha512-dwXFwByc/ajSV6m5bcKAPwe4yDDF6D614pxmIi5odytzxRlwqF6nwoiCek80Ixc7Cvma5awClxrzFtxCQvcM8w==
-
-js-sha3@0.5.7:
- version "0.5.7"
- resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.5.7.tgz#0d4ffd8002d5333aabaf4a23eed2f6374c9f28e7"
- integrity sha1-DU/9gALVMzqrr0oj7tL2N0yfKOc=
-
js-sha3@0.8.0, js-sha3@^0.8.0:
version "0.8.0"
resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.8.0.tgz#b9b7a5da73afad7dedd0f8c463954cbde6818840"
@@ -5360,14 +3800,6 @@ js-tokens@^4.0.0:
resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499"
integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==
-js-yaml@3.13.1:
- version "3.13.1"
- resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847"
- integrity sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==
- dependencies:
- argparse "^1.0.7"
- esprima "^4.0.0"
-
js-yaml@3.x, js-yaml@^3.12.0, js-yaml@^3.13.0, js-yaml@^3.13.1:
version "3.14.1"
resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537"
@@ -5376,25 +3808,13 @@ js-yaml@3.x, js-yaml@^3.12.0, js-yaml@^3.13.0, js-yaml@^3.13.1:
argparse "^1.0.7"
esprima "^4.0.0"
-js-yaml@4.1.0, js-yaml@^4.1.0:
+js-yaml@^4.1.0:
version "4.1.0"
resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602"
integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==
dependencies:
argparse "^2.0.1"
-jsbn@~0.1.0:
- version "0.1.1"
- resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513"
- integrity sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==
-
-json-bigint@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/json-bigint/-/json-bigint-1.0.0.tgz#ae547823ac0cad8398667f8cd9ef4730f5b01ff1"
- integrity sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ==
- dependencies:
- bignumber.js "^9.0.0"
-
json-buffer@3.0.1:
version "3.0.1"
resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13"
@@ -5415,32 +3835,20 @@ json-schema-traverse@^1.0.0:
resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2"
integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==
-json-schema@0.4.0:
- version "0.4.0"
- resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.4.0.tgz#f7de4cf6efab838ebaeb3236474cbba5a1930ab5"
- integrity sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==
-
json-stable-stringify-without-jsonify@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651"
- integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=
-
-json-stringify-safe@~5.0.1:
- version "5.0.1"
- resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb"
- integrity sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==
+ integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==
-jsonfile@^2.1.0:
- version "2.4.0"
- resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-2.4.0.tgz#3736a2b428b87bbda0cc83b53fa3d633a35c2ae8"
- integrity sha1-NzaitCi4e72gzIO1P6PWM6NcKug=
- optionalDependencies:
- graceful-fs "^4.1.6"
+json-stream-stringify@^3.1.4:
+ version "3.1.6"
+ resolved "https://registry.yarnpkg.com/json-stream-stringify/-/json-stream-stringify-3.1.6.tgz#ebe32193876fb99d4ec9f612389a8d8e2b5d54d4"
+ integrity sha512-x7fpwxOkbhFCaJDJ8vb1fBY3DdSa4AlITaz+HHILQJzdPMnHEFjxPwVUi1ALIbcIxDE0PNe/0i7frnY8QnBQog==
jsonfile@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb"
- integrity sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=
+ integrity sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==
optionalDependencies:
graceful-fs "^4.1.6"
@@ -5454,27 +3862,9 @@ jsonfile@^6.0.1:
graceful-fs "^4.1.6"
jsonschema@^1.2.4:
- version "1.4.0"
- resolved "https://registry.yarnpkg.com/jsonschema/-/jsonschema-1.4.0.tgz#1afa34c4bc22190d8e42271ec17ac8b3404f87b2"
- integrity sha512-/YgW6pRMr6M7C+4o8kS+B/2myEpHCrxO4PEWnqJNBFMjn7EWXqlQ4tGwL6xTHeRplwuZmcAncdvfOad1nT2yMw==
-
-jsprim@^1.2.2:
- version "1.4.2"
- resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.2.tgz#712c65533a15c878ba59e9ed5f0e26d5b77c5feb"
- integrity sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==
- dependencies:
- assert-plus "1.0.0"
- extsprintf "1.3.0"
- json-schema "0.4.0"
- verror "1.10.0"
-
-keccak@3.0.1:
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/keccak/-/keccak-3.0.1.tgz#ae30a0e94dbe43414f741375cff6d64c8bea0bff"
- integrity sha512-epq90L9jlFWCW7+pQa6JOnKn2Xgl2mtI664seYR6MHskvI9agt7AnDqmAlp9TqU4/caMYbA08Hi5DMZAl5zdkA==
- dependencies:
- node-addon-api "^2.0.0"
- node-gyp-build "^4.2.0"
+ version "1.4.1"
+ resolved "https://registry.yarnpkg.com/jsonschema/-/jsonschema-1.4.1.tgz#cc4c3f0077fb4542982973d8a083b6b34f482dab"
+ integrity sha512-S6cATIPVv1z0IlxdN+zUk5EPjkGCdnhN4wVSBlvoUO1tOLJootbo9CquNJmbIh4yikWHiUedhRYrNPn1arpEmQ==
keccak@3.0.2:
version "3.0.2"
@@ -5486,15 +3876,15 @@ keccak@3.0.2:
readable-stream "^3.6.0"
keccak@^3.0.0, keccak@^3.0.2:
- version "3.0.3"
- resolved "https://registry.yarnpkg.com/keccak/-/keccak-3.0.3.tgz#4bc35ad917be1ef54ff246f904c2bbbf9ac61276"
- integrity sha512-JZrLIAJWuZxKbCilMpNz5Vj7Vtb4scDG3dMXLOsbzBmQGyjwE61BbW7bJkfKKCShXiQZt3T6sBgALRtmd+nZaQ==
+ version "3.0.4"
+ resolved "https://registry.yarnpkg.com/keccak/-/keccak-3.0.4.tgz#edc09b89e633c0549da444432ecf062ffadee86d"
+ integrity sha512-3vKuW0jV8J3XNTzvfyicFR5qvxrSAGl7KIhvgOu5cmWwM7tZRj3fMbj/pfIf4be7aznbc+prBWGjywox/g2Y6Q==
dependencies:
node-addon-api "^2.0.0"
node-gyp-build "^4.2.0"
readable-stream "^3.6.0"
-keyv@^4.5.4:
+keyv@^4.5.3, keyv@^4.5.4:
version "4.5.4"
resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93"
integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==
@@ -5506,20 +3896,6 @@ kind-of@^6.0.2:
resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd"
integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==
-klaw@^1.0.0:
- version "1.3.1"
- resolved "https://registry.yarnpkg.com/klaw/-/klaw-1.3.1.tgz#4088433b46b3b1ba259d78785d8e96f73ba02439"
- integrity sha1-QIhDO0azsbolnXh4XY6W9zugJDk=
- optionalDependencies:
- graceful-fs "^4.1.9"
-
-level-codec@^9.0.0:
- version "9.0.2"
- resolved "https://registry.yarnpkg.com/level-codec/-/level-codec-9.0.2.tgz#fd60df8c64786a80d44e63423096ffead63d8cbc"
- integrity sha512-UyIwNb1lJBChJnGfjmO0OR+ezh2iVu1Kas3nvBS/BzGnx79dv6g7unpKIDNPMhfdTEGoc7mC8uAu51XEtX+FHQ==
- dependencies:
- buffer "^5.6.0"
-
level-concat-iterator@^3.0.0:
version "3.1.0"
resolved "https://registry.yarnpkg.com/level-concat-iterator/-/level-concat-iterator-3.1.0.tgz#5235b1f744bc34847ed65a50548aa88d22e881cf"
@@ -5527,43 +3903,6 @@ level-concat-iterator@^3.0.0:
dependencies:
catering "^2.1.0"
-level-concat-iterator@~2.0.0:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/level-concat-iterator/-/level-concat-iterator-2.0.1.tgz#1d1009cf108340252cb38c51f9727311193e6263"
- integrity sha512-OTKKOqeav2QWcERMJR7IS9CUo1sHnke2C0gkSmcR7QuEtFNLLzHQAvnMw8ykvEcv0Qtkg0p7FOwP1v9e5Smdcw==
-
-level-errors@^2.0.0, level-errors@~2.0.0:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/level-errors/-/level-errors-2.0.1.tgz#2132a677bf4e679ce029f517c2f17432800c05c8"
- integrity sha512-UVprBJXite4gPS+3VznfgDSU8PTRuVX0NXwoWW50KLxd2yw4Y1t2JUR5In1itQnudZqRMT9DlAM3Q//9NCjCFw==
- dependencies:
- errno "~0.1.1"
-
-level-iterator-stream@~4.0.0:
- version "4.0.2"
- resolved "https://registry.yarnpkg.com/level-iterator-stream/-/level-iterator-stream-4.0.2.tgz#7ceba69b713b0d7e22fcc0d1f128ccdc8a24f79c"
- integrity sha512-ZSthfEqzGSOMWoUGhTXdX9jv26d32XJuHz/5YnuHZzH6wldfWMOVwI9TBtKcya4BKTyTt3XVA0A3cF3q5CY30Q==
- dependencies:
- inherits "^2.0.4"
- readable-stream "^3.4.0"
- xtend "^4.0.2"
-
-level-mem@^5.0.1:
- version "5.0.1"
- resolved "https://registry.yarnpkg.com/level-mem/-/level-mem-5.0.1.tgz#c345126b74f5b8aa376dc77d36813a177ef8251d"
- integrity sha512-qd+qUJHXsGSFoHTziptAKXoLX87QjR7v2KMbqncDXPxQuCdsQlzmyX+gwrEHhlzn08vkf8TyipYyMmiC6Gobzg==
- dependencies:
- level-packager "^5.0.3"
- memdown "^5.0.0"
-
-level-packager@^5.0.3:
- version "5.1.1"
- resolved "https://registry.yarnpkg.com/level-packager/-/level-packager-5.1.1.tgz#323ec842d6babe7336f70299c14df2e329c18939"
- integrity sha512-HMwMaQPlTC1IlcwT3+swhqf/NUO+ZhXVz6TY1zZIIZlIR0YSn8GtAAWmIvKjNY16ZkEg/JcpAuQskxsXqC0yOQ==
- dependencies:
- encoding-down "^6.3.0"
- levelup "^4.3.2"
-
level-supports@^2.0.1:
version "2.1.0"
resolved "https://registry.yarnpkg.com/level-supports/-/level-supports-2.1.0.tgz#9af908d853597ecd592293b2fad124375be79c5f"
@@ -5574,13 +3913,6 @@ level-supports@^4.0.0:
resolved "https://registry.yarnpkg.com/level-supports/-/level-supports-4.0.1.tgz#431546f9d81f10ff0fea0e74533a0e875c08c66a"
integrity sha512-PbXpve8rKeNcZ9C1mUicC9auIYFyGpkV9/i6g76tLgANwWhtG2v7I4xNBUlkn3lE2/dZF3Pi0ygYGtLc4RXXdA==
-level-supports@~1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/level-supports/-/level-supports-1.0.1.tgz#2f530a596834c7301622521988e2c36bb77d122d"
- integrity sha512-rXM7GYnW8gsl1vedTJIbzOrRv85c/2uCMpiiCzO2fndd06U/kUXEEU9evYn4zFggBOg36IsBW8LzqIpETwwQzg==
- dependencies:
- xtend "^4.0.2"
-
level-transcoder@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/level-transcoder/-/level-transcoder-1.0.1.tgz#f8cef5990c4f1283d4c86d949e73631b0bc8ba9c"
@@ -5589,23 +3921,6 @@ level-transcoder@^1.0.1:
buffer "^6.0.3"
module-error "^1.0.1"
-level-ws@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/level-ws/-/level-ws-2.0.0.tgz#207a07bcd0164a0ec5d62c304b4615c54436d339"
- integrity sha512-1iv7VXx0G9ec1isqQZ7y5LmoZo/ewAsyDHNA8EFDW5hqH2Kqovm33nSFkSdnLLAK+I5FlT+lo5Cw9itGe+CpQA==
- dependencies:
- inherits "^2.0.3"
- readable-stream "^3.1.0"
- xtend "^4.0.1"
-
-level@^8.0.0:
- version "8.0.0"
- resolved "https://registry.yarnpkg.com/level/-/level-8.0.0.tgz#41b4c515dabe28212a3e881b61c161ffead14394"
- integrity sha512-ypf0jjAk2BWI33yzEaaotpq7fkOPALKAgDBxggO6Q9HGX2MRXn0wbP1Jn/tJv1gtL867+YOjOB49WaUF3UoJNQ==
- dependencies:
- browser-level "^1.0.1"
- classic-level "^1.2.0"
-
leveldown@6.1.0:
version "6.1.0"
resolved "https://registry.yarnpkg.com/leveldown/-/leveldown-6.1.0.tgz#7ab1297706f70c657d1a72b31b40323aa612b9ee"
@@ -5615,21 +3930,10 @@ leveldown@6.1.0:
napi-macros "~2.0.0"
node-gyp-build "^4.3.0"
-levelup@^4.3.2:
- version "4.4.0"
- resolved "https://registry.yarnpkg.com/levelup/-/levelup-4.4.0.tgz#f89da3a228c38deb49c48f88a70fb71f01cafed6"
- integrity sha512-94++VFO3qN95cM/d6eBXvd894oJE0w3cInq9USsyQzzoJxmiYzPAocNcuGCPGGjoXqDVJcr3C1jzt1TSjyaiLQ==
- dependencies:
- deferred-leveldown "~5.3.0"
- level-errors "~2.0.0"
- level-iterator-stream "~4.0.0"
- level-supports "~1.0.0"
- xtend "~4.0.0"
-
levn@^0.3.0, levn@~0.3.0:
version "0.3.0"
resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee"
- integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=
+ integrity sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==
dependencies:
prelude-ls "~1.1.2"
type-check "~0.3.2"
@@ -5645,19 +3949,11 @@ levn@^0.4.1:
locate-path@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e"
- integrity sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=
+ integrity sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==
dependencies:
p-locate "^2.0.0"
path-exists "^3.0.0"
-locate-path@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e"
- integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==
- dependencies:
- p-locate "^3.0.0"
- path-exists "^3.0.0"
-
locate-path@^6.0.0:
version "6.0.0"
resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286"
@@ -5668,7 +3964,17 @@ locate-path@^6.0.0:
lodash.camelcase@^4.3.0:
version "4.3.0"
resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6"
- integrity sha1-soqmKIorn8ZRA1x3EfZathkDMaY=
+ integrity sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==
+
+lodash.clonedeep@^4.5.0:
+ version "4.5.0"
+ resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef"
+ integrity sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==
+
+lodash.isequal@^4.5.0:
+ version "4.5.0"
+ resolved "https://registry.yarnpkg.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz#415c4478f2bcc30120c22ce10ed3226f7d3e18e0"
+ integrity sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==
lodash.merge@^4.6.2:
version "4.6.2"
@@ -5680,19 +3986,12 @@ lodash.truncate@^4.4.2:
resolved "https://registry.yarnpkg.com/lodash.truncate/-/lodash.truncate-4.4.2.tgz#5a350da0b1113b837ecfffd5812cbe58d6eae193"
integrity sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==
-lodash@^4.17.11, lodash@^4.17.12, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.21:
+lodash@^4.17.11, lodash@^4.17.12, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.21:
version "4.17.21"
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c"
integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==
-log-symbols@3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-3.0.0.tgz#f3a08516a5dea893336a7dee14d18a1cfdab77c4"
- integrity sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ==
- dependencies:
- chalk "^2.4.2"
-
-log-symbols@4.1.0:
+log-symbols@^4.1.0:
version "4.1.0"
resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503"
integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==
@@ -5700,40 +3999,23 @@ log-symbols@4.1.0:
chalk "^4.1.0"
is-unicode-supported "^0.1.0"
-lru-cache@^5.1.1:
- version "5.1.1"
- resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920"
- integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==
- dependencies:
- yallist "^3.0.2"
-
-lru-cache@^6.0.0:
- version "6.0.0"
- resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94"
- integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==
+loupe@^2.3.6:
+ version "2.3.7"
+ resolved "https://registry.yarnpkg.com/loupe/-/loupe-2.3.7.tgz#6e69b7d4db7d3ab436328013d37d1c8c3540c697"
+ integrity sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==
dependencies:
- yallist "^4.0.0"
+ get-func-name "^2.0.1"
lru_map@^0.3.3:
version "0.3.3"
resolved "https://registry.yarnpkg.com/lru_map/-/lru_map-0.3.3.tgz#b5c8351b9464cbd750335a79650a0ec0e56118dd"
- integrity sha1-tcg1G5Rky9dQM1p5ZQoOwOVhGN0=
-
-ltgt@~2.2.0:
- version "2.2.1"
- resolved "https://registry.yarnpkg.com/ltgt/-/ltgt-2.2.1.tgz#f35ca91c493f7b73da0e07495304f17b31f87ee5"
- integrity sha512-AI2r85+4MquTw9ZYqabu4nMwy9Oftlfa/e/52t9IjtfG+mGBbTNdAoZ3RQKLHR6r0wQnwZnPIEh/Ya6XTWAKNA==
+ integrity sha512-Pn9cox5CsMYngeDbmChANltQl+5pi6XmTrraMSzhPmMBbmgcxmqWry0U3PGapCU1yB4/LqCcom7qhHZiF/jGfQ==
make-error@^1.1.1:
version "1.3.6"
resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2"
integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==
-mcl-wasm@^0.7.1:
- version "0.7.9"
- resolved "https://registry.yarnpkg.com/mcl-wasm/-/mcl-wasm-0.7.9.tgz#c1588ce90042a8700c3b60e40efb339fc07ab87f"
- integrity sha512-iJIUcQWA88IJB/5L15GnJVnSQJmf/YaxxV6zRavv83HILHaJQb6y0iFyDMdDO0gN8X37tdxmAOrH/P8B6RB8sQ==
-
md5.js@^1.3.4:
version "1.3.5"
resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f"
@@ -5743,58 +4025,22 @@ md5.js@^1.3.4:
inherits "^2.0.1"
safe-buffer "^5.1.2"
-memdown@^5.0.0:
- version "5.1.0"
- resolved "https://registry.yarnpkg.com/memdown/-/memdown-5.1.0.tgz#608e91a9f10f37f5b5fe767667a8674129a833cb"
- integrity sha512-B3J+UizMRAlEArDjWHTMmadet+UKwHd3UjMgGBkZcKAxAYVPS9o0Yeiha4qvz7iGiL2Sb3igUft6p7nbFWctpw==
- dependencies:
- abstract-leveldown "~6.2.1"
- functional-red-black-tree "~1.0.1"
- immediate "~3.2.3"
- inherits "~2.0.1"
- ltgt "~2.2.0"
- safe-buffer "~5.2.0"
-
-memory-level@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/memory-level/-/memory-level-1.0.0.tgz#7323c3fd368f9af2f71c3cd76ba403a17ac41692"
- integrity sha512-UXzwewuWeHBz5krr7EvehKcmLFNoXxGcvuYhC41tRnkrTbJohtS7kVn9akmgirtRygg+f7Yjsfi8Uu5SGSQ4Og==
- dependencies:
- abstract-level "^1.0.0"
- functional-red-black-tree "^1.0.1"
- module-error "^1.0.1"
-
memorystream@^0.3.1:
version "0.3.1"
resolved "https://registry.yarnpkg.com/memorystream/-/memorystream-0.3.1.tgz#86d7090b30ce455d63fbae12dda51a47ddcaf9b2"
- integrity sha1-htcJCzDORV1j+64S3aUaR93K+bI=
+ integrity sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==
-merge2@^1.2.3, merge2@^1.3.0, merge2@^1.4.1:
+merge2@^1.2.3, merge2@^1.3.0:
version "1.4.1"
resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae"
integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==
-merkle-patricia-tree@^4.2.2, merkle-patricia-tree@^4.2.4:
- version "4.2.4"
- resolved "https://registry.yarnpkg.com/merkle-patricia-tree/-/merkle-patricia-tree-4.2.4.tgz#ff988d045e2bf3dfa2239f7fabe2d59618d57413"
- integrity sha512-eHbf/BG6eGNsqqfbLED9rIqbsF4+sykEaBn6OLNs71tjclbMcMOk1tEPmJKcNcNCLkvbpY/lwyOlizWsqPNo8w==
- dependencies:
- "@types/levelup" "^4.3.0"
- ethereumjs-util "^7.1.4"
- level-mem "^5.0.1"
- level-ws "^2.0.0"
- readable-stream "^3.6.0"
- semaphore-async-await "^1.5.1"
-
-micromatch@^4.0.4:
- version "4.0.4"
- resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.4.tgz#896d519dfe9db25fce94ceb7a500919bf881ebf9"
- integrity sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==
- dependencies:
- braces "^3.0.1"
- picomatch "^2.2.3"
+micro-ftch@^0.3.1:
+ version "0.3.1"
+ resolved "https://registry.yarnpkg.com/micro-ftch/-/micro-ftch-0.3.1.tgz#6cb83388de4c1f279a034fb0cf96dfc050853c5f"
+ integrity sha512-/0LLxhzP0tfiR5hcQebtudP56gUurs2CLkGarnCiB/OqEyUFQ6U3paQi/tgLv0hBJYt2rnr9MNpxz4fiiugstg==
-micromatch@^4.0.8:
+micromatch@^4.0.4, micromatch@^4.0.8:
version "4.0.8"
resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.8.tgz#d66fa18f3a47076789320b9b1af32bd86d9fa202"
integrity sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==
@@ -5802,32 +4048,12 @@ micromatch@^4.0.8:
braces "^3.0.3"
picomatch "^2.3.1"
-miller-rabin@^4.0.0:
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d"
- integrity sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==
- dependencies:
- bn.js "^4.0.0"
- brorand "^1.0.1"
-
-mime-db@1.49.0:
- version "1.49.0"
- resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.49.0.tgz#f3dfde60c99e9cf3bc9701d687778f537001cbed"
- integrity sha512-CIc8j9URtOVApSFCQIF+VBkX1RwXp/oMMOrqdyXSBXq5RWNEsRfyj1kiRnQgmNXmHxPoFIxOroKA3zcU9P+nAA==
-
mime-db@1.52.0:
version "1.52.0"
resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70"
integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==
mime-types@^2.1.12:
- version "2.1.32"
- resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.32.tgz#1d00e89e7de7fe02008db61001d9e02852670fd5"
- integrity sha512-hJGaVS4G4c9TSMYh2n6SQAGrC4RnfU+daP8G7cSCmaqNjiOoUY0VHCMS42pxnQmVF1GWwFhbHWn3RIxCqTmZ9A==
- dependencies:
- mime-db "1.49.0"
-
-mime-types@~2.1.19:
version "2.1.35"
resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a"
integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==
@@ -5849,43 +4075,38 @@ minimalistic-crypto-utils@^1.0.1:
resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a"
integrity sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==
-"minimatch@2 || 3", minimatch@3.0.4, minimatch@^3.0.4:
- version "3.0.4"
- resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083"
- integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==
+"minimatch@2 || 3", minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2:
+ version "3.1.2"
+ resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b"
+ integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==
dependencies:
brace-expansion "^1.1.7"
-minimatch@5.0.1:
- version "5.0.1"
- resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.0.1.tgz#fb9022f7528125187c92bd9e9b6366be1cf3415b"
- integrity sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==
+minimatch@^5.0.1, minimatch@^5.1.6:
+ version "5.1.6"
+ resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.6.tgz#1cfcb8cf5522ea69952cd2af95ae09477f122a96"
+ integrity sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==
dependencies:
brace-expansion "^2.0.1"
-minimatch@^3.0.5, minimatch@^3.1.2:
- version "3.1.2"
- resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b"
- integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==
+minimatch@^9.0.4, minimatch@^9.0.5:
+ version "9.0.5"
+ resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.5.tgz#d74f9dd6b57d83d8e98cfb82133b03978bc929e5"
+ integrity sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==
dependencies:
- brace-expansion "^1.1.7"
-
-minimist@^1.2.5:
- version "1.2.5"
- resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602"
- integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==
+ brace-expansion "^2.0.1"
-minimist@^1.2.7:
+minimist@^1.2.5, minimist@^1.2.6, minimist@^1.2.7:
version "1.2.8"
resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c"
integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==
-mkdirp@0.5.5, mkdirp@0.5.x, mkdirp@^0.5.1:
- version "0.5.5"
- resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def"
- integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==
+mkdirp@0.5.x, mkdirp@^0.5.1:
+ version "0.5.6"
+ resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6"
+ integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==
dependencies:
- minimist "^1.2.5"
+ minimist "^1.2.6"
mkdirp@^1.0.4:
version "1.0.4"
@@ -5893,90 +4114,44 @@ mkdirp@^1.0.4:
integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==
mnemonist@^0.38.0:
- version "0.38.4"
- resolved "https://registry.yarnpkg.com/mnemonist/-/mnemonist-0.38.4.tgz#5d2f2dc4386aef78bfadeea60ce704dcf0ef8f3d"
- integrity sha512-mflgW0gEWmVLbDDE2gJbOh3+RltTN7CgV9jV25qyCnyLN9FtoltWr7ZtAEDeD9u8W4oFAoolR6fBWieXdn3u8Q==
- dependencies:
- obliterator "^1.6.1"
+ version "0.38.5"
+ resolved "https://registry.yarnpkg.com/mnemonist/-/mnemonist-0.38.5.tgz#4adc7f4200491237fe0fa689ac0b86539685cade"
+ integrity sha512-bZTFT5rrPKtPJxj8KSV0WkPyNxl72vQepqqVUAW2ARUpUSF2qXMB6jZj7hW5/k7C1rtpzqbD/IIbJwLXUjCHeg==
+ dependencies:
+ obliterator "^2.0.0"
+
+mocha@^10.0.0, mocha@^10.2.0:
+ version "10.7.3"
+ resolved "https://registry.yarnpkg.com/mocha/-/mocha-10.7.3.tgz#ae32003cabbd52b59aece17846056a68eb4b0752"
+ integrity sha512-uQWxAu44wwiACGqjbPYmjo7Lg8sFrS3dQe7PP2FQI+woptP4vZXSMcfMyFL/e1yFEeEpV4RtyTpZROOKmxis+A==
+ dependencies:
+ ansi-colors "^4.1.3"
+ browser-stdout "^1.3.1"
+ chokidar "^3.5.3"
+ debug "^4.3.5"
+ diff "^5.2.0"
+ escape-string-regexp "^4.0.0"
+ find-up "^5.0.0"
+ glob "^8.1.0"
+ he "^1.2.0"
+ js-yaml "^4.1.0"
+ log-symbols "^4.1.0"
+ minimatch "^5.1.6"
+ ms "^2.1.3"
+ serialize-javascript "^6.0.2"
+ strip-json-comments "^3.1.1"
+ supports-color "^8.1.1"
+ workerpool "^6.5.1"
+ yargs "^16.2.0"
+ yargs-parser "^20.2.9"
+ yargs-unparser "^2.0.0"
-mocha@7.1.2:
- version "7.1.2"
- resolved "https://registry.yarnpkg.com/mocha/-/mocha-7.1.2.tgz#8e40d198acf91a52ace122cd7599c9ab857b29e6"
- integrity sha512-o96kdRKMKI3E8U0bjnfqW4QMk12MwZ4mhdBTf+B5a1q9+aq2HRnj+3ZdJu0B/ZhJeK78MgYuv6L8d/rA5AeBJA==
- dependencies:
- ansi-colors "3.2.3"
- browser-stdout "1.3.1"
- chokidar "3.3.0"
- debug "3.2.6"
- diff "3.5.0"
- escape-string-regexp "1.0.5"
- find-up "3.0.0"
- glob "7.1.3"
- growl "1.10.5"
- he "1.2.0"
- js-yaml "3.13.1"
- log-symbols "3.0.0"
- minimatch "3.0.4"
- mkdirp "0.5.5"
- ms "2.1.1"
- node-environment-flags "1.0.6"
- object.assign "4.1.0"
- strip-json-comments "2.0.1"
- supports-color "6.0.0"
- which "1.3.1"
- wide-align "1.1.3"
- yargs "13.3.2"
- yargs-parser "13.1.2"
- yargs-unparser "1.6.0"
-
-mocha@^10.0.0:
- version "10.2.0"
- resolved "https://registry.yarnpkg.com/mocha/-/mocha-10.2.0.tgz#1fd4a7c32ba5ac372e03a17eef435bd00e5c68b8"
- integrity sha512-IDY7fl/BecMwFHzoqF2sg/SHHANeBoMMXFlS9r0OXKDssYE1M5O43wUY/9BVPeIvfH2zmEbBfseqN9gBQZzXkg==
- dependencies:
- ansi-colors "4.1.1"
- browser-stdout "1.3.1"
- chokidar "3.5.3"
- debug "4.3.4"
- diff "5.0.0"
- escape-string-regexp "4.0.0"
- find-up "5.0.0"
- glob "7.2.0"
- he "1.2.0"
- js-yaml "4.1.0"
- log-symbols "4.1.0"
- minimatch "5.0.1"
- ms "2.1.3"
- nanoid "3.3.3"
- serialize-javascript "6.0.0"
- strip-json-comments "3.1.1"
- supports-color "8.1.1"
- workerpool "6.2.1"
- yargs "16.2.0"
- yargs-parser "20.2.4"
- yargs-unparser "2.0.0"
-
-module-error@^1.0.1, module-error@^1.0.2:
+module-error@^1.0.1:
version "1.0.2"
resolved "https://registry.yarnpkg.com/module-error/-/module-error-1.0.2.tgz#8d1a48897ca883f47a45816d4fb3e3c6ba404d86"
integrity sha512-0yuvsqSCv8LbaOKhnsQ/T5JhyFlCYLPXK3U2sgV10zoKQwzs/MyfuQUOZQ1V/6OCOJsK/TRgNVrPuPDqtdMFtA==
-ms@2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
- integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=
-
-ms@2.1.1:
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a"
- integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==
-
-ms@2.1.2:
- version "2.1.2"
- resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009"
- integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==
-
-ms@2.1.3, ms@^2.1.1:
+ms@^2.1.3:
version "2.1.3"
resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2"
integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==
@@ -5984,43 +4159,23 @@ ms@2.1.3, ms@^2.1.1:
mute-stream@0.0.7:
version "0.0.7"
resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab"
- integrity sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=
-
-nanoid@3.3.3:
- version "3.3.3"
- resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.3.tgz#fd8e8b7aa761fe807dba2d1b98fb7241bb724a25"
- integrity sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==
-
-napi-macros@^2.2.2:
- version "2.2.2"
- resolved "https://registry.yarnpkg.com/napi-macros/-/napi-macros-2.2.2.tgz#817fef20c3e0e40a963fbf7b37d1600bd0201044"
- integrity sha512-hmEVtAGYzVQpCKdbQea4skABsdXW4RUh5t5mJ2zzqowJS2OyXZTU1KhDVFhx+NlWZ4ap9mqR9TcDO3LTTttd+g==
+ integrity sha512-r65nCZhrbXXb6dXOACihYApHw2Q6pV0M3V0PSxd74N0+D8nzAdEAITq2oAjA1jVnKI+tGvEBUpqiMh0+rW6zDQ==
napi-macros@~2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/napi-macros/-/napi-macros-2.0.0.tgz#2b6bae421e7b96eb687aa6c77a7858640670001b"
integrity sha512-A0xLykHtARfueITVDernsAWdtIMbOJgKgcluwENp3AlsKN/PloyO10HtmoqnFAQAcxPkgZN7wdfPfEd0zNGxbg==
-natural-compare-lite@^1.4.0:
- version "1.4.0"
- resolved "https://registry.yarnpkg.com/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz#17b09581988979fddafe0201e931ba933c96cbb4"
- integrity sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==
-
natural-compare@^1.4.0:
version "1.4.0"
resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7"
- integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=
+ integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==
-neo-async@^2.6.0:
+neo-async@^2.6.2:
version "2.6.2"
resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f"
integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==
-next-tick@~1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.0.0.tgz#ca86d1fe8828169b0120208e3dc8424b9db8342c"
- integrity sha1-yobR/ogoFpsBICCOPchCS524NCw=
-
nice-try@^1.0.4:
version "1.0.5"
resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366"
@@ -6031,6 +4186,11 @@ node-addon-api@^2.0.0:
resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-2.0.2.tgz#432cfa82962ce494b132e9d72a15b29f71ff5d32"
integrity sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA==
+node-addon-api@^5.0.0:
+ version "5.1.0"
+ resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-5.1.0.tgz#49da1ca055e109a23d537e9de43c09cca21eb762"
+ integrity sha512-eh0GgfEkpnoWDq+VY8OyvYhFEzBk6jIYbRKdIlyTiAXIVJ8PyBaKb0rp7oDtoddbdoHWhq8wwr+XZ81F1rpNdA==
+
node-emoji@^1.10.0:
version "1.11.0"
resolved "https://registry.yarnpkg.com/node-emoji/-/node-emoji-1.11.0.tgz#69a0150e6946e2f115e9d7ea4df7971e2628301c"
@@ -6038,47 +4198,22 @@ node-emoji@^1.10.0:
dependencies:
lodash "^4.17.21"
-node-environment-flags@1.0.6:
- version "1.0.6"
- resolved "https://registry.yarnpkg.com/node-environment-flags/-/node-environment-flags-1.0.6.tgz#a30ac13621f6f7d674260a54dede048c3982c088"
- integrity sha512-5Evy2epuL+6TM0lCQGpFIj6KwiEsGh1SrHUhTbNX+sLbBtjidPZFAnVK9y5yU1+h//RitLbRHTIMyxQPtxMdHw==
- dependencies:
- object.getownpropertydescriptors "^2.0.3"
- semver "^5.7.0"
-
-node-fetch@^2.6.0, node-fetch@^2.6.1:
- version "2.6.5"
- resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.5.tgz#42735537d7f080a7e5f78b6c549b7146be1742fd"
- integrity sha512-mmlIVHJEu5rnIxgEgez6b9GgWXbkZj5YZ7fx+2r94a2E+Uirsp6HsPTPlomfdHtpt/B0cdKviwkoaM6pyvUOpQ==
- dependencies:
- whatwg-url "^5.0.0"
-
-node-fetch@^2.6.12, node-fetch@^2.6.6, node-fetch@^2.6.7:
- version "2.6.12"
- resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.12.tgz#02eb8e22074018e3d5a83016649d04df0e348fba"
- integrity sha512-C/fGU2E8ToujUivIO0H+tpQ6HWo4eEmchoPIoXtxCrVghxdKq+QOHqEZW7tuP3KlV3bC8FRMO5nMCC7Zm1VP6g==
+node-fetch@^2.6.1, node-fetch@^2.7.0:
+ version "2.7.0"
+ resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.7.0.tgz#d0f0fa6e3e2dc1d27efcd8ad99d550bda94d187d"
+ integrity sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==
dependencies:
whatwg-url "^5.0.0"
-node-gyp-build@4.3.0:
- version "4.3.0"
- resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.3.0.tgz#9f256b03e5826150be39c764bf51e993946d71a3"
- integrity sha512-iWjXZvmboq0ja1pUGULQBexmxq8CV4xBhX7VDOTbL7ZR4FOowwY/VOtRxBN/yKxmdGoIp4j5ysNT4u3S2pDQ3Q==
-
node-gyp-build@4.4.0:
version "4.4.0"
resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.4.0.tgz#42e99687ce87ddeaf3a10b99dc06abc11021f3f4"
integrity sha512-amJnQCcgtRVw9SvoebO3BKGESClrfXGCUTX9hSn1OuGQTQBOZmVd0Z0OlecpuRksKvbsUqALE8jls/ErClAPuQ==
node-gyp-build@^4.2.0, node-gyp-build@^4.3.0:
- version "4.6.0"
- resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.6.0.tgz#0c52e4cbf54bbd28b709820ef7b6a3c2d6209055"
- integrity sha512-NTZVKn9IylLwUzaKjkas1e4u2DLNcV4rdYagA4PWdPwW87Bi7z+BznyKSRwS/761tV/lzCGXplWsiaMjLqP2zQ==
-
-nofilter@^3.0.2:
- version "3.0.3"
- resolved "https://registry.yarnpkg.com/nofilter/-/nofilter-3.0.3.tgz#3ff3b142efdccb403434ccae4a0c2c835cb9b522"
- integrity sha512-TN/MCrQmXQk5DyUJ8TGUq1Il8rv4fTsjddLmMopV006QP8DMkglmGgYfQKD5620vXLRXfr8iGI6ZZ4/ZWld2cQ==
+ version "4.8.2"
+ resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.8.2.tgz#4f802b71c1ab2ca16af830e6c1ea7dd1ad9496fa"
+ integrity sha512-IRUxE4BVsHWXkV/SFOut4qTlagw2aM8T5/vnTsmrHJvVoKueJHRc/JaFND7QDDc61kLYUJ6qlZM3sqTSyx2dTw==
nofilter@^3.1.0:
version "3.1.0"
@@ -6088,7 +4223,7 @@ nofilter@^3.1.0:
nopt@3.x:
version "3.0.6"
resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9"
- integrity sha1-xkZdvwirzU2zWTF/eaxopkayj/k=
+ integrity sha512-4GUt3kSEYmk4ITxzB/b9vaIDfUVWN/Ml1Fwl11IlnIG2iaJ9O6WXZ9SrYM9NLI8OCBieN2Y8SWC2oJV0RQ7qYg==
dependencies:
abbrev "1"
@@ -6100,95 +4235,27 @@ normalize-path@^3.0.0, normalize-path@~3.0.0:
number-to-bn@1.7.0:
version "1.7.0"
resolved "https://registry.yarnpkg.com/number-to-bn/-/number-to-bn-1.7.0.tgz#bb3623592f7e5f9e0030b1977bd41a0c53fe1ea0"
- integrity sha1-uzYjWS9+X54AMLGXe9QaDFP+HqA=
+ integrity sha512-wsJ9gfSz1/s4ZsJN01lyonwuxA1tml6X1yBDnfpMglypcBRFZZkus26EdPSlqS5GJfYddVZa22p3VNb3z5m5Ig==
dependencies:
bn.js "4.11.6"
strip-hex-prefix "1.0.0"
-oauth-sign@~0.9.0:
- version "0.9.0"
- resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455"
- integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==
-
-object-inspect@^1.11.0, object-inspect@^1.9.0:
- version "1.11.0"
- resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.11.0.tgz#9dceb146cedd4148a0d9e51ab88d34cf509922b1"
- integrity sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg==
-
-object-inspect@^1.12.3:
- version "1.12.3"
- resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.3.tgz#ba62dffd67ee256c8c086dfae69e016cd1f198b9"
- integrity sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==
-
-object-keys@^1.0.11, object-keys@^1.0.12, object-keys@^1.1.1:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e"
- integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==
-
-object.assign@4.1.0:
- version "4.1.0"
- resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.0.tgz#968bf1100d7956bb3ca086f006f846b3bc4008da"
- integrity sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==
- dependencies:
- define-properties "^1.1.2"
- function-bind "^1.1.1"
- has-symbols "^1.0.0"
- object-keys "^1.0.11"
-
-object.assign@^4.1.2:
- version "4.1.2"
- resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.2.tgz#0ed54a342eceb37b38ff76eb831a0e788cb63940"
- integrity sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==
- dependencies:
- call-bind "^1.0.0"
- define-properties "^1.1.3"
- has-symbols "^1.0.1"
- object-keys "^1.1.1"
-
-object.assign@^4.1.4:
- version "4.1.4"
- resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.4.tgz#9673c7c7c351ab8c4d0b516f4343ebf4dfb7799f"
- integrity sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==
- dependencies:
- call-bind "^1.0.2"
- define-properties "^1.1.4"
- has-symbols "^1.0.3"
- object-keys "^1.1.1"
-
-object.getownpropertydescriptors@^2.0.3:
- version "2.1.6"
- resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.6.tgz#5e5c384dd209fa4efffead39e3a0512770ccc312"
- integrity sha512-lq+61g26E/BgHv0ZTFgRvi7NMEPuAxLkFU7rukXjc/AlwH4Am5xXVnIXy3un1bg/JPbXHrixRkK1itUzzPiIjQ==
- dependencies:
- array.prototype.reduce "^1.0.5"
- call-bind "^1.0.2"
- define-properties "^1.2.0"
- es-abstract "^1.21.2"
- safe-array-concat "^1.0.0"
-
-obliterator@^1.6.1:
- version "1.6.1"
- resolved "https://registry.yarnpkg.com/obliterator/-/obliterator-1.6.1.tgz#dea03e8ab821f6c4d96a299e17aef6a3af994ef3"
- integrity sha512-9WXswnqINnnhOG/5SLimUlzuU1hFJUc8zkwyD59Sd+dPOMf05PmnYG/d6Q7HZ+KmgkZJa1PxRso6QdM3sTNHig==
-
-oboe@2.1.5:
- version "2.1.5"
- resolved "https://registry.yarnpkg.com/oboe/-/oboe-2.1.5.tgz#5554284c543a2266d7a38f17e073821fbde393cd"
- integrity sha1-VVQoTFQ6ImbXo48X4HOCH73jk80=
- dependencies:
- http-https "^1.0.0"
+obliterator@^2.0.0:
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/obliterator/-/obliterator-2.0.4.tgz#fa650e019b2d075d745e44f1effeb13a2adbe816"
+ integrity sha512-lgHwxlxV1qIg1Eap7LgIeoBWIMFibOjbrYPIPJZcI1mmGAI2m3lNYpK12Y+GBdPQ0U1hRwSord7GIaawz962qQ==
once@1.x, once@^1.3.0:
version "1.4.0"
resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
- integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E=
+ integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==
dependencies:
wrappy "1"
onetime@^2.0.0:
version "2.0.1"
resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4"
- integrity sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=
+ integrity sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ==
dependencies:
mimic-fn "^1.0.0"
@@ -6205,21 +4272,26 @@ optionator@^0.8.1, optionator@^0.8.2:
word-wrap "~1.2.3"
optionator@^0.9.3:
- version "0.9.3"
- resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.3.tgz#007397d44ed1872fdc6ed31360190f81814e2c64"
- integrity sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==
+ version "0.9.4"
+ resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.4.tgz#7ea1c1a5d91d764fb282139c88fe11e182a3a734"
+ integrity sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==
dependencies:
- "@aashutoshrathi/word-wrap" "^1.2.3"
deep-is "^0.1.3"
fast-levenshtein "^2.0.6"
levn "^0.4.1"
prelude-ls "^1.2.1"
type-check "^0.4.0"
+ word-wrap "^1.2.5"
+
+ordinal@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/ordinal/-/ordinal-1.0.3.tgz#1a3c7726a61728112f50944ad7c35c06ae3a0d4d"
+ integrity sha512-cMddMgb2QElm8G7vdaa02jhUNbTSrhsgAGUz1OokD83uJTwSUn+nKoNoKVVaRa08yF6sgfO7Maou1+bgLd9rdQ==
os-tmpdir@~1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274"
- integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=
+ integrity sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==
p-limit@^1.1.0:
version "1.3.0"
@@ -6228,13 +4300,6 @@ p-limit@^1.1.0:
dependencies:
p-try "^1.0.0"
-p-limit@^2.0.0:
- version "2.3.0"
- resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1"
- integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==
- dependencies:
- p-try "^2.0.0"
-
p-limit@^3.0.2:
version "3.1.0"
resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b"
@@ -6245,17 +4310,10 @@ p-limit@^3.0.2:
p-locate@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43"
- integrity sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=
+ integrity sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==
dependencies:
p-limit "^1.1.0"
-p-locate@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4"
- integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==
- dependencies:
- p-limit "^2.0.0"
-
p-locate@^5.0.0:
version "5.0.0"
resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834"
@@ -6273,12 +4331,7 @@ p-map@^4.0.0:
p-try@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3"
- integrity sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=
-
-p-try@^2.0.0:
- version "2.2.0"
- resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6"
- integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==
+ integrity sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==
parent-module@^1.0.0:
version "1.0.1"
@@ -6297,20 +4350,15 @@ parent-module@^2.0.0:
parse-json@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0"
- integrity sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=
+ integrity sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==
dependencies:
error-ex "^1.3.1"
json-parse-better-errors "^1.0.1"
-path-browserify@^1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-1.0.1.tgz#d98454a9c3753d5790860f16f68867b9e46be1fd"
- integrity sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==
-
path-exists@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515"
- integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=
+ integrity sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==
path-exists@^4.0.0:
version "4.0.0"
@@ -6320,24 +4368,24 @@ path-exists@^4.0.0:
path-is-absolute@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
- integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18=
+ integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==
path-is-inside@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53"
- integrity sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=
+ integrity sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==
path-key@^2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40"
- integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=
+ integrity sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==
path-key@^3.1.0:
version "3.1.1"
resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375"
integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==
-path-parse@^1.0.6:
+path-parse@^1.0.6, path-parse@^1.0.7:
version "1.0.7"
resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735"
integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==
@@ -6352,7 +4400,7 @@ pathval@^1.1.1:
resolved "https://registry.yarnpkg.com/pathval/-/pathval-1.1.1.tgz#8534e77a77ce7ac5a2512ea21e0fdb8fcf6c3d8d"
integrity sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==
-pbkdf2@^3.0.17, pbkdf2@^3.0.9:
+pbkdf2@^3.0.17:
version "3.1.2"
resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.1.2.tgz#dd822aa0887580e52f1a039dc3eda108efae3075"
integrity sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==
@@ -6363,21 +4411,21 @@ pbkdf2@^3.0.17, pbkdf2@^3.0.9:
safe-buffer "^5.0.1"
sha.js "^2.4.8"
-performance-now@^2.1.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b"
- integrity sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==
-
-picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3:
- version "2.3.0"
- resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.0.tgz#f1f061de8f6a4bf022892e2d128234fb98302972"
- integrity sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==
+picocolors@^1.0.0:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.1.1.tgz#3d321af3eab939b083c8f929a1d12cda81c26b6b"
+ integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==
-picomatch@^2.3.1:
+picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.1:
version "2.3.1"
resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42"
integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==
+picomatch@^4.0.2:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-4.0.2.tgz#77c742931e8f3b8820946c76cd0c1f13730d1dab"
+ integrity sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==
+
pify@^4.0.1:
version "4.0.1"
resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231"
@@ -6391,28 +4439,18 @@ prelude-ls@^1.2.1:
prelude-ls@~1.1.2:
version "1.1.2"
resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54"
- integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=
+ integrity sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==
prettier@^1.14.3:
version "1.19.1"
resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.19.1.tgz#f7d7f5ff8a9cd872a7be4ca142095956a60797cb"
integrity sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew==
-prettier@^2.1.2:
- version "2.4.1"
- resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.4.1.tgz#671e11c89c14a4cfc876ce564106c4a6726c9f5c"
- integrity sha512-9fbDAXSBcc6Bs1mZrDYb3XKzDLm4EXXL9sC1LqKP5rZkT6KRr/rf9amVUcODVXgguK/isJz0d0hP72WeaKWsvA==
-
-prettier@^2.3.1:
+prettier@^2.1.2, prettier@^2.3.1:
version "2.8.8"
resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.8.tgz#e8c5d7e98a4305ffe3de2e1fc4aca1a71c28b1da"
integrity sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==
-printj@~1.1.0:
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/printj/-/printj-1.1.2.tgz#d90deb2975a8b9f600fb3a1c94e3f4c53c78a222"
- integrity sha512-zA2SmoLaxZyArQTOPj5LXecR+RagfPSU5Kw1qP+jkWeNlrq+eJZyY2oS68SU1Z/7/myXM4lo9716laOFAVStCQ==
-
progress@^2.0.0:
version "2.0.3"
resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8"
@@ -6432,49 +4470,17 @@ proxy-from-env@^1.1.0:
resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2"
integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==
-prr@~1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476"
- integrity sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==
-
-psl@^1.1.28:
- version "1.9.0"
- resolved "https://registry.yarnpkg.com/psl/-/psl-1.9.0.tgz#d0df2a137f00794565fcaf3b2c00cd09f8d5a5a7"
- integrity sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==
-
-punycode@^1.4.1:
- version "1.4.1"
- resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e"
- integrity sha1-wNWmOycYgArY4esPpSachN1BhF4=
-
punycode@^2.1.0:
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec"
- integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==
-
-punycode@^2.1.1:
- version "2.3.0"
- resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.0.tgz#f67fa67c94da8f4d0cfff981aee4118064199b8f"
- integrity sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==
-
-qs@^6.11.0:
- version "6.11.2"
- resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.2.tgz#64bea51f12c1f5da1bc01496f48ffcff7c69d7d9"
- integrity sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==
- dependencies:
- side-channel "^1.0.4"
-
-qs@~6.5.2:
- version "6.5.3"
- resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.3.tgz#3aeeffc91967ef6e35c0e488ef46fb296ab76aad"
- integrity sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==
+ version "2.3.1"
+ resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5"
+ integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==
queue-microtask@^1.2.2, queue-microtask@^1.2.3:
version "1.2.3"
resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243"
integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==
-randombytes@^2.0.1, randombytes@^2.1.0:
+randombytes@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a"
integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==
@@ -6482,16 +4488,16 @@ randombytes@^2.0.1, randombytes@^2.1.0:
safe-buffer "^5.1.0"
raw-body@^2.4.1:
- version "2.4.1"
- resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.1.tgz#30ac82f98bb5ae8c152e67149dac8d55153b168c"
- integrity sha512-9WmIKF6mkvA0SLmA2Knm9+qj89e+j1zqgyn8aXGd7+nAduPoqgI9lO57SAZNn/Byzo5P7JhXTyg9PzaJbH73bA==
+ version "2.5.2"
+ resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.2.tgz#99febd83b90e08975087e8f1f9419a149366b68a"
+ integrity sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==
dependencies:
- bytes "3.1.0"
- http-errors "1.7.3"
+ bytes "3.1.2"
+ http-errors "2.0.0"
iconv-lite "0.4.24"
unpipe "1.0.0"
-readable-stream@^3.1.0, readable-stream@^3.4.0, readable-stream@^3.6.0:
+readable-stream@^3.6.0:
version "3.6.2"
resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967"
integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==
@@ -6500,12 +4506,10 @@ readable-stream@^3.1.0, readable-stream@^3.4.0, readable-stream@^3.6.0:
string_decoder "^1.1.1"
util-deprecate "^1.0.1"
-readdirp@~3.2.0:
- version "3.2.0"
- resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.2.0.tgz#c30c33352b12c96dfb4b895421a49fd5a9593839"
- integrity sha512-crk4Qu3pmXwgxdSgGhgA/eXiJAPQiX4GMOZZMXnqKxHX7TaoL+3gQVo/WeuAiogr07DpnfjIMpXXa+PAIvwPGQ==
- dependencies:
- picomatch "^2.0.4"
+readdirp@^4.0.1:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-4.0.2.tgz#388fccb8b75665da3abffe2d8f8ed59fe74c230a"
+ integrity sha512-yDMz9g+VaZkqBYS/ozoBJwaBhTbZo3UNYQHNRw1D3UFQB8oHB4uS/tAODO+ZLjGWmUbKnIlOWO+aaIiAxrUWHA==
readdirp@~3.6.0:
version "3.6.0"
@@ -6517,31 +4521,22 @@ readdirp@~3.6.0:
rechoir@^0.6.2:
version "0.6.2"
resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384"
- integrity sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=
+ integrity sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==
dependencies:
resolve "^1.1.6"
recursive-readdir@^2.2.2:
- version "2.2.2"
- resolved "https://registry.yarnpkg.com/recursive-readdir/-/recursive-readdir-2.2.2.tgz#9946fb3274e1628de6e36b2f6714953b4845094f"
- integrity sha512-nRCcW9Sj7NuZwa2XvH9co8NPeXUBhZP7CRKJtU+cS6PW9FpCIFoI5ib0NT1ZrbNuPoRy0ylyCaUL8Gih4LSyFg==
+ version "2.2.3"
+ resolved "https://registry.yarnpkg.com/recursive-readdir/-/recursive-readdir-2.2.3.tgz#e726f328c0d69153bcabd5c322d3195252379372"
+ integrity sha512-8HrF5ZsXk5FAH9dgsx3BlUer73nIhuj+9OrQwEbLTPOBzGkL1lsFCR01am+v+0m2Cmbs1nP12hLDl5FA7EszKA==
dependencies:
- minimatch "3.0.4"
+ minimatch "^3.0.5"
reduce-flatten@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/reduce-flatten/-/reduce-flatten-2.0.0.tgz#734fd84e65f375d7ca4465c69798c25c9d10ae27"
integrity sha512-EJ4UNY/U1t2P/2k6oqotuX2Cc3T6nxJwsM0N0asT7dhrtH1ltUxDn4NalSYmPE2rCkVpcf/X6R0wDwcFpzhd4w==
-regexp.prototype.flags@^1.5.0:
- version "1.5.0"
- resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.0.tgz#fe7ce25e7e4cca8db37b6634c8a2c7009199b9cb"
- integrity sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA==
- dependencies:
- call-bind "^1.0.2"
- define-properties "^1.2.0"
- functions-have-names "^1.2.3"
-
regexpp@^2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-2.0.1.tgz#8d19d31cf632482b589049f8281f93dbcba4d07f"
@@ -6552,51 +4547,20 @@ repeat-string@^1.6.1:
resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637"
integrity sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==
-request@^2.85.0:
- version "2.88.2"
- resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3"
- integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==
- dependencies:
- aws-sign2 "~0.7.0"
- aws4 "^1.8.0"
- caseless "~0.12.0"
- combined-stream "~1.0.6"
- extend "~3.0.2"
- forever-agent "~0.6.1"
- form-data "~2.3.2"
- har-validator "~5.1.3"
- http-signature "~1.2.0"
- is-typedarray "~1.0.0"
- isstream "~0.1.2"
- json-stringify-safe "~5.0.1"
- mime-types "~2.1.19"
- oauth-sign "~0.9.0"
- performance-now "^2.1.0"
- qs "~6.5.2"
- safe-buffer "^5.1.2"
- tough-cookie "~2.5.0"
- tunnel-agent "^0.6.0"
- uuid "^3.3.2"
-
require-directory@^2.1.1:
version "2.1.1"
resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42"
- integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I=
+ integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==
-require-from-string@^2.0.0, require-from-string@^2.0.2:
+require-from-string@^2.0.2:
version "2.0.2"
resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909"
integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==
-require-main-filename@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b"
- integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==
-
resolve-from@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748"
- integrity sha1-six699nWiBvItuZTM17rywoYh0g=
+ integrity sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==
resolve-from@^4.0.0:
version "4.0.0"
@@ -6611,7 +4575,7 @@ resolve-from@^5.0.0:
resolve@1.1.x:
version "1.1.7"
resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b"
- integrity sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=
+ integrity sha512-9znBF0vBcaSN3W2j7wKvdERPwqTxSpCq+if5C0WoTCyV9n24rua28jeuQ2pL/HOf+yUe/Mef+H/5p60K0Id3bg==
resolve@1.17.0:
version "1.17.0"
@@ -6621,17 +4585,18 @@ resolve@1.17.0:
path-parse "^1.0.6"
resolve@^1.1.6, resolve@^1.8.1:
- version "1.20.0"
- resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975"
- integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==
+ version "1.22.8"
+ resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d"
+ integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==
dependencies:
- is-core-module "^2.2.0"
- path-parse "^1.0.6"
+ is-core-module "^2.13.0"
+ path-parse "^1.0.7"
+ supports-preserve-symlinks-flag "^1.0.0"
restore-cursor@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf"
- integrity sha1-n37ih/gv0ybU/RYpI9YhKe7g368=
+ integrity sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==
dependencies:
onetime "^2.0.0"
signal-exit "^3.0.2"
@@ -6644,7 +4609,7 @@ retry@0.13.1:
retry@^0.12.0:
version "0.12.0"
resolved "https://registry.yarnpkg.com/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b"
- integrity sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=
+ integrity sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==
reusify@^1.0.4:
version "1.0.4"
@@ -6658,13 +4623,6 @@ rimraf@2.6.3:
dependencies:
glob "^7.1.3"
-rimraf@^2.2.8:
- version "2.7.1"
- resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec"
- integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==
- dependencies:
- glob "^7.1.3"
-
rimraf@^3.0.2:
version "3.0.2"
resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a"
@@ -6680,14 +4638,7 @@ ripemd160@^2.0.0, ripemd160@^2.0.1:
hash-base "^3.0.0"
inherits "^2.0.1"
-rlp@2.2.6, rlp@^2.2.3:
- version "2.2.6"
- resolved "https://registry.yarnpkg.com/rlp/-/rlp-2.2.6.tgz#c80ba6266ac7a483ef1e69e8e2f056656de2fb2c"
- integrity sha512-HAfAmL6SDYNWPUOJNrM500x4Thn4PZsEy5pijPh40U9WfNk0z15hUYzO9xVIMAdIHdFtD8CBDHd75Td1g36Mjg==
- dependencies:
- bn.js "^4.11.1"
-
-rlp@^2.2.4:
+rlp@^2.2.3, rlp@^2.2.4:
version "2.2.7"
resolved "https://registry.yarnpkg.com/rlp/-/rlp-2.2.7.tgz#33f31c4afac81124ac4b283e2bd4d9720b30beaf"
integrity sha512-d5gdPmgQ0Z+AklL2NVXr/IoSjNZFfTVvQWzL/AM2AOcSzYP2xjlb0AC8YyCLc41MSNf6P6QVtjgPdmVtzb+4lQ==
@@ -6699,13 +4650,6 @@ run-async@^2.2.0:
resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455"
integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==
-run-parallel-limit@^1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/run-parallel-limit/-/run-parallel-limit-1.1.0.tgz#be80e936f5768623a38a963262d6bef8ff11e7ba"
- integrity sha512-jJA7irRNM91jaKc3Hcl1npHsFLOXOoTkPCUL1JEa1R82O2miplXXRaGdjW/KM/98YQWDhJLiSs793CnXfblJUw==
- dependencies:
- queue-microtask "^1.2.2"
-
run-parallel@^1.1.9:
version "1.2.0"
resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee"
@@ -6713,11 +4657,6 @@ run-parallel@^1.1.9:
dependencies:
queue-microtask "^1.2.2"
-rustbn.js@~0.2.0:
- version "0.2.0"
- resolved "https://registry.yarnpkg.com/rustbn.js/-/rustbn.js-0.2.0.tgz#8082cb886e707155fd1cb6f23bd591ab8d55d0ca"
- integrity sha512-4VlvkRUuCJvr2J6Y0ImW7NvTCriMi7ErOAqWk1y69vAdoNIzCF3yPmgeNzx+RQTLEDFq5sHfscn1MwHxP9hNfA==
-
rxjs@^6.4.0:
version "6.6.7"
resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.7.tgz#90ac018acabf491bf65044235d5863c4dab804c9"
@@ -6725,36 +4664,12 @@ rxjs@^6.4.0:
dependencies:
tslib "^1.9.0"
-safe-array-concat@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/safe-array-concat/-/safe-array-concat-1.0.0.tgz#2064223cba3c08d2ee05148eedbc563cd6d84060"
- integrity sha512-9dVEFruWIsnie89yym+xWTAYASdpw3CJV7Li/6zBewGf9z2i1j31rP6jnY0pHEO4QZh6N0K11bFjWmdR8UGdPQ==
- dependencies:
- call-bind "^1.0.2"
- get-intrinsic "^1.2.0"
- has-symbols "^1.0.3"
- isarray "^2.0.5"
-
safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@~5.2.0:
version "5.2.1"
resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6"
integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==
-safe-buffer@~5.1.1:
- version "5.1.2"
- resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d"
- integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==
-
-safe-regex-test@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/safe-regex-test/-/safe-regex-test-1.0.0.tgz#793b874d524eb3640d1873aad03596db2d4f2295"
- integrity sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==
- dependencies:
- call-bind "^1.0.2"
- get-intrinsic "^1.1.3"
- is-regex "^1.1.4"
-
-"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0:
+"safer-buffer@>= 2.1.2 < 3":
version "2.1.2"
resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
@@ -6779,12 +4694,12 @@ sc-istanbul@^0.4.5:
which "^1.1.1"
wordwrap "^1.0.0"
-scrypt-js@3.0.1, scrypt-js@^3.0.0:
+scrypt-js@^3.0.0:
version "3.0.1"
resolved "https://registry.yarnpkg.com/scrypt-js/-/scrypt-js-3.0.1.tgz#d314a57c2aef69d1ad98a138a21fe9eafa9ee312"
integrity sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==
-secp256k1@4.0.3, secp256k1@^4.0.1:
+secp256k1@4.0.3:
version "4.0.3"
resolved "https://registry.yarnpkg.com/secp256k1/-/secp256k1-4.0.3.tgz#c4559ecd1b8d3c1827ed2d1b94190d69ce267303"
integrity sha512-NLZVf+ROMxwtEj3Xa562qgv2BK5e2WNmXPiOdVIPLgs6lyTzMvBq0aWTYMI5XCP9jZMVKOcqZLw/Wc4vDkuxhA==
@@ -6793,10 +4708,14 @@ secp256k1@4.0.3, secp256k1@^4.0.1:
node-addon-api "^2.0.0"
node-gyp-build "^4.2.0"
-seedrandom@3.0.5:
- version "3.0.5"
- resolved "https://registry.yarnpkg.com/seedrandom/-/seedrandom-3.0.5.tgz#54edc85c95222525b0c7a6f6b3543d8e0b3aa0a7"
- integrity sha512-8OwmbklUNzwezjGInmZ+2clQmExQPvomqjL7LFqOYqtmuxRgQYqOD3mHaU+MvZn5FLUeVxVfQjwLZW/n/JFuqg==
+secp256k1@^4.0.1:
+ version "4.0.4"
+ resolved "https://registry.yarnpkg.com/secp256k1/-/secp256k1-4.0.4.tgz#58f0bfe1830fe777d9ca1ffc7574962a8189f8ab"
+ integrity sha512-6JfvwvjUOn8F/jUoBY2Q1v5WY5XS+rj8qSe0v8Y4ezH4InLgTEeOOPQsRll9OV429Pvo6BCHGavIyJfr3TAhsw==
+ dependencies:
+ elliptic "^6.5.7"
+ node-addon-api "^5.0.0"
+ node-gyp-build "^4.2.0"
semaphore-async-await@^1.5.1:
version "1.5.1"
@@ -6804,60 +4723,36 @@ semaphore-async-await@^1.5.1:
integrity sha512-b/ptP11hETwYWpeilHXXQiV5UJNJl7ZWWooKRE5eBIYWoom6dZ0SluCIdCtKycsMtZgKWE01/qAw6jblw1YVhg==
semver@^5.5.0, semver@^5.5.1:
- version "5.7.1"
- resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7"
- integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==
-
-semver@^5.7.0:
version "5.7.2"
resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.2.tgz#48d55db737c3287cd4835e17fa13feace1c41ef8"
integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==
semver@^6.3.0:
- version "6.3.0"
- resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d"
- integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==
-
-semver@^7.3.4:
- version "7.3.5"
- resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7"
- integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==
- dependencies:
- lru-cache "^6.0.0"
-
-semver@^7.3.7, semver@^7.3.8, semver@^7.5.4:
- version "7.5.4"
- resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.4.tgz#483986ec4ed38e1c6c48c34894a9182dbff68a6e"
- integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==
- dependencies:
- lru-cache "^6.0.0"
+ version "6.3.1"
+ resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4"
+ integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==
-semver@^7.6.3:
+semver@^7.3.4, semver@^7.6.0, semver@^7.6.2, semver@^7.6.3:
version "7.6.3"
resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.3.tgz#980f7b5550bc175fb4dc09403085627f9eb33143"
integrity sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==
-serialize-javascript@6.0.0:
- version "6.0.0"
- resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.0.tgz#efae5d88f45d7924141da8b5c3a7a7e663fefeb8"
- integrity sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==
+serialize-javascript@^6.0.2:
+ version "6.0.2"
+ resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.2.tgz#defa1e055c83bf6d59ea805d8da862254eb6a6c2"
+ integrity sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==
dependencies:
randombytes "^2.1.0"
-set-blocking@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7"
- integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc=
-
setimmediate@^1.0.5:
version "1.0.5"
resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285"
integrity sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==
-setprototypeof@1.1.1:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683"
- integrity sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==
+setprototypeof@1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424"
+ integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==
sha.js@^2.4.0, sha.js@^2.4.8:
version "2.4.11"
@@ -6870,7 +4765,7 @@ sha.js@^2.4.0, sha.js@^2.4.8:
shebang-command@^1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea"
- integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=
+ integrity sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==
dependencies:
shebang-regex "^1.0.0"
@@ -6884,7 +4779,7 @@ shebang-command@^2.0.0:
shebang-regex@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3"
- integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=
+ integrity sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==
shebang-regex@^3.0.0:
version "3.0.0"
@@ -6892,27 +4787,18 @@ shebang-regex@^3.0.0:
integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==
shelljs@^0.8.3:
- version "0.8.4"
- resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.8.4.tgz#de7684feeb767f8716b326078a8a00875890e3c2"
- integrity sha512-7gk3UZ9kOfPLIAbslLzyWeGiEqx9e3rxwZM0KE6EL8GlGwjym9Mrlx5/p33bWTu9YG6vcS4MBxYZDHYr5lr8BQ==
+ version "0.8.5"
+ resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.8.5.tgz#de055408d8361bed66c669d2f000538ced8ee20c"
+ integrity sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==
dependencies:
glob "^7.0.0"
interpret "^1.0.0"
rechoir "^0.6.2"
-side-channel@^1.0.4:
- version "1.0.4"
- resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf"
- integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==
- dependencies:
- call-bind "^1.0.0"
- get-intrinsic "^1.0.2"
- object-inspect "^1.9.0"
-
signal-exit@^3.0.2:
- version "3.0.4"
- resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.4.tgz#366a4684d175b9cab2081e3681fda3747b6c51d7"
- integrity sha512-rqYhcAnZ6d/vTPGghdrw7iumdcbXpsk1b8IG/rz+VWV51DM0p7XCtMoJ3qhPLIbp3tvyt3pKRbaaEMZYpHto8Q==
+ version "3.0.7"
+ resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9"
+ integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==
slash@^3.0.0:
version "3.0.0"
@@ -6937,25 +4823,10 @@ slice-ansi@^4.0.0:
astral-regex "^2.0.0"
is-fullwidth-code-point "^3.0.0"
-solc@0.7.3:
- version "0.7.3"
- resolved "https://registry.yarnpkg.com/solc/-/solc-0.7.3.tgz#04646961bd867a744f63d2b4e3c0701ffdc7d78a"
- integrity sha512-GAsWNAjGzIDg7VxzP6mPjdurby3IkGCjQcM8GFYZT6RyaoUZKmMU6Y7YwG+tFGhv7dwZ8rmR4iwFDrrD99JwqA==
- dependencies:
- command-exists "^1.2.8"
- commander "3.0.2"
- follow-redirects "^1.12.1"
- fs-extra "^0.30.0"
- js-sha3 "0.8.0"
- memorystream "^0.3.1"
- require-from-string "^2.0.0"
- semver "^5.5.0"
- tmp "0.0.33"
-
-solc@0.8.15:
- version "0.8.15"
- resolved "https://registry.yarnpkg.com/solc/-/solc-0.8.15.tgz#d274dca4d5a8b7d3c9295d4cbdc9291ee1c52152"
- integrity sha512-Riv0GNHNk/SddN/JyEuFKwbcWcEeho15iyupTSHw5Np6WuXA5D8kEHbyzDHi6sqmvLzu2l+8b1YmL8Ytple+8w==
+solc@0.8.26:
+ version "0.8.26"
+ resolved "https://registry.yarnpkg.com/solc/-/solc-0.8.26.tgz#afc78078953f6ab3e727c338a2fefcd80dd5b01a"
+ integrity sha512-yiPQNVf5rBFHwN6SIf3TUUvVAFKcQqmSUFeq+fb6pNRCo0ZCgpYOZDi3BVoezCPIAcKrVYd/qXlBLUP9wVrZ9g==
dependencies:
command-exists "^1.2.8"
commander "^8.1.0"
@@ -6987,29 +4858,28 @@ solhint@3.3.6:
optionalDependencies:
prettier "^1.14.3"
-solidity-ast@^0.4.15:
- version "0.4.49"
- resolved "https://registry.yarnpkg.com/solidity-ast/-/solidity-ast-0.4.49.tgz#ecba89d10c0067845b7848c3a3e8cc61a4fc5b82"
- integrity sha512-Pr5sCAj1SFqzwFZw1HPKSq0PehlQNdM8GwKyAVYh2DOn7/cCK8LUKD1HeHnKtTgBW7hi9h4nnnan7hpAg5RhWQ==
+solidity-ast@^0.4.51:
+ version "0.4.59"
+ resolved "https://registry.yarnpkg.com/solidity-ast/-/solidity-ast-0.4.59.tgz#290a2815aef70a61092591ab3e991da080ae5931"
+ integrity sha512-I+CX0wrYUN9jDfYtcgWSe+OAowaXy8/1YQy7NS4ni5IBDmIYBq7ZzaP/7QqouLjzZapmQtvGLqCaYgoUWqBo5g==
solidity-coverage@^0.8.4:
- version "0.8.4"
- resolved "https://registry.yarnpkg.com/solidity-coverage/-/solidity-coverage-0.8.4.tgz#c57a21979f5e86859c5198de9fbae2d3bc6324a5"
- integrity sha512-xeHOfBOjdMF6hWTbt42iH4x+7j1Atmrf5OldDPMxI+i/COdExUxszOswD9qqvcBTaLGiOrrpnh9UZjSpt4rBsg==
+ version "0.8.13"
+ resolved "https://registry.yarnpkg.com/solidity-coverage/-/solidity-coverage-0.8.13.tgz#8eeada2e82ae19d25568368aa782a2baad0e0ce7"
+ integrity sha512-RiBoI+kF94V3Rv0+iwOj3HQVSqNzA9qm/qDP1ZDXK5IX0Cvho1qiz8hAXTsAo6KOIUeP73jfscq0KlLqVxzGWA==
dependencies:
"@ethersproject/abi" "^5.0.9"
- "@solidity-parser/parser" "^0.16.0"
+ "@solidity-parser/parser" "^0.18.0"
chalk "^2.4.2"
death "^1.1.0"
- detect-port "^1.3.0"
difflib "^0.2.4"
fs-extra "^8.1.0"
ghost-testrpc "^0.0.2"
global-modules "^2.0.0"
globby "^10.0.1"
jsonschema "^1.2.4"
- lodash "^4.17.15"
- mocha "7.1.2"
+ lodash "^4.17.21"
+ mocha "^10.2.0"
node-emoji "^1.10.0"
pify "^4.0.1"
recursive-readdir "^2.2.2"
@@ -7019,9 +4889,9 @@ solidity-coverage@^0.8.4:
web3-utils "^1.3.6"
source-map-support@^0.5.13, source-map-support@^0.5.17:
- version "0.5.20"
- resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.20.tgz#12166089f8f5e5e8c56926b377633392dd2cb6c9"
- integrity sha512-n1lZZ8Ve4ksRqizaBQgxXDgKwttHDhyfQjA6YZZn8+AroHbsIz+JjwxQDxbp+7y5OYCI8t1Yk7etjD9CRd2hIw==
+ version "0.5.21"
+ resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f"
+ integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==
dependencies:
buffer-from "^1.0.0"
source-map "^0.6.0"
@@ -7034,29 +4904,14 @@ source-map@^0.6.0, source-map@^0.6.1:
source-map@~0.2.0:
version "0.2.0"
resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.2.0.tgz#dab73fbcfc2ba819b4de03bd6f6eaa48164b3f9d"
- integrity sha1-2rc/vPwrqBm03gO9b26qSBZLP50=
+ integrity sha512-CBdZ2oa/BHhS4xj5DlhjWNHcan57/5YuvfdLf17iVmIpd9KRm+DFLmC6nBNj+6Ua7Kt3TmOjDpQT1aTYOQtoUA==
dependencies:
amdefine ">=0.0.4"
sprintf-js@~1.0.2:
version "1.0.3"
resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c"
- integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=
-
-sshpk@^1.7.0:
- version "1.17.0"
- resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.17.0.tgz#578082d92d4fe612b13007496e543fa0fbcbe4c5"
- integrity sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==
- dependencies:
- asn1 "~0.2.3"
- assert-plus "^1.0.0"
- bcrypt-pbkdf "^1.0.0"
- dashdash "^1.12.0"
- ecc-jsbn "~0.1.1"
- getpass "^0.1.1"
- jsbn "~0.1.0"
- safer-buffer "^2.0.2"
- tweetnacl "~0.14.0"
+ integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==
stacktrace-parser@^0.1.10:
version "0.1.10"
@@ -7065,22 +4920,17 @@ stacktrace-parser@^0.1.10:
dependencies:
type-fest "^0.7.1"
-"statuses@>= 1.5.0 < 2":
- version "1.5.0"
- resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c"
- integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=
-
-streamsearch@^1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/streamsearch/-/streamsearch-1.1.0.tgz#404dd1e2247ca94af554e841a8ef0eaa238da764"
- integrity sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==
+statuses@2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63"
+ integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==
string-format@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/string-format/-/string-format-2.0.0.tgz#f2df2e7097440d3b65de31b6d40d54c96eaffb9b"
integrity sha512-bbEs3scLeYNXLecRRuk6uJxdXUSj6le/8rNPHChIJTn2V79aXVTR1EH2OH5zLKKoz0V02fOUKZZcw01pLUShZA==
-"string-width@^1.0.2 || 2", string-width@^2.1.0:
+string-width@^2.1.0:
version "2.1.1"
resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e"
integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==
@@ -7088,7 +4938,7 @@ string-format@^2.0.0:
is-fullwidth-code-point "^2.0.0"
strip-ansi "^4.0.0"
-string-width@^3.0.0, string-width@^3.1.0:
+string-width@^3.0.0:
version "3.1.0"
resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961"
integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==
@@ -7097,7 +4947,7 @@ string-width@^3.0.0, string-width@^3.1.0:
is-fullwidth-code-point "^2.0.0"
strip-ansi "^5.1.0"
-string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3:
+string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.2, string-width@^4.2.3:
version "4.2.3"
resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010"
integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==
@@ -7106,49 +4956,6 @@ string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3:
is-fullwidth-code-point "^3.0.0"
strip-ansi "^6.0.1"
-string.prototype.trim@^1.2.7:
- version "1.2.7"
- resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.7.tgz#a68352740859f6893f14ce3ef1bb3037f7a90533"
- integrity sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg==
- dependencies:
- call-bind "^1.0.2"
- define-properties "^1.1.4"
- es-abstract "^1.20.4"
-
-string.prototype.trimend@^1.0.4:
- version "1.0.4"
- resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz#e75ae90c2942c63504686c18b287b4a0b1a45f80"
- integrity sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==
- dependencies:
- call-bind "^1.0.2"
- define-properties "^1.1.3"
-
-string.prototype.trimend@^1.0.6:
- version "1.0.6"
- resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz#c4a27fa026d979d79c04f17397f250a462944533"
- integrity sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==
- dependencies:
- call-bind "^1.0.2"
- define-properties "^1.1.4"
- es-abstract "^1.20.4"
-
-string.prototype.trimstart@^1.0.4:
- version "1.0.4"
- resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz#b36399af4ab2999b4c9c648bd7a3fb2bb26feeed"
- integrity sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==
- dependencies:
- call-bind "^1.0.2"
- define-properties "^1.1.3"
-
-string.prototype.trimstart@^1.0.6:
- version "1.0.6"
- resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz#e90ab66aa8e4007d92ef591bbf3cd422c56bdcf4"
- integrity sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==
- dependencies:
- call-bind "^1.0.2"
- define-properties "^1.1.4"
- es-abstract "^1.20.4"
-
string_decoder@^1.1.1:
version "1.3.0"
resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e"
@@ -7159,11 +4966,11 @@ string_decoder@^1.1.1:
strip-ansi@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f"
- integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8=
+ integrity sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==
dependencies:
ansi-regex "^3.0.0"
-strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0:
+strip-ansi@^5.1.0:
version "5.2.0"
resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae"
integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==
@@ -7177,48 +4984,27 @@ strip-ansi@^6.0.0, strip-ansi@^6.0.1:
dependencies:
ansi-regex "^5.0.1"
-strip-ansi@^7.1.0:
- version "7.1.0"
- resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.1.0.tgz#d5b6568ca689d8561370b0707685d22434faff45"
- integrity sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==
- dependencies:
- ansi-regex "^6.0.1"
-
strip-hex-prefix@1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/strip-hex-prefix/-/strip-hex-prefix-1.0.0.tgz#0c5f155fef1151373377de9dbb588da05500e36f"
- integrity sha1-DF8VX+8RUTczd96du1iNoFUA428=
+ integrity sha512-q8d4ue7JGEiVcypji1bALTos+0pWtyGlivAWyPuTkHzuTCJqrK9sWxYQZUq6Nq3cuyv3bm734IhHvHtGGURU6A==
dependencies:
is-hex-prefixed "1.0.0"
-strip-json-comments@2.0.1, strip-json-comments@^2.0.1:
+strip-json-comments@^2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a"
- integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo=
+ integrity sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==
-strip-json-comments@3.1.1, strip-json-comments@^3.1.1:
+strip-json-comments@^3.1.1:
version "3.1.1"
resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006"
integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==
-supports-color@6.0.0:
- version "6.0.0"
- resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.0.0.tgz#76cfe742cf1f41bb9b1c29ad03068c05b4c0e40a"
- integrity sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg==
- dependencies:
- has-flag "^3.0.0"
-
-supports-color@8.1.1:
- version "8.1.1"
- resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c"
- integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==
- dependencies:
- has-flag "^4.0.0"
-
supports-color@^3.1.0:
version "3.2.3"
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.2.3.tgz#65ac0504b3954171d8a64946b2ae3cbb8a5f54f6"
- integrity sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=
+ integrity sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==
dependencies:
has-flag "^1.0.0"
@@ -7236,6 +5022,18 @@ supports-color@^7.1.0:
dependencies:
has-flag "^4.0.0"
+supports-color@^8.1.1:
+ version "8.1.1"
+ resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c"
+ integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==
+ dependencies:
+ has-flag "^4.0.0"
+
+supports-preserve-symlinks-flag@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09"
+ integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==
+
table-layout@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/table-layout/-/table-layout-1.0.2.tgz#c4038a1853b0136d63365a734b6931cf4fad4a04"
@@ -7257,9 +5055,9 @@ table@^5.2.3:
string-width "^3.0.0"
table@^6.8.0:
- version "6.8.1"
- resolved "https://registry.yarnpkg.com/table/-/table-6.8.1.tgz#ea2b71359fe03b017a5fbc296204471158080bdf"
- integrity sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA==
+ version "6.8.2"
+ resolved "https://registry.yarnpkg.com/table/-/table-6.8.2.tgz#c5504ccf201213fa227248bdc8c5569716ac6c58"
+ integrity sha512-w2sfv80nrAh2VCbqR5AK27wswXhqcck2AhfnNW76beQXskGZ1V12GwS//yYVa3d3fcvAip2OUnbDAjW2k3v9fA==
dependencies:
ajv "^8.0.1"
lodash.truncate "^4.4.2"
@@ -7270,12 +5068,20 @@ table@^6.8.0:
text-table@^0.2.0:
version "0.2.0"
resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4"
- integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=
+ integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==
through@^2.3.6:
version "2.3.8"
resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5"
- integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=
+ integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==
+
+tinyglobby@^0.2.9:
+ version "0.2.9"
+ resolved "https://registry.yarnpkg.com/tinyglobby/-/tinyglobby-0.2.9.tgz#6baddd1b0fe416403efb0dd40442c7d7c03c1c66"
+ integrity sha512-8or1+BGEdk1Zkkw2ii16qSS7uVrQJPre5A9o/XkWPATkk23FZh/15BKFxPnlTy6vkljZxLqYCzzBMj30ZrSvjw==
+ dependencies:
+ fdir "^6.4.0"
+ picomatch "^4.0.2"
tmp@0.0.33, tmp@^0.0.33:
version "0.0.33"
@@ -7291,33 +5097,25 @@ to-regex-range@^5.0.1:
dependencies:
is-number "^7.0.0"
-toidentifier@1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553"
- integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==
-
-tough-cookie@~2.5.0:
- version "2.5.0"
- resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2"
- integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==
- dependencies:
- psl "^1.1.28"
- punycode "^2.1.1"
+toidentifier@1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35"
+ integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==
tr46@~0.0.3:
version "0.0.3"
resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a"
- integrity sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=
+ integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==
-ts-api-utils@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-1.0.1.tgz#8144e811d44c749cd65b2da305a032510774452d"
- integrity sha512-lC/RGlPmwdrIBFTX59wwNzqh7aR2otPNPR/5brHZm/XKFYKsfqxihXUe9pU3JI+3vGkl+vyCoNNnPhJn3aLK1A==
+ts-api-utils@^1.3.0:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-1.4.0.tgz#709c6f2076e511a81557f3d07a0cbd566ae8195c"
+ integrity sha512-032cPxaEKwM+GT3vA5JXNzIaizx388rhsSW79vGRNGXfRRAdEAn2mvk36PvK5HnOchyWZ7afLEXqYCvPCrzuzQ==
ts-command-line-args@^2.2.0:
- version "2.2.1"
- resolved "https://registry.yarnpkg.com/ts-command-line-args/-/ts-command-line-args-2.2.1.tgz#fd6913e542099012c0ffb2496126a8f38305c7d6"
- integrity sha512-mnK68QA86FYzQYTSA/rxIjT/8EpKsvQw9QkawPic8I8t0gjAOw3Oa509NIRoaY1FmH7hdrncMp7t7o+vYoceNQ==
+ version "2.5.1"
+ resolved "https://registry.yarnpkg.com/ts-command-line-args/-/ts-command-line-args-2.5.1.tgz#e64456b580d1d4f6d948824c274cf6fa5f45f7f0"
+ integrity sha512-H69ZwTw3rFHb5WYpQya40YAX2/w7Ut75uUECbgBIsLmM+BNuYnxsltfyyLMxy6sEeKxgijLTnQtLd0nKd6+IYw==
dependencies:
chalk "^4.1.0"
command-line-args "^5.1.1"
@@ -7360,38 +5158,31 @@ ts-node@^8.10.2:
source-map-support "^0.5.17"
yn "3.1.1"
+tslib@2.7.0:
+ version "2.7.0"
+ resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.7.0.tgz#d9b40c5c40ab59e8738f297df3087bf1a2690c01"
+ integrity sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==
+
tslib@^1.11.1, tslib@^1.9.0, tslib@^1.9.3:
version "1.14.1"
resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00"
integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==
-tslib@^2.3.1, tslib@^2.5.0:
- version "2.6.1"
- resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.1.tgz#fd8c9a0ff42590b25703c0acb3de3d3f4ede0410"
- integrity sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==
+tslib@^2.3.1, tslib@^2.6.2:
+ version "2.8.0"
+ resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.8.0.tgz#d124c86c3c05a40a91e6fdea4021bd31d377971b"
+ integrity sha512-jWVzBLplnCmoaTr13V9dYbiQ99wvZRd0vNWaDRg+aVYRcjDF3nDksxFDE/+fkXnKhpnUUkmx5pK/v8mCtLVqZA==
tsort@0.0.1:
version "0.0.1"
resolved "https://registry.yarnpkg.com/tsort/-/tsort-0.0.1.tgz#e2280f5e817f8bf4275657fd0f9aebd44f5a2786"
- integrity sha1-4igPXoF/i/QnVlf9D5rr1E9aJ4Y=
-
-tunnel-agent@^0.6.0:
- version "0.6.0"
- resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd"
- integrity sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==
- dependencies:
- safe-buffer "^5.0.1"
+ integrity sha512-Tyrf5mxF8Ofs1tNoxA13lFeZ2Zrbd6cKbuH3V+MQ5sb6DtBj5FjrXVsRWT8YvNAQTqNoz66dz1WsbigI22aEnw==
tweetnacl-util@^0.15.1:
version "0.15.1"
resolved "https://registry.yarnpkg.com/tweetnacl-util/-/tweetnacl-util-0.15.1.tgz#b80fcdb5c97bcc508be18c44a4be50f022eea00b"
integrity sha512-RKJBIj8lySrShN4w6i/BonWp2Z/uxwC3h4y7xsRrpP59ZboCd0GpEVsOnMDYLMmKBpYhb5TgHzZXy7wTfYFBRw==
-tweetnacl@^0.14.3, tweetnacl@~0.14.0:
- version "0.14.5"
- resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64"
- integrity sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==
-
tweetnacl@^1.0.3:
version "1.0.3"
resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-1.0.3.tgz#ac0af71680458d8a6378d0d0d050ab1407d35596"
@@ -7407,19 +5198,19 @@ type-check@^0.4.0, type-check@~0.4.0:
type-check@~0.3.2:
version "0.3.2"
resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72"
- integrity sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=
+ integrity sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==
dependencies:
prelude-ls "~1.1.2"
-type-detect@4.0.8, type-detect@^4.0.0, type-detect@^4.0.3, type-detect@^4.0.5:
- version "4.0.8"
- resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c"
- integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==
-
type-detect@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-3.0.0.tgz#46d0cc8553abb7b13a352b0d6dea2fd58f2d9b55"
- integrity sha1-RtDMhVOrt7E6NSsNbeov1Y8tm1U=
+ integrity sha512-pwZo7l1T0a8wmTMDc4FtXuHseRaqa9nyaUArp4xHaBMUlRzr72PvgF6ouXIIj5rjbVWqo8pZu6vw74jDKg4Dvw==
+
+type-detect@^4.0.0, type-detect@^4.0.3, type-detect@^4.1.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.1.0.tgz#deb2453e8f08dcae7ae98c626b13dddb0155906c"
+ integrity sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==
type-fest@^0.20.2:
version "0.20.2"
@@ -7436,20 +5227,10 @@ type-fest@^0.7.1:
resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.7.1.tgz#8dda65feaf03ed78f0a3f9678f1869147f7c5c48"
integrity sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==
-type@^1.0.1:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/type/-/type-1.2.0.tgz#848dd7698dafa3e54a6c479e759c4bc3f18847a0"
- integrity sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==
-
-type@^2.5.0:
- version "2.5.0"
- resolved "https://registry.yarnpkg.com/type/-/type-2.5.0.tgz#0a2e78c2e77907b252abe5f298c1b01c63f0db3d"
- integrity sha512-180WMDQaIMm3+7hGXWf12GtdniDEy7nYcyFMKJn/eZz/6tSLXrUN9V0wKSbMjej0I1WHWbpREDEKHtqPQa9NNw==
-
-typechain@^8.0.0, typechain@^8.3.1:
- version "8.3.1"
- resolved "https://registry.yarnpkg.com/typechain/-/typechain-8.3.1.tgz#dccbc839b94877997536c356380eff7325395cfb"
- integrity sha512-fA7clol2IP/56yq6vkMTR+4URF1nGjV82Wx6Rf09EsqD4tkzMAvEaqYxVFCavJm/1xaRga/oD55K+4FtuXwQOQ==
+typechain@^8.3.1:
+ version "8.3.2"
+ resolved "https://registry.yarnpkg.com/typechain/-/typechain-8.3.2.tgz#1090dd8d9c57b6ef2aed3640a516bdbf01b00d73"
+ integrity sha512-x/sQYr5w9K7yv3es7jo4KTX05CLxOf7TRWwoHlrjRh8H82G64g+k7VuWPJlgMo6qrjfCulOdfBjiaDtmhFYD/Q==
dependencies:
"@types/prettier" "^2.1.1"
debug "^4.3.1"
@@ -7462,56 +5243,10 @@ typechain@^8.0.0, typechain@^8.3.1:
ts-command-line-args "^2.2.0"
ts-essentials "^7.0.1"
-typed-array-buffer@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz#18de3e7ed7974b0a729d3feecb94338d1472cd60"
- integrity sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==
- dependencies:
- call-bind "^1.0.2"
- get-intrinsic "^1.2.1"
- is-typed-array "^1.1.10"
-
-typed-array-byte-length@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz#d787a24a995711611fb2b87a4052799517b230d0"
- integrity sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==
- dependencies:
- call-bind "^1.0.2"
- for-each "^0.3.3"
- has-proto "^1.0.1"
- is-typed-array "^1.1.10"
-
-typed-array-byte-offset@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz#cbbe89b51fdef9cd6aaf07ad4707340abbc4ea0b"
- integrity sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==
- dependencies:
- available-typed-arrays "^1.0.5"
- call-bind "^1.0.2"
- for-each "^0.3.3"
- has-proto "^1.0.1"
- is-typed-array "^1.1.10"
-
-typed-array-length@^1.0.4:
- version "1.0.4"
- resolved "https://registry.yarnpkg.com/typed-array-length/-/typed-array-length-1.0.4.tgz#89d83785e5c4098bec72e08b319651f0eac9c1bb"
- integrity sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==
- dependencies:
- call-bind "^1.0.2"
- for-each "^0.3.3"
- is-typed-array "^1.1.9"
-
-typedarray-to-buffer@^3.1.5:
- version "3.1.5"
- resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080"
- integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==
- dependencies:
- is-typedarray "^1.0.0"
-
typescript@^5.1.6:
- version "5.1.6"
- resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.1.6.tgz#02f8ac202b6dad2c0dd5e0913745b47a37998274"
- integrity sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==
+ version "5.6.3"
+ resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.6.3.tgz#5f3449e31c9d94febb17de03cc081dd56d81db5b"
+ integrity sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==
typical@^4.0.0:
version "4.0.0"
@@ -7524,36 +5259,26 @@ typical@^5.2.0:
integrity sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==
uglify-js@^3.1.4:
- version "3.14.2"
- resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.14.2.tgz#d7dd6a46ca57214f54a2d0a43cad0f35db82ac99"
- integrity sha512-rtPMlmcO4agTUfz10CbgJ1k6UAoXM2gWb3GoMPPZB/+/Ackf8lNWk11K4rYi2D0apgoFRLtQOZhb+/iGNJq26A==
-
-unbox-primitive@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.1.tgz#085e215625ec3162574dc8859abee78a59b14471"
- integrity sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==
- dependencies:
- function-bind "^1.1.1"
- has-bigints "^1.0.1"
- has-symbols "^1.0.2"
- which-boxed-primitive "^1.0.2"
+ version "3.19.3"
+ resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.19.3.tgz#82315e9bbc6f2b25888858acd1fff8441035b77f"
+ integrity sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ==
-unbox-primitive@^1.0.2:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.2.tgz#29032021057d5e6cdbd08c5129c226dff8ed6f9e"
- integrity sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==
- dependencies:
- call-bind "^1.0.2"
- has-bigints "^1.0.2"
- has-symbols "^1.0.3"
- which-boxed-primitive "^1.0.2"
+undici-types@~6.19.2:
+ version "6.19.8"
+ resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-6.19.8.tgz#35111c9d1437ab83a7cdc0abae2f26d88eda0a02"
+ integrity sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==
undici@^5.14.0:
- version "5.22.1"
- resolved "https://registry.yarnpkg.com/undici/-/undici-5.22.1.tgz#877d512effef2ac8be65e695f3586922e1a57d7b"
- integrity sha512-Ji2IJhFXZY0x/0tVBXeQwgPlLWw13GVzpsWPQ3rV50IFMMof2I55PZZxtm4P6iNq+L5znYN9nSTAq0ZyE6lSJw==
+ version "5.28.4"
+ resolved "https://registry.yarnpkg.com/undici/-/undici-5.28.4.tgz#6b280408edb6a1a604a9b20340f45b422e373068"
+ integrity sha512-72RFADWFqKmUb2hmmvNODKL3p9hcB6Gt2DOQMis1SEBaV6a4MH8soBvzg+95CYhCKPFedut2JY9bMfrDl9D23g==
dependencies:
- busboy "^1.6.0"
+ "@fastify/busboy" "^2.0.0"
+
+undici@^6.11.1:
+ version "6.20.1"
+ resolved "https://registry.yarnpkg.com/undici/-/undici-6.20.1.tgz#fbb87b1e2b69d963ff2d5410a40ffb4c9e81b621"
+ integrity sha512-AjQF1QsmqfJys+LXfGTNum+qw4S88CojRInG/6t31W/1fk6G59s92bnAvGz5Cmur+kQv2SURXEvvudLmbrE8QA==
unfetch@^4.2.0:
version "4.2.0"
@@ -7566,14 +5291,14 @@ universalify@^0.1.0:
integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==
universalify@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717"
- integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.1.tgz#168efc2180964e6386d061e094df61afe239b18d"
+ integrity sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==
unpipe@1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec"
- integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=
+ integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==
uri-js@^4.2.2:
version "4.4.1"
@@ -7582,14 +5307,6 @@ uri-js@^4.2.2:
dependencies:
punycode "^2.1.0"
-url@^0.11.0:
- version "0.11.1"
- resolved "https://registry.yarnpkg.com/url/-/url-0.11.1.tgz#26f90f615427eca1b9f4d6a28288c147e2302a32"
- integrity sha512-rWS3H04/+mzzJkv0eZ7vEDGiQbgquI1fGfOad6zKvgYQi1SzMmhl7c/DdRGxhaWrVH6z0qWITo8rpnxK/RfEhA==
- dependencies:
- punycode "^1.4.1"
- qs "^6.11.0"
-
utf-8-validate@5.0.7:
version "5.0.7"
resolved "https://registry.yarnpkg.com/utf-8-validate/-/utf-8-validate-5.0.7.tgz#c15a19a6af1f7ad9ec7ddc425747ca28c3644922"
@@ -7604,13 +5321,6 @@ utf-8-validate@6.0.3:
dependencies:
node-gyp-build "^4.3.0"
-utf-8-validate@^5.0.2:
- version "5.0.6"
- resolved "https://registry.yarnpkg.com/utf-8-validate/-/utf-8-validate-5.0.6.tgz#e1b3e0a5cc8648a3b44c1799fbb170d1aaaffe80"
- integrity sha512-hoY0gOf9EkCw+nimK21FVKHUIG1BMqSiRwxB/q3A9yKZOrOI99PP77BxmarDqWz6rG3vVYiBWfhG8z2Tl+7fZA==
- dependencies:
- node-gyp-build "^4.2.0"
-
utf8@3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/utf8/-/utf8-3.0.0.tgz#f052eed1364d696e769ef058b183df88c87f69d1"
@@ -7621,35 +5331,25 @@ util-deprecate@^1.0.1:
resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==
-util@^0.12.5:
- version "0.12.5"
- resolved "https://registry.yarnpkg.com/util/-/util-0.12.5.tgz#5f17a6059b73db61a875668781a1c2b136bd6fbc"
- integrity sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==
- dependencies:
- inherits "^2.0.3"
- is-arguments "^1.0.4"
- is-generator-function "^1.0.7"
- is-typed-array "^1.1.3"
- which-typed-array "^1.1.2"
-
-uuid@^3.3.2:
- version "3.4.0"
- resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee"
- integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==
-
uuid@^8.3.2:
version "8.3.2"
resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2"
integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==
-verror@1.10.0:
- version "1.10.0"
- resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400"
- integrity sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==
- dependencies:
- assert-plus "^1.0.0"
- core-util-is "1.0.2"
- extsprintf "^1.2.0"
+viem@^2.21.8:
+ version "2.21.32"
+ resolved "https://registry.yarnpkg.com/viem/-/viem-2.21.32.tgz#b7f43b2004967036f83500260290cee45189f62a"
+ integrity sha512-2oXt5JNIb683oy7C8wuIJ/SeL3XtHVMEQpy1U2TA6WMnJQ4ScssRvyPwYLcaP6mKlrGXE/cR/V7ncWpvLUVPYQ==
+ dependencies:
+ "@adraffy/ens-normalize" "1.11.0"
+ "@noble/curves" "1.6.0"
+ "@noble/hashes" "1.5.0"
+ "@scure/bip32" "1.5.0"
+ "@scure/bip39" "1.4.0"
+ abitype "1.0.6"
+ isows "1.0.6"
+ webauthn-p256 "0.0.10"
+ ws "8.18.0"
vscode-languageserver-textdocument@^1.0.12:
version "1.0.12"
@@ -7661,177 +5361,42 @@ vscode-uri@^3.0.8:
resolved "https://registry.yarnpkg.com/vscode-uri/-/vscode-uri-3.0.8.tgz#1770938d3e72588659a172d0fd4642780083ff9f"
integrity sha512-AyFQ0EVmsOZOlAnxoFOGOq1SQDWAB7C6aqMGS23svWAllfOaxbuFvcT8D1i8z3Gyn8fraVeZNNmN6e9bxxXkKw==
-web3-core-helpers@1.10.0:
- version "1.10.0"
- resolved "https://registry.yarnpkg.com/web3-core-helpers/-/web3-core-helpers-1.10.0.tgz#1016534c51a5df77ed4f94d1fcce31de4af37fad"
- integrity sha512-pIxAzFDS5vnbXvfvLSpaA1tfRykAe9adw43YCKsEYQwH0gCLL0kMLkaCX3q+Q8EVmAh+e1jWL/nl9U0de1+++g==
- dependencies:
- web3-eth-iban "1.10.0"
- web3-utils "1.10.0"
-
-web3-core-method@1.10.0:
- version "1.10.0"
- resolved "https://registry.yarnpkg.com/web3-core-method/-/web3-core-method-1.10.0.tgz#82668197fa086e8cc8066742e35a9d72535e3412"
- integrity sha512-4R700jTLAMKDMhQ+nsVfIXvH6IGJlJzGisIfMKWAIswH31h5AZz7uDUW2YctI+HrYd+5uOAlS4OJeeT9bIpvkA==
- dependencies:
- "@ethersproject/transactions" "^5.6.2"
- web3-core-helpers "1.10.0"
- web3-core-promievent "1.10.0"
- web3-core-subscriptions "1.10.0"
- web3-utils "1.10.0"
-
-web3-core-promievent@1.10.0:
- version "1.10.0"
- resolved "https://registry.yarnpkg.com/web3-core-promievent/-/web3-core-promievent-1.10.0.tgz#cbb5b3a76b888df45ed3a8d4d8d4f54ccb66a37b"
- integrity sha512-68N7k5LWL5R38xRaKFrTFT2pm2jBNFaM4GioS00YjAKXRQ3KjmhijOMG3TICz6Aa5+6GDWYelDNx21YAeZ4YTg==
- dependencies:
- eventemitter3 "4.0.4"
-
-web3-core-requestmanager@1.10.0:
- version "1.10.0"
- resolved "https://registry.yarnpkg.com/web3-core-requestmanager/-/web3-core-requestmanager-1.10.0.tgz#4b34f6e05837e67c70ff6f6993652afc0d54c340"
- integrity sha512-3z/JKE++Os62APml4dvBM+GAuId4h3L9ckUrj7ebEtS2AR0ixyQPbrBodgL91Sv7j7cQ3Y+hllaluqjguxvSaQ==
- dependencies:
- util "^0.12.5"
- web3-core-helpers "1.10.0"
- web3-providers-http "1.10.0"
- web3-providers-ipc "1.10.0"
- web3-providers-ws "1.10.0"
-
-web3-core-subscriptions@1.10.0:
- version "1.10.0"
- resolved "https://registry.yarnpkg.com/web3-core-subscriptions/-/web3-core-subscriptions-1.10.0.tgz#b534592ee1611788fc0cb0b95963b9b9b6eacb7c"
- integrity sha512-HGm1PbDqsxejI075gxBc5OSkwymilRWZufIy9zEpnWKNmfbuv5FfHgW1/chtJP6aP3Uq2vHkvTDl3smQBb8l+g==
- dependencies:
- eventemitter3 "4.0.4"
- web3-core-helpers "1.10.0"
-
-web3-core@^1.8.1:
- version "1.10.0"
- resolved "https://registry.yarnpkg.com/web3-core/-/web3-core-1.10.0.tgz#9aa07c5deb478cf356c5d3b5b35afafa5fa8e633"
- integrity sha512-fWySwqy2hn3TL89w5TM8wXF1Z2Q6frQTKHWmP0ppRQorEK8NcHJRfeMiv/mQlSKoTS1F6n/nv2uyZsixFycjYQ==
- dependencies:
- "@types/bn.js" "^5.1.1"
- "@types/node" "^12.12.6"
- bignumber.js "^9.0.0"
- web3-core-helpers "1.10.0"
- web3-core-method "1.10.0"
- web3-core-requestmanager "1.10.0"
- web3-utils "1.10.0"
-
-web3-eth-iban@1.10.0:
- version "1.10.0"
- resolved "https://registry.yarnpkg.com/web3-eth-iban/-/web3-eth-iban-1.10.0.tgz#5a46646401965b0f09a4f58e7248c8a8cd22538a"
- integrity sha512-0l+SP3IGhInw7Q20LY3IVafYEuufo4Dn75jAHT7c2aDJsIolvf2Lc6ugHkBajlwUneGfbRQs/ccYPQ9JeMUbrg==
- dependencies:
- bn.js "^5.2.1"
- web3-utils "1.10.0"
-
-web3-providers-http@1.10.0:
- version "1.10.0"
- resolved "https://registry.yarnpkg.com/web3-providers-http/-/web3-providers-http-1.10.0.tgz#864fa48675e7918c9a4374e5f664b32c09d0151b"
- integrity sha512-eNr965YB8a9mLiNrkjAWNAPXgmQWfpBfkkn7tpEFlghfww0u3I0tktMZiaToJVcL2+Xq+81cxbkpeWJ5XQDwOA==
- dependencies:
- abortcontroller-polyfill "^1.7.3"
- cross-fetch "^3.1.4"
- es6-promise "^4.2.8"
- web3-core-helpers "1.10.0"
-
-web3-providers-ipc@1.10.0:
- version "1.10.0"
- resolved "https://registry.yarnpkg.com/web3-providers-ipc/-/web3-providers-ipc-1.10.0.tgz#9747c7a6aee96a51488e32fa7c636c3460b39889"
- integrity sha512-OfXG1aWN8L1OUqppshzq8YISkWrYHaATW9H8eh0p89TlWMc1KZOL9vttBuaBEi96D/n0eYDn2trzt22bqHWfXA==
- dependencies:
- oboe "2.1.5"
- web3-core-helpers "1.10.0"
-
-web3-providers-ws@1.10.0:
- version "1.10.0"
- resolved "https://registry.yarnpkg.com/web3-providers-ws/-/web3-providers-ws-1.10.0.tgz#cb0b87b94c4df965cdf486af3a8cd26daf3975e5"
- integrity sha512-sK0fNcglW36yD5xjnjtSGBnEtf59cbw4vZzJ+CmOWIKGIR96mP5l684g0WD0Eo+f4NQc2anWWXG74lRc9OVMCQ==
- dependencies:
- eventemitter3 "4.0.4"
- web3-core-helpers "1.10.0"
- websocket "^1.0.32"
-
-web3-utils@1.10.0, web3-utils@^1.3.6, web3-utils@^1.8.1:
- version "1.10.0"
- resolved "https://registry.yarnpkg.com/web3-utils/-/web3-utils-1.10.0.tgz#ca4c1b431a765c14ac7f773e92e0fd9377ccf578"
- integrity sha512-kSaCM0uMcZTNUSmn5vMEhlo02RObGNRRCkdX0V9UTAU0+lrvn0HSaudyCo6CQzuXUsnuY2ERJGCGPfeWmv19Rg==
+web3-utils@^1.3.6:
+ version "1.10.4"
+ resolved "https://registry.yarnpkg.com/web3-utils/-/web3-utils-1.10.4.tgz#0daee7d6841641655d8b3726baf33b08eda1cbec"
+ integrity sha512-tsu8FiKJLk2PzhDl9fXbGUWTkkVXYhtTA+SmEFkKft+9BgwLxfCRpU96sWv7ICC8zixBNd3JURVoiR3dUXgP8A==
dependencies:
+ "@ethereumjs/util" "^8.1.0"
bn.js "^5.2.1"
ethereum-bloom-filters "^1.0.6"
- ethereumjs-util "^7.1.0"
+ ethereum-cryptography "^2.1.2"
ethjs-unit "0.1.6"
number-to-bn "1.7.0"
randombytes "^2.1.0"
utf8 "3.0.0"
+webauthn-p256@0.0.10:
+ version "0.0.10"
+ resolved "https://registry.yarnpkg.com/webauthn-p256/-/webauthn-p256-0.0.10.tgz#877e75abe8348d3e14485932968edf3325fd2fdd"
+ integrity sha512-EeYD+gmIT80YkSIDb2iWq0lq2zbHo1CxHlQTeJ+KkCILWpVy3zASH3ByD4bopzfk0uCwXxLqKGLqp2W4O28VFA==
+ dependencies:
+ "@noble/curves" "^1.4.0"
+ "@noble/hashes" "^1.4.0"
+
webidl-conversions@^3.0.0:
version "3.0.1"
resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871"
- integrity sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=
-
-websocket@^1.0.32:
- version "1.0.34"
- resolved "https://registry.yarnpkg.com/websocket/-/websocket-1.0.34.tgz#2bdc2602c08bf2c82253b730655c0ef7dcab3111"
- integrity sha512-PRDso2sGwF6kM75QykIesBijKSVceR6jL2G8NGYyq2XrItNC2P5/qL5XeR056GhA+Ly7JMFvJb9I312mJfmqnQ==
- dependencies:
- bufferutil "^4.0.1"
- debug "^2.2.0"
- es5-ext "^0.10.50"
- typedarray-to-buffer "^3.1.5"
- utf-8-validate "^5.0.2"
- yaeti "^0.0.6"
+ integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==
whatwg-url@^5.0.0:
version "5.0.0"
resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d"
- integrity sha1-lmRU6HZUYuN2RNNib2dCzotwll0=
+ integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==
dependencies:
tr46 "~0.0.3"
webidl-conversions "^3.0.0"
-which-boxed-primitive@^1.0.2:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6"
- integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==
- dependencies:
- is-bigint "^1.0.1"
- is-boolean-object "^1.1.0"
- is-number-object "^1.0.4"
- is-string "^1.0.5"
- is-symbol "^1.0.3"
-
-which-module@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a"
- integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=
-
-which-typed-array@^1.1.10, which-typed-array@^1.1.11:
- version "1.1.11"
- resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.11.tgz#99d691f23c72aab6768680805a271b69761ed61a"
- integrity sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew==
- dependencies:
- available-typed-arrays "^1.0.5"
- call-bind "^1.0.2"
- for-each "^0.3.3"
- gopd "^1.0.1"
- has-tostringtag "^1.0.0"
-
-which-typed-array@^1.1.2:
- version "1.1.7"
- resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.7.tgz#2761799b9a22d4b8660b3c1b40abaa7739691793"
- integrity sha512-vjxaB4nfDqwKI0ws7wZpxIlde1XrLX5uB0ZjpfshgmapJMD7jJWhZI+yToJTqaFByF0eNBcYxbjmCzoRP7CfEw==
- dependencies:
- available-typed-arrays "^1.0.5"
- call-bind "^1.0.2"
- es-abstract "^1.18.5"
- foreach "^2.0.5"
- has-tostringtag "^1.0.0"
- is-typed-array "^1.1.7"
-
-which@1.3.1, which@^1.1.1, which@^1.2.9, which@^1.3.1:
+which@^1.1.1, which@^1.2.9, which@^1.3.1:
version "1.3.1"
resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a"
integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==
@@ -7845,22 +5410,22 @@ which@^2.0.1:
dependencies:
isexe "^2.0.0"
-wide-align@1.1.3:
- version "1.1.3"
- resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457"
- integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==
+widest-line@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-3.1.0.tgz#8292333bbf66cb45ff0de1603b136b7ae1496eca"
+ integrity sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==
dependencies:
- string-width "^1.0.2 || 2"
+ string-width "^4.0.0"
-word-wrap@~1.2.3:
- version "1.2.3"
- resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c"
- integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==
+word-wrap@^1.2.5, word-wrap@~1.2.3:
+ version "1.2.5"
+ resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.5.tgz#d2c45c6dd4fbce621a66f136cbe328afd0410b34"
+ integrity sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==
wordwrap@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb"
- integrity sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=
+ integrity sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==
wordwrapjs@^4.0.0:
version "4.0.1"
@@ -7870,19 +5435,10 @@ wordwrapjs@^4.0.0:
reduce-flatten "^2.0.0"
typical "^5.2.0"
-workerpool@6.2.1:
- version "6.2.1"
- resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.2.1.tgz#46fc150c17d826b86a008e5a4508656777e9c343"
- integrity sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==
-
-wrap-ansi@^5.1.0:
- version "5.1.0"
- resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09"
- integrity sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==
- dependencies:
- ansi-styles "^3.2.0"
- string-width "^3.0.0"
- strip-ansi "^5.0.0"
+workerpool@^6.5.1:
+ version "6.5.1"
+ resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.5.1.tgz#060f73b39d0caf97c6db64da004cd01b4c099544"
+ integrity sha512-Fs4dNYcsdpYSAfVxhnl1L5zTksjvOJxtC5hzMNl+1t9B8hTJTdKDyZ5ju7ztgPy+ft9tBFXoOlDNiOT9WUXZlA==
wrap-ansi@^7.0.0:
version "7.0.0"
@@ -7896,7 +5452,7 @@ wrap-ansi@^7.0.0:
wrappy@1:
version "1.0.2"
resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
- integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=
+ integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==
write@1.0.3:
version "1.0.3"
@@ -7905,89 +5461,47 @@ write@1.0.3:
dependencies:
mkdirp "^0.5.1"
-ws@7.4.6:
- version "7.4.6"
- resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.6.tgz#5654ca8ecdeee47c33a9a4bf6d28e2be2980377c"
- integrity sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==
-
ws@8.13.0:
version "8.13.0"
resolved "https://registry.yarnpkg.com/ws/-/ws-8.13.0.tgz#9a9fb92f93cf41512a0735c8f4dd09b8a1211cd0"
integrity sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==
+ws@8.17.1:
+ version "8.17.1"
+ resolved "https://registry.yarnpkg.com/ws/-/ws-8.17.1.tgz#9293da530bb548febc95371d90f9c878727d919b"
+ integrity sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==
+
+ws@8.18.0:
+ version "8.18.0"
+ resolved "https://registry.yarnpkg.com/ws/-/ws-8.18.0.tgz#0d7505a6eafe2b0e712d232b42279f53bc289bbc"
+ integrity sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==
+
ws@^7.4.6:
- version "7.5.5"
- resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.5.tgz#8b4bc4af518cfabd0473ae4f99144287b33eb881"
- integrity sha512-BAkMFcAzl8as1G/hArkxOxq3G7pjUqQ3gzYbLL0/5zNkph70e+lCoxBGnm6AW1+/aiNeV4fnKqZ8m4GZewmH2w==
+ version "7.5.10"
+ resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.10.tgz#58b5c20dc281633f6c19113f39b349bd8bd558d9"
+ integrity sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==
xdg-basedir@^5.1.0:
version "5.1.0"
resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-5.1.0.tgz#1efba19425e73be1bc6f2a6ceb52a3d2c884c0c9"
integrity sha512-GCPAHLvrIH13+c0SuacwvRYj2SxJXQ4kaVTT5xgL3kPrz56XxkF21IGhjSE1+W0aw7gpBWRGXLCPnPby6lSpmQ==
-xtend@^4.0.1, xtend@^4.0.2, xtend@~4.0.0:
- version "4.0.2"
- resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54"
- integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==
-
-y18n@^4.0.0:
- version "4.0.3"
- resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.3.tgz#b5f259c82cd6e336921efd7bfd8bf560de9eeedf"
- integrity sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==
-
y18n@^5.0.5:
version "5.0.8"
resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55"
integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==
-yaeti@^0.0.6:
- version "0.0.6"
- resolved "https://registry.yarnpkg.com/yaeti/-/yaeti-0.0.6.tgz#f26f484d72684cf42bedfb76970aa1608fbf9577"
- integrity sha1-8m9ITXJoTPQr7ft2lwqhYI+/lXc=
-
-yallist@^3.0.2:
- version "3.1.1"
- resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd"
- integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==
-
-yallist@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72"
- integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==
-
-yaml@^2.5.1:
- version "2.5.1"
- resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.5.1.tgz#c9772aacf62cb7494a95b0c4f1fb065b563db130"
- integrity sha512-bLQOjaX/ADgQ20isPJRvF0iRUHIxVhYvr53Of7wGcWlO2jvtUlH5m87DsmulFVxRpNLOnI4tB6p/oh8D7kpn9Q==
-
-yargs-parser@13.1.2, yargs-parser@^13.1.2:
- version "13.1.2"
- resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.2.tgz#130f09702ebaeef2650d54ce6e3e5706f7a4fb38"
- integrity sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==
- dependencies:
- camelcase "^5.0.0"
- decamelize "^1.2.0"
-
-yargs-parser@20.2.4:
- version "20.2.4"
- resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.4.tgz#b42890f14566796f85ae8e3a25290d205f154a54"
- integrity sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==
+yaml@^2.6.0:
+ version "2.6.0"
+ resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.6.0.tgz#14059ad9d0b1680d0f04d3a60fe00f3a857303c3"
+ integrity sha512-a6ae//JvKDEra2kdi1qzCyrJW/WZCgFi8ydDV+eXExl95t+5R+ijnqHJbz9tmMh8FUjx3iv2fCQ4dclAQlO2UQ==
-yargs-parser@^20.2.2:
+yargs-parser@^20.2.2, yargs-parser@^20.2.9:
version "20.2.9"
resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee"
integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==
-yargs-unparser@1.6.0:
- version "1.6.0"
- resolved "https://registry.yarnpkg.com/yargs-unparser/-/yargs-unparser-1.6.0.tgz#ef25c2c769ff6bd09e4b0f9d7c605fb27846ea9f"
- integrity sha512-W9tKgmSn0DpSatfri0nx52Joq5hVXgeLiqR/5G0sZNDoLZFOr/xjBUDcShCOGNsBnEMNo1KAMBkTej1Hm62HTw==
- dependencies:
- flat "^4.1.0"
- lodash "^4.17.15"
- yargs "^13.3.0"
-
-yargs-unparser@2.0.0:
+yargs-unparser@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/yargs-unparser/-/yargs-unparser-2.0.0.tgz#f131f9226911ae5d9ad38c432fe809366c2325eb"
integrity sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==
@@ -7997,23 +5511,7 @@ yargs-unparser@2.0.0:
flat "^5.0.2"
is-plain-obj "^2.1.0"
-yargs@13.3.2, yargs@^13.3.0:
- version "13.3.2"
- resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.3.2.tgz#ad7ffefec1aa59565ac915f82dccb38a9c31a2dd"
- integrity sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==
- dependencies:
- cliui "^5.0.0"
- find-up "^3.0.0"
- get-caller-file "^2.0.1"
- require-directory "^2.1.1"
- require-main-filename "^2.0.0"
- set-blocking "^2.0.0"
- string-width "^3.0.0"
- which-module "^2.0.0"
- y18n "^4.0.0"
- yargs-parser "^13.1.2"
-
-yargs@16.2.0:
+yargs@^16.2.0:
version "16.2.0"
resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66"
integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==