@volare.finance/volare.js
Version:
The SDK for Volare Protocol
68 lines • 3.57 kB
JavaScript
;
/**
* @file margin.ts
* @author astra <astra@volare.finance>
* @date 2022
*/
Object.defineProperty(exports, "__esModule", { value: true });
const tslib_1 = require("tslib");
const utils_js_1 = require("@volare.finance/utils.js");
const dotenv_1 = require("dotenv");
const ethers_1 = require("ethers");
const src_1 = require("../src");
(0, dotenv_1.config)({
path: '.env',
encoding: 'utf8',
});
// payout < 0
// const VAULT_ID = 1;
// const VTOKEN_ADDRESS = '0x38e55de0102ffab4a800a2c8ab4e53f445921942';
// payout > 0
const VAULT_ID = 2;
const VTOKEN_ADDRESS = '0x07e31465b170932bf2109d51ff30ed4424c754b2';
const CHAIN_ID = Number(process.env.CHAIN_ID);
const ENDPOINT = String(process.env.ENDPOINT);
const MAKER_PRIVATE_KEY = String(process.env.MAKER_PRIVATE_KEY);
const Contracts = (0, src_1.getContractsForChain)(CHAIN_ID);
const Provider = new ethers_1.providers.JsonRpcProvider(ENDPOINT);
// const AVAX = new Contract(Contracts.AVAX, ERC20Contract.ABI(), Provider);
// const USDC = new Contract(Contracts.USDC, ERC20Contract.ABI(), Provider);
const Maker = new ethers_1.Wallet(MAKER_PRIVATE_KEY, Provider);
const vanilla = new src_1.Vanilla({
endpoint: ENDPOINT,
contracts: Contracts,
});
(() => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
const vToken = yield (0, src_1.cVTokenDetails)(VTOKEN_ADDRESS);
console.log(vToken);
console.log(new Date(vToken.expiry * 1000));
console.log((0, src_1.getProductHash)(vToken));
console.log(yield vanilla.marginCalculator.getSpotShock(vToken));
const timesToExpiryForProduct = yield vanilla.marginCalculator.getTimesToExpiry(vToken);
console.log(timesToExpiryForProduct);
for (let i = 0; i < timesToExpiryForProduct.length; i++) {
console.log(yield vanilla.marginCalculator.getMaxPrice(vToken, timesToExpiryForProduct[i]));
}
console.log(`getNakedCap: ${yield vanilla.getNakedCap(vToken.collateralAsset)}`);
const shortAmount = new utils_js_1.BigNumber(5);
const collateralAmount = new utils_js_1.BigNumber(11);
const underlyingPrice = yield vanilla.getPrice(vToken.underlyingAsset);
console.log(`getNakedPoolBalance: ${yield vanilla.getNakedPoolBalance(vToken.collateralAsset)}`);
console.log(`balanceOf: ${yield src_1.VTokenImpl.BalanceOf(vToken.address, Maker.address)}`);
console.log(`getMarginRequired: ${yield vanilla.getMarginRequired(Maker.address, VAULT_ID, src_1.VaultType.NakedMargin)}`);
console.log(`getLiquidatablePrice: ${(0, src_1.getLiquidatablePrice)(vToken, shortAmount, collateralAmount)}`);
console.log(`getNakedMarginRequired: ${(0, src_1.getNakedMarginRequired)(vToken, shortAmount, underlyingPrice)}`);
// short
const tx = yield vanilla.short(Maker, VAULT_ID, 0, vToken, new utils_js_1.BigNumber(10), src_1.VaultType.NakedMargin);
const receipt = yield tx.wait();
console.log(receipt);
// withdrawCollateral
// const tx = await vanilla.withdrawCollateral(Maker, VAULT_ID, 0, vToken.collateral, 10);
// const receipt = await tx.wait();
// console.log(receipt);
console.log(`getNakedPoolBalance: ${yield vanilla.getNakedPoolBalance(vToken.collateralAsset)}`);
console.log(`balanceOf: ${yield src_1.VTokenImpl.BalanceOf(vToken.address, Maker.address)}`);
console.log(`getMarginRequired: ${yield vanilla.getMarginRequired(Maker.address, VAULT_ID, src_1.VaultType.NakedMargin)}`);
console.log(`getNakedMarginRequired: ${(0, src_1.getNakedMarginRequired)(vToken, shortAmount, underlyingPrice)}`);
}))();
//# sourceMappingURL=margin.js.map