2025-03-04 09:36:00 +01:00

34 lines
596 B
Solidity

// SPDX-License-Identifier: MIT
pragma solidity 0.8.28;
import "./Timestamps.sol";
struct Lock {
Timestamp expiry;
Timestamp maximum;
uint128 value;
bool burned;
}
enum LockStatus {
NoLock,
Locked,
Unlocked,
Burned
}
library Locks {
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;
}
}