yield-sdk
v2.2.1
Published
Fetch all DeFi lending and borrowing rates
Downloads
23
Readme
yield-sdk
Find the best DeFi yields, in one package.
This package aims to let you easily load all the DeFi lending and borrowing rates, as well as deposit / withdraw tokens to achieve those yields. All in one SDK.
Installation
npm i yield-sdk
Roadmap
- [x] Support fetching DeFi rates on Solana.
- [-] Support for depositing and withdrawing tokens on Solana.
- [ ] Support for fetching DeFi rates on Ethereum, Avalanche, etc.
- [ ] Support for depositing and withdrawing tokens on other chains.
Supported Protocols
- 01
- Apricot
- Francium
- Jet Protocol v1
- Jet Protocol v2
- Larix
- Mango Markets
- Port Finance
- Solend
- Solend Turbo Pool
- Solend Stable Pool
- Tulip
This library currently focuses on Solana, with other chains to come.
All data is fetched directly from the Solana blockchain, using the native protocol SDK when available. This project does not use screen-scraping or 3rd party APIs. To prevent rate-limiting, this project attempts to use the officially supported RPCs for each project.
❤️ Inspired by defi-yield-ts
Usage
Fetching all rates
import { fetchAll } from "yield-sdk"
const rates = await fetchAll()
Fetching specific rates
import { fetch } from "yield-sdk"
const apricot = await fetch("apricot")
const francium = await fetch("francium")
const jet = await fetch("jet")
const jetv2 = await fetch("jetv2")
const larix = await fetch("larix")
const mango = await fetch("mango")
const port = await fetch("port")
const solend = await fetch("solend")
const solendStable = await fetch("solend-stable")
const solendTurbo = await fetch("solend-turbo")
const tulip = await fetch("tulip")
const zeroOne = await fetch("01")
Sample Result
{
"protocol": "jet",
"rates": [
{
"symbol": "USDC",
"token": {
// spl token registry info (address, decimals, etc)...
},
"deposit": "0.010327865708725278",
"borrow": "0.02847159339558806"
},
{
"symbol": "SOL",
"token": {
// spl token registry info (address, decimals, etc)...
},
"deposit": "0.008159138920000716",
"borrow": "0.025612643359401145"
},
{
"symbol": "BTC",
"token": {
// spl token registry info (address, decimals, etc)...
},
"deposit": "0.00017070024848790064",
"borrow": "0.0066587630608482525"
},
{
"symbol": "soETH",
"token": {
// spl token registry info (address, decimals, etc)...
},
"deposit": "0.0023310256428142506",
"borrow": "0.015033198753934605"
}
]
}
Depositing
import { deposit } from "yield-sdk"
const depositAmount = new TokenAmount("100", "USDC")
const depositTx = await deposit("francium", depositAmount, publicKey, connection)
// Use traditional wallet methods to send the transaction:
await sendTransaction(connection, depositTx)
Brought to you by M2 Labs
This project is maintained and funded by M2 Labs, a Web3 product development studio.