UNPKG

@dolomite-exchange/dolomite-margin

Version:

Ethereum Smart Contracts and TypeScript library used for the DolomiteMargin trading protocol

934 lines 56.4 kB
"use strict"; // noinspection JSUnusedGlobalSymbols var __assign = (this && this.__assign) || function () { __assign = Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; return __assign.apply(this, arguments); }; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; var __generator = (this && this.__generator) || function (thisArg, body) { var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; function verb(n) { return function (v) { return step([n, v]); }; } function step(op) { if (f) throw new TypeError("Generator is already executing."); while (_) try { if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; if (y = 0, t) op = [op[0] & 2, t.value]; switch (op[0]) { case 0: case 1: t = op; break; case 4: _.label++; return { value: op[1], done: false }; case 5: _.label++; y = op[1]; op = [0]; continue; case 7: op = _.ops.pop(); _.trys.pop(); continue; default: if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } if (t[2]) _.ops.pop(); _.trys.pop(); continue; } op = body.call(thisArg, _); } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; } }; Object.defineProperty(exports, "__esModule", { value: true }); exports.Getters = void 0; var bignumber_js_1 = require("bignumber.js"); var Helpers_1 = require("../lib/Helpers"); var types_1 = require("../types"); var AccountRiskOverrideSetter_1 = require("./AccountRiskOverrideSetter"); var OracleSentinel_1 = require("./OracleSentinel"); var Constants_1 = require("../lib/Constants"); var Getters = /** @class */ (function () { function Getters(contracts) { this.contracts = contracts; } // ============ Getters for Risk ============ Getters.parseIndex = function (_a) { var borrow = _a.borrow, supply = _a.supply, lastUpdate = _a.lastUpdate; return { borrow: Helpers_1.stringToDecimal(borrow), supply: Helpers_1.stringToDecimal(supply), lastUpdate: new bignumber_js_1.BigNumber(lastUpdate), }; }; Getters.parseTotalPar = function (_a) { var supply = _a.supply, borrow = _a.borrow; return { borrow: new bignumber_js_1.BigNumber(borrow), supply: new bignumber_js_1.BigNumber(supply), }; }; Getters.prototype.getMarginRatio = function (options) { return __awaiter(this, void 0, void 0, function () { var result; return __generator(this, function (_a) { switch (_a.label) { case 0: return [4 /*yield*/, this.contracts.callConstantContractFunction(this.contracts.dolomiteMargin.methods.getMarginRatio(), options)]; case 1: result = _a.sent(); return [2 /*return*/, Helpers_1.stringToDecimal(result.value)]; } }); }); }; Getters.prototype.getMarginRatioForAccount = function (account, options) { return __awaiter(this, void 0, void 0, function () { var result; return __generator(this, function (_a) { switch (_a.label) { case 0: if (this.contracts.getNetworkId() === types_1.Networks.ARBITRUM_ONE) { return [2 /*return*/, this.getMarginRatio(options)]; } return [4 /*yield*/, this.contracts.callConstantContractFunction(this.contracts.dolomiteMargin.methods.getMarginRatioForAccount(account), options)]; case 1: result = _a.sent(); return [2 /*return*/, Helpers_1.stringToDecimal(result.value)]; } }); }); }; Getters.prototype.getLiquidationSpread = function (options) { return __awaiter(this, void 0, void 0, function () { var result; return __generator(this, function (_a) { switch (_a.label) { case 0: return [4 /*yield*/, this.contracts.callConstantContractFunction(this.contracts.dolomiteMargin.methods.getLiquidationSpread(), options)]; case 1: result = _a.sent(); return [2 /*return*/, Helpers_1.stringToDecimal(result.value)]; } }); }); }; Getters.prototype.getLiquidationSpreadForPair = function (heldMarketId, owedMarketId, options) { return __awaiter(this, void 0, void 0, function () { var liquidationSpread; return __generator(this, function (_a) { switch (_a.label) { case 0: return [4 /*yield*/, this.contracts.callConstantContractFunction(this.contracts.dolomiteMargin.methods.getLiquidationSpreadForPair(heldMarketId.toFixed(0), owedMarketId.toFixed(0)), options)]; case 1: liquidationSpread = _a.sent(); return [2 /*return*/, Helpers_1.stringToDecimal(liquidationSpread.value)]; } }); }); }; Getters.prototype.getLiquidationSpreadForAccountAndPair = function (account, heldMarketId, owedMarketId, options) { return __awaiter(this, void 0, void 0, function () { var liquidationSpread; return __generator(this, function (_a) { switch (_a.label) { case 0: return [4 /*yield*/, this.contracts.callConstantContractFunction(this.contracts.dolomiteMargin.methods.getLiquidationSpreadForAccountAndPair(account, heldMarketId.toFixed(0), owedMarketId.toFixed(0)), options)]; case 1: liquidationSpread = _a.sent(); return [2 /*return*/, Helpers_1.stringToDecimal(liquidationSpread.value)]; } }); }); }; Getters.prototype.getEarningsRate = function (options) { return __awaiter(this, void 0, void 0, function () { var result; return __generator(this, function (_a) { switch (_a.label) { case 0: return [4 /*yield*/, this.contracts.callConstantContractFunction(this.contracts.dolomiteMargin.methods.getEarningsRate(), options)]; case 1: result = _a.sent(); return [2 /*return*/, Helpers_1.stringToDecimal(result.value)]; } }); }); }; Getters.prototype.getMinBorrowedValue = function (options) { return __awaiter(this, void 0, void 0, function () { var result; return __generator(this, function (_a) { switch (_a.label) { case 0: return [4 /*yield*/, this.contracts.callConstantContractFunction(this.contracts.dolomiteMargin.methods.getMinBorrowedValue(), options)]; case 1: result = _a.sent(); return [2 /*return*/, new bignumber_js_1.BigNumber(result.value)]; } }); }); }; Getters.prototype.getOracleSentinel = function (options) { return __awaiter(this, void 0, void 0, function () { var oracleSentinelAddress; return __generator(this, function (_a) { switch (_a.label) { case 0: if (this.contracts.getNetworkId() === types_1.Networks.ARBITRUM_ONE) { return [2 /*return*/, Promise.resolve(new OracleSentinel_1.OracleSentinel(this.contracts, Constants_1.ADDRESSES.ZERO))]; } return [4 /*yield*/, this.contracts.callConstantContractFunction(this.contracts.dolomiteMargin.methods.getOracleSentinel(), options)]; case 1: oracleSentinelAddress = _a.sent(); return [2 /*return*/, new OracleSentinel_1.OracleSentinel(this.contracts, oracleSentinelAddress)]; } }); }); }; Getters.prototype.getIsBorrowAllowed = function (options) { return __awaiter(this, void 0, void 0, function () { return __generator(this, function (_a) { if (this.contracts.getNetworkId() === types_1.Networks.ARBITRUM_ONE) { return [2 /*return*/, Promise.resolve(true)]; } return [2 /*return*/, this.contracts.callConstantContractFunction(this.contracts.dolomiteMargin.methods.getIsBorrowAllowed(), options)]; }); }); }; Getters.prototype.getIsLiquidationAllowed = function (options) { return __awaiter(this, void 0, void 0, function () { return __generator(this, function (_a) { if (this.contracts.getNetworkId() === types_1.Networks.ARBITRUM_ONE) { return [2 /*return*/, Promise.resolve(true)]; } return [2 /*return*/, this.contracts.callConstantContractFunction(this.contracts.dolomiteMargin.methods.getIsLiquidationAllowed(), options)]; }); }); }; Getters.prototype.getCallbackGasLimit = function (options) { return __awaiter(this, void 0, void 0, function () { var value; return __generator(this, function (_a) { switch (_a.label) { case 0: if (this.contracts.getNetworkId() === types_1.Networks.ARBITRUM_ONE) { return [2 /*return*/, Promise.resolve(Constants_1.INTEGERS.ZERO)]; } return [4 /*yield*/, this.contracts.callConstantContractFunction(this.contracts.dolomiteMargin.methods.getCallbackGasLimit(), options)]; case 1: value = _a.sent(); return [2 /*return*/, new bignumber_js_1.BigNumber(value)]; } }); }); }; Getters.prototype.getDefaultAccountRiskOverrideSetter = function (options) { return __awaiter(this, void 0, void 0, function () { var accountRiskOverrideSetterAddress; return __generator(this, function (_a) { switch (_a.label) { case 0: if (this.contracts.getNetworkId() === types_1.Networks.ARBITRUM_ONE) { return [2 /*return*/, Promise.resolve(new AccountRiskOverrideSetter_1.AccountRiskOverrideSetter(this.contracts, Constants_1.ADDRESSES.ZERO))]; } return [4 /*yield*/, this.contracts.callConstantContractFunction(this.contracts.dolomiteMargin.methods.getDefaultAccountRiskOverrideSetter(), options)]; case 1: accountRiskOverrideSetterAddress = _a.sent(); return [2 /*return*/, new AccountRiskOverrideSetter_1.AccountRiskOverrideSetter(this.contracts, accountRiskOverrideSetterAddress)]; } }); }); }; Getters.prototype.getAccountRiskOverrideSetterByAccountOwner = function (accountOwner, options) { return __awaiter(this, void 0, void 0, function () { var accountRiskOverrideSetterAddress; return __generator(this, function (_a) { switch (_a.label) { case 0: if (this.contracts.getNetworkId() === types_1.Networks.ARBITRUM_ONE) { return [2 /*return*/, Promise.resolve(new AccountRiskOverrideSetter_1.AccountRiskOverrideSetter(this.contracts, Constants_1.ADDRESSES.ZERO))]; } return [4 /*yield*/, this.contracts.callConstantContractFunction(this.contracts.dolomiteMargin.methods.getAccountRiskOverrideSetterByAccountOwner(accountOwner), options)]; case 1: accountRiskOverrideSetterAddress = _a.sent(); return [2 /*return*/, new AccountRiskOverrideSetter_1.AccountRiskOverrideSetter(this.contracts, accountRiskOverrideSetterAddress)]; } }); }); }; Getters.prototype.getAccountRiskOverrideByAccount = function (account, options) { return __awaiter(this, void 0, void 0, function () { var _a, marginRatioOverride, liquidationSpreadOverride; return __generator(this, function (_b) { switch (_b.label) { case 0: if (this.contracts.getNetworkId() === types_1.Networks.ARBITRUM_ONE) { return [2 /*return*/, Promise.resolve({ marginRatioOverride: Constants_1.INTEGERS.ZERO, liquidationSpreadOverride: Constants_1.INTEGERS.ZERO, })]; } return [4 /*yield*/, this.contracts.callConstantContractFunction(this.contracts.dolomiteMargin.methods.getAccountRiskOverrideByAccount(account), options)]; case 1: _a = _b.sent(), marginRatioOverride = _a.marginRatioOverride, liquidationSpreadOverride = _a.liquidationSpreadOverride; return [2 /*return*/, { marginRatioOverride: Helpers_1.stringToDecimal(marginRatioOverride.value), liquidationSpreadOverride: Helpers_1.stringToDecimal(liquidationSpreadOverride.value), }]; } }); }); }; Getters.prototype.getMarginRatioOverrideByAccount = function (account, options) { return __awaiter(this, void 0, void 0, function () { var marginRatioOverride; return __generator(this, function (_a) { switch (_a.label) { case 0: if (this.contracts.getNetworkId() === types_1.Networks.ARBITRUM_ONE) { return [2 /*return*/, Promise.resolve(Constants_1.INTEGERS.ZERO)]; } return [4 /*yield*/, this.contracts.callConstantContractFunction(this.contracts.dolomiteMargin.methods.getMarginRatioOverrideByAccount(account), options)]; case 1: marginRatioOverride = _a.sent(); return [2 /*return*/, Helpers_1.stringToDecimal(marginRatioOverride.value)]; } }); }); }; Getters.prototype.getLiquidationSpreadOverrideByAccount = function (account, options) { return __awaiter(this, void 0, void 0, function () { var liquidationSpreadOverride; return __generator(this, function (_a) { switch (_a.label) { case 0: if (this.contracts.getNetworkId() === types_1.Networks.ARBITRUM_ONE) { return [2 /*return*/, Promise.resolve(Constants_1.INTEGERS.ZERO)]; } return [4 /*yield*/, this.contracts.callConstantContractFunction(this.contracts.dolomiteMargin.methods.getLiquidationSpreadOverrideByAccount(account), options)]; case 1: liquidationSpreadOverride = _a.sent(); return [2 /*return*/, Helpers_1.stringToDecimal(liquidationSpreadOverride.value)]; } }); }); }; Getters.prototype.getRiskLimits = function (options) { return __awaiter(this, void 0, void 0, function () { var result; return __generator(this, function (_a) { switch (_a.label) { case 0: return [4 /*yield*/, this.contracts.callConstantContractFunction(this.contracts.dolomiteMargin.methods.getRiskLimits(), options)]; case 1: result = _a.sent(); return [2 /*return*/, { marginRatioMax: Helpers_1.stringToDecimal(result[0]), liquidationSpreadMax: Helpers_1.stringToDecimal(result[1]), earningsRateMax: Helpers_1.stringToDecimal(result[2]), marginPremiumMax: Helpers_1.stringToDecimal(result[3]), liquidationSpreadPremiumMax: Helpers_1.stringToDecimal(result[4]), interestRateMax: Helpers_1.stringToDecimal(result[5]), minBorrowedValueMax: new bignumber_js_1.BigNumber(result[6]), }]; } }); }); }; Getters.prototype.getRiskParams = function (options) { return __awaiter(this, void 0, void 0, function () { var result; return __generator(this, function (_a) { switch (_a.label) { case 0: return [4 /*yield*/, Promise.all([ this.getMarginRatio(options), this.getLiquidationSpread(options), this.getEarningsRate(options), this.getMinBorrowedValue(options), this.getAccountMaxNumberOfMarketsWithBalances(options), this.getOracleSentinel(options), this.getCallbackGasLimit(options), ])]; case 1: result = _a.sent(); return [2 /*return*/, { marginRatio: result[0], liquidationSpread: result[1], earningsRate: result[2], minBorrowedValue: result[3], accountMaxNumberOfMarketsWithBalances: result[4], oracleSentinel: result[5], callbackGasLimit: result[6], }]; } }); }); }; // ============ Getters for Markets ============ Getters.prototype.getAccountMaxNumberOfMarketsWithBalances = function (options) { return __awaiter(this, void 0, void 0, function () { var result; return __generator(this, function (_a) { switch (_a.label) { case 0: return [4 /*yield*/, this.contracts.callConstantContractFunction(this.contracts.dolomiteMargin.methods.getAccountMaxNumberOfMarketsWithBalances(), options)]; case 1: result = _a.sent(); return [2 /*return*/, new bignumber_js_1.BigNumber(result)]; } }); }); }; Getters.prototype.getNumMarkets = function (options) { return __awaiter(this, void 0, void 0, function () { var result; return __generator(this, function (_a) { switch (_a.label) { case 0: return [4 /*yield*/, this.contracts.callConstantContractFunction(this.contracts.dolomiteMargin.methods.getNumMarkets(), options)]; case 1: result = _a.sent(); return [2 /*return*/, new bignumber_js_1.BigNumber(result)]; } }); }); }; Getters.prototype.getMarketIdByTokenAddress = function (token, options) { return __awaiter(this, void 0, void 0, function () { var result; return __generator(this, function (_a) { switch (_a.label) { case 0: return [4 /*yield*/, this.contracts.callConstantContractFunction(this.contracts.dolomiteMargin.methods.getMarketIdByTokenAddress(token), options)]; case 1: result = _a.sent(); return [2 /*return*/, new bignumber_js_1.BigNumber(result)]; } }); }); }; Getters.prototype.getMarketTokenAddress = function (marketId, options) { return __awaiter(this, void 0, void 0, function () { return __generator(this, function (_a) { return [2 /*return*/, this.contracts.callConstantContractFunction(this.contracts.dolomiteMargin.methods.getMarketTokenAddress(marketId.toFixed(0)), options)]; }); }); }; Getters.prototype.getMarketIsClosing = function (marketId, options) { return __awaiter(this, void 0, void 0, function () { return __generator(this, function (_a) { return [2 /*return*/, this.contracts.callConstantContractFunction(this.contracts.dolomiteMargin.methods.getMarketIsClosing(marketId.toFixed(0)), options)]; }); }); }; Getters.prototype.getMarketPrice = function (marketId, options) { return __awaiter(this, void 0, void 0, function () { var result; return __generator(this, function (_a) { switch (_a.label) { case 0: return [4 /*yield*/, this.contracts.callConstantContractFunction(this.contracts.dolomiteMargin.methods.getMarketPrice(marketId.toFixed(0)), options)]; case 1: result = _a.sent(); return [2 /*return*/, new bignumber_js_1.BigNumber(result.value)]; } }); }); }; Getters.prototype.getMarketTotalPar = function (marketId, options) { return __awaiter(this, void 0, void 0, function () { var result; return __generator(this, function (_a) { switch (_a.label) { case 0: return [4 /*yield*/, this.contracts.callConstantContractFunction(this.contracts.dolomiteMargin.methods.getMarketTotalPar(marketId.toFixed(0)), options)]; case 1: result = _a.sent(); return [2 /*return*/, { borrow: new bignumber_js_1.BigNumber(result[0]), supply: new bignumber_js_1.BigNumber(result[1]), }]; } }); }); }; Getters.prototype.getMarketTotalWei = function (marketId, options) { return __awaiter(this, void 0, void 0, function () { var result, index; return __generator(this, function (_a) { switch (_a.label) { case 0: return [4 /*yield*/, this.getMarketTotalPar(marketId, options)]; case 1: result = _a.sent(); return [4 /*yield*/, this.getMarketCurrentIndex(marketId, options)]; case 2: index = _a.sent(); return [2 /*return*/, { borrow: result.borrow.times(index.borrow), supply: result.supply.times(index.supply), }]; } }); }); }; Getters.prototype.getMarketCachedIndex = function (marketId, options) { return __awaiter(this, void 0, void 0, function () { var result; return __generator(this, function (_a) { switch (_a.label) { case 0: return [4 /*yield*/, this.contracts.callConstantContractFunction(this.contracts.dolomiteMargin.methods.getMarketCachedIndex(marketId.toFixed(0)), options)]; case 1: result = _a.sent(); return [2 /*return*/, Getters.parseIndex(result)]; } }); }); }; Getters.prototype.getMarketCurrentIndex = function (marketId, options) { return __awaiter(this, void 0, void 0, function () { var result; return __generator(this, function (_a) { switch (_a.label) { case 0: return [4 /*yield*/, this.contracts.callConstantContractFunction(this.contracts.dolomiteMargin.methods.getMarketCurrentIndex(marketId.toFixed(0)), options)]; case 1: result = _a.sent(); return [2 /*return*/, Getters.parseIndex(result)]; } }); }); }; Getters.prototype.getMarketPriceOracle = function (marketId, options) { return __awaiter(this, void 0, void 0, function () { return __generator(this, function (_a) { return [2 /*return*/, this.contracts.callConstantContractFunction(this.contracts.dolomiteMargin.methods.getMarketPriceOracle(marketId.toFixed(0)), options)]; }); }); }; Getters.prototype.getMarketInterestSetter = function (marketId, options) { return __awaiter(this, void 0, void 0, function () { return __generator(this, function (_a) { return [2 /*return*/, this.contracts.callConstantContractFunction(this.contracts.dolomiteMargin.methods.getMarketInterestSetter(marketId.toFixed(0)), options)]; }); }); }; Getters.prototype.getMarketMarginPremium = function (marketId, options) { return __awaiter(this, void 0, void 0, function () { var marginPremium; return __generator(this, function (_a) { switch (_a.label) { case 0: return [4 /*yield*/, this.contracts.callConstantContractFunction(this.contracts.dolomiteMargin.methods.getMarketMarginPremium(marketId.toFixed(0)), options)]; case 1: marginPremium = _a.sent(); return [2 /*return*/, Helpers_1.stringToDecimal(marginPremium.value)]; } }); }); }; /** * @deprecated */ Getters.prototype.getMarketSpreadPremium = function (marketId, options) { return __awaiter(this, void 0, void 0, function () { var spreadPremium; return __generator(this, function (_a) { switch (_a.label) { case 0: return [4 /*yield*/, this.contracts.callConstantContractFunction(this.contracts.dolomiteMargin.methods.getMarketSpreadPremium(marketId.toFixed(0)), options)]; case 1: spreadPremium = _a.sent(); return [2 /*return*/, Helpers_1.stringToDecimal(spreadPremium.value)]; } }); }); }; Getters.prototype.getMarketLiquidationSpreadPremium = function (marketId, options) { return __awaiter(this, void 0, void 0, function () { var spreadPremium; return __generator(this, function (_a) { switch (_a.label) { case 0: if (this.contracts.getNetworkId() === types_1.Networks.ARBITRUM_ONE) { return [2 /*return*/, this.getMarketSpreadPremium(marketId, options)]; } return [4 /*yield*/, this.contracts.callConstantContractFunction(this.contracts.dolomiteMargin.methods.getMarketLiquidationSpreadPremium(marketId.toFixed(0)), options)]; case 1: spreadPremium = _a.sent(); return [2 /*return*/, Helpers_1.stringToDecimal(spreadPremium.value)]; } }); }); }; /** * @deprecated */ Getters.prototype.getMarketMaxWei = function (marketId, options) { return __awaiter(this, void 0, void 0, function () { var maxSupplyWei; return __generator(this, function (_a) { switch (_a.label) { case 0: return [4 /*yield*/, this.contracts.callConstantContractFunction(this.contracts.dolomiteMargin.methods.getMarketMaxWei(marketId.toFixed(0)), options)]; case 1: maxSupplyWei = _a.sent(); return [2 /*return*/, Helpers_1.valueToInteger(maxSupplyWei)]; } }); }); }; Getters.prototype.getMarketMaxSupplyWei = function (marketId, options) { return __awaiter(this, void 0, void 0, function () { var maxSupplyWei; return __generator(this, function (_a) { switch (_a.label) { case 0: if (this.contracts.getNetworkId() === types_1.Networks.ARBITRUM_ONE) { return [2 /*return*/, this.getMarketMaxWei(marketId, options)]; } return [4 /*yield*/, this.contracts.callConstantContractFunction(this.contracts.dolomiteMargin.methods.getMarketMaxSupplyWei(marketId.toFixed(0)), options)]; case 1: maxSupplyWei = _a.sent(); return [2 /*return*/, Helpers_1.valueToInteger(maxSupplyWei)]; } }); }); }; Getters.prototype.getMarketMaxBorrowWei = function (marketId, options) { return __awaiter(this, void 0, void 0, function () { var maxBorrowWei; return __generator(this, function (_a) { switch (_a.label) { case 0: if (this.contracts.getNetworkId() === types_1.Networks.ARBITRUM_ONE) { return [2 /*return*/, Promise.resolve(Constants_1.INTEGERS.ZERO)]; } return [4 /*yield*/, this.contracts.callConstantContractFunction(this.contracts.dolomiteMargin.methods.getMarketMaxBorrowWei(marketId.toFixed(0)), options)]; case 1: maxBorrowWei = _a.sent(); return [2 /*return*/, Helpers_1.valueToInteger(maxBorrowWei)]; } }); }); }; Getters.prototype.getMarketEarningsRateOverride = function (marketId, options) { return __awaiter(this, void 0, void 0, function () { var earningsRateOverride; return __generator(this, function (_a) { switch (_a.label) { case 0: if (this.contracts.getNetworkId() === types_1.Networks.ARBITRUM_ONE) { return [2 /*return*/, Promise.resolve(Constants_1.INTEGERS.ZERO)]; } return [4 /*yield*/, this.contracts.callConstantContractFunction(this.contracts.dolomiteMargin.methods.getMarketEarningsRateOverride(marketId.toFixed(0)), options)]; case 1: earningsRateOverride = _a.sent(); return [2 /*return*/, Helpers_1.stringToDecimal(earningsRateOverride.value)]; } }); }); }; Getters.prototype.getMarketUtilization = function (marketId, options) { return __awaiter(this, void 0, void 0, function () { var totalWei; return __generator(this, function (_a) { switch (_a.label) { case 0: return [4 /*yield*/, this.getMarketTotalWei(marketId, options)]; case 1: totalWei = _a.sent(); return [2 /*return*/, totalWei.borrow.div(totalWei.supply)]; } }); }); }; /** * @deprecated */ Getters.prototype.getMarketInterestRate = function (marketId, options) { return __awaiter(this, void 0, void 0, function () { var result; return __generator(this, function (_a) { switch (_a.label) { case 0: return [4 /*yield*/, this.contracts.callConstantContractFunction(this.contracts.dolomiteMargin.methods.getMarketInterestRate(marketId.toFixed(0)), options)]; case 1: result = _a.sent(); return [2 /*return*/, Helpers_1.stringToDecimal(result.value)]; } }); }); }; Getters.prototype.getMarketBorrowInterestRatePerSecond = function (marketId, options) { return __awaiter(this, void 0, void 0, function () { var result; return __generator(this, function (_a) { switch (_a.label) { case 0: return [4 /*yield*/, this.contracts.callConstantContractFunction(this.contracts.dolomiteMargin.methods.getMarketBorrowInterestRatePerSecond(marketId.toFixed(0)), options)]; case 1: result = _a.sent(); return [2 /*return*/, Helpers_1.stringToDecimal(result.value)]; } }); }); }; Getters.prototype.getMarketBorrowInterestRateApr = function (marketId, options) { return __awaiter(this, void 0, void 0, function () { var result; return __generator(this, function (_a) { switch (_a.label) { case 0: return [4 /*yield*/, this.contracts.callConstantContractFunction(this.contracts.dolomiteMargin.methods.getMarketBorrowInterestRateApr(marketId.toFixed(0)), options)]; case 1: result = _a.sent(); return [2 /*return*/, Helpers_1.stringToDecimal(result.value)]; } }); }); }; Getters.prototype.getMarketSupplyInterestRateApr = function (marketId, options) { return __awaiter(this, void 0, void 0, function () { var result; return __generator(this, function (_a) { switch (_a.label) { case 0: return [4 /*yield*/, this.contracts.callConstantContractFunction(this.contracts.dolomiteMargin.methods.getMarketSupplyInterestRateApr(marketId.toFixed(0)), options)]; case 1: result = _a.sent(); return [2 /*return*/, Helpers_1.stringToDecimal(result.value)]; } }); }); }; Getters.prototype.getMarket = function (marketId, options) { return __awaiter(this, void 0, void 0, function () { var market; return __generator(this, function (_a) { switch (_a.label) { case 0: return [4 /*yield*/, this.contracts.callConstantContractFunction(this.contracts.dolomiteMargin.methods.getMarket(marketId.toFixed(0)), options)]; case 1: market = _a.sent(); return [2 /*return*/, __assign(__assign({}, market), { totalPar: Getters.parseTotalPar(market.totalPar), index: Getters.parseIndex(market.index), marginPremium: Helpers_1.stringToDecimal(market.marginPremium.value), liquidationSpreadPremium: Helpers_1.stringToDecimal(market.liquidationSpreadPremium.value), maxSupplyWei: new bignumber_js_1.BigNumber(market.maxSupplyWei.value), maxBorrowWei: new bignumber_js_1.BigNumber(market.maxBorrowWei.value), earningsRateOverride: Helpers_1.stringToDecimal(market.earningsRateOverride.value) })]; } }); }); }; Getters.prototype.getMarketWithInfo = function (marketId, options) { return __awaiter(this, void 0, void 0, function () { var marketWithInfo, market, currentIndex, currentPrice, currentInterestRate; return __generator(this, function (_a) { switch (_a.label) { case 0: return [4 /*yield*/, this.contracts.callConstantContractFunction(this.contracts.dolomiteMargin.methods.getMarketWithInfo(marketId.toFixed(0)), options)]; case 1: marketWithInfo = _a.sent(); market = marketWithInfo[0]; currentIndex = marketWithInfo[1]; currentPrice = marketWithInfo[2]; currentInterestRate = marketWithInfo[3]; return [2 /*return*/, { market: __assign(__assign({}, market), { totalPar: Getters.parseTotalPar(market.totalPar), index: Getters.parseIndex(market.index), marginPremium: Helpers_1.stringToDecimal(market.marginPremium.value), liquidationSpreadPremium: Helpers_1.stringToDecimal(market.liquidationSpreadPremium.value), maxSupplyWei: Helpers_1.valueToInteger(market.maxSupplyWei), maxBorrowWei: Helpers_1.valueToInteger(market.maxBorrowWei), earningsRateOverride: Helpers_1.stringToDecimal(market.earningsRateOverride.value) }), currentIndex: Getters.parseIndex(currentIndex), currentPrice: new bignumber_js_1.BigNumber(currentPrice.value), currentInterestRate: Helpers_1.stringToDecimal(currentInterestRate.value), }]; } }); }); }; Getters.prototype.getNumExcessTokens = function (marketId, options) { return __awaiter(this, void 0, void 0, function () { var numExcessTokens; return __generator(this, function (_a) { switch (_a.label) { case 0: return [4 /*yield*/, this.contracts.callConstantContractFunction(this.contracts.dolomiteMargin.methods.getNumExcessTokens(marketId.toFixed(0)), options)]; case 1: numExcessTokens = _a.sent(); return [2 /*return*/, Helpers_1.valueToInteger(numExcessTokens)]; } }); }); }; // ============ Getters for Accounts ============ Getters.prototype.getAccountPar = function (accountOwner, accountNumber, marketId, options) { return __awaiter(this, void 0, void 0, function () { var result; return __generator(this, function (_a) { switch (_a.label) { case 0: return [4 /*yield*/, this.contracts.callConstantContractFunction(this.contracts.dolomiteMargin.methods.getAccountPar({ owner: accountOwner, number: accountNumber.toFixed(0), }, marketId.toFixed(0)), options)]; case 1: result = _a.sent(); return [2 /*return*/, Helpers_1.valueToInteger(result)]; } }); }); }; Getters.prototype.getAccountWei = function (accountOwner, accountNumber, marketId, options) { return __awaiter(this, void 0, void 0, function () { var result; return __generator(this, function (_a) { switch (_a.label) { case 0: return [4 /*yield*/, this.contracts.callConstantContractFunction(this.contracts.dolomiteMargin.methods.getAccountWei({ owner: accountOwner, number: accountNumber.toFixed(0), }, marketId.toFixed(0)), options)]; case 1: result = _a.sent(); return [2 /*return*/, Helpers_1.valueToInteger(result)]; } }); }); }; Getters.prototype.getAccountStatus = function (accountOwner, accountNumber, options) { return __awaiter(this, void 0, void 0, function () { var rawStatus; return __generator(this, function (_a) { switch (_a.label) { case 0: return [4 /*yield*/, this.contracts.callConstantContractFunction(this.contracts.dolomiteMargin.methods.getAccountStatus({ owner: accountOwner, number: accountNumber.toFixed(0), }), options)]; case 1: rawStatus = _a.sent(); switch (rawStatus) { case '0': return [2 /*return*/, types_1.AccountStatus.Normal]; case '1': return [2 /*return*/, types_1.AccountStatus.Liquidating]; case '2': return [2 /*return*/, types_1.AccountStatus.Vaporizing]; default: throw new Error("invalid account status " + rawStatus); } return [2 /*return*/]; } }); }); }; Getters.prototype.getAccountMarketsWithBalances = function (accountOwner, accountNumber, options) { return __awaiter(this, void 0, void 0, function () { var result; return __generator(this, function (_a) { switch (_a.label) { case 0: return [4 /*yield*/, this.contracts.callConstantContractFunction(this.contracts.dolomiteMargin.methods.getAccountMarketsWithBalances({ owner: accountOwner, number: accountNumber.toFixed(0), }), options)]; case 1: result = _a.sent(); return [2 /*return*/, result.map(function (marketIdString) { return new bignumber_js_1.BigNumber(marketIdString); })]; } }); }); }; Getters.prototype.getAccountNumberOfMarketsWithBalances = function (accountOwner, accountNumber, options) { return __awaiter(this, void 0, void 0, function () { var result; return __generator(this, function (_a) { switch (_a.label) { case 0: return [4 /*yield*/, this.contracts.callConstantContractFunction(this.contracts.dolomiteMargin.methods.getAccountNumberOfMarketsWithBalances({ owner: accountOwner, number: accountNumber.toFixed(0), }), options)]; case 1: result = _a.sent(); return [2 /*return*/, new bignumber_js_1.BigNumber(result)]; } }); }); }; Getters.prototype.getAccountMarketWithBalanceAtIndex = function (accountOwner, accountNumber, index, options) { return __awaiter(this, void 0, void 0, function () { var result; return __generator(this, function (_a) { switch (_a.label) { case 0: return [4 /*yield*/, this.contracts.callConstantContractFunction(this.contracts.dolomiteMargin.methods.getAccountMarketWithBalanceAtIndex({ owner: accountOwner, number: accountNumber.toFixed(0), }, index.toFixed()), options)]; case 1: result = _a.sent(); return [2 /*return*/, new bignumber_js_1.BigNumber(result)]; } }); }); }; Getters.prototype.getAccountNumberOfMarketsWithDebt = function (accountOwner, accountNumber, options) { return __awaiter(this, void 0, void 0, function () { var result; return __generator(this, function (_a) { switch (_a.label) { case 0: return [4 /*yield*/, this.contracts.callConstantContractFunction(this.contracts.dolomiteMargin.methods.getAccountNumberOfMarketsWithDebt({ owner: accountOwner, number: accountNumber.toFixed(0), }), options)]; case 1: result = _a.sent(); return [2 /*return*/, new bignumber_js_1.BigNumber(result)]; } }); }); }; Getters.prototype.getAccountValues = function (accountOwner, accountNumber, options) { return __awaiter(this, void 0, void 0, function () { var result; return __generator(this, function (_a) { switch (_a.label) { case 0: if (!(this.contracts.getNetworkId() === types_1.Networks.ARBITRUM_ONE || process.env.USE_READER === 'true')) return [3 /*break*/, 2]; return [4 /*yield*/, this.contracts.callConstantContractFunction(this.contracts.accountValuesReader.methods.getAccountValues({ owner: accountOwner, number: accountNumber.toFixed(0), }), options)]; case 1: result = _a.sent(); return [3 /*break*/, 4]; case 2: return [4 /*yield*/, this.contracts.callConstantContractFunction(this.contracts.dolomiteMargin.methods.getAccountValues({ owner: accountOwner, number: accountNumber.toFixed(0), }), options)]; case 3: result = _a.sent(); _a.label = 4; case 4: return [2 /*return*/, { supply: new bignumber_js_1.BigNumber(result[0].value), borrow: new bignumber_js_1.BigNumber(result[1].value), }]; } }); }); }; Getters.prototype.getAdjustedAccountValues = function (accountOwner, accountNumber, options) { return __awaiter(this, void 0, void 0, function () { var result; return __generator(this, function (_a) { switch (_a.label) { case 0: if (!(this.contracts.getNetworkId() === types_1.Networks.ARBITRUM_ONE || process.env.USE_READER === 'true')) return [3 /*break*/, 2]; return [4 /*yield*/, this.contracts.callConstantContractFunction(this.contracts.accountValuesReader.methods.getAdjustedAccountValues({ owner: accountOwner, number: accountNumber.toFixed(0), }), options)]; case 1: result = _a.sent(); return [3 /*break*/, 4]; case 2: return [4 /*yield*/, this.contracts.callConstantContractFunction(this.contracts.dolomiteMargin.methods.getAdjustedAccountValues({ owner: accountOwner, number: accountNumber.toFixed(0), }), options)]; case 3: result = _a.sent(); _a.label = 4; case 4: return [2 /*return*/, { supply: new bignumber_js_1.BigNumber(result[0].value), borrow: new bignumber_js_1.BigNumber(result[1].value), }]; } }); }); }; Getters.prototype.getAccountBalances = function (accountOwner, accountNumber, options) { return __awaiter(this, void 0, void 0, function () { var balances, marketIds, tokens, pars, weis, result, i; return __generator(this, function (_a) { switch (_a.label) { case 0: return [4 /*yield*/, this.contracts.callConstantContractFunction(this.contracts.dolomiteMargin.methods.getAccountBalances({ owner: accountOwner, number: accountNumber.toFixed(0), }), options)]; case 1: balances = _a.sent(); marketIds = balances[0]; tokens = balances[1]; pars = balances[2]; wei