ExpirableFarm
Inherits: Farm
Author: Sperax Foundation.
This contract helps in creating farms with expiry feature.
State Variables
MIN_EXTENSION
uint256 public constant MIN_EXTENSION = 100;
MAX_EXTENSION
uint256 public constant MAX_EXTENSION = 300;
farmEndTime
uint256 public farmEndTime;
farmRegistry
address public farmRegistry;
Functions
extendFarmDuration
Update the farm end time.
Can be updated only before the farm expired or closed. Extension should be incremented in multiples of 1 USDs/day with minimum of 100 days at a time and a maximum of 300 days. Extension is possible only after farm started.
function extendFarmDuration(uint256 _extensionDays) external onlyOwner nonReentrant;
Parameters
_extensionDays
uint256
The number of days to extend the farm. Example: 150 means 150 days.
updateFarmStartTime
Update the farm start time.
Can be updated only before the farm start. New start time should be in future. Adjusts the farm end time accordingly.
function updateFarmStartTime(uint256 _newStartTime) public virtual override;
Parameters
_newStartTime
uint256
The new farm start time.
isFarmOpen
Returns bool status if farm is open. Farm is open if it is not closed and not expired.
function isFarmOpen() public view virtual override returns (bool);
Returns
<none>
bool
bool True if farm is open.
_setupFarmExpiry
Setup the farm data for farm expiry.
function _setupFarmExpiry(uint256 _farmStartTime, address _farmRegistry) internal;
Parameters
_farmStartTime
uint256
Start time of the farm.
_farmRegistry
address
Address of the farm registry.
_collectExtensionFee
Collects farm extension fee and transfers it to feeReceiver.
Function fetches all the fee params from farmRegistry.
function _collectExtensionFee(uint256 _extensionDays) private;
Parameters
_extensionDays
uint256
The number of days to extend the farm. Example: 150 means 150 days.
Events
FarmEndTimeUpdated
event FarmEndTimeUpdated(uint256 newEndTime);
ExtensionFeeCollected
event ExtensionFeeCollected(address indexed token, uint256 extensionFee);
Errors
InvalidExtension
error InvalidExtension();
DurationExceeded
error DurationExceeded();
FarmNotYetStarted
error FarmNotYetStarted();
Was this helpful?