Copy interface IValidatorFund {
event AddValidator(address validator, string nodeID);
event Disbursement(address indexed validator, uint256 amount);
event Process(uint256 amount);
event RemoveValidator(address validator, string nodeID);
event Slash(address indexed validator, uint256 amount);
event Stake(address indexed validator, uint256 amount, uint256 endTime);
event Unstake(address indexed validator, uint256 amount);
function addressToValidator(address) view returns (address owner, string nodeID, address rewardAddress, uint256 stakeAmount, uint256 stakeStartAt, uint256 stakeEndAt, uint256 balance, uint256 lifetimeBalance, bool exists);
function allocatedAmount() view returns (uint256);
function burnPercentage() view returns (uint256);
function claimBalance();
function fundAddress() view returns (address);
function fundPercentage() view returns (uint256);
function getValidator(address _validator) view returns (tuple(address owner, string nodeID, address rewardAddress, uint256 stakeAmount, uint256 stakeStartAt, uint256 stakeEndAt, uint256 balance, uint256 lifetimeBalance, bool exists));
function getValidators() view returns (tuple(address owner, string nodeID, address rewardAddress, uint256 stakeAmount, uint256 stakeStartAt, uint256 stakeEndAt, uint256 balance, uint256 lifetimeBalance, bool exists)[]);
function govToken() view returns (address);
function lastDistribution() view returns (uint256);
function maxStakeAmount() view returns (uint256);
function maxStakeDuration() view returns (uint256);
function minStakeAmount() view returns (uint256);
function minStakeDuration() view returns (uint256);
function processFunds();
function rewardPercentage() view returns (uint256);
function totalBurn() view returns (uint256);
function totalFund() view returns (uint256);
function totalReward() view returns (uint256);
function totalStake() view returns (uint256);
function unallocated() view returns (uint256);
function unstake();
function validators(uint256) view returns (address);
}