liquidops
Version:
LiquidOps is an over-collateralised lending and borrowing protocol built on Arweave's L2 AO.
51 lines (41 loc) • 1.27 kB
text/typescript
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);
}
}