import * as Bluebird from 'bluebird'; import * as _ from 'lodash'; import { Artifacts } from '../util/artifacts'; import { constants } from '../util/constants'; import { ContractInstance, Token } from '../util/types'; import { tokenInfo } from './config/token_info'; const { DummyToken, EtherToken, ZRXToken, TokenRegistry } = new Artifacts(artifacts); module.exports = (deployer: any, network: string) => { const tokens = network === 'live' ? tokenInfo.live : tokenInfo.development; deployer .then(() => { return TokenRegistry.deployed(); }) .then((tokenRegistry: ContractInstance) => { if (network !== 'live') { const totalSupply = Math.pow(10, 18) * 1000000000; return Bluebird.each( tokens.map((token: Token) => DummyToken.new(token.name, token.symbol, token.decimals, totalSupply)), _.noop, ).then((dummyTokens: ContractInstance[]) => { const weth = { address: EtherToken.address, name: 'Ether Token', symbol: 'WETH', url: '', decimals: 18, ipfsHash: constants.NULL_BYTES, swarmHash: constants.NULL_BYTES, }; return Bluebird.each( dummyTokens .map((tokenContract: ContractInstance, i: number) => { const token = tokens[i]; return tokenRegistry.addToken( tokenContract.address, token.name, token.symbol, token.decimals, token.ipfsHash, token.swarmHash, ); }) .concat( tokenRegistry.addToken( weth.address, weth.name, weth.symbol, weth.decimals, weth.ipfsHash, weth.swarmHash, ), ), _.noop, ); }); } else { const zrx = { address: ZRXToken.address, name: '0x Protocol Token', symbol: 'ZRX', url: 'https://www.0xproject.com/', decimals: 18, ipfsHash: constants.NULL_BYTES, swarmHash: constants.NULL_BYTES, }; return Bluebird.each( tokens .map((token: Token) => { return tokenRegistry.addToken( token.address, token.name, token.symbol, token.decimals, token.ipfsHash, token.swarmHash, ); }) .concat( tokenRegistry.addToken( zrx.address, zrx.name, zrx.symbol, zrx.decimals, zrx.ipfsHash, zrx.swarmHash, ), ), _.noop, ); } }); };