Move DevUtils contract into its own package
This commit is contained in:
		@@ -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:
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										2
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							@@ -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
 | 
			
		||||
 
 | 
			
		||||
@@ -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
 | 
			
		||||
 
 | 
			
		||||
@@ -50,6 +50,7 @@ These packages are all under development. See [/contracts/README.md](/contracts/
 | 
			
		||||
| [`@0x/contracts-test-utils`](/contracts/test-utils)                 | [](https://www.npmjs.com/package/@0x/contracts-test-utils)                 | Typescript/Javascript shared utilities used for testing contracts                                                                                                                                                                                     |
 | 
			
		||||
| [`@0x/contracts-utils`](/contracts/utils)                           | [](https://www.npmjs.com/package/@0x/contracts-utils)                           | Generic libraries and utilities used throughout all of the contracts                                                                                                                                                                                  |
 | 
			
		||||
| [`@0x/contracts-coordinator`](/contracts/coordinator)               | [](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)                   | [](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
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										11
									
								
								contracts/dev-utils/CHANGELOG.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								contracts/dev-utils/CHANGELOG.json
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,11 @@
 | 
			
		||||
[
 | 
			
		||||
    {
 | 
			
		||||
        "version": "0.0.1",
 | 
			
		||||
        "changes": [
 | 
			
		||||
            {
 | 
			
		||||
                "note": "Create dev-utils package",
 | 
			
		||||
                "pr": TODO
 | 
			
		||||
            }
 | 
			
		||||
        ]
 | 
			
		||||
    }
 | 
			
		||||
]
 | 
			
		||||
							
								
								
									
										99
									
								
								contracts/dev-utils/CHANGELOG.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										99
									
								
								contracts/dev-utils/CHANGELOG.md
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,99 @@
 | 
			
		||||
<!--
 | 
			
		||||
changelogUtils.file is auto-generated using the monorepo-scripts package. Don't edit directly.
 | 
			
		||||
Edit the package's CHANGELOG.json file only.
 | 
			
		||||
-->
 | 
			
		||||
 | 
			
		||||
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
 | 
			
		||||
							
								
								
									
										1
									
								
								contracts/dev-utils/DEPLOYS.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								contracts/dev-utils/DEPLOYS.json
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1 @@
 | 
			
		||||
[]
 | 
			
		||||
							
								
								
									
										73
									
								
								contracts/dev-utils/README.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										73
									
								
								contracts/dev-utils/README.md
									
									
									
									
									
										Normal file
									
								
							@@ -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).
 | 
			
		||||
							
								
								
									
										26
									
								
								contracts/dev-utils/compiler.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										26
									
								
								contracts/dev-utils/compiler.json
									
									
									
									
									
										Normal file
									
								
							@@ -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"]
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										89
									
								
								contracts/dev-utils/package.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										89
									
								
								contracts/dev-utils/package.json
									
									
									
									
									
										Normal file
									
								
							@@ -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"
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										9
									
								
								contracts/dev-utils/src/artifacts.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								contracts/dev-utils/src/artifacts.ts
									
									
									
									
									
										Normal file
									
								
							@@ -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 };
 | 
			
		||||
							
								
								
									
										2
									
								
								contracts/dev-utils/src/index.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								contracts/dev-utils/src/index.ts
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,2 @@
 | 
			
		||||
export * from './artifacts';
 | 
			
		||||
export * from './wrappers';
 | 
			
		||||
							
								
								
									
										6
									
								
								contracts/dev-utils/src/wrappers.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								contracts/dev-utils/src/wrappers.ts
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
			
		||||
/*
 | 
			
		||||
 * -----------------------------------------------------------------------------
 | 
			
		||||
 * Warning: This file is auto-generated by contracts-gen. Don't edit manually.
 | 
			
		||||
 * -----------------------------------------------------------------------------
 | 
			
		||||
 */
 | 
			
		||||
export * from '../generated-wrappers/dev_utils';
 | 
			
		||||
@@ -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,
 | 
			
		||||
							
								
								
									
										19
									
								
								contracts/dev-utils/test/global_hooks.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								contracts/dev-utils/test/global_hooks.ts
									
									
									
									
									
										Normal file
									
								
							@@ -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();
 | 
			
		||||
});
 | 
			
		||||
							
								
								
									
										7
									
								
								contracts/dev-utils/tsconfig.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								contracts/dev-utils/tsconfig.json
									
									
									
									
									
										Normal file
									
								
							@@ -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"]
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										6
									
								
								contracts/dev-utils/tslint.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								contracts/dev-utils/tslint.json
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
			
		||||
{
 | 
			
		||||
    "extends": ["@0x/tslint-config"],
 | 
			
		||||
    "rules": {
 | 
			
		||||
        "custom-no-magic-numbers": false
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -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"
 | 
			
		||||
    ]
 | 
			
		||||
 
 | 
			
		||||
@@ -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": {
 | 
			
		||||
 
 | 
			
		||||
@@ -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,
 | 
			
		||||
};
 | 
			
		||||
 
 | 
			
		||||
@@ -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';
 | 
			
		||||
 
 | 
			
		||||
@@ -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",
 | 
			
		||||
 
 | 
			
		||||
@@ -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",
 | 
			
		||||
 
 | 
			
		||||
@@ -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<CallData> = {},
 | 
			
		||||
            defaultBlock?: BlockParam,
 | 
			
		||||
        ): Promise<string
 | 
			
		||||
        > {
 | 
			
		||||
        ): Promise<string> {
 | 
			
		||||
            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<string
 | 
			
		||||
        >(rawCallResult);
 | 
			
		||||
            const result = abiEncoder.strictDecodeReturnValue<string>(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<CallData> = {},
 | 
			
		||||
            defaultBlock?: BlockParam,
 | 
			
		||||
        ): Promise<string
 | 
			
		||||
        > {
 | 
			
		||||
 | 
			
		||||
        ): Promise<string> {
 | 
			
		||||
            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<string
 | 
			
		||||
        >(rawCallResult);
 | 
			
		||||
            const result = abiEncoder.strictDecodeReturnValue<string>(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<CallData> = {},
 | 
			
		||||
            defaultBlock?: BlockParam,
 | 
			
		||||
        ): Promise<string
 | 
			
		||||
        > {
 | 
			
		||||
 | 
			
		||||
        ): Promise<string> {
 | 
			
		||||
            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<string
 | 
			
		||||
        >(rawCallResult);
 | 
			
		||||
            const result = abiEncoder.strictDecodeReturnValue<string>(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<TxData> | undefined,
 | 
			
		||||
            txData?: Partial<TxData> | undefined,
 | 
			
		||||
        ): Promise<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 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<TransactionReceiptWithDecodedLogs> {
 | 
			
		||||
 | 
			
		||||
        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<TransactionReceiptWithDecodedLogs>(
 | 
			
		||||
            txHashPromise,
 | 
			
		||||
            (async (): Promise<TransactionReceiptWithDecodedLogs> => {
 | 
			
		||||
                // 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<TransactionReceiptWithDecodedLogs>(
 | 
			
		||||
                txHashPromise,
 | 
			
		||||
                (async (): Promise<TransactionReceiptWithDecodedLogs> => {
 | 
			
		||||
                    // 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<TxData> | undefined,
 | 
			
		||||
        ): Promise<number> {
 | 
			
		||||
 | 
			
		||||
        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<CallData> = {},
 | 
			
		||||
            defaultBlock?: BlockParam,
 | 
			
		||||
        ): Promise<void
 | 
			
		||||
        > {
 | 
			
		||||
 | 
			
		||||
        ): Promise<void> {
 | 
			
		||||
            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<void
 | 
			
		||||
        >(rawCallResult);
 | 
			
		||||
            const result = abiEncoder.strictDecodeReturnValue<void>(rawCallResult);
 | 
			
		||||
            // tslint:enable boolean-naming
 | 
			
		||||
            return result;
 | 
			
		||||
        },
 | 
			
		||||
    };
 | 
			
		||||
    public EIP712_EXCHANGE_DOMAIN_HASH = {
 | 
			
		||||
        async callAsync(
 | 
			
		||||
            callData: Partial<CallData> = {},
 | 
			
		||||
            defaultBlock?: BlockParam,
 | 
			
		||||
        ): Promise<string
 | 
			
		||||
        > {
 | 
			
		||||
        async callAsync(callData: Partial<CallData> = {}, defaultBlock?: BlockParam): Promise<string> {
 | 
			
		||||
            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<string
 | 
			
		||||
        >(rawCallResult);
 | 
			
		||||
            const result = abiEncoder.strictDecodeReturnValue<string>(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<CallData> = {},
 | 
			
		||||
            defaultBlock?: BlockParam,
 | 
			
		||||
        ): Promise<void
 | 
			
		||||
        > {
 | 
			
		||||
 | 
			
		||||
        ): Promise<void> {
 | 
			
		||||
            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<void
 | 
			
		||||
        >(rawCallResult);
 | 
			
		||||
            const result = abiEncoder.strictDecodeReturnValue<void>(rawCallResult);
 | 
			
		||||
            // tslint:enable boolean-naming
 | 
			
		||||
            return result;
 | 
			
		||||
        },
 | 
			
		||||
@@ -404,7 +382,21 @@ export class CoordinatorContract extends BaseContract {
 | 
			
		||||
            data: string,
 | 
			
		||||
            callData: Partial<CallData> = {},
 | 
			
		||||
            defaultBlock?: BlockParam,
 | 
			
		||||
        ): 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}>
 | 
			
		||||
        ): 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<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);
 | 
			
		||||
            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<CallData> = {},
 | 
			
		||||
            defaultBlock?: BlockParam,
 | 
			
		||||
        ): Promise<string
 | 
			
		||||
        > {
 | 
			
		||||
        async callAsync(callData: Partial<CallData> = {}, defaultBlock?: BlockParam): Promise<string> {
 | 
			
		||||
            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<string
 | 
			
		||||
        >(rawCallResult);
 | 
			
		||||
            const result = abiEncoder.strictDecodeReturnValue<string>(rawCallResult);
 | 
			
		||||
            // tslint:enable boolean-naming
 | 
			
		||||
            return result;
 | 
			
		||||
        },
 | 
			
		||||
@@ -474,7 +474,7 @@ export class CoordinatorContract extends BaseContract {
 | 
			
		||||
        artifact: ContractArtifact | SimpleContractArtifact,
 | 
			
		||||
        supportedProvider: SupportedProvider,
 | 
			
		||||
        txDefaults: Partial<TxData>,
 | 
			
		||||
            _exchange: string,
 | 
			
		||||
        _exchange: string,
 | 
			
		||||
    ): Promise<CoordinatorContract> {
 | 
			
		||||
        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<TxData>,
 | 
			
		||||
            _exchange: string,
 | 
			
		||||
        _exchange: string,
 | 
			
		||||
    ): Promise<CoordinatorContract> {
 | 
			
		||||
        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<TxData>) {
 | 
			
		||||
 
 | 
			
		||||
@@ -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" },
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user