UNPKG

@volare.finance/volare.js

Version:
68 lines 3.57 kB
"use strict"; /** * @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