You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
74 lines
2.0 KiB
Solidity
74 lines
2.0 KiB
Solidity
2 years ago
|
// SPDX-License-Identifier: MIT
|
||
|
// OpenZeppelin Contracts v4.4.1 (utils/Timers.sol)
|
||
|
|
||
|
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;
|
||
|
}
|
||
|
}
|