@volare.finance/volare.js
Version:
The SDK for Volare Protocol
165 lines • 7.84 kB
JavaScript
;
/**
* @file vault.ts
* @author astra <astra@volare.finance>
* @date 2022
*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.Vault = void 0;
const tslib_1 = require("tslib");
const utils_js_1 = require("@volare.finance/utils.js");
const volare_1 = require("../volare");
const url_1 = require("./url");
class Vault {
constructor(instance) {
this.instance = instance;
}
v(vault) {
return tslib_1.__awaiter(this, void 0, void 0, function* () {
vault.collateralSymbols = new Array(vault.collateralAssets.length);
for (let j = 0; j < vault.collateralAssets.length; j++) {
vault.collateralSymbols[j] = vault.collateralAssets[j] === utils_js_1.ZERO_ADDR ? '' : yield (0, volare_1.cSymbol)(vault.collateralAssets[j]);
}
return vault;
});
}
vDetails(vault) {
return tslib_1.__awaiter(this, void 0, void 0, function* () {
vault.shortSymbols = new Array(vault.shortVTokens.length);
if (!vault.shortPayouts) {
vault.shortPayouts = new Array(vault.shortVTokens.length);
}
for (let j = 0; j < vault.shortVTokens.length; j++) {
if (vault.shortVTokens[j] === utils_js_1.ZERO_ADDR) {
vault.shortSymbols[j] = '';
vault.shortAmounts[j] = utils_js_1.ZERO;
vault.shortPayouts[j] = undefined;
}
else {
vault.shortSymbols[j] = yield (0, volare_1.cSymbol)(vault.shortVTokens[j]);
vault.shortAmounts[j] = new utils_js_1.BigNumber(vault.shortAmounts[j]);
vault.shortPayouts[j] = vault.shortPayouts[j] ? new utils_js_1.BigNumber(vault.shortPayouts[j]) : undefined;
}
}
vault.longSymbols = new Array(vault.longVTokens.length);
if (!vault.longPayouts) {
vault.longPayouts = new Array(vault.longVTokens.length);
}
for (let j = 0; j < vault.longVTokens.length; j++) {
if (vault.longVTokens[j] === utils_js_1.ZERO_ADDR) {
vault.longSymbols[j] = '';
vault.longAmounts[j] = utils_js_1.ZERO;
vault.longPayouts[j] = undefined;
}
else {
vault.longSymbols[j] = yield (0, volare_1.cSymbol)(vault.longVTokens[j]);
vault.longAmounts[j] = new utils_js_1.BigNumber(vault.longAmounts[j]);
vault.longPayouts[j] = vault.longPayouts[j] ? new utils_js_1.BigNumber(vault.longPayouts[j]) : undefined;
}
}
vault.collateralSymbols = new Array(vault.collateralAssets.length);
if (!vault.marginRequired) {
vault.marginRequired = new Array(vault.collateralAssets.length);
}
if (!vault.payoutAmounts) {
vault.payoutAmounts = new Array(vault.collateralAssets.length);
}
for (let j = 0; j < vault.collateralAssets.length; j++) {
vault.collateralSymbols[j] = vault.collateralAssets[j] === utils_js_1.ZERO_ADDR ? '' : yield (0, volare_1.cSymbol)(vault.collateralAssets[j]);
vault.collateralAmounts[j] = new utils_js_1.BigNumber(vault.collateralAmounts[j]);
vault.marginRequired[j] = vault.marginRequired[j] ? new utils_js_1.BigNumber(vault.marginRequired[j]) : undefined;
vault.payoutAmounts[j] = vault.payoutAmounts[j] ? new utils_js_1.BigNumber(vault.payoutAmounts[j]) : undefined;
}
vault.fee = new utils_js_1.BigNumber(vault.fee);
return vault;
});
}
vaults(owner, filter) {
return tslib_1.__awaiter(this, void 0, void 0, function* () {
const response = yield this.instance.post((0, url_1.VaultsUrl)(), filter, {
params: {
owner,
},
});
const vaults = response.data;
for (let i = 0; i < vaults.length; i++) {
vaults[i] = yield this.v(vaults[i]);
}
return vaults;
});
}
vaultDetailsByOwnerAndVaultId(owner, vaultId) {
return tslib_1.__awaiter(this, void 0, void 0, function* () {
const response = yield this.instance.get((0, url_1.VaultsFindByOwnerAndVaultIdUrl)(), {
params: {
owner,
vaultId,
},
});
return this.vDetails(response.data);
});
}
candidates(owner, vaultId, filter) {
return tslib_1.__awaiter(this, void 0, void 0, function* () {
const response = yield this.instance.post((0, url_1.VaultsCandidatesUrl)(), filter, {
params: {
owner,
vaultId,
},
});
const candidates = response.data;
for (let i = 0; i < candidates.length; i++) {
const vToken = yield (0, volare_1.cVTokenDetails)(candidates[i].vTokenAddress);
candidates[i].vTokenSymbol = yield (0, volare_1.cSymbol)(vToken.address);
candidates[i].underlying = vToken.underlyingAsset;
candidates[i].underlyingSymbol = yield (0, volare_1.cSymbol)(vToken.underlyingAsset);
candidates[i].underlyingDecimals = yield (0, volare_1.cDecimals)(vToken.underlyingAsset);
candidates[i].strike = vToken.strikeAsset;
candidates[i].strikeSymbol = yield (0, volare_1.cSymbol)(vToken.strikeAsset);
candidates[i].strikeDecimals = yield (0, volare_1.cDecimals)(vToken.strikeAsset);
candidates[i].collateral = vToken.collateralAsset;
candidates[i].collateralSymbol = yield (0, volare_1.cSymbol)(vToken.collateralAsset);
candidates[i].collateralDecimals = yield (0, volare_1.cDecimals)(vToken.collateralAsset);
candidates[i].expiryPrice = new utils_js_1.BigNumber(candidates[i].expiryPrice);
candidates[i].strikePrice = new utils_js_1.BigNumber(candidates[i].strikePrice);
candidates[i].amount = new utils_js_1.BigNumber(candidates[i].amount);
candidates[i].payout = new utils_js_1.BigNumber(candidates[i].payout);
candidates[i].fee = new utils_js_1.BigNumber(candidates[i].fee);
}
return candidates;
});
}
liquidatableVaults(underlying, isPut, filter) {
return tslib_1.__awaiter(this, void 0, void 0, function* () {
const response = yield this.instance.post((0, url_1.VaultsFindLiquidatableUrl)(), filter, {
params: {
underlying,
isPut,
},
});
const vaults = response.data;
for (let i = 0; i < vaults.length; i++) {
vaults[i] = yield this.vDetails(vaults[i]);
}
return vaults;
});
}
collaterals(owner, vaultId, index, filter) {
return tslib_1.__awaiter(this, void 0, void 0, function* () {
const response = yield this.instance.post((0, url_1.VaultsCollateralsUrl)(), filter, {
params: {
owner,
vaultId,
index,
},
});
const collaterals = response.data;
for (let i = 0; i < collaterals.length; i++) {
collaterals[i].amount = new utils_js_1.BigNumber(collaterals[i].amount);
}
return collaterals;
});
}
}
exports.Vault = Vault;
//# sourceMappingURL=vault.js.map