UNPKG

liquidops

Version:

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

52 lines (41 loc) 1.38 kB
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}`); } }