UNPKG

@melonproject/protocol

Version:

Technology Regulated and Operated Investment Funds

165 lines (164 loc) 8.47 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { 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) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; Object.defineProperty(exports, "__esModule", { value: true }); const toBeTrueWith_1 = require("../utils/toBeTrueWith"); const getSystemTestEnvironment_1 = require("../utils/getSystemTestEnvironment"); const Environment_1 = require("../../utils/environment/Environment"); const getLogCurried_1 = require("../../utils/environment/getLogCurried"); const getFundDetails_1 = require("../../contracts/factory/calls/getFundDetails"); const isShutDown_1 = require("../../contracts/fund/hub/calls/isShutDown"); const getRoutes_1 = require("../../contracts/fund/hub/calls/getRoutes"); // import { getFundHoldings } from '../../contracts/fund/accounting/calls/getFundHoldings'; // import { performCalculations } from '../../contracts/fund/accounting/calls/performCalculations'; // import { getAmguPrice } from '../../contracts/engine/calls/getAmguPrice'; // // import { createPrice, valueIn, add, toFixed } from '@melonproject/token-math'; // import { getTokenBySymbol } from '../../utils/environment/getTokenBySymbol'; // import { createToken } from '@melonproject/token-math'; // import { createQuantity } from '@melonproject/token-math'; // import { getHistoricalInvestors } from '../../contracts/fund/participation/calls/getHistoricalInvestors'; // import { getTotalAmguConsumed } from '../../contracts/engine/calls/getTotalAmguConsumed'; // import { getTotalEtherConsumed } from '../../contracts/engine/calls/getTotalEtherConsumed'; // import { getTotalMlnBurned } from '../../contracts/engine/calls/getTotalMlnBurned'; // import { balanceOf } from '../../contracts/dependencies/token/calls/balanceOf'; // import { getPremiumPercent } from '../../contracts/engine/calls/getPremiumPercent'; // import { getToken } from '../../contracts/dependencies/token/calls/getToken'; // import { getInfo } from '../../contracts/dependencies/token/calls/getInfo'; // import { getFundComponents } from '../../utils/getFundComponents'; // import { getInfo } from '../../contracts/dependencies/token/calls/getInfo'; const getContract_1 = require("../../utils/solidity/getContract"); const Contracts_1 = require("../../Contracts"); const performCalculations_1 = require("../../contracts/fund/accounting/calls/performCalculations"); // import { getRegistryInformation } from '../../contracts/version/calls/getRegistryInformation'; // import { getVersionInformation } from '../../contracts/version/calls/getVersionInformation'; expect.extend({ toBeTrueWith: toBeTrueWith_1.toBeTrueWith }); const getLog = getLogCurried_1.getLogCurried('melon:protocol:systemTest:monitoring'); const capitalize = s => { if (typeof s !== 'string') return ''; return s.charAt(0).toUpperCase() + s.slice(1); }; describe('playground', () => { test('Happy path', () => __awaiter(this, void 0, void 0, function* () { const master = yield getSystemTestEnvironment_1.getSystemTestEnvironment(Environment_1.Tracks.KYBER_PRICE); const log = getLog(master); const { melonContracts } = master.deployment; // const { engine } = melonContracts; // Engine events // const engineContract = getContract(master, Contracts.Engine, engine); // const engineEvents = await engineContract.getPastEvents('allEvents', { // fromBlock: 0, // toBlock: 'latest', // }); // log.debug('Engine Events', engineEvents); // let amguPaidEvents = await engineContract.getPastEvents('AmguPaid', { // fromBlock: 0, // toBlock: 'latest', // }); // amguPaidEvents = await Promise.all( // amguPaidEvents.map(async x => { // return { // event: x.event, // returnValues: x.returnValues, // timestamp: (await master.eth.getBlock(x.blockNumber)).timestamp, // }; // }), // ); // log.debug('AmguPaid Events:', amguPaidEvents); // Version events // const versionContract = getContract( // master, // Contracts.Version, // melonContracts.version, // ); // let versionEvents = await versionContract.getPastEvents('allEvents', { // fromBlock: 0, // toBlock: 'latest', // }); // versionEvents = await Promise.all( // versionEvents.map(async x => { // return { // event: x.event, // returnValues: x.returnValues, // timestamp: (await master.eth.getBlock(x.blockNumber)).timestamp, // }; // }), // ); // log.debug('Version Events: ', versionEvents); // melonContracts.adapters // Registry events const registryContract = getContract_1.getContract(master, Contracts_1.Contracts.Registry, melonContracts.registry); let registryEvents = yield registryContract.getPastEvents('allEvents', { fromBlock: 0, toBlock: 'latest', }); // registryEvents = await Promise.all( // registryEvents.map(async x => { // return { // event: x.event, // returnValues: x.returnValues, // timestamp: (await master.eth.getBlock(x.blockNumber)).timestamp, // }; // }), // ); log.debug('Registry Events: ', registryEvents); // const versionInformation = getVersionInformation(master, melonContracts.version); // log.debug('Version Information: ', versionInformation); // const registryInformation = getRegistryInformation(master, melonContracts.registry); // log.debug('Registry Information: ', registryInformation); // go through funds const fundList = yield getFundDetails_1.getFundDetails(master, melonContracts.ranking, melonContracts.version); const contracts = [ // 'accounting', // 'feeManager', // 'participation', // 'policyManager', // 'priceSource', // 'registry', // 'shares', // 'trading', // 'vault', // 'version', ]; // const c = getContract(master, Contracts.FundFactory, melonContracts); // const e = await c.getPastEvents('allEvents', { fromBlock: 0, toBlock: 'latest' }); // const events = e.map((x) => { // return { // event: x. event // } // }) // log.debug('Fund Factory Events: ', events); // loop through funds to get interesting quantities for (let i in fundList) { // fundList[i].components = await getFundComponents(master, fundList[i].address); fundList[i].isShutDown = yield isShutDown_1.isShutDown(master, fundList[i].address); fundList[i].routes = yield getRoutes_1.getRoutes(master, fundList[i].address); for (let j in contracts) { const c = getContract_1.getContract(master, Contracts_1.Contracts[capitalize(contracts[j])], fundList[i].routes[contracts[j] + 'Address']); const e = yield c.getPastEvents('allEvents', { fromBlock: 0, toBlock: 'latest', }); fundList[i][contracts[j] + 'Events'] = yield Promise.all(e.map((x) => __awaiter(this, void 0, void 0, function* () { return { event: x.event, returnValues: x.returnValues, time: new Date(), }; }))); } } // await sleep(5000); log.debug('Fund List: ', fundList.registryEvents); for (let i in fundList) { fundList[i].calcs = yield performCalculations_1.performCalculations(master, fundList[i].routes.accountingAddress); } log.debug('second fund List: ', fundList); })); });