Skip to main content

ITokenController

Git Source

The interface of a ERC20 facade for multiple token types with functionality similar to ERC1155.

The TokenController provides support to the AmmalgamPair contract for token management.

Functions

underlyingTokens

Get the underlying tokens for the AmmalgamERC20Controller.

function underlyingTokens() external view returns (IERC20, IERC20);

Returns

NameTypeDescription
<none>IERC20The addresses of the underlying tokens.
<none>IERC20

getReserves

Fetches the current reserves of asset X and asset Y, as well as the block of the last operation.

function getReserves() external view returns (uint112 reserveXAssets, uint112 reserveYAssets, uint32 lastTimestamp);

Returns

NameTypeDescription
reserveXAssetsuint112The current reserve of asset X.
reserveYAssetsuint112The current reserve of asset Y.
lastTimestampuint32The timestamp of the last operation.

externalLiquidity

function externalLiquidity() external view returns (uint112);

updateExternalLiquidity

Updates the external liquidity value.

This function sets the external liquidity to a new value and emits an event with the new value. It can only be called by the fee setter.

function updateExternalLiquidity(
uint112 _externalLiquidity
) external;

Parameters

NameTypeDescription
_externalLiquidityuint112The new external liquidity value.

referenceReserves

Returns the reference reserves for the block, these represent a snapshot of the reserves at the start of the block weighted for mints, burns, borrow and repayment of liquidity. These amounts are critical to calculating the correct fees for any swap.

function referenceReserves() external view returns (uint112 referenceReserveX, uint112 referenceReserveY);

Returns

NameTypeDescription
referenceReserveXuint112The reference reserve for asset X.
referenceReserveYuint112The reference reserve for asset Y.

tokens

Return the IAmmalgamERC20 token corresponding to the token type

function tokens(
uint256 tokenType
) external view returns (IAmmalgamERC20);

Parameters

NameTypeDescription
tokenTypeuint256The type of token for which the scaler is being computed. Can be one of BORROW_X, DEPOSIT_X, BORROW_Y, DEPOSIT_Y, BORROW_L, or DEPOSIT_L.

Returns

NameTypeDescription
<none>IAmmalgamERC20The IAmmalgamERC20 token

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 scaler (without recalculation) is returned.

function totalAssets() external 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.

Events

Sync

Emitted when reserves are synchronized

event Sync(uint256 reserveXAssets, uint256 reserveYAssets);

Parameters

NameTypeDescription
reserveXAssetsuint256The updated reserve for token X
reserveYAssetsuint256The updated reserve for token Y

UpdateExternalLiquidity

Emitted when external liquidity is updated

event UpdateExternalLiquidity(uint112 externalLiquidity);

Parameters

NameTypeDescription
externalLiquidityuint112The updated value for external liquidity

BurnBadDebt

Emitted when bad debt is burned

event BurnBadDebt(address indexed borrower, uint256 indexed tokenType, uint256 badDebtAssets, uint256 badDebtShares);

Parameters

NameTypeDescription
borroweraddressThe address of the borrower
tokenTypeuint256The type of token being burned
badDebtAssetsuint256The amount of bad debt assets being burned
badDebtSharesuint256The amount of bad debt shares being burned

InterestAccrued

Emitted when Interest gets accrued

event InterestAccrued(
uint128 depositLAssets,
uint128 depositXAssets,
uint128 depositYAssets,
uint128 borrowLAssets,
uint128 borrowXAssets,
uint128 borrowYAssets
);

Parameters

NameTypeDescription
depositLAssetsuint128The amount of total DEPOSIT_L assets in the pool after interest accrual
depositXAssetsuint128The amount of total DEPOSIT_X assets in the pool after interest accrual
depositYAssetsuint128The amount of total DEPOSIT_Y assets in the pool after interest accrual
borrowLAssetsuint128The amount of total BORROW_L assets in the pool after interest accrual
borrowXAssetsuint128The amount of total BORROW_X assets in the pool after interest accrual
borrowYAssetsuint128The amount of total BORROW_Y assets in the pool after interest accrual