UNPKG

@melonproject/protocol

Version:

Technology Regulated and Operated Investment Funds

82 lines (81 loc) 4.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 token_math_1 = require("@melonproject/token-math"); const getContract_1 = require("../solidity/getContract"); const deploy_1 = require("../../contracts/dependencies/token/transactions/deploy"); const getToken_1 = require("../../contracts/dependencies/token/calls/getToken"); const deployMatchingMarket_1 = require("../../contracts/exchanges/transactions/deployMatchingMarket"); const deployKyberEnvironment_1 = require("../../contracts/exchanges/transactions/deployKyberEnvironment"); const deploy0xExchange_1 = require("../../contracts/exchanges/transactions/deploy0xExchange"); const deployEthfinex_1 = require("../../contracts/exchanges/transactions/deployEthfinex"); const ensure_1 = require("../guards/ensure"); const Contracts_1 = require("../../Contracts"); const deployBurnableToken_1 = require("../../contracts/dependencies/token/transactions/deployBurnableToken"); const deployThirdParty = (environment, tokens = [ token_math_1.createToken('WETH'), token_math_1.createToken('MLN'), token_math_1.createToken('EUR'), token_math_1.createToken('DGX', undefined, 9), token_math_1.createToken('ZRX'), token_math_1.createToken('DAI'), ]) => __awaiter(this, void 0, void 0, function* () { ensure_1.ensure(!!tokens.find(t => t.symbol === 'WETH'), 'WETH Token is required'); ensure_1.ensure(!!tokens.find(t => t.symbol === 'MLN'), 'MLN Token is required'); ensure_1.ensure(!!tokens.find(t => t.symbol === 'EUR'), 'EUR Token is required'); ensure_1.ensure(!!tokens.find(t => t.symbol === 'DGX'), 'DGX Token is required'); ensure_1.ensure(!!tokens.find(t => t.symbol === 'ZRX'), 'ZRX Token is required'); // : Promise<thirdPartyContracts> const deployedTokens = yield tokens.reduce((carryP, current) => __awaiter(this, void 0, void 0, function* () { const carry = yield carryP; let deployed; if (current.symbol === 'WETH') { deployed = yield getToken_1.getToken(environment, yield deploy_1.deployWeth(environment)); } else if (current.symbol === 'MLN') { deployed = yield getToken_1.getToken(environment, yield deployBurnableToken_1.deployBurnableToken(environment, 'MLN', 18, 'Melon Token')); } else { deployed = yield getToken_1.getToken(environment, yield deploy_1.deployToken(environment, current.symbol, current.decimals)); } return [...carry, deployed]; }), Promise.resolve([])); // Deposit WETH const depositAmount = token_math_1.power(new token_math_1.BigInteger(10), new token_math_1.BigInteger(24)); yield getContract_1.getContract(environment, Contracts_1.Contracts.Weth, deployedTokens.find(t => t.symbol === 'WETH').address) .methods.deposit() .send({ from: environment.wallet.address, value: `${depositAmount}`, }); const zrxToken = deployedTokens.find(t => t.symbol === 'ZRX'); const matchingMarket = yield deployMatchingMarket_1.deployMatchingMarket(environment, { tokens: deployedTokens, }); const kyber = yield deployKyberEnvironment_1.deployKyberEnvironment(environment, [ deployedTokens.find(t => t.symbol === 'MLN'), deployedTokens.find(t => t.symbol === 'EUR'), ]); const zeroEx = yield deploy0xExchange_1.deploy0xExchange(environment, { zrxToken }); const ethfinex = yield deployEthfinex_1.deployEthfinex(environment, { zeroExExchangeAddress: zeroEx, tokens: deployedTokens, }); return { exchanges: { ethfinex, kyber, matchingMarket, zeroEx, }, tokens: deployedTokens.map(token => (Object.assign({}, token, { reserveMin: 1000000000000000000 }))), }; }); exports.deployThirdParty = deployThirdParty;