IFToken

Git Source

Inherits: IERC4626, IFTokenAdmin

Functions

minDeposit

returns minimum amount required for deposit (rounded up)

function minDeposit() external view returns (uint256);

getData

returns config, rewards and exchange prices data in a single view method.

function getData()
    external
    view
    returns (
        IFluidLiquidity liquidity_,
        IFluidLendingFactory lendingFactory_,
        IFluidLendingRewardsRateModel lendingRewardsRateModel_,
        IAllowanceTransfer permit2_,
        address rebalancer_,
        bool rewardsActive_,
        uint256 liquidityBalance_,
        uint256 liquidityExchangePrice_,
        uint256 tokenExchangePrice_
    );

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)

liquidityCallback

transfers amount_ of token_ to liquidity. Only callable by liquidity contract.

this callback is used to optimize gas consumption (reducing necessary token transfers).

function liquidityCallback(address token_, uint256 amount_, bytes calldata data_) external;

depositWithSignature

deposit assets_ amount with Permit2 signature for underlying asset approval. reverts with fToken__MinAmountOut() if minAmountOut_ of shares is not reached. assets_ must at least be minDeposit() amount; reverts otherwise.

function depositWithSignature(
    uint256 assets_,
    address receiver_,
    uint256 minAmountOut_,
    IAllowanceTransfer.PermitSingle calldata permit_,
    bytes calldata signature_
) external returns (uint256 shares_);

Parameters

NameTypeDescription
assets_uint256amount of assets to deposit
receiver_addressreceiver of minted fToken shares
minAmountOut_uint256minimum accepted amount of shares minted
permit_IAllowanceTransfer.PermitSinglePermit2 permit message
signature_bytespacked signature of signing the EIP712 hash of permit_

Returns

NameTypeDescription
shares_uint256amount of minted shares

mintWithSignature

mint amount of shares_ with Permit2 signature for underlying asset approval. Signature should approve a little bit more than expected assets amount (previewMint()) to avoid reverts. shares_ must at least be minMint() amount; reverts otherwise. Note there might be tiny inaccuracies between requested shares_ and actually received shares amount. Recommended to use deposit() over mint because it is more gas efficient and less likely to revert.

function mintWithSignature(
    uint256 shares_,
    address receiver_,
    uint256 maxAssets_,
    IAllowanceTransfer.PermitSingle calldata permit_,
    bytes calldata signature_
) external returns (uint256 assets_);

Parameters

NameTypeDescription
shares_uint256amount of shares to mint
receiver_addressreceiver of minted fToken shares
maxAssets_uint256maximum accepted amount of assets used as input to mint shares_
permit_IAllowanceTransfer.PermitSinglePermit2 permit message
signature_bytespacked signature of signing the EIP712 hash of permit_

Returns

NameTypeDescription
assets_uint256deposited assets amount