DocumentationOpen App

Lender Opportunities

Lender opportunities represent the supply side of Gearbox — you deposit tokens into a Pool, receive yield-bearing Diesel Tokens in return, and earn passive yield as borrowers pay interest.

What They Represent

When you enter a lender opportunity, you are depositing into an ERC-4626 Pool. The Pool issues Diesel Tokens (e.g., dUSDC, dWETH) whose exchange rate appreciates over time as interest accrues from borrowers. No active management is required.

Sub-Types

Sub-TypeDescriptionStatus
poolStandard LP in an ERC-4626 Pool — deposit, earn yield, withdraw anytimeAvailable
intentLimit-order style LP with custom terms (rate, duration, collateral preferences)Future

Discovering Lender Opportunities

Use either the opportunities namespace for unified search or the pools namespace for direct queries:

TypeScript
// Via unified search const lenderOpps = await sdk.opportunities.search({ type: "pool" }); // Via pools namespace directly const pools = await sdk.pools.list();

Key Fields

FieldDescription
depositTokenThe token you deposit (USDC, WETH, etc.)
headlineApyCurrent supply APY — what lenders earn
capacityAvailable liquidity remaining in the Pool
accessAccess control — permissionless or gated
utilizationRateCurrent Pool utilization (higher = more yield, less exit liquidity)
dieselTokenThe yield-bearing receipt token you receive

Filtering

You can filter lender opportunities by asset class, chain, and minimum APY:

TypeScript
// All USDC lender opportunities with APY > 3% const usdcOpps = await sdk.opportunities.search({ type: "pool", depositToken: "USDC", minApy: 3, }); // Stablecoin opportunities on Arbitrum const arbStables = await sdk.opportunities.search({ type: "pool", chainId: 42161, assetClass: "stablecoin", });

Example: List High-Yield USDC Pools

TypeScript
import { GearboxSDK } from "@gearbox-protocol/sdk/official"; const sdk = new GearboxSDK(); await sdk.loadState({ mode: "lazy" }); const opps = await sdk.opportunities.search({ type: "pool", depositToken: "USDC", minApy: 3, }); for (const opp of opps) { console.log( `${opp.id} | APY: ${opp.headlineApy.toFixed(2)}% | Capacity: ${opp.capacity}` ); }

Next Steps