UNPKG

liquidops

Version:

LiquidOps is an over-collateralised lending and borrowing protocol built on Arweave's L2 AO.

51 lines (41 loc) 1.27 kB
import { getData } from "../../ao/messaging/getData"; import { TokenInput, tokenInput } from "../../ao/utils/tokenInput"; export interface GetBorrowAPR { token: TokenInput; } export type GetBorrowAPRRes = number; export async function getBorrowAPR({ token, }: GetBorrowAPR): Promise<GetBorrowAPRRes> { try { if (!token) { throw new Error("Please specify a token."); } const { oTokenAddress } = tokenInput(token); const checkDataRes = await getData({ Target: oTokenAddress, Action: "Get-APR", }); const tags = checkDataRes.Messages[0].Tags; const aprResponse: { "Annual-Percentage-Rate": string; "Rate-Multiplier": string; } = { "Annual-Percentage-Rate": "", "Rate-Multiplier": "", }; tags.forEach((tag: { name: string; value: string }) => { if ( tag.name === "Annual-Percentage-Rate" || tag.name === "Rate-Multiplier" ) { aprResponse[tag.name] = tag.value; } }); const apr = parseFloat(aprResponse["Annual-Percentage-Rate"]); const rateMultiplier = parseFloat(aprResponse["Rate-Multiplier"]); return apr / rateMultiplier; } catch (error) { throw new Error("Error in getBorrowAPR function: " + error); } }