FluidLendingResolver

Git Source

Inherits:IFluidLendingResolver, Structs

Fluid Lending protocol (fTokens) resolver Implements various view-only methods to give easy access to Lending protocol data.

State Variables

_NATIVE_TOKEN_ADDRESS

address that is mapped to the chain native token

address internal constant _NATIVE_TOKEN_ADDRESS = 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE;

LENDING_FACTORY

returns the lending factory address

IFluidLendingFactory public immutable LENDING_FACTORY;

LIQUIDITY_RESOLVER

returns the liquidity resolver address

IFluidLiquidityResolver public immutable LIQUIDITY_RESOLVER;

Functions

constructor

constructor sets the immutable LENDING_FACTORY and LIQUIDITY_RESOLVER address

constructor(IFluidLendingFactory lendingFactory_, IFluidLiquidityResolver liquidityResolver_);

isLendingFactoryAuth

reads if a certain auth_ address is an allowed auth or not. Owner is auth by default.

function isLendingFactoryAuth(address auth_) external view returns (bool);

isLendingFactoryDeployer

reads if a certain deployer_ address is an allowed deployer or not. Owner is deployer by default.

function isLendingFactoryDeployer(address deployer_) external view returns (bool);

getAllFTokenTypes

returns all fToken types at the LENDING_FACTORY

function getAllFTokenTypes() public view returns (string[] memory);

getAllFTokens

returns all created fTokens at the LENDING_FACTORY

function getAllFTokens() public view returns (address[] memory);

computeFToken

computes deterministic token address for asset_ for a lending protocol

function computeFToken(address asset_, string calldata fTokenType_) external view returns (address);

Parameters

NameTypeDescription
asset_addressaddress of the asset
fTokenType_stringtype of fToken: - if underlying asset supports EIP-2612, the fToken should be type EIP2612Deposits - otherwise it should use Permit2Deposits - if it's the native token, it should use NativeUnderlying - could be more types available, check fTokenTypes()

Returns

NameTypeDescription
<none>addresstoken_ detemrinistic address of the computed token

getFTokenDetails

gets all public details for a certain fToken_, such as fToken type, name, symbol, decimals, underlying asset, total amounts, convertTo values, rewards. Note it also returns whether the fToken supports deposits / mints via EIP-2612, but it is not a 100% guarantee! To make sure, check for the underlying if it supports EIP-2612 manually.

function getFTokenDetails(IFToken fToken_) public view returns (FTokenDetails memory fTokenDetails_);

Parameters

NameTypeDescription
fToken_IFTokenthe fToken to get the details for

Returns

NameTypeDescription
fTokenDetails_FTokenDetailsretrieved FTokenDetails struct

getFTokenInternalData

returns config, rewards and exchange prices data of an fToken.

function getFTokenInternalData(IFToken fToken_)
    public
    view
    returns (
        IFluidLiquidity liquidity_,
        IFluidLendingFactory lendingFactory_,
        IFluidLendingRewardsRateModel lendingRewardsRateModel_,
        IAllowanceTransfer permit2_,
        address rebalancer_,
        bool rewardsActive_,
        uint256 liquidityBalance_,
        uint256 liquidityExchangePrice_,
        uint256 tokenExchangePrice_
    );

Parameters

NameTypeDescription
fToken_IFTokenthe fToken to get the data for

Returns

NameTypeDescription
liquidity_IFluidLiquidityaddress of the Liquidity contract.
lendingFactory_IFluidLendingFactoryaddress of the Lending factory contract.
lendingRewardsRateModel_IFluidLendingRewardsRateModeladdress of the rewards rate model contract. changeable by LendingFactory auths.
permit2_IAllowanceTransferaddress of the Permit2 contract used for deposits / mint with signature
rebalancer_addressaddress of the rebalancer allowed to execute rebalance()
rewardsActive_booltrue if rewards are currently active
liquidityBalance_uint256current Liquidity supply balance of address(this) for the underyling asset
liquidityExchangePrice_uint256(updated) exchange price for the underlying assset in the liquidity protocol (without rewards)
tokenExchangePrice_uint256(updated) exchange price between fToken and the underlying assset (with rewards)

getFTokensEntireData

gets all public details for all itokens, such as fToken type, name, symbol, decimals, underlying asset, total amounts, convertTo values, rewards

function getFTokensEntireData() public view returns (FTokenDetails[] memory);

getUserPositions

gets all public details for all itokens, such as fToken type, name, symbol, decimals, underlying asset, total amounts, convertTo values, rewards and user position for each token

function getUserPositions(address user_) external view returns (FTokenDetailsUserPosition[] memory);

getFTokenRewards

gets rewards related data: the rewardsRateModel_ contract and the current rewardsRate_ for the fToken_

function getFTokenRewards(IFToken fToken_)
    public
    view
    returns (IFluidLendingRewardsRateModel rewardsRateModel_, uint256 rewardsRate_);

getFTokenRewardsRateModelConfig

gets rewards rate model config constants

function getFTokenRewardsRateModelConfig(IFToken fToken_)
    public
    view
    returns (
        uint256 duration_,
        uint256 startTime_,
        uint256 endTime_,
        uint256 startTvl_,
        uint256 maxRate_,
        uint256 rewardAmount_,
        address initiator_
    );

getUserPosition

gets a user_ position for an fToken_.

function getUserPosition(IFToken fToken_, address user_) public view returns (UserPosition memory userPosition);

Returns

NameTypeDescription
userPositionUserPositionuser position struct

getPreviews

gets fToken_ preview amounts for assets_ or shares_.

function getPreviews(IFToken fToken_, uint256 assets_, uint256 shares_)
    public
    view
    returns (uint256 previewDeposit_, uint256 previewMint_, uint256 previewWithdraw_, uint256 previewRedeem_);

Returns

NameTypeDescription
previewDeposit_uint256preview for deposit of assets_
previewMint_uint256preview for mint of shares_
previewWithdraw_uint256preview for withdraw of assets_
previewRedeem_uint256preview for redeem of shares_

Errors

FluidLendingResolver__AddressZero

thrown if an input param address is zero

error FluidLendingResolver__AddressZero();