Skip to content

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

solidity
address internal constant _NATIVE_TOKEN_ADDRESS = 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE;

LENDING_FACTORY ​

returns the lending factory address

solidity
IFluidLendingFactory public immutable LENDING_FACTORY;

LIQUIDITY_RESOLVER ​

returns the liquidity resolver address

solidity
IFluidLiquidityResolver public immutable LIQUIDITY_RESOLVER;

Functions ​

constructor ​

constructor sets the immutable LENDING_FACTORY and LIQUIDITY_RESOLVER address

solidity
constructor(IFluidLendingFactory lendingFactory_, IFluidLiquidityResolver liquidityResolver_);

isLendingFactoryAuth ​

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

solidity
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.

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

getAllFTokenTypes ​

returns all fToken types at the LENDING_FACTORY

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

getAllFTokens ​

returns all created fTokens at the LENDING_FACTORY

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

computeFToken ​

computes deterministic token address for asset_ for a lending protocol

solidity
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.

solidity
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.

solidity
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

solidity
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

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

getFTokenRewards ​

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

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

getFTokenRewardsRateModelConfig ​

gets rewards rate model config constants

solidity
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_.

solidity
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_.

solidity
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

solidity
error FluidLendingResolver__AddressZero();