FluidLendingResolver

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

_NATIVE_TOKEN_ADDRESS

address _NATIVE_TOKEN_ADDRESS

address that is mapped to the chain native token

LENDING_FACTORY

contract IFluidLendingFactory LENDING_FACTORY

returns the lending factory address

LIQUIDITY_RESOLVER

contract IFluidLiquidityResolver LIQUIDITY_RESOLVER

returns the liquidity resolver address

FluidLendingResolver__AddressZero

error FluidLendingResolver__AddressZero()

thrown if an input param address is zero

constructor

constructor(contract IFluidLendingFactory lendingFactory_, contract IFluidLiquidityResolver liquidityResolver_) public

constructor sets the immutable LENDING_FACTORY and LIQUIDITY_RESOLVER address

isLendingFactoryAuth

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

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

isLendingFactoryDeployer

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

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

getAllFTokenTypes

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

returns all fToken types at the LENDING_FACTORY

getAllFTokens

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

returns all created fTokens at the LENDING_FACTORY

computeFToken

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

computes deterministic token address for asset_ for a lending protocol

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()

Return Values

NameTypeDescription
0addresstoken_ detemrinistic address of the computed token

getFTokenDetails

function getFTokenDetails(contract IFToken fToken_) public view returns (struct Structs.FTokenDetails fTokenDetails_)

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.

Parameters

NameTypeDescription
fToken_contract IFTokenthe fToken to get the details for

Return Values

NameTypeDescription
fTokenDetails_struct Structs.FTokenDetailsretrieved FTokenDetails struct

getFTokenInternalData

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

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

Parameters

NameTypeDescription
fToken_contract IFTokenthe fToken to get the data for

Return Values

NameTypeDescription
liquidity_contract IFluidLiquidityaddress of the Liquidity contract.
lendingFactory_contract IFluidLendingFactoryaddress of the Lending factory contract.
lendingRewardsRateModel_contract IFluidLendingRewardsRateModeladdress of the rewards rate model contract. changeable by LendingFactory auths.
permit2_contract 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

function getFTokensEntireData() public view returns (struct Structs.FTokenDetails[])

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

getUserPositions

function getUserPositions(address user_) external view returns (struct Structs.FTokenDetailsUserPosition[])

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

getFTokenRewards

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

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

getFTokenRewardsRateModelConfig

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

gets rewards rate model config constants

getUserPosition

function getUserPosition(contract IFToken fToken_, address user_) public view returns (struct Structs.UserPosition userPosition)

gets a user_ position for an fToken_.

Return Values

NameTypeDescription
userPositionstruct Structs.UserPositionuser position struct

getPreviews

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

gets fToken_ preview amounts for assets_ or shares_.

Return Values

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_