ERC5095.sol

This document describes the functions, attributes and modifiers in ERC5095.sol

ERC5095

Git Source

Inherits: ERC20Permit, IERC5095

State Variables

maturity

unix timestamp when the ERC5095 token can be redeemed

uint256 public immutable override maturity;

underlying

address of the ERC20 token that is returned on ERC5095 redemption

address public immutable override underlying;

lender

address of the minting authority

address public immutable lender;

marketplace

address of the "marketplace" YieldSpace AMM router

address public immutable marketplace;

pool

Interface to interact with the pool

address public pool;

redeemer

address and interface for an external custody contract (necessary for some project's backwards compatability)

address public immutable redeemer;

Functions

authorized

ensures that only a certain address can call the function

modifier authorized(address a);

Parameters

NameTypeDescription

a

address

address that msg.sender must be to be authorized

constructor

constructor(
    address _underlying,
    uint256 _maturity,
    address _redeemer,
    address _lender,
    address _marketplace,
    string memory name_,
    string memory symbol_,
    uint8 decimals_
) ERC20Permit(name_, symbol_, decimals_);

setPool

Allows the marketplace to set the pool

function setPool(address p) external authorized(marketplace) returns (bool);

Parameters

NameTypeDescription

p

address

Address of the pool

Returns

NameTypeDescription

<none>

bool

bool True if successful

approveMarketPlace

Allows the marketplace to spend underlying, principal tokens held by the token

This is necessary when MarketPlace calls pool methods to swap tokens

function approveMarketPlace() external authorized(marketplace) returns (bool);

Returns

NameTypeDescription

<none>

bool

True if successful

convertToUnderlying

Post or at maturity, converts an amount of principal tokens to an amount of underlying that would be returned.

function convertToUnderlying(uint256 s) external view override returns (uint256);

Parameters

NameTypeDescription

s

uint256

The amount of principal tokens to convert

Returns

NameTypeDescription

<none>

uint256

uint256 The amount of underlying tokens returned by the conversion

convertToShares

Post or at maturity, converts a desired amount of underlying tokens returned to principal tokens needed.

function convertToShares(uint256 a) external view override returns (uint256);

Parameters

NameTypeDescription

a

uint256

The amount of underlying tokens to convert

Returns

NameTypeDescription

<none>

uint256

uint256 The amount of principal tokens returned by the conversion

maxRedeem

Returns user's PT balance

function maxRedeem(address o) external view override returns (uint256);

Parameters

NameTypeDescription

o

address

The address of the owner for which redemption is calculated

Returns

NameTypeDescription

<none>

uint256

uint256 The maximum amount of principal tokens that owner can redeem.

maxWithdraw

Post or at maturity, returns user's PT balance. Prior to maturity, returns a previewRedeem for owner's PT balance.

function maxWithdraw(address o) external view override returns (uint256);

Parameters

NameTypeDescription

o

address

The address of the owner for which withdrawal is calculated

Returns

NameTypeDescription

<none>

uint256

uint256 maximum amount of underlying tokens that owner can withdraw.

previewDeposit

After maturity, returns 0. Prior to maturity, returns the amount of shares when spending a in underlying on a YieldSpace AMM.

function previewDeposit(uint256 a) public view returns (uint256);

Parameters

NameTypeDescription

a

uint256

The amount of underlying spent

Returns

NameTypeDescription

<none>

uint256

uint256 The amount of PT purchased by spending a of underlying

previewMint

After maturity, returns 0. Prior to maturity, returns the amount of assets in underlying spent on a purchase of s in PT on a YieldSpace AMM.

function previewMint(uint256 s) public view returns (uint256);

Parameters

NameTypeDescription

s

uint256

The amount of principal tokens bought in the simulation

Returns

NameTypeDescription

<none>

uint256

uint256 The amount of underlying required to purchase s of PT

previewRedeem

Post or at maturity, simulates the effects of redemption. Prior to maturity, returns the amount of assets from a sale of s PTs on a YieldSpace AMM.

function previewRedeem(uint256 s) public view override returns (uint256);

Parameters

NameTypeDescription

s

uint256

The amount of principal tokens redeemed in the simulation

Returns

NameTypeDescription

<none>

uint256

uint256 The amount of underlying returned by s of PT redemption

previewWithdraw

Post or at maturity, simulates the effects of withdrawal at the current block. Prior to maturity, simulates the amount of PTs necessary to receive a in underlying from the sale of PTs on a YieldSpace AMM.

function previewWithdraw(uint256 a) public view override returns (uint256);

Parameters

NameTypeDescription

a

uint256

The amount of underlying tokens withdrawn in the simulation

Returns

NameTypeDescription

<none>

uint256

uint256 The amount of principal tokens required for the withdrawal of a

deposit

Before maturity spends a of underlying, and sends PTs to r. Post or at maturity, reverts.

function deposit(uint256 a, address r, uint256 m) external returns (uint256);

Parameters

NameTypeDescription

a

uint256

The amount of underlying tokens deposited

r

address

The receiver of the principal tokens

m

uint256

Minimum number of shares that the user will receive

Returns

NameTypeDescription

<none>

uint256

uint256 The amount of principal tokens purchased

deposit

Before maturity spends assets of underlying, and sends shares of PTs to receiver. Post or at maturity, reverts.

function deposit(uint256 a, address r) external override returns (uint256);

Parameters

NameTypeDescription

a

uint256

The amount of underlying tokens deposited

r

address

The receiver of the principal tokens

Returns

NameTypeDescription

<none>

uint256

uint256 The amount of principal tokens burnt by the withdrawal

mint

Before maturity mints s of PTs to r by spending underlying. Post or at maturity, reverts.

function mint(uint256 s, address r, uint256 m) external returns (uint256);

Parameters

NameTypeDescription

s

uint256

The amount of shares being minted

r

address

The receiver of the underlying tokens being withdrawn

m

uint256

Maximum amount of underlying that the user will spend

Returns

NameTypeDescription

<none>

uint256

uint256 The amount of principal tokens purchased

mint

Before maturity mints shares of PTs to receiver by spending underlying. Post or at maturity, reverts.

function mint(uint256 s, address r) external override returns (uint256);

Parameters

NameTypeDescription

s

uint256

The amount of shares being minted

r

address

The receiver of the underlying tokens being withdrawn

Returns

NameTypeDescription

<none>

uint256

uint256 The amount of principal tokens purchased

withdraw

At or after maturity, burns PTs from owner and sends a underlying to r. Before maturity, sends a by selling shares of PT on a YieldSpace AMM.

function withdraw(uint256 a, address r, address o, uint256 m) external returns (uint256);

Parameters

NameTypeDescription

a

uint256

The amount of underlying tokens withdrawn

r

address

The receiver of the underlying tokens being withdrawn

o

address

The owner of the underlying tokens

m

uint256

Maximum amount of PTs to be sold

Returns

NameTypeDescription

<none>

uint256

uint256 The amount of principal tokens burnt by the withdrawal

withdraw

At or after maturity, burns PTs from owner and sends a underlying to r. Before maturity, sends a by selling shares of PT on a YieldSpace AMM.

function withdraw(uint256 a, address r, address o) external override returns (uint256);

Parameters

NameTypeDescription

a

uint256

The amount of underlying tokens withdrawn

r

address

The receiver of the underlying tokens being withdrawn

o

address

The owner of the underlying tokens

Returns

NameTypeDescription

<none>

uint256

uint256 The amount of principal tokens burnt by the withdrawal

redeem

At or after maturity, burns exactly s of Principal Tokens from o and sends underlying tokens to r. Before maturity, sends underlying by selling s of PT on a YieldSpace AMM.

function redeem(uint256 s, address r, address o, uint256 m) external returns (uint256);

Parameters

NameTypeDescription

s

uint256

The number of shares to be burned in exchange for the underlying asset

r

address

The receiver of the underlying tokens being withdrawn

o

address

Address of the owner of the shares being burned

m

uint256

Minimum amount of underlying that must be received

Returns

NameTypeDescription

<none>

uint256

uint256 The amount of underlying tokens distributed by the redemption

redeem

At or after maturity, burns exactly shares of Principal Tokens from owner and sends assets of underlying tokens to receiver. Before maturity, sells s of PT on a YieldSpace AMM.

function redeem(uint256 s, address r, address o) external override returns (uint256);

Parameters

NameTypeDescription

s

uint256

The number of shares to be burned in exchange for the underlying asset

r

address

The receiver of the underlying tokens being withdrawn

o

address

Address of the owner of the shares being burned

Returns

NameTypeDescription

<none>

uint256

uint256 The amount of underlying tokens distributed by the redemption

authBurn

function authBurn(address f, uint256 a) external authorized(redeemer) returns (bool);

Parameters

NameTypeDescription

f

address

Address to burn from

a

uint256

Amount to burn

Returns

NameTypeDescription

<none>

bool

bool true if successful

authMint

function authMint(address t, uint256 a) external authorized(lender) returns (bool);

Parameters

NameTypeDescription

t

address

Address recieving the minted amount

a

uint256

The amount to mint

Returns

NameTypeDescription

<none>

bool

bool True if successful

authApprove

function authApprove(address o, address s, uint256 a) external authorized(redeemer) returns (bool);

Parameters

NameTypeDescription

o

address

Address of the owner of the tokens

s

address

Address of the spender

a

uint256

Amount to be approved

_deposit

function _deposit(address r, uint256 a, uint256 m) internal returns (uint256);

_mint

function _mint(address r, uint256 s, uint256 m) internal returns (uint256);

_withdraw

function _withdraw(uint256 a, address r, address o, uint256 m) internal returns (uint256);

_redeem

function _redeem(uint256 s, address r, address o, uint256 m) internal returns (uint256);

Last updated