TokenController
Inherits: ITokenController
Wrapper of the ERC20 tokens that has some functionality similar to the ERC1155.
State Variables
tokenX
IERC20 private immutable tokenX;
tokenY
IERC20 private immutable tokenY;
_tokenDepositL
IAmmalgamERC20 private immutable _tokenDepositL;
_tokenDepositX
IAmmalgamERC20 private immutable _tokenDepositX;
_tokenDepositY
IAmmalgamERC20 private immutable _tokenDepositY;
_tokenBorrowL
IAmmalgamERC20 private immutable _tokenBorrowL;
_tokenBorrowX
IAmmalgamERC20 private immutable _tokenBorrowX;
_tokenBorrowY
IAmmalgamERC20 private immutable _tokenBorrowY;
allShares
uint112[6] private allShares;
allAssets
uint128[6] private allAssets;
totalDepositLAssets
uint128 internal totalDepositLAssets;
totalDepositXAssets
uint128 internal totalDepositXAssets;
totalDepositYAssets
uint128 internal totalDepositYAssets;
totalBorrowLAssets
uint128 internal totalBorrowLAssets;
totalBorrowXAssets
uint128 internal totalBorrowXAssets;
totalBorrowYAssets
uint128 internal totalBorrowYAssets;
externalLiquidity
uint112 public override externalLiquidity = 0;
reserveXAssets
uint112 internal reserveXAssets;
reserveYAssets
uint112 internal reserveYAssets;
lastReserveLiquidity
uint128 internal lastReserveLiquidity;
lastActiveLiquidityAssets
uint128 internal lastActiveLiquidityAssets;
missingXAssets
uint112 internal missingXAssets;
missingYAssets
uint112 internal missingYAssets;
factory
IAmmalgamFactory internal immutable factory;
observations
GeometricTWAP.Observations internal observations;
Functions
constructor
constructor();
onlyFeeToSetter
modifier onlyFeeToSetter();
_onlyFeeToSetter
function _onlyFeeToSetter() private view;
underlyingTokens
function underlyingTokens() public view override returns (IERC20, IERC20);
updateTransientAssets
function updateTransientAssets(uint256 tokenType, uint128 assets) internal;
updateExternalLiquidity
function updateExternalLiquidity(
uint112 _externalLiquidity
) external onlyFeeToSetter;
configLongTermInterval
function configLongTermInterval(
uint24 longTermIntervalConfigFactor
) external onlyFeeToSetter;
mintId
function mintId(uint256 tokenType, address sender, address to, uint256 assets, uint256 shares_) internal;
burnId
function burnId(uint256 tokenType, address sender, address from, uint256 assets, uint256 shares_) internal;
tokens
function tokens(
uint256 tokenType
) public view override returns (IAmmalgamERC20);
balanceOf
function balanceOf(address account, uint256 tokenType) internal view returns (uint256);
totalShares
function totalShares(
uint256 tokenType
) internal view returns (uint256);
rawTotalAssets
function rawTotalAssets(
uint256 tokenType
) internal view returns (uint128);
getReserves
function getReserves() public view returns (uint112 _reserveXAssets, uint112 _reserveYAssets, uint256 _lastTimestamp);
getTickRange
function getTickRange() public view returns (int16 minTick, int16 maxTick);
totalAssets
Computes the current total Assets.
If the last lending state update is outdated (i.e., not matching the current block timestamp), the function recalculates the assets based on the duration since the last update, the lending state, and reserve balances. If the timestamp is current, the previous asset (without recalculation) is returned.
function totalAssets() public view returns (uint128[6] memory);
Returns
Name | Type | Description |
---|---|---|
<none> | uint128[6] | totalAssets An array of six uint128 values representing the total assets for each of the 6 amalgam token types. These values may be adjusted based on the time elapsed since the last update. If the timestamp is up-to-date, the previously calculated total assets are returned without recalculation. |
getAssets
function getAssets(
address toCheck,
uint128[6] memory currentAssets
) internal view returns (uint256[6] memory userAssets);
updateTokenController
function updateTokenController(
Saturation.SaturationStruct storage satStruct,
uint256 duration,
uint256 _reserveXAssets,
uint256 _reserveYAssets
) internal returns (uint112 updatedReservesX, uint112 updatedReservesY);
mintProtocolFees
function mintProtocolFees(uint256 tokenType, address feeTo, uint256 protocolFee) private;
_updateBasedOnSaturationPenalty
function _updateBasedOnSaturationPenalty(
Saturation.SaturationStruct storage satStruct,
uint256 duration,
uint256 _reserveXAssets,
uint256 _reserveYAssets
) private;
updateReserves
function updateReserves(uint256 _reserveXAssets, uint256 _reserveYAssets) internal;
getNetBalances
function getNetBalances(uint256 _reserveXAssets, uint256 _reserveYAssets) internal view returns (uint256, uint256);
missingAssets
function missingAssets() internal view returns (uint112, uint112);
updateMissingAssets
function updateMissingAssets() internal;
getDepositAndBorrowAndActiveLiquidityAssets
Get the deposit, borrow, and active liquidity assets.
This function is used to get the deposit liquidity assets, borrow liquidity assets (BLA), last active liquidity assets (ALA_0), and current active liquidity assets (ALA_1).
function getDepositAndBorrowAndActiveLiquidityAssets()
internal
view
returns (uint256 depositLiquidityAssets, uint256 borrowLAssets, uint256 currentActiveLiquidityAssets);
Returns
Name | Type | Description |
---|---|---|
depositLiquidityAssets | uint256 | The deposit liquidity assets. |
borrowLAssets | uint256 | The borrow liquidity assets. |
currentActiveLiquidityAssets | uint256 | The current active liquidity assets. |
updateReservesAndActiveLiquidity
Update the reserves and active liquidity.
This function is used to update the last reserves liquidity (RL_0) and last active liquidity assets (ALA_0).
function updateReservesAndActiveLiquidity(
uint256 _reserveXAssets,
uint256 _reserveYAssets
) internal returns (uint256 adjustedActiveLiquidity);
Parameters
Name | Type | Description |
---|---|---|
_reserveXAssets | uint256 | The reserve X assets. |
_reserveYAssets | uint256 | The reserve Y assets. |
getAdjustedActiveLiquidity
Get the adjusted active liquidity which is the active liquidity without the swap fees.
This function is used to get the adjusted active liquidity.
function getAdjustedActiveLiquidity(
uint256 _reserveXAssets,
uint256 _reserveYAssets
) internal view returns (uint256 adjustedActiveLiquidity);
Parameters
Name | Type | Description |
---|---|---|
_reserveXAssets | uint256 | The reserve X assets. |
_reserveYAssets | uint256 | The reserve Y assets. |
Returns
Name | Type | Description |
---|---|---|
adjustedActiveLiquidity | uint256 | The adjusted active liquidity. |
getCurrentAndAdjustedActiveLiquidity
function getCurrentAndAdjustedActiveLiquidity(
uint256 _reserveXAssets,
uint256 _reserveYAssets
) internal view returns (uint256 currentReserveLiquidity, uint256 adjustedActiveLiquidity);
getCurrentReserveLiquidity
function getCurrentReserveLiquidity(uint256 _reserveXAssets, uint256 _reserveYAssets) private pure returns (uint256);
Errors
Forbidden
error Forbidden();