From 6b7cb13e9a416360975149cc9fc73e4d3591a8dc Mon Sep 17 00:00:00 2001 From: Amir Bandeali Date: Mon, 3 Jun 2019 15:49:33 -0700 Subject: [PATCH] Move DevUtils contract into its own package --- .circleci/config.yml | 2 + .gitignore | 2 + .prettierignore | 2 + README.md | 1 + contracts/dev-utils/CHANGELOG.json | 11 + contracts/dev-utils/CHANGELOG.md | 99 +++++ contracts/dev-utils/DEPLOYS.json | 1 + contracts/dev-utils/README.md | 73 ++++ contracts/dev-utils/compiler.json | 26 ++ .../contracts/src}/DevUtils.sol | 0 .../contracts/src}/OrderValidationUtils.sol | 0 contracts/dev-utils/package.json | 89 +++++ contracts/dev-utils/src/artifacts.ts | 9 + contracts/dev-utils/src/index.ts | 2 + contracts/dev-utils/src/wrappers.ts | 6 + .../test/dev_utils.ts | 4 +- contracts/dev-utils/test/global_hooks.ts | 19 + contracts/dev-utils/tsconfig.json | 7 + contracts/dev-utils/tslint.json | 6 + contracts/extensions/compiler.json | 1 - contracts/extensions/package.json | 2 +- contracts/extensions/src/artifacts.ts | 2 - contracts/extensions/src/wrappers.ts | 1 - contracts/extensions/tsconfig.json | 1 - package.json | 2 +- .../src/generated-wrappers/coordinator.ts | 368 +++++++++--------- tsconfig.json | 1 + 27 files changed, 544 insertions(+), 193 deletions(-) create mode 100644 contracts/dev-utils/CHANGELOG.json create mode 100644 contracts/dev-utils/CHANGELOG.md create mode 100644 contracts/dev-utils/DEPLOYS.json create mode 100644 contracts/dev-utils/README.md create mode 100644 contracts/dev-utils/compiler.json rename contracts/{extensions/contracts/src/DevUtils => dev-utils/contracts/src}/DevUtils.sol (100%) rename contracts/{extensions/contracts/src/DevUtils => dev-utils/contracts/src}/OrderValidationUtils.sol (100%) create mode 100644 contracts/dev-utils/package.json create mode 100644 contracts/dev-utils/src/artifacts.ts create mode 100644 contracts/dev-utils/src/index.ts create mode 100644 contracts/dev-utils/src/wrappers.ts rename contracts/{extensions => dev-utils}/test/dev_utils.ts (99%) create mode 100644 contracts/dev-utils/test/global_hooks.ts create mode 100644 contracts/dev-utils/tsconfig.json create mode 100644 contracts/dev-utils/tslint.json diff --git a/.circleci/config.yml b/.circleci/config.yml index 58e16383f8..9c1046dc0b 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -58,6 +58,7 @@ jobs: - run: yarn wsrun test:circleci @0x/contracts-exchange - run: yarn wsrun test:circleci @0x/contracts-exchange-forwarder - run: yarn wsrun test:circleci @0x/contracts-coordinator + - run: yarn wsrun test:circleci @0x/contracts-dev-utils test-contracts-geth: docker: - image: circleci/node:9-browsers @@ -80,6 +81,7 @@ jobs: - run: TEST_PROVIDER=geth yarn wsrun test:circleci @0x/contracts-exchange - run: TEST_PROVIDER=geth yarn wsrun test:circleci @0x/contracts-exchange-forwarder - run: TEST_PROVIDER=geth yarn wsrun test:circleci @0x/contracts-coordinator + - run: TEST_PROVIDER=geth yarn wsrun test:circleci @0x/contracts-dev-utils test-publish: resource_class: medium+ docker: diff --git a/.gitignore b/.gitignore index 203d8ad811..78d357c298 100644 --- a/.gitignore +++ b/.gitignore @@ -94,6 +94,7 @@ contracts/erc721/generated-artifacts/ contracts/erc1155/generated-artifacts/ contracts/extensions/generated-artifacts/ contracts/exchange-forwarder/generated-artifacts/ +contracts/dev-utils/generated-artifacts/ packages/sol-tracing-utils/test/fixtures/artifacts/ packages/metacoin/artifacts/ @@ -110,6 +111,7 @@ contracts/erc721/generated-wrappers/ contracts/erc1155/generated-wrappers/ contracts/extensions/generated-wrappers/ contracts/exchange-forwarder/generated-wrappers/ +contracts/dev-utils/generated-wrappers/ packages/metacoin/src/contract_wrappers # solc-bin in sol-compiler diff --git a/.prettierignore b/.prettierignore index 6614aec2a7..2c92af5de2 100644 --- a/.prettierignore +++ b/.prettierignore @@ -22,6 +22,8 @@ lib /contracts/extensions/generated-artifacts /contracts/exchange-forwarder/generated-wrappers /contracts/exchange-forwarder/generated-artifacts +/contracts/dev-utils/generated-wrappers +/contracts/dev-utils/generated-artifacts /packages/abi-gen-wrappers/src/generated-wrappers /packages/contract-artifacts/artifacts /python-packages/contract_artifacts/src/zero_ex/contract_artifacts/artifacts diff --git a/README.md b/README.md index f6299bf43e..5c080b63c2 100644 --- a/README.md +++ b/README.md @@ -50,6 +50,7 @@ These packages are all under development. See [/contracts/README.md](/contracts/ | [`@0x/contracts-test-utils`](/contracts/test-utils) | [![npm](https://img.shields.io/npm/v/@0x/contracts-test-utils.svg)](https://www.npmjs.com/package/@0x/contracts-test-utils) | Typescript/Javascript shared utilities used for testing contracts | | [`@0x/contracts-utils`](/contracts/utils) | [![npm](https://img.shields.io/npm/v/@0x/contracts-utils.svg)](https://www.npmjs.com/package/@0x/contracts-utils) | Generic libraries and utilities used throughout all of the contracts | | [`@0x/contracts-coordinator`](/contracts/coordinator) | [![npm](https://img.shields.io/npm/v/@0x/contracts-coordinator.svg)](https://www.npmjs.com/package/@0x/contracts-coordinator) | A contract that allows users to execute 0x transactions with permission from a Coordinator | +| [`@0x/contracts-dev-utils`](/contracts/dev-utils) | [![npm](https://img.shields.io/npm/v/@0x/contracts-dev-utils.svg)](https://www.npmjs.com/package/@0x/contracts-dev-utils) | A contract contains utility functions for developers (such as validating many orders using a single eth_call) | ### Typescript/Javascript Packages diff --git a/contracts/dev-utils/CHANGELOG.json b/contracts/dev-utils/CHANGELOG.json new file mode 100644 index 0000000000..a3ea7fc26f --- /dev/null +++ b/contracts/dev-utils/CHANGELOG.json @@ -0,0 +1,11 @@ +[ + { + "version": "0.0.1", + "changes": [ + { + "note": "Create dev-utils package", + "pr": TODO + } + ] + } +] diff --git a/contracts/dev-utils/CHANGELOG.md b/contracts/dev-utils/CHANGELOG.md new file mode 100644 index 0000000000..2eb59be5c7 --- /dev/null +++ b/contracts/dev-utils/CHANGELOG.md @@ -0,0 +1,99 @@ + + +CHANGELOG + +## v3.1.5 - _May 24, 2019_ + + * Dependencies updated + +## v3.1.4 - _May 15, 2019_ + + * Dependencies updated + +## v3.1.3 - _May 14, 2019_ + + * Dependencies updated + +## v3.1.2 - _May 10, 2019_ + + * Dependencies updated + +## v3.1.1 - _April 11, 2019_ + + * Dependencies updated + +## v3.1.0 - _March 21, 2019_ + + * Run Web3ProviderEngine without excess block polling (#1695) + +## v3.0.0 - _March 20, 2019_ + + * Do not reexport external dependencies (#1682) + * Upgrade contracts to Solidity 0.5.5 (#1682) + +## v2.0.8 - _March 1, 2019_ + + * Dependencies updated + +## v2.0.7 - _February 27, 2019_ + + * Dependencies updated + +## v2.0.6 - _February 26, 2019_ + + * Dependencies updated + +## v2.0.5 - _February 25, 2019_ + + * Dependencies updated + +## v2.0.4 - _February 9, 2019_ + + * Dependencies updated + +## v2.0.3 - _February 7, 2019_ + + * Dependencies updated + +## v2.0.2 - _February 7, 2019_ + + * Fake publish to enable pinning + +## v2.0.1 - _February 6, 2019_ + + * Dependencies updated + +## v2.0.0 - _February 5, 2019_ + + * Upgrade the bignumber.js to v8.0.2 (#1517) + * Move Forwarder contract into new package (#1539) + * Nest extensions under src directory (#1539) + +## v1.2.3 - _January 17, 2019_ + + * Dependencies updated + +## v1.2.2 - _January 15, 2019_ + + * Dependencies updated + +## v1.2.1 - _January 11, 2019_ + + * Dependencies updated + +## v1.2.0 - _January 9, 2019_ + + * Added Dutch Auction Wrapper (#1465) + +## v1.1.0 - _Invalid date_ + + * Added Balance Threshold Filter (#1383) + * Add OrderMatcher (#1117) + * Add OrderValidator (#1464) + +## v1.0.2 - _December 13, 2018_ + + * Dependencies updated diff --git a/contracts/dev-utils/DEPLOYS.json b/contracts/dev-utils/DEPLOYS.json new file mode 100644 index 0000000000..fe51488c70 --- /dev/null +++ b/contracts/dev-utils/DEPLOYS.json @@ -0,0 +1 @@ +[] diff --git a/contracts/dev-utils/README.md b/contracts/dev-utils/README.md new file mode 100644 index 0000000000..8c62bce579 --- /dev/null +++ b/contracts/dev-utils/README.md @@ -0,0 +1,73 @@ +## Dev-Utils + +This package implements various utilities for developers. For example, the `DevUtils` contract can query batches of balances or allowances given some `assetData`, can validate batches of orders, and can decode 0x-specific calldata. Addresses of the deployed contracts can be found in the 0x [wiki](https://0xproject.com/wiki#Deployed-Addresses) or the [DEPLOYS](./DEPLOYS.json) file within this package. + +## Installation + +**Install** + +```bash +npm install @0x/contracts-dev-utils --save +``` + +## Bug bounty + +A bug bounty for the 2.0.0 contracts is ongoing! Instructions can be found [here](https://0xproject.com/wiki#Bug-Bounty). + +## Contributing + +We strongly recommend that the community help us make improvements and determine the future direction of the protocol. To report bugs within this package, please create an issue in this repository. + +For proposals regarding the 0x protocol's smart contract architecture, message format, or additional functionality, go to the [0x Improvement Proposals (ZEIPs)](https://github.com/0xProject/ZEIPs) repository and follow the contribution guidelines provided therein. + +Please read our [contribution guidelines](../../CONTRIBUTING.md) before getting started. + +### Install Dependencies + +If you don't have yarn workspaces enabled (Yarn < v1.0) - enable them: + +```bash +yarn config set workspaces-experimental true +``` + +Then install dependencies + +```bash +yarn install +``` + +### Build + +To build this package and all other monorepo packages that it depends on, run the following from the monorepo root directory: + +```bash +PKG=@0x/contracts-extensions yarn build +``` + +Or continuously rebuild on change: + +```bash +PKG=@0x/contracts-extensions yarn watch +``` + +### Clean + +```bash +yarn clean +``` + +### Lint + +```bash +yarn lint +``` + +### Run Tests + +```bash +yarn test +``` + +#### Testing options + +Contracts testing options like coverage, profiling, revert traces or backing node choosing - are described [here](../TESTING.md). diff --git a/contracts/dev-utils/compiler.json b/contracts/dev-utils/compiler.json new file mode 100644 index 0000000000..2157d0a193 --- /dev/null +++ b/contracts/dev-utils/compiler.json @@ -0,0 +1,26 @@ +{ + "artifactsDir": "./generated-artifacts", + "contractsDir": "./contracts", + "useDockerisedSolc": false, + "isOfflineMode": false, + "compilerSettings": { + "evmVersion": "constantinople", + "optimizer": { + "enabled": true, + "runs": 1000000, + "details": { "yul": true, "deduplicate": true, "cse": true, "constantOptimizer": true } + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode.object", + "evm.bytecode.sourceMap", + "evm.deployedBytecode.object", + "evm.deployedBytecode.sourceMap" + ] + } + } + }, + "contracts": ["src/DevUtils.sol"] +} diff --git a/contracts/extensions/contracts/src/DevUtils/DevUtils.sol b/contracts/dev-utils/contracts/src/DevUtils.sol similarity index 100% rename from contracts/extensions/contracts/src/DevUtils/DevUtils.sol rename to contracts/dev-utils/contracts/src/DevUtils.sol diff --git a/contracts/extensions/contracts/src/DevUtils/OrderValidationUtils.sol b/contracts/dev-utils/contracts/src/OrderValidationUtils.sol similarity index 100% rename from contracts/extensions/contracts/src/DevUtils/OrderValidationUtils.sol rename to contracts/dev-utils/contracts/src/OrderValidationUtils.sol diff --git a/contracts/dev-utils/package.json b/contracts/dev-utils/package.json new file mode 100644 index 0000000000..d12ddb5281 --- /dev/null +++ b/contracts/dev-utils/package.json @@ -0,0 +1,89 @@ +{ + "name": "@0x/contracts-dev-utils", + "version": "0.0.1", + "engines": { + "node": ">=6.12" + }, + "description": "Smart contract extensions of 0x protocol", + "main": "lib/src/index.js", + "directories": { + "test": "test" + }, + "scripts": { + "build": "yarn pre_build && tsc -b", + "build:ci": "yarn build", + "pre_build": "run-s compile generate_contract_wrappers", + "test": "yarn run_mocha", + "rebuild_and_test": "run-s build test", + "test:coverage": "SOLIDITY_COVERAGE=true run-s build run_mocha coverage:report:text coverage:report:lcov", + "test:profiler": "SOLIDITY_PROFILER=true run-s build run_mocha profiler:report:html", + "test:trace": "SOLIDITY_REVERT_TRACE=true run-s build run_mocha", + "run_mocha": "mocha --require source-map-support/register --require make-promises-safe 'lib/test/**/*.js' --timeout 100000 --bail --exit", + "compile": "sol-compiler", + "watch": "sol-compiler -w", + "clean": "shx rm -rf lib generated-artifacts generated-wrappers", + "generate_contract_wrappers": "abi-gen --abis ${npm_package_config_abis} --template ../../node_modules/@0x/abi-gen-templates/contract.handlebars --partials '../../node_modules/@0x/abi-gen-templates/partials/**/*.handlebars' --output generated-wrappers --backend ethers", + "lint": "tslint --format stylish --project . --exclude ./generated-wrappers/**/* --exclude ./generated-artifacts/**/* --exclude **/lib/**/* && yarn lint-contracts", + "fix": "tslint --fix --format stylish --project . --exclude ./generated-wrappers/**/* --exclude ./generated-artifacts/**/* --exclude **/lib/**/* && yarn lint-contracts", + "coverage:report:text": "istanbul report text", + "coverage:report:html": "istanbul report html && open coverage/index.html", + "profiler:report:html": "istanbul report html && open coverage/index.html", + "coverage:report:lcov": "istanbul report lcov", + "test:circleci": "yarn test", + "contracts:gen": "contracts-gen", + "lint-contracts": "solhint -c ../.solhint.json contracts/**/**/**/**/*.sol" + }, + "config": { + "abis": "./generated-artifacts/@(DevUtils).json", + "abis:comment": "This list is auto-generated by contracts-gen. Don't edit manually." + }, + "repository": { + "type": "git", + "url": "https://github.com/0xProject/0x-monorepo.git" + }, + "license": "Apache-2.0", + "bugs": { + "url": "https://github.com/0xProject/0x-monorepo/issues" + }, + "homepage": "https://github.com/0xProject/0x-monorepo/contracts/extensions/README.md", + "devDependencies": { + "@0x/abi-gen": "^2.0.10", + "@0x/contract-wrappers": "^9.1.4", + "@0x/contracts-gen": "^1.0.9", + "@0x/contracts-test-utils": "^3.1.7", + "@0x/dev-utils": "^2.2.3", + "@0x/sol-compiler": "^3.1.8", + "@0x/tslint-config": "^3.0.1", + "@types/lodash": "4.14.104", + "@types/node": "*", + "chai": "^4.0.1", + "chai-as-promised": "^7.1.0", + "chai-bignumber": "^3.0.0", + "dirty-chai": "^2.0.1", + "make-promises-safe": "^1.1.0", + "mocha": "^4.1.0", + "npm-run-all": "^4.1.2", + "shx": "^0.2.2", + "solhint": "^1.4.1", + "tslint": "5.11.0", + "typescript": "3.0.1" + }, + "dependencies": { + "@0x/base-contract": "^5.1.0", + "@0x/contracts-asset-proxy": "^2.1.5", + "@0x/contracts-erc20": "^2.2.5", + "@0x/contracts-erc721": "^2.1.6", + "@0x/contracts-exchange": "^2.1.5", + "@0x/contracts-exchange-libs": "^2.1.6", + "@0x/contracts-utils": "^3.1.6", + "@0x/order-utils": "^8.1.1", + "@0x/types": "^2.2.2", + "@0x/typescript-typings": "^4.2.2", + "@0x/utils": "^4.3.3", + "@0x/web3-wrapper": "^6.0.6", + "ethereum-types": "^2.1.2" + }, + "publishConfig": { + "access": "public" + } +} diff --git a/contracts/dev-utils/src/artifacts.ts b/contracts/dev-utils/src/artifacts.ts new file mode 100644 index 0000000000..148184dd70 --- /dev/null +++ b/contracts/dev-utils/src/artifacts.ts @@ -0,0 +1,9 @@ +/* + * ----------------------------------------------------------------------------- + * Warning: This file is auto-generated by contracts-gen. Don't edit manually. + * ----------------------------------------------------------------------------- + */ +import { ContractArtifact } from 'ethereum-types'; + +import * as DevUtils from '../generated-artifacts/DevUtils.json'; +export const artifacts = { DevUtils: DevUtils as ContractArtifact }; diff --git a/contracts/dev-utils/src/index.ts b/contracts/dev-utils/src/index.ts new file mode 100644 index 0000000000..d55f08ea2d --- /dev/null +++ b/contracts/dev-utils/src/index.ts @@ -0,0 +1,2 @@ +export * from './artifacts'; +export * from './wrappers'; diff --git a/contracts/dev-utils/src/wrappers.ts b/contracts/dev-utils/src/wrappers.ts new file mode 100644 index 0000000000..ca8ce678dc --- /dev/null +++ b/contracts/dev-utils/src/wrappers.ts @@ -0,0 +1,6 @@ +/* + * ----------------------------------------------------------------------------- + * Warning: This file is auto-generated by contracts-gen. Don't edit manually. + * ----------------------------------------------------------------------------- + */ +export * from '../generated-wrappers/dev_utils'; diff --git a/contracts/extensions/test/dev_utils.ts b/contracts/dev-utils/test/dev_utils.ts similarity index 99% rename from contracts/extensions/test/dev_utils.ts rename to contracts/dev-utils/test/dev_utils.ts index 555002d3f0..7d8ac0cfe0 100644 --- a/contracts/extensions/test/dev_utils.ts +++ b/contracts/dev-utils/test/dev_utils.ts @@ -1,7 +1,7 @@ import { ERC20ProxyContract, ERC20Wrapper, ERC721ProxyContract, ERC721Wrapper } from '@0x/contracts-asset-proxy'; import { DummyERC20TokenContract } from '@0x/contracts-erc20'; import { DummyERC721TokenContract } from '@0x/contracts-erc721'; -import { ExchangeContract, ExchangeWrapper } from '@0x/contracts-exchange'; +import { artifacts as exchangeArtifacts, ExchangeContract, ExchangeWrapper } from '@0x/contracts-exchange'; import { chaiSetup, constants, @@ -73,7 +73,7 @@ describe('DevUtils', () => { zrxAssetData = assetDataUtils.encodeERC20AssetData(zrxToken.address); exchange = await ExchangeContract.deployFrom0xArtifactAsync( - artifacts.Exchange, + exchangeArtifacts.Exchange, provider, txDefaults, zrxAssetData, diff --git a/contracts/dev-utils/test/global_hooks.ts b/contracts/dev-utils/test/global_hooks.ts new file mode 100644 index 0000000000..2ca47d433b --- /dev/null +++ b/contracts/dev-utils/test/global_hooks.ts @@ -0,0 +1,19 @@ +import { env, EnvVars } from '@0x/dev-utils'; + +import { coverage, profiler, provider } from '@0x/contracts-test-utils'; +import { providerUtils } from '@0x/utils'; + +before('start web3 provider', () => { + providerUtils.startProviderEngine(provider); +}); +after('generate coverage report', async () => { + if (env.parseBoolean(EnvVars.SolidityCoverage)) { + const coverageSubprovider = coverage.getCoverageSubproviderSingleton(); + await coverageSubprovider.writeCoverageAsync(); + } + if (env.parseBoolean(EnvVars.SolidityProfiler)) { + const profilerSubprovider = profiler.getProfilerSubproviderSingleton(); + await profilerSubprovider.writeProfilerOutputAsync(); + } + provider.stop(); +}); diff --git a/contracts/dev-utils/tsconfig.json b/contracts/dev-utils/tsconfig.json new file mode 100644 index 0000000000..b428ecd4d9 --- /dev/null +++ b/contracts/dev-utils/tsconfig.json @@ -0,0 +1,7 @@ +{ + "extends": "../../tsconfig", + "compilerOptions": { "outDir": "lib", "rootDir": ".", "resolveJsonModule": true }, + "include": ["./src/**/*", "./test/**/*", "./generated-wrappers/**/*"], + "files": ["generated-artifacts/DevUtils.json"], + "exclude": ["./deploy/solc/solc_bin"] +} diff --git a/contracts/dev-utils/tslint.json b/contracts/dev-utils/tslint.json new file mode 100644 index 0000000000..1bb3ac2a22 --- /dev/null +++ b/contracts/dev-utils/tslint.json @@ -0,0 +1,6 @@ +{ + "extends": ["@0x/tslint-config"], + "rules": { + "custom-no-magic-numbers": false + } +} diff --git a/contracts/extensions/compiler.json b/contracts/extensions/compiler.json index 7d513dc38e..a58e45e4fe 100644 --- a/contracts/extensions/compiler.json +++ b/contracts/extensions/compiler.json @@ -27,7 +27,6 @@ "@0x/contracts-exchange/contracts/examples/ExchangeWrapper.sol", "@0x/contracts-exchange/contracts/src/Exchange.sol", "src/BalanceThresholdFilter/BalanceThresholdFilter.sol", - "src/DevUtils/DevUtils.sol", "src/DutchAuction/DutchAuction.sol", "src/OrderMatcher/OrderMatcher.sol" ] diff --git a/contracts/extensions/package.json b/contracts/extensions/package.json index eb89070979..6aa7f2a705 100644 --- a/contracts/extensions/package.json +++ b/contracts/extensions/package.json @@ -34,7 +34,7 @@ "lint-contracts": "solhint -c ../.solhint.json contracts/**/**/**/**/*.sol" }, "config": { - "abis": "./generated-artifacts/@(BalanceThresholdFilter|DevUtils|DutchAuction|Exchange|ExchangeWrapper|OrderMatcher|WETH9).json", + "abis": "./generated-artifacts/@(BalanceThresholdFilter|DutchAuction|Exchange|ExchangeWrapper|OrderMatcher|WETH9).json", "abis:comment": "This list is auto-generated by contracts-gen. Don't edit manually." }, "repository": { diff --git a/contracts/extensions/src/artifacts.ts b/contracts/extensions/src/artifacts.ts index 49a56d9e48..2a286d5e1d 100644 --- a/contracts/extensions/src/artifacts.ts +++ b/contracts/extensions/src/artifacts.ts @@ -6,7 +6,6 @@ import { ContractArtifact } from 'ethereum-types'; import * as BalanceThresholdFilter from '../generated-artifacts/BalanceThresholdFilter.json'; -import * as DevUtils from '../generated-artifacts/DevUtils.json'; import * as DutchAuction from '../generated-artifacts/DutchAuction.json'; import * as Exchange from '../generated-artifacts/Exchange.json'; import * as ExchangeWrapper from '../generated-artifacts/ExchangeWrapper.json'; @@ -19,5 +18,4 @@ export const artifacts = { BalanceThresholdFilter: BalanceThresholdFilter as ContractArtifact, DutchAuction: DutchAuction as ContractArtifact, OrderMatcher: OrderMatcher as ContractArtifact, - DevUtils: DevUtils as ContractArtifact, }; diff --git a/contracts/extensions/src/wrappers.ts b/contracts/extensions/src/wrappers.ts index 9a227280ee..26ae645ceb 100644 --- a/contracts/extensions/src/wrappers.ts +++ b/contracts/extensions/src/wrappers.ts @@ -4,7 +4,6 @@ * ----------------------------------------------------------------------------- */ export * from '../generated-wrappers/balance_threshold_filter'; -export * from '../generated-wrappers/dev_utils'; export * from '../generated-wrappers/dutch_auction'; export * from '../generated-wrappers/exchange'; export * from '../generated-wrappers/exchange_wrapper'; diff --git a/contracts/extensions/tsconfig.json b/contracts/extensions/tsconfig.json index 1246d38e1d..73784c22b3 100644 --- a/contracts/extensions/tsconfig.json +++ b/contracts/extensions/tsconfig.json @@ -4,7 +4,6 @@ "include": ["./src/**/*", "./test/**/*", "./generated-wrappers/**/*"], "files": [ "generated-artifacts/BalanceThresholdFilter.json", - "generated-artifacts/DevUtils.json", "generated-artifacts/DutchAuction.json", "generated-artifacts/Exchange.json", "generated-artifacts/ExchangeWrapper.json", diff --git a/package.json b/package.json index a14f286adf..edf1b474fb 100644 --- a/package.json +++ b/package.json @@ -48,7 +48,7 @@ "lint": "wsrun lint $PKG --fast-exit --parallel --exclude-missing" }, "config": { - "contractsPackages": "@0x/contracts-asset-proxy @0x/contracts-erc20 @0x/contracts-erc721 @0x/contracts-erc1155 @0x/contracts-exchange @0x/contracts-exchange-forwarder @0x/contracts-exchange-libs @0x/contracts-extensions @0x/contracts-multisig @0x/contracts-test-utils @0x/contracts-utils @0x/contracts-coordinator", + "contractsPackages": "@0x/contracts-asset-proxy @0x/contracts-erc20 @0x/contracts-erc721 @0x/contracts-erc1155 @0x/contracts-exchange @0x/contracts-exchange-forwarder @0x/contracts-exchange-libs @0x/contracts-extensions @0x/contracts-multisig @0x/contracts-test-utils @0x/contracts-utils @0x/contracts-coordinator @0x/contracts-dev-utils", "mnemonic": "concert load couple harbor equip island argue ramp clarify fence smart topic", "packagesWithDocPages": "0x.js connect json-schemas subproviders web3-wrapper contract-wrappers order-utils order-watcher sol-compiler sol-coverage sol-profiler sol-trace ethereum-types asset-buyer migrations", "ignoreDependencyVersions": "@types/styled-components @types/node", diff --git a/packages/abi-gen-wrappers/src/generated-wrappers/coordinator.ts b/packages/abi-gen-wrappers/src/generated-wrappers/coordinator.ts index c45701b4a9..eba1e902d9 100644 --- a/packages/abi-gen-wrappers/src/generated-wrappers/coordinator.ts +++ b/packages/abi-gen-wrappers/src/generated-wrappers/coordinator.ts @@ -23,7 +23,6 @@ import { assert } from '@0x/assert'; import * as ethers from 'ethers'; // tslint:enable:no-unused-variable - /* istanbul ignore next */ // tslint:disable:no-parameter-reassignment // tslint:disable-next-line:class-name @@ -34,8 +33,7 @@ export class CoordinatorContract extends BaseContract { signature: string, callData: Partial = {}, defaultBlock?: BlockParam, - ): Promise { + ): Promise { assert.isString('hash', hash); assert.isString('signature', signature); assert.doesConformToSchema('callData', callData, schemas.callDataSchema, [ @@ -46,10 +44,8 @@ export class CoordinatorContract extends BaseContract { if (defaultBlock !== undefined) { assert.isBlockParam('defaultBlock', defaultBlock); } - const self = this as any as CoordinatorContract; - const encodedData = self._strictEncodeArguments('getSignerAddress(bytes32,bytes)', [hash, - signature - ]); + const self = (this as any) as CoordinatorContract; + const encodedData = self._strictEncodeArguments('getSignerAddress(bytes32,bytes)', [hash, signature]); const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync( { to: self.address, @@ -62,20 +58,17 @@ export class CoordinatorContract extends BaseContract { BaseContract._throwIfRevertWithReasonCallResult(rawCallResult); const abiEncoder = self._lookupAbiEncoder('getSignerAddress(bytes32,bytes)'); // tslint:disable boolean-naming - const result = abiEncoder.strictDecodeReturnValue(rawCallResult); + const result = abiEncoder.strictDecodeReturnValue(rawCallResult); // tslint:enable boolean-naming return result; }, }; public getTransactionHash = { async callAsync( - transaction: {salt: BigNumber;signerAddress: string;data: string}, + transaction: { salt: BigNumber; signerAddress: string; data: string }, callData: Partial = {}, defaultBlock?: BlockParam, - ): Promise { - + ): Promise { assert.doesConformToSchema('callData', callData, schemas.callDataSchema, [ schemas.addressSchema, schemas.numberSchema, @@ -84,9 +77,10 @@ export class CoordinatorContract extends BaseContract { if (defaultBlock !== undefined) { assert.isBlockParam('defaultBlock', defaultBlock); } - const self = this as any as CoordinatorContract; - const encodedData = self._strictEncodeArguments('getTransactionHash((uint256,address,bytes))', [transaction - ]); + const self = (this as any) as CoordinatorContract; + const encodedData = self._strictEncodeArguments('getTransactionHash((uint256,address,bytes))', [ + transaction, + ]); const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync( { to: self.address, @@ -99,20 +93,22 @@ export class CoordinatorContract extends BaseContract { BaseContract._throwIfRevertWithReasonCallResult(rawCallResult); const abiEncoder = self._lookupAbiEncoder('getTransactionHash((uint256,address,bytes))'); // tslint:disable boolean-naming - const result = abiEncoder.strictDecodeReturnValue(rawCallResult); + const result = abiEncoder.strictDecodeReturnValue(rawCallResult); // tslint:enable boolean-naming return result; }, }; public getCoordinatorApprovalHash = { async callAsync( - approval: {txOrigin: string;transactionHash: string;transactionSignature: string;approvalExpirationTimeSeconds: BigNumber}, + approval: { + txOrigin: string; + transactionHash: string; + transactionSignature: string; + approvalExpirationTimeSeconds: BigNumber; + }, callData: Partial = {}, defaultBlock?: BlockParam, - ): Promise { - + ): Promise { assert.doesConformToSchema('callData', callData, schemas.callDataSchema, [ schemas.addressSchema, schemas.numberSchema, @@ -121,9 +117,11 @@ export class CoordinatorContract extends BaseContract { if (defaultBlock !== undefined) { assert.isBlockParam('defaultBlock', defaultBlock); } - const self = this as any as CoordinatorContract; - const encodedData = self._strictEncodeArguments('getCoordinatorApprovalHash((address,bytes32,bytes,uint256))', [approval - ]); + const self = (this as any) as CoordinatorContract; + const encodedData = self._strictEncodeArguments( + 'getCoordinatorApprovalHash((address,bytes32,bytes,uint256))', + [approval], + ); const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync( { to: self.address, @@ -136,54 +134,50 @@ export class CoordinatorContract extends BaseContract { BaseContract._throwIfRevertWithReasonCallResult(rawCallResult); const abiEncoder = self._lookupAbiEncoder('getCoordinatorApprovalHash((address,bytes32,bytes,uint256))'); // tslint:disable boolean-naming - const result = abiEncoder.strictDecodeReturnValue(rawCallResult); + const result = abiEncoder.strictDecodeReturnValue(rawCallResult); // tslint:enable boolean-naming return result; }, }; public executeTransaction = { async sendTransactionAsync( - transaction: {salt: BigNumber;signerAddress: string;data: string}, + transaction: { salt: BigNumber; signerAddress: string; data: string }, txOrigin: string, transactionSignature: string, approvalExpirationTimeSeconds: BigNumber[], approvalSignatures: string[], - txData?: Partial | undefined, + txData?: Partial | undefined, ): Promise { - - assert.isString('txOrigin', txOrigin); - assert.isString('transactionSignature', transactionSignature); - assert.isArray('approvalExpirationTimeSeconds', approvalExpirationTimeSeconds); - assert.isArray('approvalSignatures', approvalSignatures); - const self = this as any as CoordinatorContract; - const encodedData = self._strictEncodeArguments('executeTransaction((uint256,address,bytes),address,bytes,uint256[],bytes[])', [transaction, - txOrigin, - transactionSignature, - approvalExpirationTimeSeconds, - approvalSignatures - ]); - const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync( - { - to: self.address, - ...txData, - data: encodedData, - }, - self._web3Wrapper.getContractDefaults(), - self.executeTransaction.estimateGasAsync.bind( - self, - transaction, - txOrigin, - transactionSignature, - approvalExpirationTimeSeconds, - approvalSignatures - ), - ); - const txHash = await self._web3Wrapper.sendTransactionAsync(txDataWithDefaults); - return txHash; + assert.isString('txOrigin', txOrigin); + assert.isString('transactionSignature', transactionSignature); + assert.isArray('approvalExpirationTimeSeconds', approvalExpirationTimeSeconds); + assert.isArray('approvalSignatures', approvalSignatures); + const self = (this as any) as CoordinatorContract; + const encodedData = self._strictEncodeArguments( + 'executeTransaction((uint256,address,bytes),address,bytes,uint256[],bytes[])', + [transaction, txOrigin, transactionSignature, approvalExpirationTimeSeconds, approvalSignatures], + ); + const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync( + { + to: self.address, + ...txData, + data: encodedData, + }, + self._web3Wrapper.getContractDefaults(), + self.executeTransaction.estimateGasAsync.bind( + self, + transaction, + txOrigin, + transactionSignature, + approvalExpirationTimeSeconds, + approvalSignatures, + ), + ); + const txHash = await self._web3Wrapper.sendTransactionAsync(txDataWithDefaults); + return txHash; }, awaitTransactionSuccessAsync( - transaction: {salt: BigNumber;signerAddress: string;data: string}, + transaction: { salt: BigNumber; signerAddress: string; data: string }, txOrigin: string, transactionSignature: string, approvalExpirationTimeSeconds: BigNumber[], @@ -192,93 +186,86 @@ export class CoordinatorContract extends BaseContract { pollingIntervalMs?: number, timeoutMs?: number, ): PromiseWithTransactionHash { - - assert.isString('txOrigin', txOrigin); - assert.isString('transactionSignature', transactionSignature); - assert.isArray('approvalExpirationTimeSeconds', approvalExpirationTimeSeconds); - assert.isArray('approvalSignatures', approvalSignatures); - const self = this as any as CoordinatorContract; - const txHashPromise = self.executeTransaction.sendTransactionAsync(transaction, - txOrigin, - transactionSignature, - approvalExpirationTimeSeconds, - approvalSignatures - , txData); - return new PromiseWithTransactionHash( - txHashPromise, - (async (): Promise => { - // When the transaction hash resolves, wait for it to be mined. - return self._web3Wrapper.awaitTransactionSuccessAsync( - await txHashPromise, - pollingIntervalMs, - timeoutMs, - ); - })(), - ); + assert.isString('txOrigin', txOrigin); + assert.isString('transactionSignature', transactionSignature); + assert.isArray('approvalExpirationTimeSeconds', approvalExpirationTimeSeconds); + assert.isArray('approvalSignatures', approvalSignatures); + const self = (this as any) as CoordinatorContract; + const txHashPromise = self.executeTransaction.sendTransactionAsync( + transaction, + txOrigin, + transactionSignature, + approvalExpirationTimeSeconds, + approvalSignatures, + txData, + ); + return new PromiseWithTransactionHash( + txHashPromise, + (async (): Promise => { + // When the transaction hash resolves, wait for it to be mined. + return self._web3Wrapper.awaitTransactionSuccessAsync( + await txHashPromise, + pollingIntervalMs, + timeoutMs, + ); + })(), + ); }, async estimateGasAsync( - transaction: {salt: BigNumber;signerAddress: string;data: string}, + transaction: { salt: BigNumber; signerAddress: string; data: string }, txOrigin: string, transactionSignature: string, approvalExpirationTimeSeconds: BigNumber[], approvalSignatures: string[], txData?: Partial | undefined, ): Promise { - - assert.isString('txOrigin', txOrigin); - assert.isString('transactionSignature', transactionSignature); - assert.isArray('approvalExpirationTimeSeconds', approvalExpirationTimeSeconds); - assert.isArray('approvalSignatures', approvalSignatures); - const self = this as any as CoordinatorContract; - const encodedData = self._strictEncodeArguments('executeTransaction((uint256,address,bytes),address,bytes,uint256[],bytes[])', [transaction, - txOrigin, - transactionSignature, - approvalExpirationTimeSeconds, - approvalSignatures - ]); - const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync( - { - to: self.address, - ...txData, - data: encodedData, - }, - self._web3Wrapper.getContractDefaults(), - ); - const gas = await self._web3Wrapper.estimateGasAsync(txDataWithDefaults); - return gas; + assert.isString('txOrigin', txOrigin); + assert.isString('transactionSignature', transactionSignature); + assert.isArray('approvalExpirationTimeSeconds', approvalExpirationTimeSeconds); + assert.isArray('approvalSignatures', approvalSignatures); + const self = (this as any) as CoordinatorContract; + const encodedData = self._strictEncodeArguments( + 'executeTransaction((uint256,address,bytes),address,bytes,uint256[],bytes[])', + [transaction, txOrigin, transactionSignature, approvalExpirationTimeSeconds, approvalSignatures], + ); + const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync( + { + to: self.address, + ...txData, + data: encodedData, + }, + self._web3Wrapper.getContractDefaults(), + ); + const gas = await self._web3Wrapper.estimateGasAsync(txDataWithDefaults); + return gas; }, getABIEncodedTransactionData( - transaction: {salt: BigNumber;signerAddress: string;data: string}, + transaction: { salt: BigNumber; signerAddress: string; data: string }, txOrigin: string, transactionSignature: string, approvalExpirationTimeSeconds: BigNumber[], approvalSignatures: string[], ): string { - - assert.isString('txOrigin', txOrigin); - assert.isString('transactionSignature', transactionSignature); - assert.isArray('approvalExpirationTimeSeconds', approvalExpirationTimeSeconds); - assert.isArray('approvalSignatures', approvalSignatures); - const self = this as any as CoordinatorContract; - const abiEncodedTransactionData = self._strictEncodeArguments('executeTransaction((uint256,address,bytes),address,bytes,uint256[],bytes[])', [transaction, - txOrigin, - transactionSignature, - approvalExpirationTimeSeconds, - approvalSignatures - ]); - return abiEncodedTransactionData; + assert.isString('txOrigin', txOrigin); + assert.isString('transactionSignature', transactionSignature); + assert.isArray('approvalExpirationTimeSeconds', approvalExpirationTimeSeconds); + assert.isArray('approvalSignatures', approvalSignatures); + const self = (this as any) as CoordinatorContract; + const abiEncodedTransactionData = self._strictEncodeArguments( + 'executeTransaction((uint256,address,bytes),address,bytes,uint256[],bytes[])', + [transaction, txOrigin, transactionSignature, approvalExpirationTimeSeconds, approvalSignatures], + ); + return abiEncodedTransactionData; }, async callAsync( - transaction: {salt: BigNumber;signerAddress: string;data: string}, + transaction: { salt: BigNumber; signerAddress: string; data: string }, txOrigin: string, transactionSignature: string, approvalExpirationTimeSeconds: BigNumber[], approvalSignatures: string[], callData: Partial = {}, defaultBlock?: BlockParam, - ): Promise { - + ): Promise { assert.isString('txOrigin', txOrigin); assert.isString('transactionSignature', transactionSignature); assert.isArray('approvalExpirationTimeSeconds', approvalExpirationTimeSeconds); @@ -291,13 +278,11 @@ export class CoordinatorContract extends BaseContract { if (defaultBlock !== undefined) { assert.isBlockParam('defaultBlock', defaultBlock); } - const self = this as any as CoordinatorContract; - const encodedData = self._strictEncodeArguments('executeTransaction((uint256,address,bytes),address,bytes,uint256[],bytes[])', [transaction, - txOrigin, - transactionSignature, - approvalExpirationTimeSeconds, - approvalSignatures - ]); + const self = (this as any) as CoordinatorContract; + const encodedData = self._strictEncodeArguments( + 'executeTransaction((uint256,address,bytes),address,bytes,uint256[],bytes[])', + [transaction, txOrigin, transactionSignature, approvalExpirationTimeSeconds, approvalSignatures], + ); const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync( { to: self.address, @@ -308,20 +293,17 @@ export class CoordinatorContract extends BaseContract { ); const rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock); BaseContract._throwIfRevertWithReasonCallResult(rawCallResult); - const abiEncoder = self._lookupAbiEncoder('executeTransaction((uint256,address,bytes),address,bytes,uint256[],bytes[])'); + const abiEncoder = self._lookupAbiEncoder( + 'executeTransaction((uint256,address,bytes),address,bytes,uint256[],bytes[])', + ); // tslint:disable boolean-naming - const result = abiEncoder.strictDecodeReturnValue(rawCallResult); + const result = abiEncoder.strictDecodeReturnValue(rawCallResult); // tslint:enable boolean-naming return result; }, }; public EIP712_EXCHANGE_DOMAIN_HASH = { - async callAsync( - callData: Partial = {}, - defaultBlock?: BlockParam, - ): Promise { + async callAsync(callData: Partial = {}, defaultBlock?: BlockParam): Promise { assert.doesConformToSchema('callData', callData, schemas.callDataSchema, [ schemas.addressSchema, schemas.numberSchema, @@ -330,7 +312,7 @@ export class CoordinatorContract extends BaseContract { if (defaultBlock !== undefined) { assert.isBlockParam('defaultBlock', defaultBlock); } - const self = this as any as CoordinatorContract; + const self = (this as any) as CoordinatorContract; const encodedData = self._strictEncodeArguments('EIP712_EXCHANGE_DOMAIN_HASH()', []); const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync( { @@ -344,24 +326,21 @@ export class CoordinatorContract extends BaseContract { BaseContract._throwIfRevertWithReasonCallResult(rawCallResult); const abiEncoder = self._lookupAbiEncoder('EIP712_EXCHANGE_DOMAIN_HASH()'); // tslint:disable boolean-naming - const result = abiEncoder.strictDecodeReturnValue(rawCallResult); + const result = abiEncoder.strictDecodeReturnValue(rawCallResult); // tslint:enable boolean-naming return result; }, }; public assertValidCoordinatorApprovals = { async callAsync( - transaction: {salt: BigNumber;signerAddress: string;data: string}, + transaction: { salt: BigNumber; signerAddress: string; data: string }, txOrigin: string, transactionSignature: string, approvalExpirationTimeSeconds: BigNumber[], approvalSignatures: string[], callData: Partial = {}, defaultBlock?: BlockParam, - ): Promise { - + ): Promise { assert.isString('txOrigin', txOrigin); assert.isString('transactionSignature', transactionSignature); assert.isArray('approvalExpirationTimeSeconds', approvalExpirationTimeSeconds); @@ -374,13 +353,11 @@ export class CoordinatorContract extends BaseContract { if (defaultBlock !== undefined) { assert.isBlockParam('defaultBlock', defaultBlock); } - const self = this as any as CoordinatorContract; - const encodedData = self._strictEncodeArguments('assertValidCoordinatorApprovals((uint256,address,bytes),address,bytes,uint256[],bytes[])', [transaction, - txOrigin, - transactionSignature, - approvalExpirationTimeSeconds, - approvalSignatures - ]); + const self = (this as any) as CoordinatorContract; + const encodedData = self._strictEncodeArguments( + 'assertValidCoordinatorApprovals((uint256,address,bytes),address,bytes,uint256[],bytes[])', + [transaction, txOrigin, transactionSignature, approvalExpirationTimeSeconds, approvalSignatures], + ); const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync( { to: self.address, @@ -391,10 +368,11 @@ export class CoordinatorContract extends BaseContract { ); const rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock); BaseContract._throwIfRevertWithReasonCallResult(rawCallResult); - const abiEncoder = self._lookupAbiEncoder('assertValidCoordinatorApprovals((uint256,address,bytes),address,bytes,uint256[],bytes[])'); + const abiEncoder = self._lookupAbiEncoder( + 'assertValidCoordinatorApprovals((uint256,address,bytes),address,bytes,uint256[],bytes[])', + ); // tslint:disable boolean-naming - const result = abiEncoder.strictDecodeReturnValue(rawCallResult); + const result = abiEncoder.strictDecodeReturnValue(rawCallResult); // tslint:enable boolean-naming return result; }, @@ -404,7 +382,21 @@ export class CoordinatorContract extends BaseContract { data: string, callData: Partial = {}, defaultBlock?: BlockParam, - ): Promise + ): Promise< + Array<{ + makerAddress: string; + takerAddress: string; + feeRecipientAddress: string; + senderAddress: string; + makerAssetAmount: BigNumber; + takerAssetAmount: BigNumber; + makerFee: BigNumber; + takerFee: BigNumber; + expirationTimeSeconds: BigNumber; + salt: BigNumber; + makerAssetData: string; + takerAssetData: string; + }> > { assert.isString('data', data); assert.doesConformToSchema('callData', callData, schemas.callDataSchema, [ @@ -415,9 +407,8 @@ export class CoordinatorContract extends BaseContract { if (defaultBlock !== undefined) { assert.isBlockParam('defaultBlock', defaultBlock); } - const self = this as any as CoordinatorContract; - const encodedData = self._strictEncodeArguments('decodeOrdersFromFillData(bytes)', [data - ]); + const self = (this as any) as CoordinatorContract; + const encodedData = self._strictEncodeArguments('decodeOrdersFromFillData(bytes)', [data]); const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync( { to: self.address, @@ -430,18 +421,28 @@ export class CoordinatorContract extends BaseContract { BaseContract._throwIfRevertWithReasonCallResult(rawCallResult); const abiEncoder = self._lookupAbiEncoder('decodeOrdersFromFillData(bytes)'); // tslint:disable boolean-naming - const result = abiEncoder.strictDecodeReturnValue - >(rawCallResult); + const result = abiEncoder.strictDecodeReturnValue< + Array<{ + makerAddress: string; + takerAddress: string; + feeRecipientAddress: string; + senderAddress: string; + makerAssetAmount: BigNumber; + takerAssetAmount: BigNumber; + makerFee: BigNumber; + takerFee: BigNumber; + expirationTimeSeconds: BigNumber; + salt: BigNumber; + makerAssetData: string; + takerAssetData: string; + }> + >(rawCallResult); // tslint:enable boolean-naming return result; }, }; public EIP712_COORDINATOR_DOMAIN_HASH = { - async callAsync( - callData: Partial = {}, - defaultBlock?: BlockParam, - ): Promise { + async callAsync(callData: Partial = {}, defaultBlock?: BlockParam): Promise { assert.doesConformToSchema('callData', callData, schemas.callDataSchema, [ schemas.addressSchema, schemas.numberSchema, @@ -450,7 +451,7 @@ export class CoordinatorContract extends BaseContract { if (defaultBlock !== undefined) { assert.isBlockParam('defaultBlock', defaultBlock); } - const self = this as any as CoordinatorContract; + const self = (this as any) as CoordinatorContract; const encodedData = self._strictEncodeArguments('EIP712_COORDINATOR_DOMAIN_HASH()', []); const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync( { @@ -464,8 +465,7 @@ export class CoordinatorContract extends BaseContract { BaseContract._throwIfRevertWithReasonCallResult(rawCallResult); const abiEncoder = self._lookupAbiEncoder('EIP712_COORDINATOR_DOMAIN_HASH()'); // tslint:disable boolean-naming - const result = abiEncoder.strictDecodeReturnValue(rawCallResult); + const result = abiEncoder.strictDecodeReturnValue(rawCallResult); // tslint:enable boolean-naming return result; }, @@ -474,7 +474,7 @@ export class CoordinatorContract extends BaseContract { artifact: ContractArtifact | SimpleContractArtifact, supportedProvider: SupportedProvider, txDefaults: Partial, - _exchange: string, + _exchange: string, ): Promise { assert.doesConformToSchema('txDefaults', txDefaults, schemas.txDataSchema, [ schemas.addressSchema, @@ -487,15 +487,14 @@ export class CoordinatorContract extends BaseContract { const provider = providerUtils.standardizeOrThrow(supportedProvider); const bytecode = artifact.compilerOutput.evm.bytecode.object; const abi = artifact.compilerOutput.abi; - return CoordinatorContract.deployAsync(bytecode, abi, provider, txDefaults, _exchange -); + return CoordinatorContract.deployAsync(bytecode, abi, provider, txDefaults, _exchange); } public static async deployAsync( bytecode: string, abi: ContractAbi, supportedProvider: SupportedProvider, txDefaults: Partial, - _exchange: string, + _exchange: string, ): Promise { assert.isHexString('bytecode', bytecode); assert.doesConformToSchema('txDefaults', txDefaults, schemas.txDataSchema, [ @@ -505,20 +504,17 @@ export class CoordinatorContract extends BaseContract { ]); const provider = providerUtils.standardizeOrThrow(supportedProvider); const constructorAbi = BaseContract._lookupConstructorAbi(abi); - [_exchange -] = BaseContract._formatABIDataItemList( + [_exchange] = BaseContract._formatABIDataItemList( constructorAbi.inputs, - [_exchange -], + [_exchange], BaseContract._bigNumberToString, ); const iface = new ethers.utils.Interface(abi); const deployInfo = iface.deployFunction; - const txData = deployInfo.encode(bytecode, [_exchange -]); + const txData = deployInfo.encode(bytecode, [_exchange]); const web3Wrapper = new Web3Wrapper(provider); const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync( - {data: txData}, + { data: txData }, txDefaults, web3Wrapper.estimateGasAsync.bind(web3Wrapper), ); @@ -526,9 +522,13 @@ export class CoordinatorContract extends BaseContract { logUtils.log(`transactionHash: ${txHash}`); const txReceipt = await web3Wrapper.awaitTransactionSuccessAsync(txHash); logUtils.log(`Coordinator successfully deployed at ${txReceipt.contractAddress}`); - const contractInstance = new CoordinatorContract(abi, txReceipt.contractAddress as string, provider, txDefaults); - contractInstance.constructorArgs = [_exchange -]; + const contractInstance = new CoordinatorContract( + abi, + txReceipt.contractAddress as string, + provider, + txDefaults, + ); + contractInstance.constructorArgs = [_exchange]; return contractInstance; } constructor(abi: ContractAbi, address: string, supportedProvider: SupportedProvider, txDefaults?: Partial) { diff --git a/tsconfig.json b/tsconfig.json index bfa83503e8..3382161ab8 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -30,6 +30,7 @@ { "path": "./contracts/multisig" }, { "path": "./contracts/test-utils" }, { "path": "./contracts/utils" }, + { "path": "./contracts/dev-utils" }, { "path": "./packages/0x.js" }, { "path": "./packages/abi-gen-wrappers" }, { "path": "./packages/abi-gen" },