IRewardsManager

Git Source

Functions

MORPHO

function MORPHO() external view returns (address);

REWARDS_CONTROLLER

function REWARDS_CONTROLLER() external view returns (address);

getRewardData

function getRewardData(address asset, address reward)
    external
    view
    returns (uint256 startingIndex, uint256 index, uint256 lastUpdateTimestamp);

getUserData

function getUserData(address asset, address reward, address user)
    external
    view
    returns (uint256 index, uint256 accrued);

getAllUserRewards

function getAllUserRewards(address[] calldata assets, address user)
    external
    view
    returns (address[] memory rewardsList, uint256[] memory unclaimedAmounts);

getUserRewards

function getUserRewards(address[] calldata assets, address user, address reward) external view returns (uint256);

getUserAccruedRewards

function getUserAccruedRewards(address[] calldata assets, address user, address reward)
    external
    view
    returns (uint256 totalAccrued);

getUserAssetIndex

function getUserAssetIndex(address user, address asset, address reward) external view returns (uint256);

getAssetIndex

function getAssetIndex(address asset, address reward) external view returns (uint256 assetIndex);

claimRewards

function claimRewards(address[] calldata assets, address user)
    external
    returns (address[] memory rewardsList, uint256[] memory claimedAmounts);

updateUserRewards

function updateUserRewards(address user, address asset, uint256 userBalance) external;

Events

Accrued

Emitted when rewards of an asset are accrued on behalf of a user.

event Accrued(
    address indexed asset, address indexed reward, address indexed user, uint256 assetIndex, uint256 rewardsAccrued
);

Errors

OnlyMorpho

Thrown when only the main Morpho contract can call the function.

error OnlyMorpho();

InvalidAsset

Thrown when an invalid asset is passed to accrue rewards.

error InvalidAsset();

AddressIsZero

Thrown when the the zero address is passed as a parameter.

error AddressIsZero();

Structs

UserAssetBalance

struct UserAssetBalance {
    address asset;
    uint256 scaledBalance;
    uint256 scaledTotalSupply;
}

UserData

struct UserData {
    uint104 index;
    uint128 accrued;
}

RewardData

struct RewardData {
    uint104 startingIndex;
    uint104 index;
    uint32 lastUpdateTimestamp;
    mapping(address => UserData) usersData;
}