Skip to main content
The Pool is an ERC-4626 compliant contract that manages liquidity for lending to credit managers and earning interest.

View Functions

underlyingToken

function underlyingToken() external view returns (address)
Returns the underlying token address.
underlyingToken
address
The underlying token address

treasury

function treasury() external view returns (address)
Returns the treasury address.
treasury
address
The treasury address

withdrawFee

function withdrawFee() external view returns (uint16)
Returns the withdrawal fee in basis points.
withdrawFee
uint16
Withdrawal fee in basis points

creditManagers

function creditManagers() external view returns (address[] memory)
Returns all connected credit managers.
creditManagers
address[]
Array of credit manager addresses

availableLiquidity

function availableLiquidity() external view returns (uint256)
Returns the amount of available liquidity.
availableLiquidity
uint256
Amount of available liquidity

expectedLiquidity

function expectedLiquidity() external view returns (uint256)
Returns the expected liquidity (available + borrowed).
expectedLiquidity
uint256
Expected liquidity amount

expectedLiquidityLU

function expectedLiquidityLU() external view returns (uint256)
Returns the expected liquidity at last update.
expectedLiquidityLU
uint256
Expected liquidity at last update

ERC-4626 Lending

depositWithReferral

function depositWithReferral(
    uint256 assets,
    address receiver,
    uint256 referralCode
) external returns (uint256 shares)
Deposits assets with a referral code.
assets
uint256
required
Amount of assets to deposit
receiver
address
required
Address to receive shares
referralCode
uint256
required
Referral code for tracking
shares
uint256
Amount of shares minted

mintWithReferral

function mintWithReferral(
    uint256 shares,
    address receiver,
    uint256 referralCode
) external returns (uint256 assets)
Mints shares with a referral code.
shares
uint256
required
Amount of shares to mint
receiver
address
required
Address to receive shares
referralCode
uint256
required
Referral code for tracking
assets
uint256
Amount of assets deposited

Borrowing

totalBorrowed

function totalBorrowed() external view returns (uint256)
Returns the total amount borrowed by all credit managers.
totalBorrowed
uint256
Total borrowed amount

totalDebtLimit

function totalDebtLimit() external view returns (uint256)
Returns the total debt limit across all credit managers.
totalDebtLimit
uint256
Total debt limit

creditManagerBorrowed

function creditManagerBorrowed(address creditManager) external view returns (uint256)
Returns the amount borrowed by a specific credit manager.
creditManager
address
required
The credit manager address
borrowed
uint256
Amount borrowed by the credit manager

creditManagerDebtLimit

function creditManagerDebtLimit(address creditManager) external view returns (uint256)
Returns the debt limit for a specific credit manager.
creditManager
address
required
The credit manager address
debtLimit
uint256
Debt limit for the credit manager

creditManagerBorrowable

function creditManagerBorrowable(address creditManager) external view returns (uint256 borrowable)
Returns how much a credit manager can still borrow.
creditManager
address
required
The credit manager address
borrowable
uint256
Amount the credit manager can still borrow

lendCreditAccount

function lendCreditAccount(
    uint256 borrowedAmount,
    address creditAccount
) external
Lends funds to a credit account.
borrowedAmount
uint256
required
Amount to lend
creditAccount
address
required
The credit account to lend to

repayCreditAccount

function repayCreditAccount(
    uint256 repaidAmount,
    uint256 profit,
    uint256 loss
) external
Repays debt from a credit account.
repaidAmount
uint256
required
Amount repaid
profit
uint256
required
Profit from the account
loss
uint256
required
Loss from the account

Interest Rate

interestRateModel

function interestRateModel() external view returns (address)
Returns the interest rate model address.
interestRateModel
address
The interest rate model contract address

baseInterestRate

function baseInterestRate() external view returns (uint256)
Returns the current base interest rate.
baseInterestRate
uint256
Base interest rate in ray units

supplyRate

function supplyRate() external view returns (uint256)
Returns the supply rate for lenders.
supplyRate
uint256
Supply rate in ray units

baseInterestIndex

function baseInterestIndex() external view returns (uint256)
Returns the current base interest index.
baseInterestIndex
uint256
Base interest index in ray units

baseInterestIndexLU

function baseInterestIndexLU() external view returns (uint256)
Returns the base interest index at last update.
baseInterestIndexLU
uint256
Base interest index at last update

lastBaseInterestUpdate

function lastBaseInterestUpdate() external view returns (uint40)
Returns the timestamp of last base interest update.
lastBaseInterestUpdate
uint40
Unix timestamp of last update

Quotas

poolQuotaKeeper

function poolQuotaKeeper() external view returns (address)
Returns the pool quota keeper address.
poolQuotaKeeper
address
The pool quota keeper contract address

quotaRevenue

function quotaRevenue() external view returns (uint256)
Returns the quota revenue.
quotaRevenue
uint256
Quota revenue amount

lastQuotaRevenueUpdate

function lastQuotaRevenueUpdate() external view returns (uint40)
Returns the timestamp of last quota revenue update.
lastQuotaRevenueUpdate
uint40
Unix timestamp of last update

updateQuotaRevenue

function updateQuotaRevenue(int256 quotaRevenueDelta) external
Updates quota revenue by a delta amount.
quotaRevenueDelta
int256
required
Change in quota revenue (can be negative)

setQuotaRevenue

function setQuotaRevenue(uint256 newQuotaRevenue) external
Sets quota revenue to a specific value.
newQuotaRevenue
uint256
required
New quota revenue amount

Configuration

setInterestRateModel

function setInterestRateModel(address newInterestRateModel) external
Sets a new interest rate model.
newInterestRateModel
address
required
New interest rate model contract address

setPoolQuotaKeeper

function setPoolQuotaKeeper(address newPoolQuotaKeeper) external
Sets a new pool quota keeper.
newPoolQuotaKeeper
address
required
New pool quota keeper contract address

setTotalDebtLimit

function setTotalDebtLimit(uint256 newLimit) external
Sets a new total debt limit.
newLimit
uint256
required
New total debt limit

setCreditManagerDebtLimit

function setCreditManagerDebtLimit(
    address creditManager,
    uint256 newLimit
) external
Sets debt limit for a specific credit manager.
creditManager
address
required
The credit manager address
newLimit
uint256
required
New debt limit for the credit manager

setWithdrawFee

function setWithdrawFee(uint256 newWithdrawFee) external
Sets a new withdrawal fee.
newWithdrawFee
uint256
required
New withdrawal fee in basis points

pause

function pause() external
Pauses the pool.

unpause

function unpause() external
Unpauses the pool.

Build docs developers (and LLMs) love