liquidops
Version:
LiquidOps is an over-collateralised lending and borrowing protocol built on Arweave's L2 AO.
52 lines (41 loc) • 1.38 kB
text/typescript
import { getData } from "../../ao/messaging/getData";
import { TokenInput, tokenInput } from "../../ao/utils/tokenInput";
export interface GetAllPositions {
token: TokenInput;
}
export interface GetAllPositionsRes {
[walletAddress: string]: {
borrowBalance: BigInt;
capacity: BigInt;
collateralization: BigInt;
liquidationLimit: BigInt;
};
}
export async function getAllPositions({
token,
}: GetAllPositions): Promise<GetAllPositionsRes> {
try {
if (!token) {
throw new Error("Please specify a token.");
}
const { oTokenAddress } = tokenInput(token);
const res = await getData({
Target: oTokenAddress,
Action: "Positions",
});
const allPositions = JSON.parse(res.Messages[0].Data);
const transformedPositions: GetAllPositionsRes = {};
for (const walletAddress in allPositions) {
const originalPosition = allPositions[walletAddress];
transformedPositions[walletAddress] = {
borrowBalance: BigInt(originalPosition["Borrow-Balance"]),
capacity: BigInt(originalPosition.Capacity),
collateralization: BigInt(originalPosition["Collateralization"]),
liquidationLimit: BigInt(originalPosition["Liquidation-Limit"]),
};
}
return transformedPositions;
} catch (error) {
throw new Error(`Error in getAllPositions function: ${error}`);
}
}