You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
29 lines
1.1 KiB
29 lines
1.1 KiB
const { time, mineUpTo } = require('@nomicfoundation/hardhat-network-helpers');
|
|
|
|
const mapObject = (obj, fn) => Object.fromEntries(Object.entries(obj).map(([key, value]) => [key, fn(value)]));
|
|
|
|
module.exports = {
|
|
clock: {
|
|
blocknumber: () => time.latestBlock(),
|
|
timestamp: () => time.latest(),
|
|
},
|
|
clockFromReceipt: {
|
|
blocknumber: receipt => Promise.resolve(receipt.blockNumber),
|
|
timestamp: receipt => web3.eth.getBlock(receipt.blockNumber).then(block => block.timestamp),
|
|
// TODO: update for ethers receipt
|
|
// timestamp: receipt => receipt.getBlock().then(block => block.timestamp),
|
|
},
|
|
forward: {
|
|
blocknumber: mineUpTo,
|
|
timestamp: (to, mine = true) => (mine ? time.increaseTo(to) : time.setNextBlockTimestamp(to)),
|
|
},
|
|
duration: time.duration,
|
|
};
|
|
|
|
// TODO: deprecate the old version in favor of this one
|
|
module.exports.bigint = {
|
|
clock: mapObject(module.exports.clock, fn => () => fn().then(BigInt)),
|
|
clockFromReceipt: mapObject(module.exports.clockFromReceipt, fn => receipt => fn(receipt).then(BigInt)),
|
|
forward: module.exports.forward,
|
|
duration: mapObject(module.exports.duration, fn => n => BigInt(fn(n))),
|
|
};
|
|
|