liquidops
Version:
LiquidOps is an over-collateralised lending and borrowing protocol built on Arweave's L2 AO.
37 lines (29 loc) • 945 B
text/typescript
import { getData } from "../../ao/messaging/getData";
import { TokenInput, tokenInput } from "../../ao/utils/tokenInput";
export interface GetExchangeRate {
token: TokenInput;
quantity: BigInt;
}
export type GetExchangeRateRes = BigInt;
export async function getExchangeRate({
token,
quantity,
}: GetExchangeRate): Promise<GetExchangeRateRes> {
try {
if (!token || !quantity) {
throw new Error("Please specify a token and quantity.");
}
const { oTokenAddress } = tokenInput(token);
const message = await getData({
Target: oTokenAddress,
Action: "Exchange-Rate-Current",
...(quantity && { Quantity: quantity.toString() }),
});
const valueTag = message.Messages[0].Tags.find(
(tag: { name: string; value: string }) => tag.name === "Value",
);
return BigInt(valueTag.value);
} catch (error) {
throw new Error("Error in getExchangeRate function: " + error);
}
}