@dolomite-exchange/dolomite-margin
Version:
Ethereum Smart Contracts and TypeScript library used for the DolomiteMargin trading protocol
934 lines • 56.4 kB
JavaScript
"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