123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- // 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;
- }
- }
|