2025-01-28 10:31:39 +01:00
|
|
|
// SPDX-License-Identifier: MIT
|
|
|
|
|
pragma solidity 0.8.28;
|
|
|
|
|
|
|
|
|
|
import "./Timestamps.sol";
|
|
|
|
|
|
|
|
|
|
struct Lock {
|
|
|
|
|
Timestamp expiry;
|
|
|
|
|
Timestamp maximum;
|
2025-02-03 10:44:10 +01:00
|
|
|
uint128 value;
|
2025-02-06 10:58:21 +01:00
|
|
|
bool burned;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
enum LockStatus {
|
|
|
|
|
NoLock,
|
|
|
|
|
Locked,
|
|
|
|
|
Unlocked,
|
|
|
|
|
Burned
|
2025-01-28 10:31:39 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
library Locks {
|
2025-02-06 10:58:21 +01:00
|
|
|
function status(Lock memory lock) internal view returns (LockStatus) {
|
|
|
|
|
if (lock.burned) {
|
|
|
|
|
return LockStatus.Burned;
|
|
|
|
|
}
|
|
|
|
|
if (Timestamps.currentTime() < lock.expiry) {
|
|
|
|
|
return LockStatus.Locked;
|
|
|
|
|
}
|
|
|
|
|
if (lock.maximum == Timestamp.wrap(0)) {
|
|
|
|
|
return LockStatus.NoLock;
|
|
|
|
|
}
|
|
|
|
|
return LockStatus.Unlocked;
|
2025-01-28 10:31:39 +01:00
|
|
|
}
|
|
|
|
|
}
|