ExpirableFarm

Git Source

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

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

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

_setupFarmExpiry

Setup the farm data for farm expiry.

function _setupFarmExpiry(uint256 _farmStartTime, address _farmRegistry) internal;

Parameters

_collectExtensionFee

Collects farm extension fee and transfers it to feeReceiver.

Function fetches all the fee params from farmRegistry.

function _collectExtensionFee(uint256 _extensionDays) private;

Parameters

Events

FarmEndTimeUpdated

event FarmEndTimeUpdated(uint256 newEndTime);

ExtensionFeeCollected

event ExtensionFeeCollected(address indexed token, uint256 extensionFee);

Errors

InvalidExtension

error InvalidExtension();

DurationExceeded

error DurationExceeded();

FarmNotYetStarted

error FarmNotYetStarted();