Add Governor contracts (#2672)
Co-authored-by: Francisco Giordano <frangio.1@gmail.com>
This commit is contained in:
72
contracts/utils/Timers.sol
Normal file
72
contracts/utils/Timers.sol
Normal file
@ -0,0 +1,72 @@
|
||||
// SPDX-License-Identifier: MIT
|
||||
|
||||
pragma solidity ^0.8.0;
|
||||
|
||||
/**
|
||||
* @dev Tooling for timepoints, timers and delays
|
||||
*/
|
||||
library Timers {
|
||||
struct Timestamp {
|
||||
uint64 _deadline;
|
||||
}
|
||||
|
||||
function getDeadline(Timestamp memory timer) internal pure returns (uint64) {
|
||||
return timer._deadline;
|
||||
}
|
||||
|
||||
function setDeadline(Timestamp storage timer, uint64 timestamp) internal {
|
||||
timer._deadline = timestamp;
|
||||
}
|
||||
|
||||
function reset(Timestamp storage timer) internal {
|
||||
timer._deadline = 0;
|
||||
}
|
||||
|
||||
function isUnset(Timestamp memory timer) internal pure returns (bool) {
|
||||
return timer._deadline == 0;
|
||||
}
|
||||
|
||||
function isStarted(Timestamp memory timer) internal pure returns (bool) {
|
||||
return timer._deadline > 0;
|
||||
}
|
||||
|
||||
function isPending(Timestamp memory timer) internal view returns (bool) {
|
||||
return timer._deadline > block.timestamp;
|
||||
}
|
||||
|
||||
function isExpired(Timestamp memory timer) internal view returns (bool) {
|
||||
return isStarted(timer) && timer._deadline <= block.timestamp;
|
||||
}
|
||||
|
||||
struct BlockNumber {
|
||||
uint64 _deadline;
|
||||
}
|
||||
|
||||
function getDeadline(BlockNumber memory timer) internal pure returns (uint64) {
|
||||
return timer._deadline;
|
||||
}
|
||||
|
||||
function setDeadline(BlockNumber storage timer, uint64 timestamp) internal {
|
||||
timer._deadline = timestamp;
|
||||
}
|
||||
|
||||
function reset(BlockNumber storage timer) internal {
|
||||
timer._deadline = 0;
|
||||
}
|
||||
|
||||
function isUnset(BlockNumber memory timer) internal pure returns (bool) {
|
||||
return timer._deadline == 0;
|
||||
}
|
||||
|
||||
function isStarted(BlockNumber memory timer) internal pure returns (bool) {
|
||||
return timer._deadline > 0;
|
||||
}
|
||||
|
||||
function isPending(BlockNumber memory timer) internal view returns (bool) {
|
||||
return timer._deadline > block.number;
|
||||
}
|
||||
|
||||
function isExpired(BlockNumber memory timer) internal view returns (bool) {
|
||||
return isStarted(timer) && timer._deadline <= block.number;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user