fTokenCore

Git Source

Inherits:Error, IERC4626, IFToken, Variables, Events, ReentrancyGuard

internal methods for fToken contracts

Functions

_getLiquidityExchangePrice

Gets current (updated) Liquidity supply exchange price for the underyling asset

function _getLiquidityExchangePrice() internal view returns (uint256 supplyExchangePrice_);

_getLiquidityBalance

Gets current Liquidity supply balance of address(this) for the underyling asset

function _getLiquidityBalance() internal view returns (uint256 balance_);

_getLiquidityUnderlyingBalance

Gets current Liquidity underlying token balance

function _getLiquidityUnderlyingBalance() internal view virtual returns (uint256);

_getLiquidityWithdrawable

Gets current withdrawable amount at Liquidity withdrawalLimit_ (withdrawal limit or balance).

function _getLiquidityWithdrawable() internal view returns (uint256 withdrawalLimit_);

_calculateNewTokenExchangePrice

Calculates new token exchange price based on the current liquidity exchange price newLiquidityExchangePrice_ and rewards rate.

function _calculateNewTokenExchangePrice(uint256 newLiquidityExchangePrice_)
    internal
    view
    returns (uint256 newTokenExchangePrice_, bool rewardsEnded_);

Parameters

NameTypeDescription
newLiquidityExchangePrice_uint256new (current) liquidity exchange price

_updateRates

calculates new exchange prices, updates values in storage and returns new tokenExchangePrice (with reward rates)

function _updateRates(uint256 liquidityExchangePrice_, bool forceUpdateStorage_)
    internal
    returns (uint256 tokenExchangePrice_);

_splitSignature

splits a bytes signature sig into v, r, s. Taken from https://docs.soliditylang.org/en/v0.8.17/solidity-by-example.html

function _splitSignature(bytes memory sig) internal pure returns (uint8 v, bytes32 r, bytes32 s);

_depositToLiquidity

Deposit assets_ amount of tokens to Liquidity

function _depositToLiquidity(uint256 assets_, bytes memory liquidityCallbackData_)
    internal
    virtual
    returns (uint256 exchangePrice_);

Parameters

NameTypeDescription
assets_uint256The amount of tokens to deposit
liquidityCallbackData_bytescallback data passed to Liquidity for liquidityCallback

Returns

NameTypeDescription
exchangePrice_uint256liquidity exchange price for token

_withdrawFromLiquidity

Withdraw assets_ amount of tokens from Liquidity directly to receiver_

function _withdrawFromLiquidity(uint256 assets_, address receiver_) internal virtual returns (uint256 exchangePrice_);

Parameters

NameTypeDescription
assets_uint256The amount of tokens to withdraw
receiver_addressthe receiver address of withdraw amount

Returns

NameTypeDescription
exchangePrice_uint256liquidity exchange price for token

_executeDeposit

deposits assets_ into liquidity and mints shares for receiver_. Returns amount of sharesMinted_.

function _executeDeposit(uint256 assets_, address receiver_, bytes memory liquidityCallbackData_)
    internal
    virtual
    validAddress(receiver_)
    returns (uint256 sharesMinted_);

_executeWithdraw

withdraws assets_ from liquidity to receiver_ and burns shares from owner_. Returns amount of sharesBurned_. requires nonReentrant! modifier on calling method otherwise ERC777s could reenter!

function _executeWithdraw(uint256 assets_, address receiver_, address owner_)
    internal
    virtual
    validAddress(receiver_)
    returns (uint256 sharesBurned_);