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] internal allAssets;
reserveXAssets
uint112 private reserveXAssets;
reserveYAssets
uint112 private reserveYAssets;
lastUpdateTimestamp
uint32 internal lastUpdateTimestamp;
referenceReserveX
uint112 internal referenceReserveX;
referenceReserveY
uint112 internal referenceReserveY;
lastLendingTimestamp
uint32 internal lastLendingTimestamp;
missingXAssets
uint112 internal missingXAssets;
missingYAssets
uint112 internal missingYAssets;
lastPenaltyTimestamp
uint32 internal lastPenaltyTimestamp;
lastReserveLiquidity
uint128 internal lastReserveLiquidity;
lastActiveLiquidityAssets
uint128 internal lastActiveLiquidityAssets;
totalDepositLAssets
uint256 internal totalDepositLAssets;
totalDepositXAssets
uint256 internal totalDepositXAssets;
totalDepositYAssets
uint256 internal totalDepositYAssets;
totalBorrowLAssets
uint256 internal totalBorrowLAssets;
totalBorrowXAssets
uint256 internal totalBorrowXAssets;
totalBorrowYAssets
uint256 internal totalBorrowYAssets;
externalLiquidity
uint112 public override externalLiquidity = 0;
factory
IFactoryCallback internal immutable factory;
saturationAndGeometricTWAPState
ISaturationAndGeometricTWAPState internal immutable saturationAndGeometricTWAPState;
Functions
constructor
constructor();
onlyFeeToSetter
modifier onlyFeeToSetter();
_onlyFeeToSetter
function _onlyFeeToSetter() private view;
underlyingTokens
function underlyingTokens() public view override returns (IERC20, IERC20);
updateAssets
function updateAssets(uint256 tokenType, uint128 assets) private;
updateExternalLiquidity
function updateExternalLiquidity(
uint112 _externalLiquidity
) 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, uint32 _lastTimestamp);
getTickRange
function getTickRange() public view returns (int16 minTick, int16 maxTick);
referenceReserves
function referenceReserves() public view returns (uint112, uint112);
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. |
mintPenalties
function mintPenalties(address account, uint32 deltaPenaltyTimestamp) internal;
getAssets
function getAssets(
uint128[6] memory currentAssets,
address toCheck
) internal view returns (uint256[6] memory userAssets);
updateTokenController
function updateTokenController(
uint32 currentTimestamp,
uint32 deltaUpdateTimestamp,
uint32 deltaLendingTimestamp,
uint256 _reserveXAssets,
uint256 _reserveYAssets
) internal returns (uint112 updatedReservesX, uint112 updatedReservesY);
updateReferenceReserve
function updateReferenceReserve(
int256 newTick
) internal;
mintProtocolFees
function mintProtocolFees(uint256 tokenType, address feeTo, uint256 protocolFee) private;
updateReserves
function updateReserves(uint256 newReserveXAssets, uint256 newReserveYAssets) internal;
updateReservesAndReference
function updateReservesAndReference(
uint256 _reserveXAssets,
uint256 _reserveYAssets,
uint256 newReserveXAssets,
uint256 newReserveYAssets
) internal;
_castReserves
function _castReserves(uint256 _reserveXAssets, uint256 _reserveYAssets) internal pure returns (uint112, uint112);
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);
burnBadDebt
function burnBadDebt(address borrower, uint256 tokenType, uint256 reserve) internal;
Errors
Forbidden
error Forbidden();