Skip to main content

InteractionHelper (V2)

Source reference for public revision e3b9d12. For deployed configuration, select the pool's engine on the parameter page.

Git Source

Title: InteractionHelper - contains helper functions for external interactions such as approvals.

Author: Axicon Labs Limited

Used to delegate logic with multiple external calls.

Generally employed when there is a need to save or reuse bytecode size on a core contract.

Functions
​

doApprovals
​

Function that performs approvals on behalf of the PanopticPool for CollateralTracker and SemiFungiblePositionManager.

function doApprovals(
ISemiFungiblePositionManager sfpm,
CollateralTrackerV2 ct0,
CollateralTrackerV2 ct1,
address poolManager
) external;

Parameters

NameTypeDescription
sfpmISemiFungiblePositionManagerThe SemiFungiblePositionManager being approved for both token0 and token1
ct0CollateralTrackerV2The CollateralTracker (token0) being approved for token0
ct1CollateralTrackerV2The CollateralTracker (token1) being approved for token1
poolManageraddressThe Uniswap V4 pool manager address (zero address if using V3)

computeName
​

Computes the name of a CollateralTracker based on the token composition and fee of the underlying Uniswap Pool.

Some tokens do not have proper symbols so error handling is required - this logic takes up significant bytecode size, which is why it is in a library.

function computeName(address token0, address token1, bool isToken0, uint24 fee, string memory prefix)
external
view
returns (string memory);

Parameters

NameTypeDescription
token0addressThe token0 of the Uniswap Pool
token1addressThe token1 of the Uniswap Pool
isToken0boolWhether the collateral token computing the name is for token0 or token1
feeuint24The fee of the Uniswap pool in hundredths of basis points
prefixstringA constant string appended to the start of the token name

Returns

NameTypeDescription
<none>stringThe complete name of the collateral token calling this function

computeSymbol
​

Returns collateral token symbol as prefix + underlying token symbol.

function computeSymbol(address token, string memory prefix) external view returns (string memory);

Parameters

NameTypeDescription
tokenaddressThe address of the underlying token used to compute the symbol
prefixstringA constant string prepended to the symbol of the underlying token to create the final symbol

Returns

NameTypeDescription
<none>stringThe symbol of the collateral token

computeDecimals
​

Returns decimals of underlying token (0 if not present).

function computeDecimals(address token) external view returns (uint8);

Parameters

NameTypeDescription
tokenaddressThe address of the underlying token used to compute the decimals

Returns

NameTypeDescription
<none>uint8The decimals of the token

settleAmounts
​

Settles haircut premia and burns collateral shares during liquidation when protocol loss occurs.

Updates settled token accumulators for haircut long legs and burns collateral shares equal to the total haircut amount via settleBurn().

function settleAmounts(
address liquidatee,
TokenId[] memory positionIdList,
LeftRightUnsigned haircutTotal,
LeftRightSigned[4][] memory haircutPerLeg,
LeftRightSigned[4][] memory premiasByLeg,
CollateralTrackerV2 ct0,
CollateralTrackerV2 ct1,
mapping(bytes32 chunkKey => LeftRightUnsigned settledTokens) storage settledTokens
) external;

Parameters

NameTypeDescription
liquidateeaddressThe address of the user being liquidated whose premia is being haircut
positionIdListTokenId[]The list of all positions held by the liquidatee being closed
haircutTotalLeftRightUnsignedThe total premium clawed back from the liquidatee across all positions (rightSlot: token0, leftSlot: token1)
haircutPerLegLeftRightSigned[4][]The haircut amount for each leg of each position in the positionIdList
premiasByLegLeftRightSigned[4][]The original premium owed to (positive) or paid by (negative) the liquidatee for each leg before haircut
ct0CollateralTrackerV2The CollateralTracker for token0, used to burn shares corresponding to token0 haircut
ct1CollateralTrackerV2The CollateralTracker for token1, used to burn shares corresponding to token1 haircut
settledTokensmapping(bytes32 chunkKey => LeftRightUnsigned settledTokens)Storage mapping tracking accumulated premia for each liquidity chunk (indexed by chunk key)