liquidops
Version:
LiquidOps is an over-collateralised lending and borrowing protocol built on Arweave's L2 AO.
69 lines (60 loc) • 1.83 kB
text/typescript
import { getData } from "../../ao/messaging/getData";
import { TokenInput, tokenInput } from "../../ao/utils/tokenInput";
export interface GetInfo {
token: TokenInput;
}
export interface GetInfoRes {
collateralDenomination: string;
liquidationThreshold: string;
totalSupply: string;
totalBorrows: string;
valueLimit: string;
name: string;
collateralFactor: string;
totalReserves: string;
cash: string;
oracle: string;
logo: string;
reserveFactor: string;
denomination: string;
collateralId: string;
ticker: string;
}
interface Tag {
name: string;
value: string;
}
export async function getInfo({ token }: GetInfo): Promise<GetInfoRes> {
try {
if (!token) {
throw new Error("Please specify a token.");
}
const { oTokenAddress } = tokenInput(token);
const res = await getData({
Target: oTokenAddress,
Action: "Info",
});
const tagsObject = Object.fromEntries(
res.Messages[0].Tags.map((tag: Tag) => [tag.name, tag.value]),
);
return {
collateralDenomination: tagsObject["Collateral-Denomination"],
liquidationThreshold: tagsObject["Liquidation-Threshold"],
totalSupply: tagsObject["Total-Supply"],
totalBorrows: tagsObject["Total-Borrows"],
valueLimit: tagsObject["Value-Limit"],
name: tagsObject["Name"],
collateralFactor: tagsObject["Collateral-Factor"],
totalReserves: tagsObject["Total-Reserves"],
cash: tagsObject["Cash"],
oracle: tagsObject["Oracle"],
logo: tagsObject["Logo"],
reserveFactor: tagsObject["Reserve-Factor"],
denomination: tagsObject["Denomination"],
collateralId: tagsObject["Collateral-Id"],
ticker: tagsObject["Ticker"],
};
} catch (error) {
throw new Error("Error in getInfo function: " + error);
}
}