LendingPool
Source: contracts/peripherals/LendingPool.sol · Guide: settlement · Upgradeable (UUPS proxy)
Functions that change state
Function
Who can call
Also
absorbLoss(uint256 amount)onlyRole(LOSS_REPORTER_ROLE)approve(address spender, uint256 amount)The token holder
borrow(uint256 amount, address to)onlyRole(BORROWER_ROLE)claimWithdrawal(uint256 requestId)Checked inside the function
decreaseAllowance(address spender, uint256 subtractedValue)The token holder
deposit(uint256 assets, address receiver)Anyone
grantRole(bytes32 role, address account)The role's admin role (
DEFAULT_ADMIN_ROLE unless set otherwise)increaseAllowance(address spender, uint256 addedValue)The token holder
initialize(address admin, address reserveToken, string name_, string symbol_)Once, when the proxy is initialised
mint(uint256 shares, address receiver)Anyone (ERC-4626)
redeem(uint256 shares, address receiver, address owner)The share owner, or an approved spender
renounceRole(bytes32 role, address account)Only the account renouncing its own role
repay(uint256 amount)Checked inside the function
requestWithdrawal(uint256 shares, address receiver)Checked inside the function
revokeRole(bytes32 role, address account)The role's admin role (
DEFAULT_ADMIN_ROLE unless set otherwise)seizeShares(address holder, address to, uint256 shares)onlyRole(LIQUIDATOR_ROLE)setEncumbranceSource(address source, bytes32 kind)onlyRole(OPERATOR_ROLE)setRateCurve(uint256 base, uint256 slope1, uint256 slope2, uint256 kink)onlyRole(OPERATOR_ROLE)transfer(address to, uint256 amount)The token holder
transferFrom(address from, address to, uint256 amount)The holder, or an approved spender
upgradeTo(address newImplementation)onlyRole(DEFAULT_ADMIN_ROLE) (via _authorizeUpgrade)upgradeToAndCall(address newImplementation, bytes data)onlyRole(DEFAULT_ADMIN_ROLE) (via _authorizeUpgrade)payable
withdraw(uint256 assets, address receiver, address owner)The share owner, or an approved spender
Read functions
Anyone can call these; they change nothing.
Function
Returns
allowance(address owner, address spender)uint256
asset()address
availableCash()uint256
balanceOf(address account)uint256
baseRatePerCycle()uint256
BORROWER_ROLE()bytes32
borrowRatePerCycle()uint256
collateralKind()bytes32
convertToAssets(uint256 shares)uint256
convertToShares(uint256 assets)uint256
decimals()uint8
DEFAULT_ADMIN_ROLE()bytes32
encumberedOf(address holder)uint256
encumbranceSource()address
freeSharesOf(address holder)uint256
getRoleAdmin(bytes32 role)bytes32
hasRole(bytes32 role, address account)bool
isClaimable(uint256 requestId)bool
kinkBps()uint256
LIQUIDATOR_ROLE()bytes32
LOSS_REPORTER_ROLE()bytes32
maxDeposit(address)uint256
maxMint(address)uint256
maxRedeem(address owner)uint256
maxWithdraw(address owner)uint256
name()string
OPERATOR_ROLE()bytes32
previewDeposit(uint256 assets)uint256
previewMint(uint256 shares)uint256
previewRedeem(uint256 shares)uint256
previewWithdraw(uint256 assets)uint256
proxiableUUID()bytes32
queuedAssets()uint256
requestAt(uint256 requestId)address owner, address receiver, uint256 assets, uint64 requestedAt, bool claimed
requestCount()uint256
requestsOwnedBy(address owner)uint256[]
slope1PerCycle()uint256
slope2PerCycle()uint256
supplyRatePerCycle()uint256
supportsInterface(bytes4 interfaceId)bool
symbol()string
totalAssets()uint256
totalBorrowed()uint256
totalSupply()uint256
utilizationBps()uint256
Events
Event
AdminChanged(address previousAdmin, address newAdmin)Approval(address owner indexed, address spender indexed, uint256 value)BeaconUpgraded(address beacon indexed)Borrowed(address borrower indexed, address to indexed, uint256 amount)Deposit(address sender indexed, address owner indexed, uint256 assets, uint256 shares)EncumbranceSourceUpdated(address source indexed)Initialized(uint8 version)LossAbsorbed(uint256 reported, uint256 absorbed, uint256 uncovered)RateCurveUpdated(uint256 base, uint256 slope1, uint256 slope2, uint256 kinkBps)Repaid(address from indexed, uint256 amount)RoleAdminChanged(bytes32 role indexed, bytes32 previousAdminRole indexed, bytes32 newAdminRole indexed)RoleGranted(bytes32 role indexed, address account indexed, address sender indexed)RoleRevoked(bytes32 role indexed, address account indexed, address sender indexed)SharesSeized(address holder indexed, address to indexed, uint256 shares)Transfer(address from indexed, address to indexed, uint256 value)Upgraded(address implementation indexed)Withdraw(address sender indexed, address receiver indexed, address owner indexed, uint256 assets, uint256 shares)WithdrawalClaimed(uint256 requestId indexed, address receiver indexed, uint256 assets)WithdrawalQueued(uint256 requestId indexed, address owner indexed, uint256 assets)Errors
Error
LendingPoolEncumbered(address holder, uint256 free, uint256 amount)LendingPoolInsufficientCash(uint256 available, uint256 requested)LendingPoolInvalidAddress()LendingPoolInvalidCurve()LendingPoolNothingQueued(uint256 requestId)LendingPoolNotRequestOwner(uint256 requestId)LendingPoolSeizureExceedsEncumbrance(address holder, uint256 encumbered, uint256 amount)