Lender.sol
This document describes the functions, attributes and modifiers in Lender.sol
Lender
Author: Sourabh Marathe, Julian Traversa, Rob Robbins
The lender contract executes loans on behalf of users
The contract holds the principal tokens and mints an ERC-5095 tokens to users to represent their loans
State Variables
HOLD
minimum wait before the admin may withdraw funds or change the fee rate
admin
address that is allowed to set and withdraw fees, disable principals, etc. It is commonly used in the authorized modifier.
marketPlace
address of the MarketPlace contract, used to access the markets mapping
paused
mapping that determines if a principal has been paused by the admin
halted
flag that allows admin to stop all lending and minting across the entire protocol
swivelAddr
contract used to execute swaps on Swivel's exchange
pendleAddr
a SushiSwap router used by Pendle to execute swaps
apwineAddr
a pool router used by APWine to execute swaps
premiums
a mapping that tracks the amount of unswapped premium by market. This underlying is later transferred to the Redeemer during Swivel's redeem call
feenominator
this value determines the amount of fees paid on loans
feeChange
represents a point in time where the feenominator may change
MIN_FEENOMINATOR
represents a minimum that the feenominator must exceed
fees
maps underlying tokens to the amount of fees accumulated for that token
withdrawals
maps a token address to a point in time, a hold, after which a withdrawal can be made
_NOT_ENTERED
_ENTERED
_status
MAX_VALUE
maximum amount of value that can flow through a protocol in a day (in USD)
protocolFlow
maps protocols to how much value, in USD, has flowed through each protocol
periodStart
timestamp from which values flowing through protocol has begun
etherPrice
estimated price of ether, set by the admin
Functions
authorized
ensures that only a certain address can call the function
Parameters
unpaused
reverts on all markets where the paused mapping returns true
Parameters
matured
reverts if called after maturity
Parameters
nonReentrant
prevents users from re-entering contract
constructor
initializes the Lender contract
Parameters
approve
approves the redeemer contract to spend the principal tokens held by the lender contract.
Parameters
Returns
approve
bulk approves the usage of addresses at the given ERC20 addresses.
the lengths of the inputs must match because the arrays are paired by index
Parameters
Returns
approve
approves market contracts that require lender approval
Parameters
setAdmin
sets the admin address
Parameters
Returns
setFee
sets the feenominator to the given value
Parameters
Returns
setMarketPlace
sets the address of the marketplace contract which contains the addresses of all the fixed rate markets
Parameters
Returns
setEtherPrice
sets the ethereum price which is used in rate limiting
Parameters
Returns
mint
mint swaps the sender's principal tokens for Illuminate's ERC5095 tokens in effect, this opens a new fixed rate position for the sender on Illuminate
Parameters
Returns
lend
lend method for the Illuminate and Yield protocols
Parameters
Returns
lend
lend method signature for Swivel
Parameters
Returns
lend
lend method signature for Element
Parameters
Returns
lend
lend method signature for Pendle
Parameters
Returns
lend
lend method signature for Tempus and APWine
Parameters
Returns
lend
lend method signature for Sense
this method can be called before maturity to lend to Sense while minting Illuminate tokens
Sense provides a [divider] contract that splits [target] assets (underlying) into PTs and YTs. Each [target] asset has a [series] of contracts, each identifiable by their [maturity].
Parameters
Returns
lend
lend method signature for Notional
Parameters
Returns
scheduleWithdrawal
allows the admin to schedule the withdrawal of tokens
Parameters
Returns
blockWithdrawal
emergency function to block unplanned withdrawals
Parameters
Returns
scheduleFeeChange
allows the admin to schedule a change to the fee denominators
blockFeeChange
Emergency function to block unplanned changes to fee structure
withdraw
allows the admin to withdraw the given token, provided the holding period has been observed
Parameters
Returns
withdrawFee
withdraws accumulated lending fees of the underlying token
Parameters
Returns
pause
pauses a market and prevents execution of all lending for that principal
Parameters
Returns
pauseIlluminate
pauses Illuminate's redeem, mint and lend methods from being used
Parameters
Returns
transferFYTs
Tranfers FYTs to Redeemer (used specifically for APWine redemptions)
Parameters
transferPremium
Transfers premium from the market to Redeemer (used specifically for Swivel redemptions)
Parameters
batch
Allows batched call to self (this contract).
Parameters
yield
swaps underlying premium via a Yield Space Pool
this method is only used by the Yield, Illuminate and Swivel protocols
Parameters
Returns
swivelAmount
returns the amount of underlying tokens to be used in a Swivel lend
swivelVerify
reverts if any orders are not for the market
elementSwap
executes a swap for and verifies receipt of Element PTs
apwineTokenPath
returns array token path required for APWine's swap method
Returns
apwinePairPath
returns array pair path required for APWine's swap method
Returns
principalToken
retrieves the ERC5095 token for the given market
Parameters
Returns
convertDecimals
converts principal decimal amount to underlying's decimal amount
Parameters
Returns
rateLimit
limits the amount of funds (in USD value) that can flow through a principal in a day
Parameters
Returns
Events
Lend
emitted upon lending to a protocol
Mint
emitted upon minting Illuminate principal tokens
ScheduleWithdrawal
emitted upon scheduling a withdrawal
BlockWithdrawal
emitted upon blocking a scheduled withdrawal
SetAdmin
emitted upon changing the admin
SetFee
emitted upon setting the fee rate
ScheduleFeeChange
emitted upon scheduling a fee change
BlockFeeChange
emitted upon blocking a scheduled fee change
PausePrincipal
emitted upon pausing or unpausing of a principal
PauseIlluminate
emitted upon pausing or unpausing minting, lending and redeeming
Last updated