dsa-connectors-2.0/test/mainnet/ubiquity/utils.ts
2023-12-16 04:20:02 +05:30

56 lines
1.7 KiB
TypeScript

import hre, { ethers, network } from "hardhat";
import hardhatConfig from "../../../hardhat.config";
export async function forkReset(blockNumber: any) {
await hre.network.provider.request({
method: "hardhat_reset",
params: [
{
forking: {
// @ts-ignore
jsonRpcUrl: hardhatConfig.networks.hardhat.forking.url,
blockNumber
}
}
]
});
}
export async function mineBlock(timestamp: any) {
await network.provider.request({
method: "evm_mine",
params: [timestamp]
});
}
export async function sendEth(from: any, to: any, amount: any) {
await from.sendTransaction({
to: to,
value: ethers.BigNumber.from(10).pow(18).mul(amount)
});
}
export async function mineNBlock(blockCount: any, secondsBetweenBlock: any) {
const blockBefore = await ethers.provider.getBlock("latest");
const maxMinedBlockPerBatch = 1000;
let blockToMine = blockCount;
let blockTime = blockBefore.timestamp;
while (blockToMine > maxMinedBlockPerBatch) {
// eslint-disable-next-line @typescript-eslint/no-loop-func
const minings: any = [maxMinedBlockPerBatch].map((_v, i) => {
const newTs = blockTime + i + (secondsBetweenBlock || 1);
return mineBlock(newTs);
});
// eslint-disable-next-line no-await-in-loop
await Promise.all(minings);
blockToMine -= maxMinedBlockPerBatch;
blockTime = blockTime + maxMinedBlockPerBatch - 1 + maxMinedBlockPerBatch * (secondsBetweenBlock || 1);
}
const minings = [blockToMine].map((_v, i) => {
const newTs = blockTime + i + (secondsBetweenBlock || 1);
return mineBlock(newTs);
});
// eslint-disable-next-line no-await-in-loop
await Promise.all(minings);
}