PtHandler

Git Source

Inherits: IonHandlerBase, IPMarketSwapCallback

This contract allows for easy creation of leverage positions for PT collateralized Ion markets.

State Variables

MARKET

IPMarketV3 public immutable MARKET;

SY

IStandardizedYield public immutable SY;

PT

IERC20 public immutable PT;

YT

IERC20 public immutable YT;

flashswapInitiated

uint256 private flashswapInitiated = 1;

Functions

constructor

Creates a new PtHandler instance

Parameters

Name
Type
Description

pool

IonPool

The related IonPool.

join

GemJoin

The related GemJoin.

whitelist

Whitelist

The whitelist contract.

_market

IPMarketV3

The related Pendle market.

ptLeverage

Allows a borrower to create a leveraged position on Ion Protocol

Transfer PT from user -> Flashswap PT token -> Deposit all PT into IonPool -> Borrow base asset -> Mint SY using base asset -> Repay Flashswap with SY.

swapCallback

This function should never be called directly.

On small enough swaps, the SY to send back can be 0. This function can only be called by the market. This function can only be called by market if the swap was initiated by this contract.

Parameters

Name
Type
Description

ptToAccount

int256

Amount of PT sent from the perspective of the pool (negative means pool is sending, positive means user is receiving)

syToAccount

int256

Amount of SY sent from the perspective of the pool (negative means pool is sending, positive means user is receiving)

data

bytes

Arbitrary data passed by the market

Errors

InvalidGemJoin

MarketMustBeCaller

ExternalFlashswapNotAllowed

InvalidSwapDirection

UnexpectedSyOut

FlashswapTooExpensive