UniswapFlashswapDirectMintHandler
Inherits: IonHandlerBase, IUniswapV3SwapCallback
This contract allows for easy creation of leverge positions through a Uniswap flashswap and direct mint of the collateral from the provider. This will be used when the collateral cannot be minted directly with the base asset but can be directly minted by a token that the base asset has a UniswapV3 pool with. This contract is to be used when there exists a UniswapV3 pool between the base asset and the mint asset.
State Variables
MIN_SQRT_RATIO
The minimum value that can be returned from #getSqrtRatioAtTick. Equivalent to getSqrtRatioAtTick(MIN_TICK)
MAX_SQRT_RATIO
The maximum value that can be returned from #getSqrtRatioAtTick. Equivalent to getSqrtRatioAtTick(MAX_TICK)
UNISWAP_POOL
MINT_ASSET
MINT_IS_TOKEN0
Functions
constructor
Creates a new UniswapFlashswapDirectMintHandler
instance.
Parameters
flashswapAndMint
Transfer collateral from user -> Initiate flashswap between from base asset to mint asset -> Use the mint asset to mint the collateral -> Deposit all collateral into IonPool
-> Borrow the base asset -> Close the flashswap by sending the base asset to the Uniswap pool.
Parameters
_flashswapAndMint
_initiateFlashSwap
Handles swap initiation logic. This function can only initiate exact output swaps.
Parameters
uniswapV3SwapCallback
From the perspective of the pool i.e. Negative amount means pool is sending. This function is intended to never be called directly. It should only be called by the Uniswap pool during a swap initiated by this contract.
One thing to note from a security perspective is that the pool only calls the callback on msg.sender
. So a theoretical attacker cannot call this function by directing where to call the callback.
Parameters
_mintCollateralAsset
Deposits the mint asset into the provider's collateral-asset deposit contract.
Parameters
_getAmountInForCollateralAmountOut
Calculates the amount of mint asset required to receive amountLrt
.
Calculates the amount of mint asset required to receive amountLrt
.
Parameters
Returns