Skip to main content

TokenController

Git Source

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

NameTypeDescription
<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

NameTypeDescription
depositLiquidityAssetsuint256The deposit liquidity assets.
borrowLAssetsuint256The borrow liquidity assets.
currentActiveLiquidityAssetsuint256The 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

NameTypeDescription
_reserveXAssetsuint256The reserve X assets.
_reserveYAssetsuint256The 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

NameTypeDescription
_reserveXAssetsuint256The reserve X assets.
_reserveYAssetsuint256The reserve Y assets.

Returns

NameTypeDescription
adjustedActiveLiquidityuint256The 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();