@algofi/v1
Version:
The official JavaScript SDK for the V2 Algofi Lending Market
84 lines (83 loc) • 3.69 kB
TypeScript
import { Algodv2, Transaction, SuggestedParams } from "algosdk";
import AssetAmount from "./../assetAmount";
import AlgofiUser from "./../algofiUser";
import { MarketType } from "./lendingConfig";
import LendingClient from "./lendingClient";
import MarketConfig from "./marketConfig";
import Oracle from "./oracle";
export declare class MarketRewardsProgram {
programNumber: number;
rewardsPerSecond: number;
assetID: number;
issued: number;
claimed: number;
index: bigint;
constructor(state: {}, programIndex: number);
}
export default class Market {
localMinBalance: number;
algod: Algodv2;
lendingClient: LendingClient;
managerAppId: number;
appId: number;
address: string;
marketType: MarketType;
underlyingAssetId: number;
bAssetId: number;
optInEnabled: boolean;
supplyLimited: boolean;
borrowLimitted: boolean;
borrowFactor: number;
collateralFactor: number;
flashLoanFee: number;
flashLoanProtocolFee: number;
maxFlashLoanRatio: number;
liquidationIncentive: number;
liquidationFee: number;
reserveFactor: number;
underlyingSupplyCap: number;
underlyingBorrowCap: number;
baseInterestRate: number;
baseInterestSlope: number;
quadraticInterestAmplificationFactor: number;
targetUtilizationRatio: number;
oracle: Oracle;
underlyingCash: number;
underlyingBorrowed: number;
underlyingReserves: number;
borrowShareCirculation: number;
bAssetCirculation: number;
activeBAssetCollateral: number;
underlyingProtocolReserve: number;
latestTime: number;
borrowIndex: number;
impliedBorrowIndex: number;
totalSupplied: AssetAmount;
totalBorrowed: AssetAmount;
supplyAPR: number;
borrowAPR: number;
rewardsPrograms: any[];
rewardsEscrowAccount: string;
constructor(algod: Algodv2, lendingClient: LendingClient, managerAppId: number, marketConfig: MarketConfig);
loadState(): Promise<void>;
getUnderlyingSupplied(): number;
getAPRs(totalSupplied: number, totalBorrowed: number): [number, number];
convertUnderlyingToUSD(amount: number): number;
convertUSDToUnderlying(amount: number): number;
bAssetToAssetAmount(amount: number): AssetAmount;
borrowSharesToAssetAmount(amount: number): AssetAmount;
underlyingToBAssetAmount(amount: number): number;
getMaximumWithdrawAmount(user: AlgofiUser, borrowUtilLimit?: number): AssetAmount;
getMaximumBorrowAmount(user: AlgofiUser, borrowUtilLimit?: number): AssetAmount;
getPreambleTransactions(params: SuggestedParams, user: AlgofiUser, needsUserPosition: boolean): Promise<[Transaction[], number]>;
getMintTxns(user: AlgofiUser, underlyingAmount: number): Promise<Transaction[]>;
getAddUnderlyingCollateralTxns(user: AlgofiUser, underlyingAmount: number): Promise<Transaction[]>;
getAddBAssetCollateralTxns(user: AlgofiUser, bAssetAmount: number): Promise<Transaction[]>;
getRemoveUnderlyingCollateralTxns(user: AlgofiUser, underlyingAmount: number, removeMax?: boolean): Promise<Transaction[]>;
getRemoveBAssetCollateralTxns(user: AlgofiUser, bAssetAmount: number): Promise<Transaction[]>;
getBurnTxns(user: AlgofiUser, bAssetAmount: number): Promise<Transaction[]>;
getBorrowTxns(user: AlgofiUser, underlyingAmount: number): Promise<Transaction[]>;
getRepayBorrowTxns(user: AlgofiUser, underlyingAmount: number, repayMax?: boolean): Promise<Transaction[]>;
getClaimRewardsTxns(user: AlgofiUser): Promise<Transaction[]>;
getSyncVaultTxns(user: AlgofiUser): Promise<Transaction[]>;
}