time.js 1.1 KB

1234567891011121314151617181920212223242526272829
  1. const { time, mineUpTo } = require('@nomicfoundation/hardhat-network-helpers');
  2. const mapObject = (obj, fn) => Object.fromEntries(Object.entries(obj).map(([key, value]) => [key, fn(value)]));
  3. module.exports = {
  4. clock: {
  5. blocknumber: () => time.latestBlock(),
  6. timestamp: () => time.latest(),
  7. },
  8. clockFromReceipt: {
  9. blocknumber: receipt => Promise.resolve(receipt.blockNumber),
  10. timestamp: receipt => web3.eth.getBlock(receipt.blockNumber).then(block => block.timestamp),
  11. // TODO: update for ethers receipt
  12. // timestamp: receipt => receipt.getBlock().then(block => block.timestamp),
  13. },
  14. forward: {
  15. blocknumber: mineUpTo,
  16. timestamp: (to, mine = true) => (mine ? time.increaseTo(to) : time.setNextBlockTimestamp(to)),
  17. },
  18. duration: time.duration,
  19. };
  20. // TODO: deprecate the old version in favor of this one
  21. module.exports.bigint = {
  22. clock: mapObject(module.exports.clock, fn => () => fn().then(BigInt)),
  23. clockFromReceipt: mapObject(module.exports.clockFromReceipt, fn => receipt => fn(receipt).then(BigInt)),
  24. forward: module.exports.forward,
  25. duration: mapObject(module.exports.duration, fn => n => BigInt(fn(n))),
  26. };