joule_markets_sdk
v1.0.4
Published
A package to interact with joule markets
Downloads
217
Readme
SDK for interacting with Joule Money Market
Installation
npm i joule_markets_sdk@latest
NOTE :- Initialize and start the PriceClient at the start of your applications.
import { createPriceFeedService, getMarketsDetails, PriceFeedService } from "joule_market_sdk"
import { useEffect, useState } from "react"
function App() {
const [priceClient, setPriceClient] = useState<PriceFeedService>();
async function getData() {
const res = await getMarketsDetails('USDC')
console.log(res)
}
useEffect(() => {
const client = createPriceFeedService();
setPriceClient(client);
client.start()
}, []);
return (
<>
<button type="button" onClick={() => getData()}> Click me</button>
</>
)
}
export default App
An example to get maxBorrow, and how to borrow
import { createPriceFeedService, PriceFeedService, getMaxBorrow, prepareDataForBorrowOrWithdraw, getUserPositionsByAddress, borrow } from "joule_market_sdk"
import { useEffect, useState } from "react"
function App() {
const [priceClient, setPriceClient] = useState<PriceFeedService>();
async function getPreparedData() {
// to get user position details, returns all the position details if not given a position_id
const positionDetails = await getUserPositionsByAddress('abc...xyz', priceClient!, 1)
let positionData = null;
if (positionDetails.success) {
positionData = positionDetails.userPositions[0]
}
// very useful, prepares data for borrow, withdraw, to get max borrow, or to get max withdraw
const preparedData = await prepareDataForBorrowOrWithdraw('abc...xyz', Number(positionData?.positionId), "USDC", Number(positionData?.efficiency_mode_id))
// to calculate max borrow
const max_borrow = await getMaxBorrow(preparedData, priceClient!)
console.log(max_borrow)
// to borrow (account - Interface for a generic Aptos account.)
const borrow_token = await borrow(account, 12, priceClient!, preparedData)
console.log(borrow_token)
}
useEffect(() => {
const client = createPriceFeedService();
setPriceClient(client);
client.start()
}, []);
return (
<>
<button type="button" onClick={() => getPreparedData()}> Click me</button>
</>
)
}
export default App