@volare.finance/volare.js
Version:
The SDK for Volare Protocol
143 lines • 6.89 kB
JavaScript
"use strict";
/**
* @file apis.ts
* @author astra <astra@volare.finance>
* @date 2022
*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.Apis = void 0;
const tslib_1 = require("tslib");
const utils_js_1 = require("@volare.finance/utils.js");
const axios_1 = tslib_1.__importDefault(require("axios"));
const volare_1 = require("../volare");
const collateral_1 = require("./collateral");
const log_1 = require("./log");
const long_1 = require("./long");
const notification_1 = require("./notification");
const price_1 = require("./price");
const swap_1 = require("./swap");
const url_1 = require("./url");
const vault_1 = require("./vault");
const vToken_1 = require("./vToken");
const whitelist_1 = require("./whitelist");
class Apis {
constructor(options) {
this.config = options.config || { DECIMAL_PLACES: 2 };
utils_js_1.BigNumber.config(this.config);
this.instance = axios_1.default.create({
baseURL: options.url,
headers: {
'Content-Type': 'application/json; charset=utf-8',
},
});
this.price = new price_1.Price(this.instance);
this.whitelist = new whitelist_1.Whitelist(this.instance);
this.collateral = new collateral_1.Collateral(this.instance);
this.vToken = new vToken_1.VToken(this.instance);
this.long = new long_1.Long(this.instance);
this.vault = new vault_1.Vault(this.instance);
this.swap = new swap_1.Swap(this.instance);
this.log = new log_1.Log(this.instance);
this.notification = new notification_1.Notification(this.instance);
this.contracts = options.contracts;
if (!utils_js_1.ERC20.IsInited()) {
utils_js_1.ERC20.Init(options.endpoint);
}
}
erc20(contract) {
contract.totalSupply = new utils_js_1.BigNumber(contract.totalSupply);
return contract;
}
cash() {
return tslib_1.__awaiter(this, void 0, void 0, function* () {
if (volare_1.global[volare_1.KeyCash] === undefined) {
const response = yield this.instance.get((0, url_1.CashUrl)());
const cash = response.data;
volare_1.global[volare_1.KeyCash] = this.erc20(cash);
}
return volare_1.global[volare_1.KeyCash];
});
}
longPnLByOwnerAndVToken(owner, vTokenAddress, start, end, filter) {
return tslib_1.__awaiter(this, void 0, void 0, function* () {
const response = yield this.instance.post((0, url_1.LongFindPnLByOwnerAndVTokenUrl)(), filter, {
params: {
owner: owner,
vToken: vTokenAddress,
start,
end,
},
});
const longPnLs = response.data;
for (let i = 0; i < longPnLs.length; i++) {
longPnLs[i].expiryPrice = new utils_js_1.BigNumber(longPnLs[i].expiryPrice);
longPnLs[i].amount = new utils_js_1.BigNumber(longPnLs[i].amount);
longPnLs[i].payout = new utils_js_1.BigNumber(longPnLs[i].payout);
}
return longPnLs;
});
}
shorts(owner, vTokenAddress, isExpired, isSettled, filter) {
return tslib_1.__awaiter(this, void 0, void 0, function* () {
const response = yield this.instance.post((0, url_1.ShortUrl)(), filter, {
params: {
owner: owner,
vToken: vTokenAddress,
isExpired,
isSettled,
},
});
const shorts = response.data;
for (let i = 0; i < shorts.length; i++) {
const vToken = yield (0, volare_1.cVTokenDetails)(shorts[i].vTokenAddress);
shorts[i].underlying = vToken.underlyingAsset;
shorts[i].underlyingSymbol = yield (0, volare_1.cSymbol)(vToken.underlyingAsset);
shorts[i].underlyingDecimals = yield (0, volare_1.cDecimals)(vToken.underlyingAsset);
shorts[i].strike = vToken.strikeAsset;
shorts[i].strikeSymbol = yield (0, volare_1.cSymbol)(vToken.strikeAsset);
shorts[i].strikeDecimals = yield (0, volare_1.cDecimals)(vToken.strikeAsset);
shorts[i].collateral = vToken.collateralAsset;
shorts[i].collateralSymbol = yield (0, volare_1.cSymbol)(vToken.collateralAsset);
shorts[i].collateralDecimals = yield (0, volare_1.cDecimals)(vToken.collateralAsset);
shorts[i].expiryPrice = new utils_js_1.BigNumber(shorts[i].expiryPrice);
shorts[i].strikePrice = new utils_js_1.BigNumber(shorts[i].strikePrice);
shorts[i].amount = new utils_js_1.BigNumber(shorts[i].amount);
shorts[i].payout = new utils_js_1.BigNumber(shorts[i].payout);
shorts[i].fee = new utils_js_1.BigNumber(shorts[i].fee);
}
return shorts;
});
}
vaultPnLByOwnerAndVaultId(owner, vaultId, start, end, isDetailed = false, filter) {
var _a, _b, _c;
return tslib_1.__awaiter(this, void 0, void 0, function* () {
const response = yield this.instance.post((0, url_1.VaultFindPnLByOwnerAndVaultIdUrl)(), filter, {
params: {
owner: owner,
vaultId,
start,
end,
isDetailed,
},
});
const vaultPnLs = response.data;
for (let i = 0; i < vaultPnLs.length; i++) {
for (let j = 0; j < ((_a = vaultPnLs[i].shortAmounts) === null || _a === void 0 ? void 0 : _a.length); j++) {
vaultPnLs[i].shortAmounts[j] = new utils_js_1.BigNumber(vaultPnLs[i].shortAmounts[j]);
vaultPnLs[i].shortExpiryPrices[j] = new utils_js_1.BigNumber(vaultPnLs[i].shortExpiryPrices[j]);
}
for (let j = 0; j < ((_b = vaultPnLs[i].longAmounts) === null || _b === void 0 ? void 0 : _b.length); j++) {
vaultPnLs[i].longAmounts[j] = new utils_js_1.BigNumber(vaultPnLs[i].longAmounts[j]);
vaultPnLs[i].longExpiryPrices[j] = new utils_js_1.BigNumber(vaultPnLs[i].longExpiryPrices[j]);
}
for (let j = 0; j < ((_c = vaultPnLs[i].collateralAmounts) === null || _c === void 0 ? void 0 : _c.length); j++) {
vaultPnLs[i].collateralAmounts[j] = new utils_js_1.BigNumber(vaultPnLs[i].collateralAmounts[j]);
vaultPnLs[i].marginRequired[j] = new utils_js_1.BigNumber(vaultPnLs[i].marginRequired[j]);
}
}
return vaultPnLs;
});
}
}
exports.Apis = Apis;
//# sourceMappingURL=apis.js.map