Compare commits

...

1787 Commits

Author SHA1 Message Date
Leonid Logvinov
f003298ce4 Publish
- 0x.js@4.0.3
 - @0x/abi-gen@2.0.2
 - @0x/abi-gen-wrappers@3.0.2
 - @0x/assert@2.0.2
 - @0x/asset-buyer@5.0.3
 - @0x/base-contract@4.0.2
 - @0x/connect@4.0.3
 - @0x/contract-wrappers@7.0.2
 - @0x/contracts-gen@1.0.1
 - @0x/dev-tools-pages@0.0.18
 - @0x/dev-utils@2.0.2
 - @0x/fill-scenarios@2.0.3
 - @0x/instant@1.0.12
 - @0x/json-schemas@3.0.2
 - @0x/metacoin@0.0.39
 - @0x/migrations@3.0.3
 - @0x/monorepo-scripts@1.0.23
 - @0x/order-utils@6.0.1
 - @0x/order-watcher@3.0.3
 - @0x/pipeline@1.0.9
 - @0x/react-docs@2.0.3
 - @0x/react-shared@2.0.3
 - @0x/sol-compiler@3.0.2
 - @0x/sol-coverage@2.0.2
 - @0x/sol-doc@2.0.2
 - @0x/sol-profiler@2.0.3
 - @0x/sol-resolver@2.0.2
 - @0x/sol-trace@2.0.3
 - @0x/sol-tracing-utils@6.0.2
 - @0x/sra-spec@2.0.2
 - @0x/subproviders@3.0.2
 - @0x/testnet-faucets@1.0.68
 - @0x/types@2.0.2
 - @0x/utils@4.0.3
 - @0x/web3-wrapper@4.0.2
 - @0x/website@0.0.71
 - @0x/contracts-asset-proxy@1.0.4
 - @0x/contracts-erc20@1.0.4
 - @0x/contracts-erc721@1.0.4
 - @0x/contracts-exchange@1.0.4
 - @0x/contracts-exchange-forwarder@1.0.4
 - @0x/contracts-exchange-libs@1.0.4
 - @0x/contracts-extensions@2.0.3
 - @0x/contracts-multisig@2.0.3
 - @0x/contracts-test-utils@3.0.3
 - @0x/contracts-utils@2.0.3
2019-02-07 15:02:05 +01:00
Leonid Logvinov
5f5ee0041f Updated CHANGELOGS 2019-02-07 15:01:53 +01:00
Leonid Logvinov
88497ddc52 Updated CHANGELOGS 2019-02-07 14:42:20 +01:00
Fabio B
e921d5ec13 Merge pull request #1589 from 0xProject/feat/lock-contract-deps
Lock dep versions in contracts packages (again)
2019-02-07 13:28:57 +00:00
Leonid Logvinov
c55974a485 Merge pull request #1596 from 0xProject/fix/sol-compiler-args
Sol-compiler bug fixes
2019-02-07 14:18:55 +01:00
Fabio B
2ff0f545f5 Update packages/sol-compiler/CHANGELOG.json
Co-Authored-By: LogvinovLeon <logvinov.leon@gmail.com>
2019-02-07 14:17:41 +01:00
Fabio B
7f2a011c3e Update packages/sol-compiler/CHANGELOG.json
Co-Authored-By: LogvinovLeon <logvinov.leon@gmail.com>
2019-02-07 14:17:23 +01:00
Fabio Berger
8af9a38c8e Move from devDep to dep 2019-02-07 13:07:36 +00:00
Leonid Logvinov
b54bafe1c5 Fix linter 2019-02-07 13:35:50 +01:00
Fabio Berger
7a9ff3846e Merge development 2019-02-07 12:33:44 +00:00
Leonid Logvinov
53fe08a348 Update CHANGELOG 2019-02-07 13:30:00 +01:00
Fabio Berger
f118e86cfe Re-run yarn since fails again on first run 2019-02-07 12:29:05 +00:00
Leonid Logvinov
2e60d5341e Add PR numbers 2019-02-07 13:24:57 +01:00
Leonid Logvinov
2ef3af0003 Omit remapping in compiler settings equality checks 2019-02-07 13:20:21 +01:00
Leonid Logvinov
2b7699c26a Omit remapping in compiler settings equality checks 2019-02-07 13:20:03 +01:00
Leonid Logvinov
d567c58d3b Fix a bug when ast and legacyAST were not present in the artifacts even if requested 2019-02-07 13:10:08 +01:00
Fabio Berger
bede3d7e29 Update yarn.lock 2019-02-07 12:01:57 +00:00
Leonid Logvinov
64d6dae672 Remove the bin_paths and fetch the solidity release list from github repo 2019-02-07 12:58:46 +01:00
Fabio Berger
b001fe2b08 Remove postinstall hack 2019-02-07 11:58:06 +00:00
Leonid Logvinov
c20285dd36 Fix the undefined opts bug 2019-02-07 12:30:54 +01:00
Leonid Logvinov
7e19c944b9 Merge pull request #1575 from 0xProject/feature/contracts-gen
Contracts generator
2019-02-07 12:23:00 +01:00
Leonid Logvinov
fd4d3cff88 Fix sol-compiler bug with remappings causing smart recompilation to now work 2019-02-07 12:13:24 +01:00
Fabio Berger
5ff646ca8e re-add postinstall hack 2019-02-07 10:53:14 +00:00
Leonid Logvinov
88432a5e67 Fix deps versions 2019-02-07 11:49:59 +01:00
Leonid Logvinov
7519d60fb7 Fix linter issues 2019-02-07 11:29:04 +01:00
Leonid Logvinov
de23428069 Merge development 2019-02-07 11:15:37 +01:00
Amir Bandeali
9089bf2c5f Lock dep versions in contracts packages 2019-02-06 21:10:35 -08:00
Fabio Berger
2a344e26cc Publish
- 0x.js@4.0.2
 - @0x/asset-buyer@5.0.2
 - @0x/connect@4.0.2
 - @0x/contract-wrappers@7.0.1
 - @0x/dev-tools-pages@0.0.17
 - @0x/fill-scenarios@2.0.2
 - @0x/instant@1.0.11
 - @0x/migrations@3.0.2
 - @0x/monorepo-scripts@1.0.22
 - @0x/order-utils@6.0.0
 - @0x/order-watcher@3.0.2
 - @0x/pipeline@1.0.8
 - @0x/react-docs@2.0.2
 - @0x/react-shared@2.0.2
 - @0x/testnet-faucets@1.0.67
 - @0x/website@0.0.70
 - @0x/contracts-asset-proxy@1.0.3
 - @0x/contracts-erc20@1.0.3
 - @0x/contracts-erc721@1.0.3
 - @0x/contracts-exchange@1.0.3
 - @0x/contracts-exchange-forwarder@1.0.3
 - @0x/contracts-exchange-libs@1.0.3
 - @0x/contracts-extensions@2.0.2
 - @0x/contracts-multisig@2.0.2
 - @0x/contracts-test-utils@3.0.2
 - @0x/contracts-utils@2.0.2
2019-02-07 01:53:15 +00:00
Fabio Berger
af26403a86 Updated CHANGELOGS 2019-02-07 01:53:02 +00:00
Fabio B
3af6c8fe1d Merge pull request #1595 from 0xProject/fix-order-utils-doc-rendering
Stop exporting EIP712 schemas
2019-02-07 01:24:32 +00:00
Fabio Berger
b883b183a6 Stop exporting EIP712 schemas 2019-02-07 01:03:43 +00:00
Fabio Berger
ac58ace8cf Add CHANGELOG entry about faux publish of contract packages 2019-02-07 00:16:39 +00:00
Fabio Berger
a50eefc44e Fix paragraph rendering on wiki 2019-02-06 14:08:45 +00:00
Fabio Berger
dbb3c5e32b Publish
- 0x.js@4.0.1
 - @0x/abi-gen@2.0.1
 - @0x/abi-gen-wrappers@3.0.1
 - @0x/assert@2.0.1
 - @0x/asset-buyer@5.0.1
 - @0x/base-contract@4.0.1
 - @0x/connect@4.0.1
 - @0x/contract-wrappers@7.0.0
 - @0x/dev-tools-pages@0.0.16
 - @0x/dev-utils@2.0.1
 - @0x/fill-scenarios@2.0.1
 - @0x/instant@1.0.10
 - @0x/json-schemas@3.0.1
 - @0x/metacoin@0.0.38
 - @0x/migrations@3.0.1
 - @0x/monorepo-scripts@1.0.21
 - @0x/order-utils@5.0.0
 - @0x/order-watcher@3.0.1
 - @0x/pipeline@1.0.7
 - @0x/react-docs@2.0.1
 - @0x/react-shared@2.0.1
 - @0x/sol-compiler@3.0.1
 - @0x/sol-coverage@2.0.1
 - @0x/sol-doc@2.0.1
 - @0x/sol-profiler@2.0.2
 - @0x/sol-resolver@2.0.1
 - @0x/sol-trace@2.0.2
 - @0x/sol-tracing-utils@6.0.1
 - @0x/sra-spec@2.0.1
 - @0x/subproviders@3.0.1
 - @0x/testnet-faucets@1.0.66
 - @0x/types@2.0.1
 - @0x/utils@4.0.2
 - @0x/web3-wrapper@4.0.1
 - @0x/website@0.0.69
 - @0x/contracts-asset-proxy@1.0.2
 - @0x/contracts-erc20@1.0.2
 - @0x/contracts-erc721@1.0.2
 - @0x/contracts-exchange@1.0.2
 - @0x/contracts-exchange-forwarder@1.0.2
 - @0x/contracts-exchange-libs@1.0.2
 - @0x/contracts-extensions@2.0.1
 - @0x/contracts-multisig@2.0.1
 - @0x/contracts-test-utils@3.0.1
 - @0x/contracts-utils@2.0.1
2019-02-06 11:41:24 +00:00
Fabio Berger
265df31750 Updated CHANGELOGS 2019-02-06 11:41:12 +00:00
Fabio Berger
9bbe56df0b Fix react-highlight dep 2019-02-06 11:24:40 +00:00
Fabio Berger
879c795fc4 Fix react-highlight dep 2019-02-06 11:07:16 +00:00
Fabio B
8b5bb97537 Merge pull request #1587 from 0xProject/fix/abiEncoder/DefaultTypesOnNullInput
Handle ABI decoding NULL for all data types
2019-02-06 10:23:21 +00:00
Greg Hysen
3d7a635543 Added NULL decoding tests for return values 2019-02-05 21:33:07 -08:00
Greg Hysen
b3ae9e6e25 updated changelog for utils 2019-02-05 19:18:00 -08:00
Greg Hysen
023ea5b3a1 Ran prettier + linter 2019-02-05 18:10:17 -08:00
Greg Hysen
2ad6bd3945 Test cases for handling NULL input for all data types 2019-02-05 18:01:38 -08:00
Greg Hysen
2326dcdb12 Handle NULL input for all data types 2019-02-05 17:30:54 -08:00
Amir Bandeali
b5eb47f609 Merge pull request #1576 from 0xProject/feat/transaction-hash
Add transactionHashUtils to order-utils package
2019-02-05 10:03:30 -08:00
Amir Bandeali
af4ed0f39c Update python JSON schema for 0x transactions 2019-02-05 09:26:03 -08:00
Amir Bandeali
eac254f925 Fix outdated comments and make verifyingContractAddress a required part of the 0x tx schema 2019-02-05 09:26:03 -08:00
Amir Bandeali
8246dec843 Rename getTransactionHex to getTransactionHashHex for clarity 2019-02-05 09:26:03 -08:00
Amir Bandeali
4514da0646 Update CHANGELOGs 2019-02-05 09:26:03 -08:00
Amir Bandeali
9abd6f5695 Allow custom domains in eip712Utils 2019-02-05 09:23:09 -08:00
Amir Bandeali
a394967268 Use new transaction schema throughout monorepo 2019-02-05 09:23:09 -08:00
Amir Bandeali
c7c4cb9bc6 Add transaction hash utils 2019-02-05 09:23:09 -08:00
Amir Bandeali
1ada679663 Update ZeroExTransactionSchema 2019-02-05 09:23:09 -08:00
Amir Bandeali
9552676783 Add schema validation to getOrderHashBuff 2019-02-05 09:23:09 -08:00
Fabio B
69c7c03fb3 Merge pull request #1580 from 0xProject/fix/preSignedSignatureBug
Fix preSigned signature bug in SignatureUtils
2019-02-05 14:36:06 +00:00
Fabio Berger
224a58bdf2 Fix dep version 2019-02-05 14:19:48 +00:00
Fabio Berger
98427b715d Merge branch 'fix/preSignedSignatureBug' of github.com:0xProject/0x-monorepo into fix/preSignedSignatureBug
* 'fix/preSignedSignatureBug' of github.com:0xProject/0x-monorepo:
  Update packages/order-utils/CHANGELOG.json
2019-02-05 13:57:40 +00:00
Fabio Berger
a8078aa151 merge development 2019-02-05 13:55:05 +00:00
Leonid Logvinov
7b583cecb2 Publish
- 0x.js@4.0.0
 - @0x/abi-gen@2.0.0
 - @0x/abi-gen-templates@2.0.0
 - @0x/abi-gen-wrappers@3.0.0
 - @0x/assert@2.0.0
 - @0x/asset-buyer@5.0.0
 - @0x/base-contract@4.0.0
 - @0x/connect@4.0.0
 - @0x/contract-addresses@2.2.1
 - @0x/contract-wrappers@6.0.1
 - @0x/dev-tools-pages@0.0.15
 - @0x/dev-utils@2.0.0
 - ethereum-types@2.0.0
 - @0x/fill-scenarios@2.0.0
 - @0x/instant@1.0.9
 - @0x/json-schemas@3.0.0
 - @0x/metacoin@0.0.37
 - @0x/migrations@3.0.0
 - @0x/monorepo-scripts@1.0.20
 - @0x/order-utils@4.0.0
 - @0x/order-watcher@3.0.0
 - @0x/pipeline@1.0.6
 - @0x/react-docs@2.0.0
 - @0x/react-shared@2.0.0
 - @0x/sol-compiler@3.0.0
 - @0x/sol-coverage@2.0.0
 - @0x/sol-doc@2.0.0
 - @0x/sol-profiler@2.0.1
 - @0x/sol-resolver@2.0.0
 - @0x/sol-trace@2.0.1
 - @0x/sol-tracing-utils@6.0.0
 - @0x/sra-spec@2.0.0
 - @0x/subproviders@3.0.0
 - @0x/testnet-faucets@1.0.65
 - @0x/tslint-config@3.0.0
 - @0x/types@2.0.0
 - @0x/typescript-typings@4.0.0
 - @0x/utils@4.0.1
 - @0x/web3-wrapper@4.0.0
 - @0x/website@0.0.68
 - @0x/contracts-asset-proxy@1.0.1
 - @0x/contracts-erc20@1.0.1
 - @0x/contracts-erc721@1.0.1
 - @0x/contracts-exchange@1.0.1
 - @0x/contracts-exchange-forwarder@1.0.1
 - @0x/contracts-exchange-libs@1.0.1
 - @0x/contracts-extensions@2.0.0
 - @0x/contracts-multisig@2.0.0
 - @0x/contracts-test-utils@3.0.0
 - @0x/contracts-utils@2.0.0
2019-02-05 14:50:16 +01:00
Leonid Logvinov
f3d9520db2 Updated CHANGELOGS 2019-02-05 14:50:02 +01:00
Leonid Logvinov
9de4bf1225 Fix contracts-utils versions 2019-02-05 14:29:17 +01:00
Leonid Logvinov
3cb6744369 Update packages/order-utils/CHANGELOG.json
Co-Authored-By: fabioberger <kandinsky454@protonmail.ch>
2019-02-05 13:14:31 +00:00
Fabio Berger
e021460f03 Remove .only 2019-02-05 13:09:23 +00:00
Fabio Berger
0a93f3346f All CHANGELOG entry 2019-02-05 13:07:50 +00:00
Fabio Berger
332cc14dcd Add preSigned isValidSignature test for success case using smart contract & TS implementation 2019-02-05 13:07:40 +00:00
Leonid Logvinov
52e287fc7d Fix CHANGELOGs 2019-02-05 13:57:38 +01:00
Fabio Berger
7885b2e3f8 Fix test 2019-02-05 12:56:04 +00:00
Leonid Logvinov
e6683e46cc Add CHANGELOG entries to sol-tracing-utils 2019-02-05 13:47:27 +01:00
Fabio Berger
2447c72a5c Fix heap out of memory issue 2019-02-05 12:09:13 +00:00
Leonid Logvinov
4febabd3e7 Merge pull request #1583 from reserve-protocol/development
Fix default gas limit for fake txs in TraceCollectionSubprovider
2019-02-05 12:28:05 +01:00
Leonid Logvinov
4b4bfee1bc Merge pull request #1584 from reserve-protocol/patch
Hook eth_sendRawTransaction in addition to eth_sendTransaction
2019-02-05 12:26:58 +01:00
Fabio Berger
d7c9d73349 Merge branch 'development' into fix/preSignedSignatureBug
* development:
  update error msg for dependency version check
  CI test for dependencies to have the same version (#1556)
  Add missing comma
  Decode NULL as false
  Update blog link to not be /latest, and use constant in mobile nav
2019-02-05 11:16:45 +00:00
xianny
09a5b6e7a3 update error msg for dependency version check 2019-02-05 19:05:45 +08:00
Xianny
703aa38a17 CI test for dependencies to have the same version (#1556)
* add failing CI for dependencies with multiple versions

* update dependencies

* increase bundlewatch maxsize for 0x.js
2019-02-05 18:58:30 +08:00
Fabio B
b2f35057a5 Merge pull request #1582 from 0xProject/fix/utils/abiDecodeNullAsFalse
Decode NULL as False in Abi Encoder
2019-02-05 10:32:00 +00:00
Fabio Berger
a3198b7df8 Add missing comma 2019-02-05 09:33:16 +00:00
Greg Hysen
db900d180c Decode NULL as false 2019-02-04 16:32:14 -08:00
Jeremy Schlatter
3d2ed57c08 Hook eth_sendRawTransaction in addition to eth_sendTransaction 2019-02-04 14:33:13 -08:00
Jeremy Schlatter
d0b0c4a917 Fix default gas limit for fake txs in TraceCollectionSubprovider
This hex string is required to be prefixed with '0x'. If it does not have that
prefix, then the call to unmarshalTxData below will fail with:

	BigNumber Error: new BigNumber() not a number: 5b8d80

This default value is overridden if the incoming call already has a gas
estimate, in which case the parse error above does not happen. This is probably
why the error wasn't previously noticed.
2019-02-04 13:22:36 -08:00
Fabio Berger
a1bf5e8261 Merge branch 'development' into fix/preSignedSignatureBug
* development:
  Nit fixes to pipeline README
  fix typo
2019-02-04 19:33:08 +00:00
Steve Klebanoff
74293d5bc8 Merge pull request #1536 from 0xProject/fix/website/blog-link
[website] Change blog link
2019-02-04 08:59:03 -08:00
Fabio Berger
50cad8d260 Nit fixes to pipeline README 2019-02-04 16:04:19 +00:00
Fabio Berger
52f22aad81 Write failing preSign unit test 2019-02-04 16:03:48 +00:00
Fabio Berger
c03e24e10b Fix bug where passing in signerAddress instead of exchangeAddress 2019-02-04 16:03:25 +00:00
Fabio B
995a2ef8a0 Merge pull request #1567 from jeremyschlatter/patch-1
fix typo
2019-02-04 14:30:45 +00:00
Leonid Logvinov
4d75681357 Add @0x/types dependency 2019-02-04 13:11:20 +01:00
Leonid Logvinov
1a88eac9c7 Make the banner more visible 2019-02-04 13:00:15 +01:00
Leonid Logvinov
47357ddec8 Remove redundant dependencies 2019-02-04 12:58:19 +01:00
Fabio B
129ae3a737 Update packages/contracts-gen/src/index.ts
Co-Authored-By: LogvinovLeon <logvinov.leon@gmail.com>
2019-02-04 12:56:18 +01:00
Fabio B
31d1390039 Update packages/contracts-gen/README.md
Co-Authored-By: LogvinovLeon <logvinov.leon@gmail.com>
2019-02-04 12:52:36 +01:00
Leonid Logvinov
6943bbcacb Temp 2019-02-04 10:38:02 +01:00
Francesco Agosti
1d3fff32a2 Merge pull request #1559 from 0xProject/feature/pipeline/fix-missing-dex-trades
[pipeline] Fix missing DEX Trades from Bloxy
2019-02-01 18:30:57 -08:00
Amir Bandeali
069c9fd4a6 Merge pull request #1568 from smithki/fix/contract-wrappers/wrong-default-address-for-order-validator-wrapper
Use correct "orderValidator" address in OrderValidatorWrapper constructor
2019-02-01 16:04:30 -08:00
fragosti
4f3cab4213 add row deletion step to migration 2019-02-01 15:50:04 -08:00
Fabio Berger
42c13ecafa Remove DDEX library from developer tools list 2019-02-01 20:12:43 +00:00
dave4506
70158c3a99 Merge pull request #1572 from dave4506/fix/instant/input-bug-firefox
Removed number selector for firefox inputs
2019-02-01 14:15:21 -05:00
Leonid Logvinov
ae8d2ae2cb Merge pull request #1542 from 0xProject/feature/solc-docker
Implement docker as another backend for sol-compiler
2019-02-01 19:58:29 +01:00
Leonid Logvinov
79adf5cec6 Merge development 2019-02-01 19:08:56 +01:00
David Sun
26d44a5392 ran prettier on codebase 2019-02-01 12:07:21 -05:00
David Sun
149f8bc9b3 removed number selector for firefox inputs 2019-01-31 21:12:13 -05:00
dave4506
78bdc2d6b4 Merge pull request #1552 from dave4506/feature/portal/fix-highlight-state-back-to-relayers
Added a highlight state to back button
2019-01-31 19:23:49 -05:00
David Sun
c9facdf825 changed button to medium blue 2019-01-31 18:56:31 -05:00
dave4506
4986a2f940 Merge pull request #1548 from dave4506/fix/website/market-making-svg-consistency
Fixed market making website svg consistency issues
2019-01-31 17:45:10 -05:00
Ian K Smith
9fd372da51 Add CHANGELOG.json entry 2019-01-31 15:04:22 -07:00
Ian K Smith
68194fde0a Use correct "orderValidator" address in order_validator_wrapper ctor 2019-01-31 14:55:06 -07:00
dave4506
155e73dc70 Merge pull request #1551 from dave4506/feature/instant/add-usdc
Added USDC support to instant
2019-01-31 16:37:14 -05:00
Jeremy Schlatter
76a1ff7c40 fix typo 2019-01-31 12:35:26 -08:00
Jacob Evans
da357f7599 Merge pull request #1533 from 0xProject/migrations/consolidate-owner-default
Remove owner from migrations
2019-01-31 16:24:11 +10:00
fragosti
4efe941937 remove extra quotes from google-site-verification 2019-01-30 17:22:33 -08:00
Francesco Agosti
612d2dbde1 Merge pull request #1563 from 0xProject/feature/website/fix-typos-add-metatag
[website] Fix website typos and add metatag
2019-01-30 16:24:57 -08:00
fragosti
0c9369bf04 fix typo 2019-01-30 15:31:34 -08:00
fragosti
94043380bb add site verification tag 2019-01-30 15:29:42 -08:00
fragosti
96e880d170 fix typos on landing 2019-01-30 15:28:55 -08:00
F. Eugene Aumson
3d8caa4694 Fix hang in Python CI test runs (#1560) 2019-01-30 15:51:59 -05:00
fragosti
4996ae8d9d run linter 2019-01-30 10:30:50 -08:00
fragosti
7b4a0d4f8a fix bloxy datasource getDexTradesAsync to allow for tx_hash repetitions in dedupe logic 2019-01-30 10:28:06 -08:00
fragosti
c2ad95fd94 update types to adhere to new dex trades and bloxy api format 2019-01-30 10:12:15 -08:00
fragosti
5ad2e9d6b6 write migration to add trade_index primary key to dex_trades 2019-01-30 10:06:04 -08:00
fragosti
8bac655dc1 Stop omitting trades because of duplicate tx hashes 2019-01-30 09:39:59 -08:00
Francesco Agosti
e29f130285 Merge pull request #1546 from dave4506/fix/change-asset-unavail-tokens-unavail
Changed error message from "Assets Unavailable" to "Tokens Unavailable"
2019-01-30 09:23:25 -08:00
Leonid Logvinov
f9d4afd713 Merge pull request #1558 from 0xProject/fix/sol-tracing-errors
Improve error messages when unable to find bytecode
2019-01-30 14:25:50 +01:00
Fabio B
d6b6f1e7d9 Update packages/sol-trace/src/revert_trace_subprovider.ts
Co-Authored-By: LogvinovLeon <logvinov.leon@gmail.com>
2019-01-30 14:25:43 +01:00
Leonid Logvinov
ea5e78b217 Improve error messages when unable to find bytecode 2019-01-30 14:12:31 +01:00
Leonid Logvinov
c9a7ef18dc Merge pull request #1557 from 0xProject/fix/sol-cov/property-range-of-null
Fix the `cannot read property range of null` bug
2019-01-30 14:11:53 +01:00
Leonid Logvinov
e23f90e41c Fix the cannot read property range of null bug 2019-01-30 14:04:19 +01:00
Leonid Logvinov
e1244648e0 Rename dependencyNameToPackagePath to dependencyNameToPath 2019-01-30 13:11:18 +01:00
Leonid Logvinov
8d72e253c8 Add a comment 2019-01-30 13:11:18 +01:00
Leonid Logvinov
33ed6a7c06 Remove + concatenation 2019-01-30 13:11:18 +01:00
Leonid Logvinov
c82a4a5760 Fail fast 2019-01-30 13:11:18 +01:00
Fabio B
445a629016 Update packages/sol-compiler/src/utils/compiler.ts
Co-Authored-By: LogvinovLeon <logvinov.leon@gmail.com>
2019-01-30 13:08:10 +01:00
Fabio B
be7daae91a Update packages/ethereum-types/src/index.ts
Co-Authored-By: LogvinovLeon <logvinov.leon@gmail.com>
2019-01-30 13:03:30 +01:00
David Sun
ba645692b0 updated svg asset 2019-01-29 16:19:00 -05:00
Leonid Logvinov
08f541535b Fix naming 2019-01-28 17:37:15 +01:00
Leonid Logvinov
3520d2584e Add 'useDockerisedSolc' to new packages 2019-01-28 17:27:53 +01:00
Leonid Logvinov
141ac0ca0b Merge development 2019-01-28 17:26:13 +01:00
Leonid Logvinov
0c12128f64 Temp CI 2019-01-28 17:24:44 +01:00
David Sun
1e939591ae added USDC as an option 2019-01-26 19:26:40 -05:00
Francesco Agosti
25e42c0ad4 Merge pull request #1549 from 0xProject/justinbarry-0x-monorepo-mirror
[instant] [mirror] Output Chrome 41 compatible version of 0x instant
2019-01-25 09:22:11 -08:00
Francesco Agosti
1c032a103d Merge pull request #1508 from justinbarry/development
Output Chrome 41 compatible version of 0x instant
2019-01-25 08:51:33 -08:00
Amir Bandeali
e0022cd98c Merge pull request #1547 from 0xProject/feat/contracts/lock-dependencies
Lock versions of all dependencies that are contracts packages
2019-01-24 19:47:56 -08:00
David Sun
68dbf8b2a7 added new svg assets and modified svg code to fix transparency 2019-01-24 22:31:16 -05:00
fragosti
a9ca1f3174 Merge branch 'development' of https://github.com/0xProject/0x-monorepo into development 2019-01-24 17:35:25 -08:00
Amir Bandeali
bcff25c996 Lock versions of all dependencies that are contracts packages 2019-01-24 13:47:02 -08:00
David Sun
e272f8e1d9 changed error message 2019-01-24 15:44:42 -05:00
fragosti
5b06595a6b Merge branch 'development' of https://github.com/0xProject/0x-monorepo into development 2019-01-24 12:05:44 -08:00
fragosti
44aafe4d78 feat: add Marc to website 2019-01-24 12:05:22 -08:00
Steve Klebanoff
92cbff67d1 Merge pull request #1543 from 0xProject/fix/asset-buyer-test
[asset-buyer] Fix test (assetData string)
2019-01-23 15:33:05 -08:00
Steve Klebanoff
2166f57750 Assert that assetData is a string before we try to decode it 2019-01-23 12:51:26 -08:00
Francesco Agosti
726a52f3ee 0xproject -> 0x.org 2019-01-23 12:35:00 -08:00
Francesco Agosti
64424deb41 Update README.md 2019-01-23 12:33:10 -08:00
Amir Bandeali
69025da2dc Merge pull request #1539 from 0xProject/feat/contracts/split-packages
Split/rename/combine packages
2019-01-23 12:22:26 -08:00
Amir Bandeali
09cb3b7d50 Merge branch 'development' into feat/contracts/split-packages 2019-01-23 10:49:10 -08:00
Amir Bandeali
8566bb551b Fix geth tests in circleci config 2019-01-23 09:51:02 -08:00
Amir Bandeali
f631c2da06 Update package.json versions 2019-01-23 09:49:02 -08:00
Leonid Logvinov
19064f8cbb Add -setup_remote_docker to CI build steps 2019-01-23 17:09:54 +01:00
Leonid Logvinov
de36670bdc Make workspace path in NPMResolver optional 2019-01-23 17:02:02 +01:00
Leonid Logvinov
e8d68dc07f Implement docker as another backend for sol-compiler 2019-01-23 16:54:27 +01:00
Amir Bandeali
f81149ac2b Update all contract CHANGELOGs 2019-01-22 18:06:26 -08:00
Alex Browne
ef928aff31 Merge pull request #1537 from nitper/patch-1
[fix] allow devnet rpc to listen on any vhost
2019-01-22 16:24:29 -08:00
Jacob Evans
6f090a2fda Improve CHANGELOG 2019-01-23 11:11:32 +11:00
Benjamin
c690364ec6 Add docker-compose basic config (#1538)
Add docker-compose.yml config for 0x-devnet package. This can be expanded upon in future if necessary.
2019-01-22 15:23:11 -08:00
Leonid Logvinov
cc48433575 Merge pull request #1535 from 0xProject/feature/sol-tracing-monorepo-fixes
Sol tracing fixes
2019-01-22 23:35:31 +01:00
Amir Bandeali
fe1ef930ad Update DEPLOYS and READMEs within each package 2019-01-22 13:37:14 -08:00
Leonid Logvinov
8ce885089e Change strings to numbers in CHANGELOGs 2019-01-22 21:23:58 +01:00
Leonid Logvinov
3e910c0e03 Refactor out isInterfaceContract 2019-01-22 21:20:02 +01:00
Leonid Logvinov
7c47c52fac Fix a typo 2019-01-22 21:11:55 +01:00
nitper
744fa22f01 allow devnet rpc to listen on any vhost
geth's default value for `--rpcvhosts` is `localhost`, which does not work when trying to use the devnet in certain environments such as `docker-compose` or `gitlab-ci`
2019-01-22 14:14:12 -05:00
Steve Klebanoff
b3f996595f Update blog link to not be /latest, and use constant in mobile nav 2019-01-22 08:48:05 -08:00
Fabio B
148f12a753 Update packages/sol-tracing-utils/CHANGELOG.json
Co-Authored-By: LogvinovLeon <logvinov.leon@gmail.com>
2019-01-22 15:10:37 +01:00
Fabio B
aedd6503d1 Update packages/sol-tracing-utils/CHANGELOG.json
Co-Authored-By: LogvinovLeon <logvinov.leon@gmail.com>
2019-01-22 15:10:32 +01:00
Fabio B
c3ecbd3063 Update packages/sol-tracing-utils/CHANGELOG.json
Co-Authored-By: LogvinovLeon <logvinov.leon@gmail.com>
2019-01-22 15:10:24 +01:00
Fabio B
3297b5ea34 Update packages/sol-tracing-utils/CHANGELOG.json
Co-Authored-By: LogvinovLeon <logvinov.leon@gmail.com>
2019-01-22 15:10:17 +01:00
Fabio B
19f929761b Update packages/sol-tracing-utils/src/collect_coverage_entries.ts
Co-Authored-By: LogvinovLeon <logvinov.leon@gmail.com>
2019-01-22 15:10:05 +01:00
Fabio B
d8890a03bb Update packages/sol-profiler/CHANGELOG.json
Co-Authored-By: LogvinovLeon <logvinov.leon@gmail.com>
2019-01-22 13:29:22 +01:00
Fabio B
4a6bdfae23 Update contracts/utils/CHANGELOG.json
Co-Authored-By: LogvinovLeon <logvinov.leon@gmail.com>
2019-01-22 13:29:07 +01:00
Leonid Logvinov
7015fc4dbc Fix tests 2019-01-22 13:02:16 +01:00
Amir Bandeali
ab4d4a69ec Update root tsconfig packages 2019-01-21 22:39:51 -08:00
Amir Bandeali
efbfd08aa0 Separate forwarder into own package 2019-01-21 21:41:22 -08:00
Amir Bandeali
f9c29c3e74 Cleanup package.json files 2019-01-21 21:41:21 -08:00
Amir Bandeali
0758f231e2 Split tokens package into erc20 and erc721 2019-01-21 21:41:21 -08:00
Amir Bandeali
9fa8619590 Move contents of examples and interfaces packages into corresponding packages 2019-01-21 21:41:21 -08:00
Amir Bandeali
174daa97c3 Add commands for building and testing all contracts 2019-01-21 21:41:21 -08:00
Amir Bandeali
43de20930b Update remaining pachages 2019-01-21 21:41:21 -08:00
Amir Bandeali
4a4c26a2e3 Split protocol package into exchange, asset-proxy, and multisig 2019-01-21 21:41:21 -08:00
Amir Bandeali
e2fe907de0 Rename libs to exchange-libs 2019-01-21 21:41:21 -08:00
Amir Bandeali
f9986a6342 Move LibAddressArray to utils package 2019-01-21 21:41:21 -08:00
Fabio B
8d367a09fe Merge pull request #1527 from 0xProject/improvements/website/dev_home
Add Python tools section to Dev Home and add missing Python packages
2019-01-21 18:26:23 +01:00
Leonid Logvinov
7e60138e9d Fix imports in TestContracts and testLibBytes to be relative. This way they show up correctly in coverage reports 2019-01-21 16:37:50 +01:00
Leonid Logvinov
e5c4390489 Fix a bug when some parts of the profiling report were missing because of the coverage ignore lines 2019-01-21 16:32:12 +01:00
Fabio Berger
dabcd2cf47 Fix linter issue 2019-01-21 16:14:17 +01:00
Leonid Logvinov
61910f264c Print reasonable warnings on bytecode collisions 2019-01-21 15:55:06 +01:00
Leonid Logvinov
ddb0e29253 SolCompilerArtifactAdapter now doesn't return the ContractData for interfaces 2019-01-21 15:52:37 +01:00
Leonid Logvinov
9d9ab2f1ee Cache bytecode lookup 2019-01-21 15:44:08 +01:00
Leonid Logvinov
ce65ac0c1c SolCompilerArtifactsAdapter now uses SolResolver under the hood which allows to resolve NPM dependencies properly 2019-01-21 15:28:39 +01:00
Jacob Evans
98203bcc8c Convert from to lower case.
fixes #1490
2019-01-21 16:02:20 +11:00
Jacob Evans
bee48d1d43 Remove partial type for TxData txDefaults 2019-01-21 15:52:39 +11:00
Jacob Evans
ebbb4df227 Remove owner from migrations 2019-01-21 15:16:16 +11:00
Fabio Berger
da7c969eeb Add entry for contract demo package 2019-01-18 22:41:55 +01:00
Fabio Berger
310d981990 Link all Python packages to Pypi 2019-01-18 22:37:13 +01:00
Fabio Berger
6275b7ba3b Remove .py suffix 2019-01-18 22:35:04 +01:00
Fabio Berger
b22a6b4e09 Create Python tools section and add missing Python packages to it 2019-01-18 13:12:19 +01:00
Leonid Logvinov
b5fd3c72a0 Merge pull request #1518 from 0xProject/feature/new-ganache
Update ganache version
2019-01-18 13:07:32 +01:00
Leonid Logvinov
bf65332763 Merge branch 'development' into feature/new-ganache 2019-01-18 13:07:19 +01:00
Leonid Logvinov
3973dec994 Merge pull request #1517 from 0xProject/feature/bignumber-8.0
Bignumber 8.0
2019-01-18 13:06:08 +01:00
Leonid Logvinov
c8212f1d4d Merge branch 'development' into feature/bignumber-8.0 2019-01-18 12:53:04 +01:00
Leonid Logvinov
e6fe728bcb Merge development 2019-01-18 12:46:16 +01:00
Fabio Berger
bef30e4209 Update footer 2019-01-18 12:36:48 +01:00
Fabio B
6c7f4c13fa Update packages/web3-wrapper/CHANGELOG.json
Co-Authored-By: LogvinovLeon <logvinov.leon@gmail.com>
2019-01-18 12:32:49 +01:00
Fabio B
662049914a Update packages/subproviders/CHANGELOG.json
Co-Authored-By: LogvinovLeon <logvinov.leon@gmail.com>
2019-01-18 12:32:41 +01:00
Greg Hysen
d7a5190d52 Merge pull request #1519 from hosyvietanh/patch-1
Allow matching of uint80 in evm_data_type
2019-01-18 01:07:28 -08:00
Steve Klebanoff
2b64661c61 Merge pull request #1512 from 0xProject/feature/instant/asset-buyer-check-liquidity
[instant] [asset-buyer] Helper methods for checking liquidity
2019-01-17 16:01:36 -08:00
Steve Klebanoff
9c29eecc30 Merge pull request #1525 from 0xProject/fix/dev-tools-pages-package
[dev-tools-pages] Remove dangling comma from package.json
2019-01-17 15:27:43 -08:00
Steve Klebanoff
25b58108bc remove dangling comma 2019-01-17 15:00:12 -08:00
Steve Klebanoff
fbde36d27b remove dangling comma 2019-01-17 14:56:44 -08:00
Steve Klebanoff
02b7a43909 Merge branch 'development' into feature/instant/asset-buyer-check-liquidity 2019-01-17 13:29:46 -08:00
Fabio Berger
e1e531a2a4 Remove react-snap from dev-tools-pages since it was messing up links on rendering pages 2019-01-17 20:59:39 +01:00
Fabio Berger
f6edf27856 Add hiring pitch to footer 2019-01-17 20:12:33 +01:00
Leonid Logvinov
277e09d061 Merge pull request #1524 from 0xProject/feature/istanbul-geth
Add notes about istanbul and Geth to website docs
2019-01-17 20:00:28 +01:00
Leonid Logvinov
1c9fb5f65f Add notes about istanbul and Geth to website docs 2019-01-17 19:59:35 +01:00
Fabio Berger
c29539aaf2 Add missing .png 2019-01-17 19:43:20 +01:00
Brandon Millman
4143baa27a Merge pull request #1523 from 0xProject/fix/react-shared/react-highlight-dep
[react-shared] Change react-highlight dep to reference fork by branch instead of commit
2019-01-17 10:26:26 -08:00
Leonid Logvinov
5816279d68 Publish
- 0x.js@3.0.3
 - @0x/asset-buyer@4.0.2
 - @0x/contract-wrappers@5.0.1
 - @0x/dev-tools-pages@0.0.14
 - @0x/instant@1.0.8
 - @0x/metacoin@0.0.36
 - @0x/monorepo-scripts@1.0.19
 - @0x/order-watcher@2.4.3
 - @0x/sol-coverage@1.0.3
 - @0x/sol-profiler@1.0.3
 - @0x/sol-trace@1.0.3
 - @0x/sol-tracing-utils@4.0.1
 - @0x/testnet-faucets@1.0.64
 - @0x/website@0.0.67
 - @0x/contracts-examples@1.0.6
 - @0x/contracts-extensions@1.2.3
 - @0x/contracts-interfaces@1.0.6
 - @0x/contracts-libs@1.0.6
 - @0x/contracts-multisig@1.0.6
 - @0x/contracts-protocol@2.2.3
 - @0x/contracts-test-utils@2.0.1
 - @0x/contracts-tokens@1.0.6
 - @0x/contracts-utils@1.0.6
2019-01-17 19:07:37 +01:00
Leonid Logvinov
0d877a8076 Updated CHANGELOGS 2019-01-17 19:07:25 +01:00
Brandon Millman
7b266bc762 Change react-highlight dep to reference fork by branch instead of commit 2019-01-17 10:03:23 -08:00
Fabio Berger
0e6aea856f http to https 2019-01-17 16:58:15 +01:00
Fabio B
e31d17ef79 Merge pull request #1509 from 0xProject/fix/dev-tools-pages/finalTouches
Dev Tools Pages - Final Touches
2019-01-17 16:56:01 +01:00
Fabio Berger
7b2a9ba698 Fix linter errors 2019-01-17 16:38:30 +01:00
Fabio Berger
87d08b0af6 Update yarn.lock 2019-01-17 16:24:11 +01:00
Fabio Berger
e68c5d5517 Enable "copy" button on all code snippets that should be copy-able 2019-01-17 16:24:03 +01:00
Leonid Logvinov
c09825660c Increase the Buffer size when fetching tags 2019-01-17 16:14:19 +01:00
Fabio Berger
293e937291 Merge branch 'development' into fix/dev-tools-pages/finalTouches
* development: (22 commits)
  Fix linter
  Update packages/sol-tracing-utils/src/trace_collection_subprovider.ts
  Update packages/sol-tracing-utils/CHANGELOG.json
  Update packages/sol-tracing-utils/CHANGELOG.json
  Add PR numbers
  Fix/simplify handling of revert trace snippets
  Fix a bug when TraceCollectionSubprovider was hanging on the fake Geth snapshot transaction
  Fix a bug when a custom Geth tracer didn't return stack entries for DELEGATECALL
  Revert devnet mining period from 1 to 0
  update team info, add brent
  Publish
  Updated CHANGELOGS
  Add commented-out pre-publish checks
  Add additional check to make sure user was added to our DockerHub org
  Update test for required amountAvailableToFill
  Add actual error message thrown
  Flag order-watcher as having a Docker image to publish
  Add publish to DockerHub step to publish flow
  Flesh out postpublish configs in packageJSON type
  Add pre-publish check to ensure publisher is logged in to docker cmdline
  ...
2019-01-17 15:59:00 +01:00
Fabio Berger
fe2f97dabd Add link to Truffle starter project 2019-01-17 15:58:41 +01:00
Leonid Logvinov
0b23aaca26 Merge pull request #1521 from 0xProject/feature/dev-tools-pre-release-fixes
0x Dev tools pre-release fixes
2019-01-17 15:53:17 +01:00
Leonid Logvinov
d92dc47df8 Last touches 2019-01-17 15:44:34 +01:00
Leonid Logvinov
8b69d918a9 Fix linter 2019-01-17 15:38:09 +01:00
Fabio Berger
3b79754b7a Remove incorrect section of docs 2019-01-17 15:37:43 +01:00
Fabio B
92ec4f5772 Update packages/sol-tracing-utils/src/trace_collection_subprovider.ts
Co-Authored-By: LogvinovLeon <logvinov.leon@gmail.com>
2019-01-17 15:06:42 +01:00
Fabio B
8528660f50 Update packages/sol-tracing-utils/CHANGELOG.json
Co-Authored-By: LogvinovLeon <logvinov.leon@gmail.com>
2019-01-17 15:06:35 +01:00
Fabio B
edd4370cdb Update packages/sol-tracing-utils/CHANGELOG.json
Co-Authored-By: LogvinovLeon <logvinov.leon@gmail.com>
2019-01-17 15:06:29 +01:00
Leonid Logvinov
69aa1c2e91 Add PR numbers 2019-01-17 14:40:11 +01:00
Leonid Logvinov
fcdd0de9ee Fix/simplify handling of revert trace snippets 2019-01-17 14:37:15 +01:00
Leonid Logvinov
4c5bde1b54 Fix a bug when TraceCollectionSubprovider was hanging on the fake Geth snapshot transaction 2019-01-17 14:36:23 +01:00
Leonid Logvinov
83f77a2d56 Fix a bug when a custom Geth tracer didn't return stack entries for DELEGATECALL 2019-01-17 14:28:16 +01:00
Leonid Logvinov
cdac2d210e Revert devnet mining period from 1 to 0 2019-01-17 14:23:03 +01:00
Fabio Berger
737941e8c7 Add call-to-action docs button at end of instructions again 2019-01-17 13:29:47 +01:00
Fabio Berger
a873872cc7 Open 0x.org on different tab 2019-01-17 13:03:18 +01:00
Fabio Berger
56b8fd2074 Add fonts 2019-01-17 12:55:14 +01:00
Fabio Berger
b2ea4f6aaf Update requirement sections 2019-01-17 12:53:09 +01:00
hosyvietanh
ca5b024e03 Allow matching of uint80 in evm_data_type 2019-01-17 11:07:50 +07:00
Steve Klebanoff
92f5ad4f15 Use more specific helper method decodeAssetDataOrThrow 2019-01-16 17:12:08 -08:00
Steve Klebanoff
ff8250cd35 change helper method to return a boolean 2019-01-16 15:45:01 -08:00
Steve Klebanoff
466ec6b22a Change LiquidityForAssetData to return a BigNumber instead of a number to avoid losing precision 2019-01-16 14:16:49 -08:00
fragosti
beaf0a4a8a update team info, add brent 2019-01-16 11:33:57 -08:00
Fabio Berger
6871f36dad Update 0x url 2019-01-16 18:44:52 +01:00
Steve Klebanoff
a587718443 export type instead of interface for more succinct syntax 2019-01-16 09:41:12 -08:00
Steve Klebanoff
444250520a Clarify boolean variable name 2019-01-16 09:40:36 -08:00
Steve Klebanoff
bd5850f390 Merge branch 'development' into feature/instant/asset-buyer-check-liquidity 2019-01-16 09:38:38 -08:00
Steve Klebanoff
ce1c2eeab7 Remove accidental import 2019-01-16 09:37:10 -08:00
Fabio B
b08d6c3b4d Merge pull request #1510 from 0xProject/feature/monorepo-scripts/publishToDockerHub
Add DockerHub Publishing Step to Publish Flow
2019-01-16 18:35:55 +01:00
Steve Klebanoff
f269bc28cf Add PR number and fix description 2019-01-15 14:00:00 -08:00
Steve Klebanoff
af63934d2c Export types and add additional documentation 2019-01-15 13:57:31 -08:00
Steve Klebanoff
39816bef8f Merge pull request #1511 from 0xProject/fix/asset-buyer/zero-amount-available-test
Fix expectedAmountAvailableToFill  test
2019-01-15 13:04:55 -08:00
Steve Klebanoff
600b44c962 Merge branch 'development' into feature/instant/asset-buyer-check-liquidity 2019-01-15 10:43:55 -08:00
Steve Klebanoff
7a2b312d64 Merge branch 'development' into fix/asset-buyer/zero-amount-available-test 2019-01-15 10:38:23 -08:00
Leonid Logvinov
7d166dc7da Fix prettier 2019-01-15 17:34:44 +01:00
Leonid Logvinov
0720b8487c Fix a build issue 2019-01-15 17:13:20 +01:00
Leonid Logvinov
4404f92b38 Add CHANGELOG entries 2019-01-15 17:05:51 +01:00
Leonid Logvinov
0a27979464 Convert address strings to lower case before parsing them as BigNumbers 2019-01-15 16:25:26 +01:00
Leonid Logvinov
a3cb722469 Fix a bug when we didn't call isNaN function and assumed it's a property 2019-01-15 16:25:26 +01:00
Leonid Logvinov
2cca2d70d7 Add a throw reason in tests 2019-01-15 16:25:26 +01:00
Leonid Logvinov
17f313658d Add a NAN check when parsing BigNumber candidate 2019-01-15 16:25:26 +01:00
Leonid Logvinov
d304c062eb Convert address strings to lower case before parsing them as BigNumbers 2019-01-15 16:25:26 +01:00
Leonid Logvinov
3eef888e25 Update yarn.lock 2019-01-15 16:25:26 +01:00
Leonid Logvinov
20eab4257a Upgrade chai-bignumber 2019-01-15 16:25:25 +01:00
Leonid Logvinov
665dd0813e Remove unused imports 2019-01-15 16:25:25 +01:00
Leonid Logvinov
e84232cce8 Use new check for isBigNumber 2019-01-15 16:25:25 +01:00
Leonid Logvinov
de78d6a8ad Fix isBigNumber check for the new version 2019-01-15 16:25:25 +01:00
Leonid Logvinov
a085654aba Fix linting error 2019-01-15 16:25:25 +01:00
Leonid Logvinov
61c88455f4 Apply prettier 2019-01-15 16:25:25 +01:00
Leonid Logvinov
a084bbbed8 Rename cmp to comparedTo 2019-01-15 16:25:25 +01:00
Leonid Logvinov
eb393f0a66 Upgrade chai-bignumber 2019-01-15 16:25:25 +01:00
Leonid Logvinov
c3afc13dd6 Upgrade bignumber.js version 2019-01-15 16:25:24 +01:00
Leonid Logvinov
08b865d25b Add CHANGELOG entries 2019-01-15 16:19:28 +01:00
Leonid Logvinov
9932240a4d Merge branch 'development' into feature/new-ganache 2019-01-15 15:33:55 +01:00
Leonid Logvinov
f570f80674 Publish
- 0x.js@3.0.2
 - @0x/abi-gen@1.0.22
 - @0x/abi-gen-templates@1.0.2
 - @0x/abi-gen-wrappers@2.2.0
 - @0x/assert@1.0.23
 - @0x/asset-buyer@4.0.1
 - @0x/base-contract@3.0.13
 - @0x/connect@3.0.13
 - @0x/contract-addresses@2.2.0
 - @0x/contract-artifacts@1.3.0
 - @0x/contract-wrappers@5.0.0
 - @0x/dev-tools-pages@0.0.13
 - @0x/dev-utils@1.0.24
 - ethereum-types@1.1.6
 - @0x/fill-scenarios@1.1.2
 - @0x/instant@1.0.7
 - @0x/json-schemas@2.1.7
 - @0x/metacoin@0.0.35
 - @0x/migrations@2.4.0
 - @0x/monorepo-scripts@1.0.18
 - @0x/order-utils@3.1.2
 - @0x/order-watcher@2.4.2
 - @0x/pipeline@1.0.5
 - @0x/react-docs@1.0.25
 - @0x/react-shared@1.1.2
 - @0x/sol-compiler@2.0.2
 - @0x/sol-coverage@1.0.2
 - @0x/sol-doc@1.0.14
 - @0x/sol-profiler@1.0.2
 - @0x/sol-resolver@1.2.3
 - @0x/sol-trace@1.0.2
 - @0x/sol-tracing-utils@4.0.0
 - @0x/sra-spec@1.0.16
 - @0x/subproviders@2.1.11
 - @0x/testnet-faucets@1.0.63
 - @0x/tslint-config@2.0.2
 - @0x/types@1.5.2
 - @0x/typescript-typings@3.0.8
 - @0x/utils@3.0.1
 - @0x/web3-wrapper@3.2.4
 - @0x/website@0.0.66
 - @0x/contracts-examples@1.0.5
 - @0x/contracts-extensions@1.2.2
 - @0x/contracts-interfaces@1.0.5
 - @0x/contracts-libs@1.0.5
 - @0x/contracts-multisig@1.0.5
 - @0x/contracts-protocol@2.2.2
 - @0x/contracts-test-utils@2.0.0
 - @0x/contracts-tokens@1.0.5
 - @0x/contracts-utils@1.0.5
2019-01-15 15:21:53 +01:00
Leonid Logvinov
dbae6ec165 Updated CHANGELOGS 2019-01-15 15:21:42 +01:00
Fabio Berger
7c37d10d1f Merge branch 'development' into feature/monorepo-scripts/publishToDockerHub
* development: (87 commits)
  Update packages/sol-tracing-utils/src/trace_collection_subprovider.ts
  Make mapping namings direct
  Remove unused tslint disable
  Revert "Remove logAsyncErrors hack"
  Remove logAsyncErrors hack
  Refactor logAsyncErrors to follow our conventions
  Export Sources and SourceCodes out of tracing utils
  Replace console.log with logUtils.log (#1515)
  strict decoding of return values using generics
  makerAssetFillAmount -> takerAssetFillAmount
  Ran prettier
  Linter
  Fix build after rebase
  Style cleanup for Compressed Calldata in Contract Wrappers PR
  Use simpler `_.find` to locate fillOrderBai
  Updated dutch auction wrapper
  Added back abi-gen-wrappers
  Renamed signatureParser.ts to signature_parser.ts
  Renamed decode rule `structsAsObjects` to `shouldConvertStructsToObjects`
  circle build failed. New commit to resubmit job.
  ...
2019-01-15 15:13:24 +01:00
Fabio Berger
ae147e615a Merge branch 'development' into fix/dev-tools-pages/finalTouches
* development: (87 commits)
  Update packages/sol-tracing-utils/src/trace_collection_subprovider.ts
  Make mapping namings direct
  Remove unused tslint disable
  Revert "Remove logAsyncErrors hack"
  Remove logAsyncErrors hack
  Refactor logAsyncErrors to follow our conventions
  Export Sources and SourceCodes out of tracing utils
  Replace console.log with logUtils.log (#1515)
  strict decoding of return values using generics
  makerAssetFillAmount -> takerAssetFillAmount
  Ran prettier
  Linter
  Fix build after rebase
  Style cleanup for Compressed Calldata in Contract Wrappers PR
  Use simpler `_.find` to locate fillOrderBai
  Updated dutch auction wrapper
  Added back abi-gen-wrappers
  Renamed signatureParser.ts to signature_parser.ts
  Renamed decode rule `structsAsObjects` to `shouldConvertStructsToObjects`
  circle build failed. New commit to resubmit job.
  ...
2019-01-15 15:10:50 +01:00
Leonid Logvinov
18084588ea Merge pull request #1498 from 0xProject/fix/sol-cov
Sol tracing fixes
2019-01-15 14:45:02 +01:00
Fabio B
64d99dc07c Update packages/sol-tracing-utils/src/trace_collection_subprovider.ts
Co-Authored-By: LogvinovLeon <logvinov.leon@gmail.com>
2019-01-15 14:44:52 +01:00
Leonid Logvinov
91b57793c2 Update ganache version 2019-01-15 14:44:43 +01:00
Leonid Logvinov
63a63543be Make mapping namings direct 2019-01-15 13:37:10 +01:00
Leonid Logvinov
75a4bbc5f2 Remove unused tslint disable 2019-01-15 12:09:48 +01:00
Leonid Logvinov
c2ec4174b7 Revert "Remove logAsyncErrors hack"
This reverts commit 7ea274b731.
2019-01-15 12:09:17 +01:00
Leonid Logvinov
7ea274b731 Remove logAsyncErrors hack 2019-01-15 11:55:06 +01:00
Leonid Logvinov
d9675ad6d3 Refactor logAsyncErrors to follow our conventions 2019-01-15 11:48:04 +01:00
Leonid Logvinov
a8e32d8c87 Export Sources and SourceCodes out of tracing utils 2019-01-15 11:34:31 +01:00
Jacob Evans
16a2cf7be6 Merge pull request #1503 from 0xProject/feature/multi-asset-proxy-migration
Add MultiAssetProxy Migration
2019-01-15 13:27:07 +11:00
Jacob Evans
b4621f6a69 Merge pull request #1514 from 0xProject/bug/exchange-wrapper-matchOrders
Remove optimization from matchOrdersAsync in Exchange wrapper
2019-01-15 13:23:45 +11:00
F. Eugene Aumson
c859788fde Replace console.log with logUtils.log (#1515) 2019-01-14 18:21:12 -05:00
Greg Hysen
1c25d8e997 Merge pull request #1475 from 0xProject/feature/monorepo/useNewAbiEncoder
Use Compressed Calldata in Contract Wrappers
2019-01-14 11:48:17 -08:00
Francesco Agosti
fc89b97818 Merge pull request #1516 from 0xProject/fix/website/update-react-highlight
[website] Update react-highlight dep in website to latest commit
2019-01-14 11:33:35 -08:00
Greg Hysen
b0817854e8 strict decoding of return values using generics 2019-01-14 10:49:44 -08:00
Greg Hysen
1907ecc02e makerAssetFillAmount -> takerAssetFillAmount 2019-01-14 10:49:44 -08:00
Greg Hysen
cf2dee60dc Ran prettier 2019-01-14 10:49:44 -08:00
Greg Hysen
80aa2884a3 Linter 2019-01-14 10:49:44 -08:00
Greg Hysen
3a28eb1c6a Fix build after rebase 2019-01-14 10:49:44 -08:00
Greg Hysen
82a44559f6 Style cleanup for Compressed Calldata in Contract Wrappers PR 2019-01-14 10:49:44 -08:00
Greg Hysen
892be49b98 Use simpler _.find to locate fillOrderBai 2019-01-14 10:49:44 -08:00
Greg Hysen
1cbc03ae43 Updated dutch auction wrapper 2019-01-14 10:49:44 -08:00
Greg Hysen
1c9a49cd08 Added back abi-gen-wrappers 2019-01-14 10:49:44 -08:00
Greg Hysen
4f53335db0 Renamed signatureParser.ts to signature_parser.ts 2019-01-14 10:49:44 -08:00
Greg Hysen
0b87aec9c6 Renamed decode rule structsAsObjects to shouldConvertStructsToObjects 2019-01-14 10:49:44 -08:00
Greg Hysen
6892f929fb circle build failed. New commit to resubmit job. 2019-01-14 10:49:44 -08:00
Greg Hysen
f39c03191c Ran linter 2019-01-14 10:49:44 -08:00
Greg Hysen
05adb38a09 Removed console log from handlebars 2019-01-14 10:49:44 -08:00
Greg Hysen
f73c68ee61 Created an interface for abi decoded fillOrder data 2019-01-14 10:49:44 -08:00
Greg Hysen
33f3405226 let -> const in callAsync 2019-01-14 10:49:44 -08:00
Greg Hysen
86caa4a0bb Ran prettier and linter 2019-01-14 10:49:44 -08:00
Greg Hysen
6d832deb62 Decodes revert reason as array to appease Geth 2019-01-14 10:49:44 -08:00
Greg Hysen
0b6c9c8468 Ran prettier 2019-01-14 10:49:44 -08:00
Greg Hysen
d1fd4421be Use string argument encoding with new encoder 2019-01-14 10:49:44 -08:00
Greg Hysen
b06f8239e1 Finished porting new abi encoder to contracts 2019-01-14 10:49:44 -08:00
Greg Hysen
7991de9ed0 Generalized create for signature / dataItems. Cleaner. 2019-01-14 10:49:44 -08:00
Greg Hysen
e9a82905e3 Abi Encoder tests fixed + added a signature parser for cases where MethodAbi/DataItems are not readily available 2019-01-14 10:49:44 -08:00
Greg Hysen
f8684d6a77 All contract tests working with new abi encoder 2019-01-14 10:49:44 -08:00
Greg Hysen
e4551c8f60 Works for almost all tests 2019-01-14 10:49:44 -08:00
Greg Hysen
2f1454e90e Working for almost every test 2019-01-14 10:49:29 -08:00
Greg Hysen
b89f986949 Ensure that addresses are lower case 2019-01-14 10:49:29 -08:00
Greg Hysen
285fb3dead Progress 2019-01-14 10:49:29 -08:00
Brandon Millman
923234eed1 Update react-highlight dep in website to latest commit 2019-01-14 10:44:23 -08:00
Fabio Berger
affd617054 Add commented-out pre-publish checks 2019-01-14 16:05:56 +01:00
Fabio Berger
84163517c6 Add additional check to make sure user was added to our DockerHub org 2019-01-14 15:24:00 +01:00
Leonid Logvinov
83b46cbf71 Rename mappins to have a direct naming scheme instead of a reverse one 2019-01-14 14:52:00 +01:00
Leonid Logvinov
4689309857 Add SourceCodes and Sources types 2019-01-14 14:43:14 +01:00
Leonid Logvinov
02543fdd0c Add a link to tracing examples 2019-01-14 14:43:14 +01:00
Fabio B
1f7179b178 Update packages/sol-tracing-utils/src/source_maps.ts
Co-Authored-By: LogvinovLeon <logvinov.leon@gmail.com>
2019-01-14 14:29:01 +01:00
Fabio B
e14f1646d6 Update packages/sol-tracing-utils/CHANGELOG.json
Co-Authored-By: LogvinovLeon <logvinov.leon@gmail.com>
2019-01-14 13:54:50 +01:00
Fabio B
caba2faa92 Update packages/sol-tracing-utils/src/trace_info_subprovider.ts
Co-Authored-By: LogvinovLeon <logvinov.leon@gmail.com>
2019-01-14 13:52:26 +01:00
Fabio B
ed3b89f005 Update packages/sol-tracing-utils/src/trace_collection_subprovider.ts
Co-Authored-By: LogvinovLeon <logvinov.leon@gmail.com>
2019-01-14 13:51:10 +01:00
Fabio B
1c279f97ce Update packages/sol-tracing-utils/src/source_maps.ts
Co-Authored-By: LogvinovLeon <logvinov.leon@gmail.com>
2019-01-14 13:51:01 +01:00
Fabio B
b41bcd80ef Update packages/sol-tracing-utils/CHANGELOG.json
Co-Authored-By: LogvinovLeon <logvinov.leon@gmail.com>
2019-01-14 13:50:53 +01:00
Fabio B
45d70dd30b Update packages/sol-tracing-utils/CHANGELOG.json
Co-Authored-By: LogvinovLeon <logvinov.leon@gmail.com>
2019-01-14 13:50:45 +01:00
Leonid Logvinov
4b9648c7c9 Apply prettier 2019-01-14 13:13:45 +01:00
Leonid Logvinov
092a851bb3 Use custom JS tracer only if the node is geth 2019-01-14 12:53:14 +01:00
Leonid Logvinov
bd71f4a480 Add CHANGELOG entries 2019-01-14 12:46:37 +01:00
Leonid Logvinov
bf183af9a4 Merge development 2019-01-14 12:17:12 +01:00
Leonid Logvinov
2b8f0d887a Fix linter 2019-01-14 12:16:00 +01:00
Leonid Logvinov
2581bc93e5 Fix the bug with incorrect source maps parsing by changing contract data from an array to a mapping 2019-01-14 12:04:08 +01:00
Leonid Logvinov
8b62783f48 Add utils.isRangeEqual to sol-profiler 2019-01-14 11:50:05 +01:00
Leonid Logvinov
2345a3bdfe Add assembly statements to AST Visitor 2019-01-14 11:40:05 +01:00
Leonid Logvinov
ab5cd8f938 Use a custom JS tracer 2019-01-14 11:39:38 +01:00
Jacob Evans
b108b1119a Update prettier changelogs 2019-01-14 10:10:39 +11:00
Jacob Evans
b5420fde52 Update contract addresses 2019-01-14 10:09:12 +11:00
Jacob Evans
dc58c60841 Update hardcoded token addresses 2019-01-12 18:50:05 +11:00
Jacob Evans
043fb3f460 Group similar setup transactions 2019-01-12 18:50:05 +11:00
Jacob Evans
34cce04c43 Register ERC20/721 into MAP 2019-01-12 18:50:04 +11:00
Jacob Evans
6aae0c5b78 chore(python-packages): add MAP to python-packages 2019-01-12 18:50:04 +11:00
Jacob Evans
c15406173a chore(changelogs): Update changelogs with PR 2019-01-12 18:50:04 +11:00
Jacob Evans
e3b3f82c8c feature(migrations): Add MultiAssetProxy Migration 2019-01-12 18:49:16 +11:00
Jacob Evans
007a2d7deb Remove matchOrders optimization 2019-01-12 12:07:37 +11:00
Jacob Evans
5da40ab45e Prettier 2019-01-12 11:07:48 +11:00
Jacob Evans
54a1fd87db Update PR number 2019-01-12 10:27:48 +11:00
Francesco Agosti
797d7c7878 Merge pull request #1513 from 0xProject/fix/website/multiple-react-dom-versions-et-al
[website] Fix multiple react dom versions and layout issue
2019-01-11 15:23:51 -08:00
Jacob Evans
507c47c42c bug(exchange-wrapper): matchOrdersAsync input param mutation 2019-01-12 10:22:13 +11:00
fragosti
7fcdfe5de5 Revert "hack: force redux and redux-devtools to work for build"
This reverts commit 500d8fc86b.
2019-01-11 12:53:32 -08:00
fragosti
22b1c48c89 upgrade react in react-docs and react-shared, install dependencies in website that are mysteriously missing 2019-01-11 12:49:38 -08:00
fragosti
2197a531e3 Revert "fix: make version consisten for react, react-dom and styled-components'"
This reverts commit 89c5d657a7.
2019-01-11 12:22:13 -08:00
fragosti
4799b68972 feat: upgrade styled-components and remove ununsed basscss import 2019-01-11 12:00:02 -08:00
fragosti
500d8fc86b hack: force redux and redux-devtools to work for build 2019-01-11 11:57:26 -08:00
fragosti
89c5d657a7 fix: make version consisten for react, react-dom and styled-components' 2019-01-11 11:56:48 -08:00
fragosti
bc44774116 fix: use basscss from css file instead of module 2019-01-11 11:50:35 -08:00
Steve Klebanoff
8a8a5332d7 prettier changelog 2019-01-11 10:38:52 -08:00
Xianny
943c378309 Implement tslint enum-naming to enforce PascalCase on enum members (#1474) 2019-01-11 10:04:30 -08:00
Steve Klebanoff
8d3bbb8213 Disable promise-function-async for mocking async functions 2019-01-11 09:32:28 -08:00
Steve Klebanoff
a5e7ce9e1a Move calculateLiquidity to helper function 2019-01-11 09:28:51 -08:00
Steve Klebanoff
64a78149aa Update test for required amountAvailableToFill 2019-01-11 09:20:59 -08:00
Fabio Berger
cf3787edbb Publish
- 0x.js@3.0.1
 - @0x/abi-gen@1.0.21
 - @0x/abi-gen-wrappers@2.1.1
 - @0x/assert@1.0.22
 - @0x/asset-buyer@4.0.0
 - @0x/base-contract@3.0.12
 - @0x/connect@3.0.12
 - @0x/contract-wrappers@4.2.1
 - @0x/dev-tools-pages@0.0.12
 - @0x/dev-utils@1.0.23
 - ethereum-types@1.1.5
 - @0x/fill-scenarios@1.1.1
 - @0x/instant@1.0.6
 - @0x/json-schemas@2.1.6
 - @0x/metacoin@0.0.34
 - @0x/migrations@2.3.1
 - @0x/monorepo-scripts@1.0.17
 - @0x/order-utils@3.1.1
 - @0x/order-watcher@2.4.1
 - @0x/pipeline@1.0.4
 - @0x/react-docs@1.0.24
 - @0x/react-shared@1.1.1
 - @0x/sol-compiler@2.0.1
 - @0x/sol-coverage@1.0.1
 - @0x/sol-doc@1.0.13
 - @0x/sol-profiler@1.0.1
 - @0x/sol-resolver@1.2.2
 - @0x/sol-trace@1.0.1
 - @0x/sol-tracing-utils@3.0.0
 - @0x/sra-spec@1.0.15
 - @0x/subproviders@2.1.10
 - @0x/testnet-faucets@1.0.62
 - @0x/tslint-config@2.0.1
 - @0x/types@1.5.1
 - @0x/typescript-typings@3.0.7
 - @0x/utils@3.0.0
 - @0x/web3-wrapper@3.2.3
 - @0x/website@0.0.65
 - @0x/contracts-examples@1.0.4
 - @0x/contracts-extensions@1.2.1
 - @0x/contracts-interfaces@1.0.4
 - @0x/contracts-libs@1.0.4
 - @0x/contracts-multisig@1.0.4
 - @0x/contracts-protocol@2.2.1
 - @0x/contracts-test-utils@1.0.4
 - @0x/contracts-tokens@1.0.4
 - @0x/contracts-utils@1.0.4
2019-01-11 18:04:43 +01:00
Fabio Berger
89429c54a7 Updated CHANGELOGS 2019-01-11 18:04:33 +01:00
Steve Klebanoff
dbaed69d77 Add new version to CHANGELOG 2019-01-11 08:59:07 -08:00
Steve Klebanoff
faee751395 Merge branch 'development' into feature/instant/asset-buyer-check-liquidity 2019-01-11 08:53:15 -08:00
Steve Klebanoff
742e5e039d getLiquidityForAssetDataAsync helper method, and fix to assetBuyer to check for eth token in asset pairs 2019-01-11 08:14:57 -08:00
Fabio Berger
98579300c1 merge development 2019-01-11 17:14:12 +01:00
Fabio Berger
96ff5eef64 merge development 2019-01-11 17:12:55 +01:00
Fabio Berger
7f5a2c972b Add actual error message thrown 2019-01-11 16:55:37 +01:00
Fabio Berger
dad6404c7f Flag order-watcher as having a Docker image to publish 2019-01-11 16:52:28 +01:00
Fabio Berger
6dcf40f570 Add publish to DockerHub step to publish flow 2019-01-11 16:52:15 +01:00
Fabio Berger
43b0422804 Flesh out postpublish configs in packageJSON type 2019-01-11 16:51:54 +01:00
Fabio Berger
55ce0d9d17 Add pre-publish check to ensure publisher is logged in to docker cmdline 2019-01-11 16:50:41 +01:00
Fabio Berger
895460aea3 Update yarn.lock 2019-01-11 14:29:09 +01:00
Fabio Berger
7956127b29 Ensure the process exits 2019-01-11 14:29:02 +01:00
Fabio Berger
6fb2721294 Fix copy and links 2019-01-11 14:20:56 +01:00
Fabio Berger
ebb10e6604 Remove unused import 2019-01-11 14:15:24 +01:00
Fabio Berger
db878f4a7b Fix title and og tags for sol-coverage 2019-01-11 14:15:15 +01:00
Leonid Logvinov
bb992458a3 Revert CHANGELOG changes 2019-01-11 11:29:39 +01:00
Leonid Logvinov
66add14ca5 Remove generated wrappers 2019-01-11 11:28:44 +01:00
Leonid Logvinov
0b38513c3f Remove generated artifacts 2019-01-11 11:28:08 +01:00
Remco Bloemen
d9ac5b611a Generate blocks at interval for truffle 2019-01-11 11:26:38 +01:00
Remco Bloemen
e1b99b5e2f Use tracer for debug traces 2019-01-11 11:26:38 +01:00
Remco Bloemen
7af0818dff Capture errors in next callbacks 2019-01-11 11:26:38 +01:00
Remco Bloemen
296b3d6311 Throw error when source location is missing 2019-01-11 11:26:38 +01:00
Remco Bloemen
4d03c3035c Fix typo 2019-01-11 11:26:38 +01:00
Remco Bloemen
27c4d2522b Add tracer params type 2019-01-11 11:26:37 +01:00
Fabio Berger
4dbd3ea902 Re-add changelog for 0x.js 2019-01-11 11:26:37 +01:00
Fabio B
2cf57a48dd Merge pull request #1500 from 0xProject/update-prettier-version
Update prettier to version ^1.15.3
2019-01-11 11:18:18 +01:00
Alex Browne
a091b2c19d Rebase and re-apply prettier 2019-01-10 17:44:35 -08:00
Alex Browne
89e398fa39 Update prettier to version ^1.15.3 2019-01-10 17:41:13 -08:00
Steve Klebanoff
1192314510 Add helper functions and expose to umd object 2019-01-10 16:13:16 -08:00
Fabio Berger
583e690b7a Merge branch 'development' into fix/dev-tools-pages/finalTouches
* development: (49 commits)
  upgrade to ddex api v3 (#1507)
  Add new deployment related instructions to pipeline README (#1499)
  feature: implement logging and friendly wallet name for Opera
  Fix prettier
  Add missing dependencies
  Remove second yarn call
  Add .gitkeep
  Rename sol-trace-based-tools-common to sol-tracing-utils
  Update packages/sol-trace/README.md
  Update packages/sol-trace/CHANGELOG.json
  Update packages/sol-trace-based-tools-common/src/source_maps.ts
  Update packages/sol-trace-based-tools-common/CHANGELOG.json
  Update packages/sol-profiler/CHANGELOG.json
  Update packages/sol-coverage/CHANGELOG.json
  Update packages/monorepo-scripts/src/test_installation.ts
  chore: changelog update
  fix: account for undefined errors in promisify, not only null
  Clean up docs before publish
  In README's, don't mention non-existent tests (#1497)
  fix: use getBackendBaseUrl instead of hardcoded string
  ...
2019-01-11 00:47:57 +01:00
Fabio Berger
a516b00a03 Fix footer links 2019-01-11 00:45:26 +01:00
Steve Klebanoff
841ad8757c Add LiquidityRequestOpts type 2019-01-10 15:40:55 -08:00
Steve Klebanoff
127bd4bf9d Getting rid of unused params and adding documentation 2019-01-10 15:38:41 -08:00
Justin Barry
a8c3b4126e Output Chrome 41 compatible version of 0x instant
This is important for SEO as Googlebot is still using Chrome 41 to crawl
thick clients.
2019-01-10 14:25:50 -08:00
Steve Klebanoff
2360b8282f rename tokensAvailableInUnitAmount to tokensAvailableInBaseUnits and use test helpers 2019-01-10 14:00:16 -08:00
Steve Klebanoff
0dade8624c Adding more test coverage 2019-01-10 13:51:02 -08:00
Steve Klebanoff
a9fad77eb4 Implement liquidity checking w/ testing 2019-01-10 13:41:28 -08:00
Xianny
a5b7a35160 upgrade to ddex api v3 (#1507) 2019-01-10 13:07:52 -08:00
Alex Browne
53fc860d61 Add new deployment related instructions to pipeline README (#1499)
* Add new deployment related instructions to pipeline README

* Apply prettier

* Respond to PR feedback
2019-01-10 13:04:34 -08:00
Fabio Berger
dc20429bca Add deployment commands for the Dev tools pages 2019-01-10 20:14:51 +01:00
Francesco Agosti
749312c0e8 Merge pull request #1506 from 0xProject/feature/instant/opera-followups
[instant] Implement logging and friendly wallet name for Opera
2019-01-10 10:48:06 -08:00
fragosti
ffd14ab2f2 feature: implement logging and friendly wallet name for Opera 2019-01-10 09:47:46 -08:00
Francesco Agosti
bf332d578c Merge pull request #1501 from 0xProject/fix/utils/promisify-not-accounting-for-undefined-error
[utils] account for undefined errors in promisify, not only null (and fix instant in Opera)
2019-01-10 09:33:22 -08:00
Leonid Logvinov
6c22594882 Merge pull request #1492 from 0xProject/feature/sol-cov-sol-profiler-sol-trace-divorce
Refactor out sol-cov, sol-profiler and sol-trace into their separate packages
2019-01-10 14:35:13 +01:00
Leonid Logvinov
b8e3829fdb Fix prettier 2019-01-10 14:05:29 +01:00
Leonid Logvinov
c317a69e7e Add missing dependencies 2019-01-10 13:33:56 +01:00
Leonid Logvinov
4c60d59123 Remove second yarn call 2019-01-10 11:57:18 +01:00
Leonid Logvinov
cee2954245 Merge development 2019-01-10 11:56:15 +01:00
Leonid Logvinov
a8d9263062 Add .gitkeep 2019-01-10 11:42:50 +01:00
Leonid Logvinov
7ae9e79235 Rename sol-trace-based-tools-common to sol-tracing-utils 2019-01-10 11:21:05 +01:00
Fabio B
15c9479ebe Update packages/sol-trace/README.md
Co-Authored-By: LogvinovLeon <logvinov.leon@gmail.com>
2019-01-10 11:15:34 +01:00
Fabio B
03dea585b4 Update packages/sol-trace/CHANGELOG.json
Co-Authored-By: LogvinovLeon <logvinov.leon@gmail.com>
2019-01-10 11:15:26 +01:00
Fabio B
d7df402c42 Update packages/sol-trace-based-tools-common/src/source_maps.ts
Co-Authored-By: LogvinovLeon <logvinov.leon@gmail.com>
2019-01-10 11:15:19 +01:00
Fabio B
052ed21e9c Update packages/sol-trace-based-tools-common/CHANGELOG.json
Co-Authored-By: LogvinovLeon <logvinov.leon@gmail.com>
2019-01-10 11:12:08 +01:00
Fabio B
36504646f9 Update packages/sol-profiler/CHANGELOG.json
Co-Authored-By: LogvinovLeon <logvinov.leon@gmail.com>
2019-01-10 11:11:52 +01:00
Fabio B
60cdbbccae Update packages/sol-coverage/CHANGELOG.json
Co-Authored-By: LogvinovLeon <logvinov.leon@gmail.com>
2019-01-10 11:11:43 +01:00
Fabio B
420333e3c3 Update packages/monorepo-scripts/src/test_installation.ts
Co-Authored-By: LogvinovLeon <logvinov.leon@gmail.com>
2019-01-10 11:11:23 +01:00
fragosti
b639843115 chore: changelog update 2019-01-09 18:31:23 -08:00
fragosti
7a114a6ef1 fix: account for undefined errors in promisify, not only null 2019-01-09 18:26:18 -08:00
Steve Klebanoff
686f27a96f Merge pull request #1482 from 0xProject/feature/monorepo/release-notes
[monorepo-scripts] Automatically alert new release to Discord
2019-01-09 16:49:12 -08:00
Steve Klebanoff
6487fae113 Merge pull request #1437 from 0xProject/feature/instant/tell-amount-available
[instant] Tell user how much of an asset is available
2019-01-09 16:29:11 -08:00
Francesco Agosti
87c287a5e2 Merge pull request #1489 from 0xProject/fix/website/0x-org-endpoints
[website] Audit and fix 0x.org migration URLs
2019-01-09 12:03:28 -08:00
F. Eugene Aumson
e39ef60775 Clean up docs before publish 2019-01-09 12:12:20 -05:00
Steve Klebanoff
fb3605026e Merge branch 'development' into feature/instant/tell-amount-available 2019-01-09 08:54:55 -08:00
Fabio Berger
241be6de30 Rename sol-cov to sol-coverage, fix links 2019-01-09 17:30:34 +01:00
Fabio Berger
589b535b91 Add docLink 2019-01-09 17:30:01 +01:00
Fabio Berger
eb6b07e804 Update yarn.lock 2019-01-09 17:29:13 +01:00
F. Eugene Aumson
5b8c9122a2 In README's, don't mention non-existent tests (#1497) 2019-01-09 11:02:58 -05:00
Fabio B
08d0ff48c3 Merge pull request #1249 from bakkenbaeck/dev-tools-pages
Dev tools pages
2019-01-09 16:22:59 +01:00
F. Eugene Aumson
aa5af04447 Python contract demo, with lots of refactoring (#1485)
* Refine Order for Web3 compat. & add conversions

Changed some of the fields in the Order class so that it can be passed
to our contracts via Web3.

Added conversion utilities so that an Order can be easily converted to
and from a JSON-compatible dict (specifically by encoding/decoding the
`bytes` fields), to facilitate validation against the JSON schema.

Also modified JSON order schema to accept integers in addition to
stringified integers.

* Fixes for json_schemas

Has-types indicator file, py.typed, was not being included in package.

Schemas were not being properly gathered into package installation.

* Add test/demo of Exchange.getOrderInfo()

* web3 bug workaround

* Fix problem packaging contract artifacts

* Move contract addresses to their own package

* Move contract artifacts to their own package

* Add scripts to install, test & lint all components

* prettierignore files in local python dev env

* Correct missing coverage analysis for sra_client

* CI cache lint: don't save, re-use from test-python

* tag hacks as hacks

* correct merge mistake

* remove local strip_0x() in favor of eth_utils

* remove json schemas from old order_utils location

* correct merge mistake

* doctest json schemas via command-line, not code
2019-01-09 09:58:29 -05:00
Leonid Logvinov
39786c3ad5 Merge development 2019-01-09 15:19:59 +01:00
Fabio Berger
5b7eff217e Publish
- 0x.js@3.0.0
 - @0x/abi-gen@1.0.20
 - @0x/abi-gen-wrappers@2.1.0
 - @0x/assert@1.0.21
 - @0x/asset-buyer@3.0.5
 - @0x/base-contract@3.0.11
 - @0x/connect@3.0.11
 - @0x/contract-addresses@2.1.0
 - @0x/contract-artifacts@1.2.0
 - @0x/contract-wrappers@4.2.0
 - @0x/dev-tools-pages@0.0.11
 - @0x/dev-utils@1.0.22
 - @0x/fill-scenarios@1.1.0
 - @0x/instant@1.0.5
 - @0x/json-schemas@2.1.5
 - @0x/metacoin@0.0.33
 - @0x/migrations@2.3.0
 - @0x/monorepo-scripts@1.0.16
 - @0x/order-utils@3.1.0
 - @0x/order-watcher@2.4.0
 - @0x/pipeline@1.0.3
 - @0x/react-docs@1.0.23
 - @0x/react-shared@1.1.0
 - @0x/sol-compiler@2.0.0
 - @0x/sol-cov@2.1.17
 - @0x/sol-doc@1.0.12
 - @0x/sol-resolver@1.2.1
 - @0x/sra-spec@1.0.14
 - @0x/subproviders@2.1.9
 - @0x/testnet-faucets@1.0.61
 - @0x/types@1.5.0
 - @0x/utils@2.1.1
 - @0x/web3-wrapper@3.2.2
 - @0x/website@0.0.64
 - @0x/contracts-examples@1.0.3
 - @0x/contracts-extensions@1.2.0
 - @0x/contracts-interfaces@1.0.3
 - @0x/contracts-libs@1.0.3
 - @0x/contracts-multisig@1.0.3
 - @0x/contracts-protocol@2.2.0
 - @0x/contracts-test-utils@1.0.3
 - @0x/contracts-tokens@1.0.3
 - @0x/contracts-utils@1.0.3
2019-01-09 14:44:17 +01:00
Fabio Berger
0a6ead90d9 Updated CHANGELOGS 2019-01-09 14:44:03 +01:00
Leonid Logvinov
7f2727236d Pin @types/styled-components versions 2019-01-09 14:39:19 +01:00
Leonid Logvinov
d6644ed035 Add yarn.lock changes 2019-01-09 13:45:34 +01:00
Leonid Logvinov
a2eede2ec9 Remove accidentally commited files 2019-01-09 13:45:23 +01:00
Leonid Logvinov
2fa4ed1fb7 Merge pull request #1496 from 0xProject/feature/solc-5.0
Solc 5.0 support in sol-compiler
2019-01-09 13:22:20 +01:00
Leonid Logvinov
3733a29ee2 Add CHENGELOG entrie 2019-01-09 12:46:51 +01:00
Leonid Logvinov
62b5eef4a0 Update sol-compiler binPaths to include the newest solidity 2019-01-09 12:36:05 +01:00
Leonid Logvinov
377d6367e0 Update solc used by sol-compiler 2019-01-09 12:35:35 +01:00
Leonid Logvinov
a3b364dbdf Remove contracts dependency on solc 2019-01-09 12:34:45 +01:00
Leonid Logvinov
ea14913b41 Merge development 2019-01-09 12:02:25 +01:00
Fabio B
5dd55491b8 Merge pull request #1494 from 0xProject/feature/order-watcher/dockerize
Dockerize OrderWatcher WS Server
2019-01-09 11:27:22 +01:00
Fabio Berger
28aa12691e rename method 2019-01-09 11:06:15 +01:00
Leonid Logvinov
5868c91cfb Fix static tests 2019-01-09 10:54:32 +01:00
Leonid Logvinov
fd034cc1e4 Remove redundant semicolons 2019-01-09 10:21:58 +01:00
Jacob Evans
c1bf2754a8 Merge pull request #1439 from 0xProject/migrations/docker-image
Add Docker image and Snapshot commands for migrations
2019-01-09 12:55:42 +11:00
Chris Kalani
c388e6d2b8 Update README.md 2019-01-08 17:15:20 -08:00
Chris Kalani
622fa951ca Update README.md
Fixing logo
2019-01-08 17:13:04 -08:00
fragosti
d00dd07435 fix: use getBackendBaseUrl instead of hardcoded string 2019-01-08 16:45:35 -08:00
Xianny
27fc640a9e fetch and save copper (#1472)
Fetch and save Copper CRM
2019-01-08 13:50:51 -08:00
F. Eugene Aumson
4689f20b86 Move json_schemas to its own package (#1435)
* Move zero_ex.json_schemas to its own package

* Support ALL the schemas

* Stop installing packages as editable

* HACK: cp files because CircleCI isn't

* Add example usage to sra_client README

* Tweak special case: only strip Schema as suffix

* Correct doc titles

* Clarify what kind of support ticket was raised.

* Correct inconsistencies in JSON schema names

In both ref ID's and file names.

* Add entry point for validation of JSON strings
2019-01-08 14:28:32 -05:00
Fabio Berger
de927d7207 Merge branch 'development' of github.com:0xProject/0x-monorepo into development
* 'development' of github.com:0xProject/0x-monorepo:
  Remove beta note from asset-buyer
2019-01-08 20:16:48 +01:00
Fabio Berger
93121892d6 Fix typo 2019-01-08 20:16:34 +01:00
fragosti
16fc2c3776 fix: use new forum URL 2019-01-08 10:34:40 -08:00
Francesco Agosti
c3a7cbc57d Merge pull request #1493 from 0xProject/fix/asset-buyer/no-longer-beta
[asset-buyer] Remove beta note from asset-buyer
2019-01-08 18:33:53 +00:00
Fabio Berger
0cfeea7c8c Remove stray console 2019-01-08 17:15:05 +01:00
Leonid Logvinov
82f29c395a Fix the circleci image 2019-01-08 17:14:06 +01:00
Fabio Berger
e2df4b355b Add assertions to catch trying to add undefined schemas 2019-01-08 17:07:10 +01:00
Leonid Logvinov
03248244ff Bump up the chunk size 2019-01-08 17:03:42 +01:00
Steve Klebanoff
74ed0f4134 Remove beta note from asset-buyer 2019-01-08 08:02:33 -08:00
Leonid Logvinov
f05d2906e8 Split installation tests in chunks of 10 to not run out of memory 2019-01-08 16:00:05 +01:00
Fabio Berger
5e39eae84e Fixx request payload and expected responses 2019-01-08 15:37:50 +01:00
Fabio Berger
0ea8669552 Fixx OrderWatcher WS tests so they are completely independent from one another 2019-01-08 15:37:14 +01:00
Leonid Logvinov
2c974b5f3f Refactor out sol-cov, sol-profiler and sol-trace into their separate packages 2019-01-08 14:48:06 +01:00
Fabio Berger
1631031fa7 Merge branch 'development' into feature/order-watcher/dockerize
* development: (898 commits)
  Fixed merge conflict from development
  Ran prettier
  Doc generation working for changes by dutch auction wrapper
  added changelog entry for monorepo-scripts
  Hide dutch auction wrapper from docs -- hopefully this will prevent the "must export Web3Wrapper" error from doc generation
  relaxed version on contract-extension dependencies
  Added NetworkID 50 address for dutch auction wrapper
  removed manual updte of package.json version
  export dutch auction wrapper types from 0x.js
  Export dutch auction wrapper in 0x.js
  ran prettier
  Minor documentation updates to dutch auction wrapper
  `afterAuctionDetails` -> `auctionDetails`
  Added @todo for including dutch auction addresses once deployed
  Ran prettier & linter
  Removed redundant assignment
  removed needless newline on contract-wrappers changelog
  removed timestamp from changelog for abi-gen-wrappers
  added dutch auction address for testnets
  removed .only
  ...
2019-01-08 14:30:38 +01:00
Fabio Berger
0bcb81d3a9 Create server entry point and Dockerfile for OrderWatcher 2019-01-08 14:29:45 +01:00
fragosti
f412c36e23 fix: use old forum URL for now 2019-01-07 17:36:14 -08:00
fragosti
eae255b0ff chore: point to 0x.org website-api 2019-01-07 17:19:36 -08:00
fragosti
1f0f2076a9 fix: CORS issue by accessing 0x geth nodes through 0x.org endpoint 2019-01-07 17:09:36 -08:00
Greg Hysen
0ac36cef28 Merge pull request #1465 from 0xProject/feature/contracts/dutchAuctionWrapper
Dutch Auction Wrapper
2019-01-07 17:16:06 -07:00
Greg Hysen
04db7f0fae Fixed merge conflict from development 2019-01-07 15:50:48 -08:00
Greg Hysen
e39ae0350b Ran prettier 2019-01-07 15:50:48 -08:00
Greg Hysen
d0a0673694 Doc generation working for changes by dutch auction wrapper 2019-01-07 15:50:48 -08:00
Greg Hysen
3c62815fe3 added changelog entry for monorepo-scripts 2019-01-07 15:50:48 -08:00
Greg Hysen
37b6858869 Hide dutch auction wrapper from docs -- hopefully this will prevent the "must export Web3Wrapper" error from doc generation 2019-01-07 15:50:48 -08:00
Greg Hysen
641685a41e relaxed version on contract-extension dependencies 2019-01-07 15:50:48 -08:00
Greg Hysen
7ad23ef6dc Added NetworkID 50 address for dutch auction wrapper 2019-01-07 15:50:48 -08:00
Greg Hysen
5f2a7cb78f removed manual updte of package.json version 2019-01-07 15:50:48 -08:00
Greg Hysen
edb989fbf3 export dutch auction wrapper types from 0x.js 2019-01-07 15:50:48 -08:00
Greg Hysen
ff0093460d Export dutch auction wrapper in 0x.js 2019-01-07 15:50:48 -08:00
Greg Hysen
a00e416a19 ran prettier 2019-01-07 15:50:48 -08:00
Greg Hysen
77a2ca1ddc Minor documentation updates to dutch auction wrapper 2019-01-07 15:50:48 -08:00
Greg Hysen
61a3368826 afterAuctionDetails -> auctionDetails 2019-01-07 15:50:48 -08:00
Greg Hysen
55e3774480 Added @todo for including dutch auction addresses once deployed 2019-01-07 15:50:48 -08:00
Greg Hysen
c6ab380685 Ran prettier & linter 2019-01-07 15:50:48 -08:00
Greg Hysen
d6467d707f Removed redundant assignment 2019-01-07 15:50:48 -08:00
Greg Hysen
0893614859 removed needless newline on contract-wrappers changelog 2019-01-07 15:50:48 -08:00
Greg Hysen
dc940d692f removed timestamp from changelog for abi-gen-wrappers 2019-01-07 15:50:48 -08:00
Greg Hysen
e83a108c52 added dutch auction address for testnets 2019-01-07 15:50:48 -08:00
Greg Hysen
bbd4828340 removed .only 2019-01-07 15:50:48 -08:00
Greg Hysen
6de3a33f36 updated relevant changelogs 2019-01-07 15:50:48 -08:00
Greg Hysen
06139cbfe5 Added dutch auction utils to contract-wrappers 2019-01-07 15:50:48 -08:00
Greg Hysen
cb1bfa0f97 ran prettier + added changelog entry for contract wrappers 2019-01-07 15:50:48 -08:00
Greg Hysen
b249a50d8f ran prettier 2019-01-07 15:50:48 -08:00
Greg Hysen
0432212a34 dutch wrapper tests working 2019-01-07 15:50:48 -08:00
Greg Hysen
7203ca90cf all dutchie wrapper tests passing 2019-01-07 15:50:48 -08:00
Greg Hysen
5da748a062 Progress on dutch auction wrapper. Need to add auction data decoding to it. 2019-01-07 15:50:48 -08:00
Greg Hysen
09afee55ed Removed unnecessary fields from dutch auction artifacts 2019-01-07 15:50:48 -08:00
Greg Hysen
43b648e7dc Dutch wrapper 2019-01-07 15:50:48 -08:00
Greg Hysen
89fcbec43b changed name for confusion 2019-01-07 15:50:48 -08:00
Greg Hysen
c850046ea0 Dutch Auction Contract Wrapper 2019-01-07 15:50:48 -08:00
Alex Browne
7dda953bc9 Optimize SQL queries in pull_missing_blocks (#1458)
* Optimize SQL queries in pull_missing_blocks

* Update comment in pull_missing_blocks
2019-01-07 15:04:00 -08:00
Brandon Millman
b8f3fa9c8c chore(website): update copy on market making page 2019-01-07 13:21:42 -08:00
Brandon Millman
42e04012df fix(website): fix some copy on the market maker page 2019-01-07 13:03:45 -08:00
Brandon Millman
17f0878707 Merge pull request #1487 from 0xProject/feature/website/market-maker-page
[website] Add market making grant program page
2019-01-07 12:41:10 -08:00
Brandon Millman
e4bb6a4652 chore(website): fix linter 2019-01-07 12:19:21 -08:00
Amir Bandeali
3cdb85606a Merge pull request #1363 from 0xProject/feat/order-utils/abiEncoder
Add MAP support to order-utils, order-watcher, and types
2019-01-07 11:30:00 -08:00
Amir Bandeali
fd37e88bdb Use enums in pipeline 2019-01-07 11:11:19 -08:00
Amir Bandeali
24564b986d Minimize unnecessary type assertions 2019-01-07 10:31:11 -08:00
Amir Bandeali
a91bc415ed Fix linting errors 2019-01-07 10:31:11 -08:00
Amir Bandeali
ccdb81ac40 Add tests for MAP in order watcher 2019-01-07 10:31:11 -08:00
Amir Bandeali
d7f9e3f0a0 Do not export AssetData in 0x.js 2019-01-07 10:31:11 -08:00
Amir Bandeali
5720589515 Add tests for recursive MAP decoding 2019-01-07 10:31:11 -08:00
Amir Bandeali
70508f52a1 Update CHANGELOGs 2019-01-07 10:31:11 -08:00
Amir Bandeali
b90c3196a3 FIx linting errors 2019-01-07 10:31:11 -08:00
Amir Bandeali
1dda10b4f3 Add recursive MultiAsset decoding, store first address in pipeline 2019-01-07 10:31:11 -08:00
Amir Bandeali
0fba0b1a1b feat: Add balance and allowance checks for MultiAssetProxy 2019-01-07 10:31:11 -08:00
Amir Bandeali
df4f3d9eac feat: Add fields to OrderRelevantState and change AssetData to SingleAssetData 2019-01-07 10:31:11 -08:00
Amir Bandeali
de4916ccb8 Add individual balances and allowances to OrderRelevantState 2019-01-07 10:31:11 -08:00
Amir Bandeali
b797a45d4a Do not attempt to parse tokenAddress if decoding data from multiAssetProxy 2019-01-07 10:31:11 -08:00
Amir Bandeali
eeb07d76fc Fix transferFrom to work with MAP 2019-01-07 10:31:11 -08:00
Amir Bandeali
0abace337c Rename functions 2019-01-07 10:31:11 -08:00
Amir Bandeali
c6ff77bdd8 Add prefix to names of properties in EncodingRules and DecodingRules 2019-01-07 10:31:11 -08:00
Amir Bandeali
492e0ae345 feat: Export MultiAssetData in types 2019-01-07 10:31:11 -08:00
Amir Bandeali
8549252a2c Fix decoding and add tests 2019-01-07 10:31:11 -08:00
Amir Bandeali
aae32037da Run linter 2019-01-07 10:31:11 -08:00
Amir Bandeali
46359c098b Add support for MAP in fill-scenarios 2019-01-07 10:31:11 -08:00
Amir Bandeali
fc71d87d2b Update CHANGELOG 2019-01-07 10:31:11 -08:00
Amir Bandeali
67dfe6030c feat: Add support for MultiAssetProxy 2019-01-07 10:31:11 -08:00
Amir Bandeali
19e93440b3 fix: Add error message if assetProxyId is not ERC20 or ERC721 2019-01-07 10:31:11 -08:00
Amir Bandeali
0cb5209266 Add length check to MultiAsset encoding 2019-01-07 10:31:11 -08:00
Amir Bandeali
1553b366da Update CHANGELOGs 2019-01-07 10:31:11 -08:00
Amir Bandeali
d957cd5344 Use assetDataUtils instead of IAssetData for encoding MultiAsset values 2019-01-07 10:31:11 -08:00
Amir Bandeali
354f7053dc Use new AbiEncoder, add logic for encoding/decoding MultiAsset assetData 2019-01-07 10:31:11 -08:00
Amir Bandeali
4d5fcf8985 feat: Add MultiAsset types 2019-01-07 10:31:11 -08:00
Steve Klebanoff
80f1fe1373 Merge branch 'feature/monorepo/release-notes' of github.com:0xProject/0x-monorepo into feature/monorepo/release-notes 2019-01-07 09:45:21 -08:00
Steve Klebanoff
571bc736e5 Make error message less scary 2019-01-07 09:45:04 -08:00
Fabio B
99016cc5a6 Use explicit undefined check
Co-Authored-By: steveklebanoff <steve@0xproject.com>
2019-01-07 09:43:35 -08:00
Steve Klebanoff
71c9b2f718 Merge pull request #1484 from 0xProject/fix/sra-spec/title-tag
[sra-spec] Add title tag
2019-01-07 09:40:39 -08:00
Brandon Millman
79863d830e chore(website): update market making page copy 2019-01-06 21:40:39 -08:00
Brandon Millman
59ec243c26 feat(website): add contact us hero action to market maker page 2019-01-06 21:40:14 -08:00
Brandon Millman
5e8da70eae feat(website): implement market maker form 2019-01-06 20:45:46 -08:00
Brandon Millman
99b6ca5b4f feat(website): Add support for copper forms in the offers 2019-01-04 10:00:41 -08:00
Brandon Millman
4e4de07e69 feat(website): add link underneath the first feature in market maker page 2019-01-04 09:44:25 -08:00
Brandon Millman
1b65efb38c feat(website): update market maker page copy and links 2019-01-04 09:24:59 -08:00
Brandon Millman
ed0e6181bd feat(website): add market making section to developers dropdown 2019-01-04 09:09:34 -08:00
Steve Klebanoff
f1a7efc97e Return void and throw error instead of logging and returning boolean 2019-01-04 09:01:13 -08:00
Steve Klebanoff
442de09bbe Add async suffix 2019-01-04 08:54:44 -08:00
Steve Klebanoff
76dde294f1 Add PR number 2019-01-04 07:54:01 -08:00
Steve Klebanoff
4dded13259 fix(sra-spec): Add title tag 2019-01-04 07:47:41 -08:00
Brandon Millman
c82393d763 feature(website): add market making page 2019-01-03 16:18:33 -08:00
Steve Klebanoff
2111ea159e Merge pull request #1481 from 0xProject/fix/instant/dropdown-color
[instant] Dropdown hover 10% of primary color
2019-01-03 09:07:57 -08:00
Francesco Agosti
c1150824dc Merge pull request #1480 from 0xProject/feature/instant/performance-boost
[instant] No more laggy input
2019-01-03 13:36:18 +01:00
Steve Klebanoff
edb3a61387 Merge branch 'development' into feature/instant/tell-amount-available 2019-01-02 16:56:49 -08:00
Steve Klebanoff
89f67b9bec take out no-longer necessary test 2019-01-02 16:56:28 -08:00
Steve Klebanoff
9131ca1562 Use constant 2019-01-02 15:22:07 -08:00
Steve Klebanoff
92d45a19d1 await alerting discord 2019-01-02 15:19:38 -08:00
Steve Klebanoff
65af195054 Merge branch 'development' into feature/monorepo/release-notes 2019-01-02 15:17:26 -08:00
Steve Klebanoff
9f47f90c6e remove unused export 2019-01-02 15:16:45 -08:00
Steve Klebanoff
472f89bd3d feat(monorepo-scripts): Alert to discord when new publish happens 2019-01-02 14:46:31 -08:00
Steve Klebanoff
c62d862967 fix(instant): Dropdown hover should be 10% of primary color 2019-01-02 10:58:41 -08:00
fragosti
1ceb3c9664 feat: unmount the token selector when its not displaying 2019-01-02 19:07:02 +01:00
fragosti
4252a760f0 feat: dont re-render the token selector on every input change 2019-01-02 16:55:29 +01:00
fragosti
5721b25c3a feat: give all stateless components a displayName or make them private 2019-01-02 16:08:15 +01:00
fragosti
586a8ba8e7 feat: use PureComponent instead of Component 2019-01-02 16:01:40 +01:00
Francesco Agosti
1ddf1087dd Merge pull request #1470 from 0xProject/feature/website/0x-org-cleanup
[website] Remove @next dir, remove unused files.
2019-01-02 15:13:14 +01:00
Jacob Evans
72a56db5ab chore(python-packages): Change docker command in setup.py 2019-01-02 15:03:09 +11:00
Jacob Evans
646e856b51 Python ganache snapshot 2.2.2 2018-12-29 10:20:42 +11:00
F. Eugene Aumson
e62e61bf71 Add entry point for validation of JSON strings 2018-12-28 15:28:30 -05:00
F. Eugene Aumson
a3eab71908 Correct inconsistencies in JSON schema names
In both ref ID's and file names.
2018-12-28 15:08:15 -05:00
fragosti
dbbd0c5c92 feat: use kovan.0xproject.com instead of kovan.0x.org 2018-12-27 12:07:14 +01:00
fragosti
dc6d6024dc fix: merge conflict 2018-12-27 12:00:20 +01:00
Jacob Evans
9d5d0dbe14 Readme, read snapshot name from package.json 2018-12-27 12:45:29 +11:00
Steve Klebanoff
febf3489ba Merge pull request #1476 from 0xProject/fix/website/build-errors
[website] Fix duplicate props which made ci build break
2018-12-25 11:19:27 -08:00
Steve Klebanoff
cfb200e793 fix(website): Fix bad merge 2018-12-24 13:08:35 -08:00
Jacob Evans
2b7875571d Dockerfile defaults to latest 2018-12-24 13:22:39 +11:00
Jacob Evans
0a1701eac9 Copy latest published version to 0x_ganache_snapshot-latest.zip 2018-12-24 13:20:50 +11:00
Jacob Evans
bcd20081d3 Use new bucket, bind on 0.0.0.0 2018-12-24 13:14:16 +11:00
Steve Klebanoff
f17fe381bf Merge branch 'development' into feature/instant/tell-amount-available 2018-12-21 16:30:00 -08:00
Steve Klebanoff
26977f6408 Fix var name and use floor instead of .round(0, ROUND_DOWN) 2018-12-21 16:29:53 -08:00
Steve Klebanoff
c8c8219c05 Make amountAvailableToFill required 2018-12-21 16:26:07 -08:00
Steve Klebanoff
92150b78fc Merge pull request #1469 from 0xProject/fix/website/job-openings
[website] Tweak job listings
2018-12-21 16:11:56 -08:00
Steve Klebanoff
e144ebbb93 Merge branch 'development' into feature/instant/tell-amount-available 2018-12-21 14:57:16 -08:00
fragosti
c31f527116 fix: remove --json flag from build 2018-12-20 16:57:57 -08:00
fragosti
e68c67a01d feat: move over @next images as well, selectively delete 2018-12-20 16:39:31 -08:00
fragosti
ea781b8850 feat: remove unused files 2018-12-20 16:32:00 -08:00
fragosti
ba7c8d9244 feat: make project build by adding back old footer component 2018-12-20 16:28:19 -08:00
fragosti
a67b34700e feat: remove @next directory from all imports 2018-12-20 16:03:06 -08:00
fragosti
abdf91c691 feat: move all @next files to non @next directory 2018-12-20 16:01:53 -08:00
Brandon Millman
9b540fd8e5 Merge pull request #1434 from 0xProject/fix/instant/signature-denied
[instant] fix signature denial error message and add trust wallet detection
2018-12-20 15:35:26 -08:00
Steve Klebanoff
5ec1ae5f7f Merge pull request #1467 from 0xProject/fix/website/remove-placeholders
[website] Don't show placeholder text on contact page
2018-12-20 15:27:47 -08:00
Steve Klebanoff
bed5b275e4 Merge pull request #1466 from 0xProject/feature/website/remove-ts-warnings
[website] Fix TS errors
2018-12-20 15:27:27 -08:00
Brandon Millman
56af9b2aab Merge branch 'development' into fix/instant/signature-denied
* development: (914 commits)
  Unfix compiler version except for top level contracts
  Move OrderValidator to extensions
  Update CHANGELOG
  Remove assembly version of matchOrders
  Add getOrderInfo check before calling fillOrder
  Update comments and hard code function selector constants
  Fix build after rebase
  update comments
  Fix build and add back tests
  Update dependency paths
  Add OrderMatcher tests
  feat: Add OrderMatcher contract that takes spread in multiple assets by calling `matchOrders` followed by `fillOrder`
  Update CHANGELOG
  Use more efficient equality checks
  Add note about input validation
  Use more efficient check for overflow
  Check if amount == 0 before doing division
  Reapply prettier
  New relayers
  feat(sra_client.py): Test deployed pkg via tox
  ...
2018-12-20 15:21:28 -08:00
Steve Klebanoff
01e7850cd3 fix(website): Cleanup jobs section 2018-12-20 15:13:09 -08:00
Brandon Millman
b399aa25aa feat(instant): add new event for unknown buy errors 2018-12-20 15:05:54 -08:00
Amir Bandeali
0a84ee7488 Merge pull request #1468 from 0xProject/feature/contracts/unfix-compiler-version
Unfix Solidity compiler version except for top level contracts
2018-12-20 14:54:30 -08:00
Brandon Millman
7c7085c932 feature(contract-wrappers): add support for Trust Wallet signature denial errors when trying to sense signature denial from a provider 2018-12-20 14:45:06 -08:00
Brandon Millman
bbe9862aa6 fix(instant): add analytics to unknown error on executeBuyAsync 2018-12-20 14:43:14 -08:00
F. Eugene Aumson
7e12ae1bfc Clarify what kind of support ticket was raised. 2018-12-20 17:34:14 -05:00
Brandon Millman
080c6d3146 fix(instant): catch unknown errors from executeBuyAsync, report them and show could not submit transaction 2018-12-20 14:32:11 -08:00
Brandon Millman
2effc3e267 fix(instant): use isTrust property to determine if provider is trust wallet 2018-12-20 14:10:29 -08:00
Steve Klebanoff
970e670467 make percentage 100% 2018-12-20 14:07:04 -08:00
Steve Klebanoff
36240de897 give more space to job title and change apply link 2018-12-20 14:03:29 -08:00
Steve Klebanoff
e4e1c82ad2 Merge pull request #1463 from 0xProject/feature/website/new-logos
[website] Add new relayers
2018-12-20 13:20:20 -08:00
Amir Bandeali
9b521aeef5 Unfix compiler version except for top level contracts 2018-12-20 11:37:29 -08:00
Steve Klebanoff
1fa93fc8ce Merge pull request #1462 from bakkenbaeck/feature/website/0x-org
[website] Fixes
2018-12-20 11:17:42 -08:00
Amir Bandeali
12177270df Merge pull request #1464 from 0xProject/feature/contracts-extensions/orderValidator
Move OrderValidator to extensions
2018-12-20 10:49:15 -08:00
Steve Klebanoff
d20ed2247f Remove using label as placeholder 2018-12-20 10:46:57 -08:00
Amir Bandeali
f7fd9789ba Move OrderValidator to extensions 2018-12-20 10:27:39 -08:00
Steve Klebanoff
75ba724c28 Merge branch 'development' into feature/website/new-logos 2018-12-20 10:22:29 -08:00
Amir Bandeali
bc3093e635 Merge pull request #1117 from 0xProject/feature/contracts/orderMatcher
Implement OrderMatcher
2018-12-20 10:15:35 -08:00
Steve Klebanoff
5d3d596909 Don't allow compiling with errors 2018-12-20 10:12:45 -08:00
Steve Klebanoff
5b4d4d5537 Declare imported package which doesn't have types 2018-12-20 10:06:57 -08:00
Steve Klebanoff
521679c87c Fix types 2018-12-20 09:56:48 -08:00
Amir Bandeali
2a9e03b61e Merge pull request #1455 from 0xProject/fix/contracts/MAPupdates
Add validation to MAP
2018-12-20 09:56:06 -08:00
Steve Klebanoff
fb003903c7 Fix types 2018-12-20 09:21:29 -08:00
Amir Bandeali
fbfb6eb45e Update CHANGELOG 2018-12-20 09:13:36 -08:00
Amir Bandeali
58be23ac97 Remove assembly version of matchOrders 2018-12-20 09:13:36 -08:00
Amir Bandeali
90fcf59a32 Add getOrderInfo check before calling fillOrder 2018-12-20 09:13:36 -08:00
Amir Bandeali
e74b24bbdb Update comments and hard code function selector constants 2018-12-20 09:13:36 -08:00
Amir Bandeali
6b5b8fe8e0 Fix build after rebase 2018-12-20 09:13:36 -08:00
Amir Bandeali
0a5ecec3e2 update comments 2018-12-20 09:13:36 -08:00
Amir Bandeali
b6f4c5c7da Fix build and add back tests 2018-12-20 09:13:36 -08:00
Amir Bandeali
a6ec2a8c54 Update dependency paths 2018-12-20 09:13:36 -08:00
Amir Bandeali
2fa8b8d1d0 Add OrderMatcher tests 2018-12-20 09:13:36 -08:00
Amir Bandeali
b786836db6 feat: Add OrderMatcher contract that takes spread in multiple assets by calling matchOrders followed by fillOrder 2018-12-20 09:13:36 -08:00
Amir Bandeali
8e5f0f9c5c Update CHANGELOG 2018-12-20 09:11:30 -08:00
Amir Bandeali
99e32869e6 Use more efficient equality checks 2018-12-20 09:11:30 -08:00
Amir Bandeali
04729c44b4 Add note about input validation 2018-12-20 09:11:30 -08:00
Amir Bandeali
2a2260de45 Use more efficient check for overflow 2018-12-20 09:11:30 -08:00
Amir Bandeali
a7c3996627 Check if amount == 0 before doing division 2018-12-20 09:11:30 -08:00
Steve Klebanoff
6dbcdad1ff Fix TS error w/ children on portal 2018-12-20 09:03:30 -08:00
Steve Klebanoff
f94bdc496a Rename props and fix router types 2018-12-20 08:59:13 -08:00
Steve Klebanoff
97369c969c Fix StyledCommunityLink props 2018-12-20 08:28:58 -08:00
Steve Klebanoff
72e68c43e3 remove unused file 2018-12-19 15:58:05 -08:00
Steve Klebanoff
473537e6e7 remove unused instant pages 2018-12-19 15:56:12 -08:00
Fred Carlsen
ca3e0b26c6 Reapply prettier 2018-12-20 00:24:28 +01:00
Steve Klebanoff
2716374b25 New relayers 2018-12-19 15:23:42 -08:00
F. Eugene Aumson
ace968a4fc feat(sra_client.py): Test deployed pkg via tox 2018-12-19 18:18:44 -05:00
Fred Carlsen
e6f3693813 Disable fee slider when no address is put in 2018-12-20 00:16:39 +01:00
Fred Carlsen
531ed54961 Fix page titles 2018-12-20 00:06:39 +01:00
Fred Carlsen
5eb316f5d8 Merge remote-tracking branch 'upstream/feature/website/0x-org' into feature/website/0x-org
# Conflicts:
#	packages/website/ts/@next/components/button.tsx
#	packages/website/ts/@next/components/definition.tsx
#	packages/website/ts/@next/components/hero.tsx
#	packages/website/ts/@next/components/sections/landing/about.tsx
#	packages/website/ts/@next/pages/market_maker.tsx
2018-12-19 23:59:07 +01:00
Steve Klebanoff
97e21106e5 Merge pull request #1448 from 0xProject/feature/website/0x-org
[website][react-shared][instant] 0x org
2018-12-19 10:04:41 -08:00
Fabio B
6e4cb0246c Merge pull request #1453 from 0xProject/addUnenforcedConventions
Add unenforced coding rules to CONTRIBUTING.md
2018-12-19 17:29:02 +00:00
Steve Klebanoff
125a940560 Merge branch 'development' into feature/website/0x-org 2018-12-19 08:19:36 -08:00
Steve Klebanoff
a7f847bf3e Merge pull request #1457 from 0xProject/feature/website/0x-org-linting
[website] 0x org linting and prettier
2018-12-19 08:18:17 -08:00
Leonid Logvinov
b3978b641c Merge pull request #1461 from 0xProject/feature/sol-compiler-watch
Sol-compiler watch mode
2018-12-19 16:52:49 +01:00
Fabio Berger
94dc272335 Merge branch 'development' into addUnenforcedConventions
* development: (92 commits)
  Add missing CHANGELOG entry for OrderWatcher WS interface
  Bump up stale to close to 30 days
  Move onMessageAsync outside of tests and add comments
  Fix WS tests to remove race-condition and be more specific about the message expected
  Add temporary console.log to test failing on CI
  Make @0x/contracts-test-utils a dependency instead of a devDependency
  Fix test-publish failure in contracts packages
  Fixed solhint errors
  Added documentation to `LibAddressArray.append` and switched `if` to `require` smt
  Updated changelogs for new contracts
  Added `gas` field so tests pass on Geth;
  Added Changelog for new Extensions
  Updated comment `Execute fillOrder` -> `Execute exchange function`
  Explicit returns
  Prettier / Linter on contracts + TS
  Refactoring balance threshold filter
  Moved exchange calldata functions to separate mixin
  Less Assembly. More Solidity. Less Efficiency. More Readability.
  Run all tests for extensions
  Cleaned up tests for balance threshold filter
  ...
2018-12-19 15:17:46 +00:00
Fabio B
d456710441 Update packages/sol-compiler/src/compiler.ts
Co-Authored-By: LogvinovLeon <logvinov.leon@gmail.com>
2018-12-19 15:57:30 +01:00
Fabio B
e886ef8c4b Update packages/sol-compiler/src/utils/compiler.ts
Co-Authored-By: LogvinovLeon <logvinov.leon@gmail.com>
2018-12-19 15:57:19 +01:00
Leonid Logvinov
86a9375d04 Run prettier 2018-12-19 15:41:49 +01:00
Leonid Logvinov
f832e035da Run prettier 2018-12-19 15:41:49 +01:00
Leonid Logvinov
5656605355 Describe regexes 2018-12-19 15:41:49 +01:00
Leonid Logvinov
5c4a992b87 Add a NOTE comment 2018-12-19 15:41:49 +01:00
Leonid Logvinov
0abf1c71f6 Add a comment for SpyResolver 2018-12-19 15:41:49 +01:00
Leonid Logvinov
85be2fbf19 Move logWithTime to logUtils 2018-12-19 15:41:49 +01:00
Fabio B
69de1d05ef Update packages/sol-compiler/src/compiler.ts
Co-Authored-By: LogvinovLeon <logvinov.leon@gmail.com>
2018-12-19 15:41:49 +01:00
Leonid Logvinov
237014e823 Disable linter no a hanging promise with a comment 2018-12-19 15:41:49 +01:00
Leonid Logvinov
85a8c6160f Mark the field as readonly 2018-12-19 15:41:49 +01:00
Leonid Logvinov
e2535027e9 Remove unused variables 2018-12-19 15:41:49 +01:00
Leonid Logvinov
87d157b805 Move logWithTime function to utils 2018-12-19 15:41:49 +01:00
Leonid Logvinov
56d48758d3 Add PR numbers 2018-12-19 15:41:49 +01:00
Leonid Logvinov
abfb358250 Add the sol-compiler watch command to all packages 2018-12-19 15:41:49 +01:00
Leonid Logvinov
657b698e1e Add sol-compiler watch mode 2018-12-19 15:41:48 +01:00
Leonid Logvinov
8ddf925a8f Add SpyResolver 2018-12-19 15:41:48 +01:00
Leonid Logvinov
c8eaa63cce Add to type in sol-resolver 2018-12-19 15:41:48 +01:00
Leonid Logvinov
b2edd84b0e Add missing contract libs to compiler.json config 2018-12-19 15:41:48 +01:00
Leonid Logvinov
bc27ee0deb Add includes section to typescript-typings package.json 2018-12-19 15:41:48 +01:00
Leonid Logvinov
c5632490f2 Refactor most of the sol-compiler methods into helper functions in utils and make resolver pluggable into them 2018-12-19 15:41:48 +01:00
Fabio B
89ea7b2a2d Merge pull request #1429 from 0xProject/website/addPySRA
Add Python SRA client to Developer home
2018-12-19 14:40:46 +00:00
Fabio Berger
b3bcd726b8 fix prettier 2018-12-19 14:19:37 +00:00
Fabio Berger
293dadc22a Merge branch 'development' into website/addPySRA
* development: (141 commits)
  Add missing CHANGELOG entry for OrderWatcher WS interface
  Bump up stale to close to 30 days
  Move onMessageAsync outside of tests and add comments
  Fix WS tests to remove race-condition and be more specific about the message expected
  Add temporary console.log to test failing on CI
  Make @0x/contracts-test-utils a dependency instead of a devDependency
  Fix test-publish failure in contracts packages
  Fixed solhint errors
  Added documentation to `LibAddressArray.append` and switched `if` to `require` smt
  Updated changelogs for new contracts
  Added `gas` field so tests pass on Geth;
  Added Changelog for new Extensions
  Updated comment `Execute fillOrder` -> `Execute exchange function`
  Explicit returns
  Prettier / Linter on contracts + TS
  Refactoring balance threshold filter
  Moved exchange calldata functions to separate mixin
  Less Assembly. More Solidity. Less Efficiency. More Readability.
  Run all tests for extensions
  Cleaned up tests for balance threshold filter
  ...
2018-12-19 14:16:35 +00:00
Fabio Berger
040b402b6d Merge branch 'development' of github.com:0xProject/0x-monorepo into development
* 'development' of github.com:0xProject/0x-monorepo:
  Move onMessageAsync outside of tests and add comments
  Fix WS tests to remove race-condition and be more specific about the message expected
  Add temporary console.log to test failing on CI
  Remove unused file
  Fix file name
  Consolidate use of isVerbose in orderWatcherConfig
  Add isVerbose option to enable/disable logging
  Fix schemas and tests
  Move OrderWatcher Websocket schemas to json-schemas and convert to JSON so that they are language agnostic
  Improve our compliance to the JSON RPC spec
  remove unused instance variable
  Ensure fileName matches class name, fix broadcast
  Respond to CR
  Respond to CR
  WIP: OrderWatcher WebSocket
2018-12-19 13:21:16 +00:00
Fabio Berger
5c24596d81 Add missing CHANGELOG entry for OrderWatcher WS interface 2018-12-19 13:21:06 +00:00
Fabio B
552007cafb Merge pull request #1427 from 0xProject/features/orderwatcher_ws
OrderWatcher WebSocket Server
2018-12-19 13:19:22 +00:00
Fabio Berger
d2ef88f638 Merge branch 'development' into features/orderwatcher_ws
* development: (74 commits)
  Bump up stale to close to 30 days
  Make @0x/contracts-test-utils a dependency instead of a devDependency
  Fix test-publish failure in contracts packages
  Fixed solhint errors
  Added documentation to `LibAddressArray.append` and switched `if` to `require` smt
  Updated changelogs for new contracts
  Added `gas` field so tests pass on Geth;
  Added Changelog for new Extensions
  Updated comment `Execute fillOrder` -> `Execute exchange function`
  Explicit returns
  Prettier / Linter on contracts + TS
  Refactoring balance threshold filter
  Moved exchange calldata functions to separate mixin
  Less Assembly. More Solidity. Less Efficiency. More Readability.
  Run all tests for extensions
  Cleaned up tests for balance threshold filter
  Removed deprecated README + comments
  removed unnecessary log
  removed `only` from tests
  solhint fixes
  ...
2018-12-19 13:05:59 +00:00
Fabio Berger
bce7ae78bc Bump up stale to close to 30 days 2018-12-19 13:05:47 +00:00
Fabio Berger
90ee70db23 Move onMessageAsync outside of tests and add comments 2018-12-19 12:49:51 +00:00
Fabio Berger
84c8b83694 Fix WS tests to remove race-condition and be more specific about the message expected 2018-12-19 12:18:53 +00:00
Leonid Logvinov
112724d881 Merge pull request #1459 from 0xProject/fix/contracts-test-publish
Fix test-publish failure in contracts packages
2018-12-19 12:15:22 +01:00
Fabio Berger
e2510ed28f Add temporary console.log to test failing on CI 2018-12-19 10:44:32 +00:00
Alex Browne
768e1d541c Make @0x/contracts-test-utils a dependency instead of a devDependency 2018-12-18 18:22:54 -08:00
Alex Browne
a650d695ce Fix test-publish failure in contracts packages 2018-12-18 16:26:10 -08:00
Steve Klebanoff
0eef07307e Declare interface and make isNoBorder optional 2018-12-18 14:49:30 -08:00
Steve Klebanoff
d69b3a0244 Type definition so TS knows it has defaultProps 2018-12-18 14:49:09 -08:00
Steve Klebanoff
fa5acd07b0 Move Hero to bottom, give interface explicit names 2018-12-18 14:36:46 -08:00
Steve Klebanoff
fa612fe173 Linting 2018-12-18 14:19:28 -08:00
Steve Klebanoff
e10b30886f includeEmpty -> shouldIncludeEmpty 2018-12-18 14:11:29 -08:00
Steve Klebanoff
441b5ac6f1 Get rid of unused import 2018-12-18 14:08:06 -08:00
Steve Klebanoff
96a8762704 Move imports and put action into var 2018-12-18 14:07:59 -08:00
Steve Klebanoff
09eac39040 Move imports 2018-12-18 14:07:53 -08:00
Steve Klebanoff
b96236cdb3 Remove comments 2018-12-18 13:57:26 -08:00
Steve Klebanoff
f6525efe95 Not assigning to variable because we never used the variable 2018-12-18 13:57:19 -08:00
Steve Klebanoff
9728267eac Removing unused interface 2018-12-18 13:57:03 -08:00
Steve Klebanoff
f097259266 Removing unused imports 2018-12-18 13:56:53 -08:00
Greg Hysen
38346a9aae Merge pull request #1383 from 0xProject/feature/contracts/balanceThresholdFilter
Balance Threshold Filter
2018-12-18 13:56:18 -08:00
Greg Hysen
ca0ab38521 Fixed solhint errors 2018-12-18 13:36:05 -08:00
Greg Hysen
d2a4fd5706 Added documentation to LibAddressArray.append and switched if to require smt 2018-12-18 13:36:05 -08:00
Greg Hysen
afe200c4e1 Updated changelogs for new contracts 2018-12-18 13:36:05 -08:00
Greg Hysen
00f5b94d0a Added gas field so tests pass on Geth; 2018-12-18 13:36:05 -08:00
Greg Hysen
1de92659ee Added Changelog for new Extensions 2018-12-18 13:36:05 -08:00
Greg Hysen
25722d8154 Updated comment Execute fillOrder -> Execute exchange function 2018-12-18 13:36:05 -08:00
Greg Hysen
bb4ce9b3ad Explicit returns 2018-12-18 13:36:05 -08:00
Greg Hysen
b524ac7af2 Prettier / Linter on contracts + TS 2018-12-18 13:36:05 -08:00
Greg Hysen
dea6f35b04 Refactoring balance threshold filter 2018-12-18 13:36:05 -08:00
Greg Hysen
f3a2e3b6f3 Moved exchange calldata functions to separate mixin 2018-12-18 13:36:05 -08:00
Greg Hysen
f91781a060 Less Assembly. More Solidity. Less Efficiency. More Readability. 2018-12-18 13:36:05 -08:00
Greg Hysen
22fd23643c Run all tests for extensions 2018-12-18 13:36:05 -08:00
Greg Hysen
a1266a3341 Cleaned up tests for balance threshold filter 2018-12-18 13:36:05 -08:00
Greg Hysen
34ff7fae9c Removed deprecated README + comments 2018-12-18 13:36:05 -08:00
Greg Hysen
d45c13bfa8 removed unnecessary log 2018-12-18 13:36:05 -08:00
Greg Hysen
dccca95c2c removed only from tests 2018-12-18 13:36:05 -08:00
Greg Hysen
fc684ad063 solhint fixes 2018-12-18 13:36:05 -08:00
Greg Hysen
6a0f5f39ee Prettier / Linter fixes for TS 2018-12-18 13:36:05 -08:00
Greg Hysen
4417c76b13 Ported Balance Threshold Filter to new contract directory structure 2018-12-18 13:36:05 -08:00
Greg Hysen
8799f9bb90 Test for ERC20 balance threshold 2018-12-18 13:36:05 -08:00
Greg Hysen
6d673ac942 Exchange Selectors - sorted 2018-12-18 13:36:05 -08:00
Greg Hysen
8d6219296a Removed Yes Token - its no longer needed to test Balance Threshold Filter 2018-12-18 13:36:05 -08:00
Greg Hysen
cb9ec18f96 Tests finished for balance threshold wrapper 2018-12-18 13:36:05 -08:00
Greg Hysen
1883f4d272 matchOrders test cases for balance threshold filter contract 2018-12-18 13:36:05 -08:00
Greg Hysen
93b9c251ed Tests for MatchOrders 2018-12-18 13:36:05 -08:00
Greg Hysen
3ad72d96f4 Tests for marketBuy invariants 2018-12-18 13:36:05 -08:00
Greg Hysen
4f977aa51d marketSellNoThrow tests 2018-12-18 13:36:05 -08:00
Greg Hysen
a2df428afb tests for marketSellOrders 2018-12-18 13:36:05 -08:00
Greg Hysen
e45a0ffdbf All tests running so far 2018-12-18 13:36:05 -08:00
Greg Hysen
51355209a2 Tests for batchFill variants 2018-12-18 13:36:05 -08:00
Greg Hysen
4b0d01ad72 tests for batchFillOrdes 2018-12-18 13:36:05 -08:00
Greg Hysen
a655f4b193 tests for fillOrder variants 2018-12-18 13:36:05 -08:00
Greg Hysen
7af2c751dc fillOrder tests with new wrapper 2018-12-18 13:36:05 -08:00
Greg Hysen
d882133e44 Wrappers for balance threshold filter + updated some tests to use the wrapper 2018-12-18 13:36:05 -08:00
Greg Hysen
7e7880aea0 Conformed to hex format for constructing offsets 2018-12-18 13:36:05 -08:00
Greg Hysen
18f028fb08 Removed unnecessary note 2018-12-18 13:36:05 -08:00
Greg Hysen
14c97b3ec3 Include threshold balance in constructor of BalanceThresholdFilter contract 2018-12-18 13:36:05 -08:00
Greg Hysen
58a382d9b6 Function Documentation 2018-12-18 13:36:05 -08:00
Greg Hysen
2be9b1ff08 Updated Balance Threshold Filter to use mixin pattern 2018-12-18 13:36:05 -08:00
Greg Hysen
1cdd82178f ComplianceForwarder renamed to BalanceThresholdFilter 2018-12-18 13:36:05 -08:00
Greg Hysen
dbf1de2e69 Revert reasons for balance threshold filter 2018-12-18 13:36:05 -08:00
Greg Hysen
ba986432ec Some comments 2018-12-18 13:36:05 -08:00
Greg Hysen
3bb147b0f1 Documented inline assembly functions 2018-12-18 13:36:05 -08:00
Greg Hysen
0556defa58 working on batch fills. Compliance part is finished. 2018-12-18 13:36:05 -08:00
Greg Hysen
4217d0cd7d cleanup 2018-12-18 13:36:05 -08:00
Greg Hysen
5863a29a91 cleaning 2018-12-18 13:36:05 -08:00
Greg Hysen
df0de07184 cleaning 2018-12-18 13:36:05 -08:00
Greg Hysen
28a5ed6a9a cleaning 2018-12-18 13:36:05 -08:00
Greg Hysen
c040ad0850 cleaning 2018-12-18 13:36:05 -08:00
Greg Hysen
8007ef6c0b cleaning I 2018-12-18 13:36:05 -08:00
Greg Hysen
a332c5e5c2 Code to validate addresses from order arrays 2018-12-18 13:36:05 -08:00
Greg Hysen
bab7569ed9 Refactoring asm 2018-12-18 13:36:05 -08:00
Greg Hysen
16bd0ce7ec generalized KYC extension passing all tests 2018-12-18 13:36:05 -08:00
Greg Hysen
61a906e9e7 Abstract address validation in asm 2018-12-18 13:36:05 -08:00
Greg Hysen
8c9d48477d Exchange selector contract - autogenerated 2018-12-18 13:36:05 -08:00
Greg Hysen
9f68ac7bbe Making progress on generalized forwarder 2018-12-18 13:36:05 -08:00
Greg Hysen
4e341582ae Extract makerAddress in assembly 2018-12-18 13:36:05 -08:00
Greg Hysen
37a1271af2 fillOrder -> executeTransaction rename 2018-12-18 13:36:05 -08:00
Greg Hysen
743c4c36eb Removed unnecessary comments in compliant forwarder 2018-12-18 13:36:05 -08:00
Greg Hysen
3f7bd24250 Wrapped up tests for compliant forwarder 2018-12-18 13:36:05 -08:00
Greg Hysen
33e41dd500 More tests + require instead of revert in compliance contract 2018-12-18 13:36:05 -08:00
Greg Hysen
989b5b0a98 Ran linter 2018-12-18 13:36:05 -08:00
Greg Hysen
a4ab038aa8 Ran prettier 2018-12-18 13:36:05 -08:00
Greg Hysen
e81f92bffa End-to-end test for compliant forwarder - works 2018-12-18 13:36:05 -08:00
Greg Hysen
003075a8a5 WIP - Tests for compliant forwarder 2018-12-18 13:36:05 -08:00
Greg Hysen
b4aca370de Writing tests for Compliant Forwarder 2018-12-18 13:36:05 -08:00
Greg Hysen
c854c99f20 template for Compliant Forwarder tests 2018-12-18 13:36:05 -08:00
Greg Hysen
0e0e05e0e0 Compile Compliant Forwarder contract 2018-12-18 13:36:04 -08:00
Greg Hysen
88595718c3 Yes Compliance Token 2018-12-18 13:36:04 -08:00
Greg Hysen
f104d91595 Broken commit -- saving current state of getting wyre compliance token contract setup 2018-12-18 13:36:04 -08:00
Greg Hysen
07c1a0121f Untested - Compliant Forwarder with Wyre "Yes Compliance" Token 2018-12-18 13:36:04 -08:00
Steve Klebanoff
67521da5c1 useAnchorTag -> shouldUseAnchorTag 2018-12-18 13:29:21 -08:00
Steve Klebanoff
9bd71aeeff run prettier on website 2018-12-18 13:24:53 -08:00
Steve Klebanoff
59d7efa78a Merge pull request #1456 from 0xProject/feature/website/0x-org-bb-fixes-rebase
[website] Bakken & Baeck 0x.org website fixes
2018-12-18 13:19:32 -08:00
Fred Carlsen
102b7154e0 Remove community and market maker route 2018-12-18 13:03:54 -08:00
Fred Carlsen
abbb6793cc Added routes 2018-12-18 13:03:51 -08:00
Fred Carlsen
7b117081d3 Added community and market maker routes 2018-12-18 13:03:47 -08:00
Fred Carlsen
342ecae34d Left-align hero on mobile 2018-12-18 13:03:42 -08:00
Fred Carlsen
b40551e2df Change cursor on dropdown triggers 2018-12-18 13:03:39 -08:00
Fred Carlsen
ffa57c3703 Tweak market maker 2018-12-18 13:03:35 -08:00
Fred Carlsen
630ecb98e1 Mobile tweaks 2018-12-18 13:03:30 -08:00
Fred Carlsen
ae27695d25 Prevent overflow on instant page 2018-12-18 13:03:25 -08:00
Steve Klebanoff
45d8b522f4 Merge branch 'development' into feature/website/0x-org 2018-12-18 12:49:22 -08:00
Fred Carlsen
aa5c2c249d Remove community and market maker route 2018-12-18 18:35:15 +01:00
Fred Carlsen
1ae9eedf9f Merge remote-tracking branch 'upstream/development' into feature/website/0x-org 2018-12-18 18:33:54 +01:00
Fabio Berger
622b9f662e Merge branch 'development' into features/orderwatcher_ws
* development: (107 commits)
  Fix OrderWatcher title to fix sidebar top
  Fix version picker so it doesn't overflow onto two lines
  Fix bug in pull_missing_blocks with incorrect start block (#1438)
  Pull approval events for ZRX and DAI (#1430)
  fix semicolon and apply prettier
  Fix dex order quote/base asset assigning (#1432)
  Apply prettier
  Publish
  Updated CHANGELOGS
  Rename contracts CHANGELOGs to DEPLOYs
  Move Forwarder CHANGELOG entries to extensions CHANGELOG
  Make contracts packages not private
  Publish
  Updated CHANGELOGS
  Show @ price in light grey
  Updated CHANGELOGS
  typeof -> isString
  add special case to scrape OHLCV for eth/usd (#1428)
  run linter
  simplify scaling input logic
  ...
2018-12-18 16:59:15 +00:00
Fabio Berger
e295eeb893 Remove unused file 2018-12-18 16:25:26 +00:00
Fabio Berger
67df5a433d Fix OrderWatcher title to fix sidebar top 2018-12-18 15:32:11 +00:00
Fabio Berger
18e55830b5 Fix version picker so it doesn't overflow onto two lines 2018-12-18 15:31:58 +00:00
Fabio Berger
7664f6a4fd Add unenforced coding rules to CONTRIBUTING.md 2018-12-18 14:46:21 +00:00
Fred Carlsen
cf553f2afe Added routes 2018-12-18 14:30:38 +01:00
Fred Carlsen
6cc0e6d55c Added community and market maker routes 2018-12-18 14:30:33 +01:00
Fred Carlsen
a6628cd363 Left-align hero on mobile 2018-12-18 14:30:10 +01:00
Fred Carlsen
6271133350 Change cursor on dropdown triggers 2018-12-18 14:08:35 +01:00
Fred Carlsen
55589698cf Tweak market maker 2018-12-18 14:05:10 +01:00
Fred Carlsen
ee0a226c43 Mobile tweaks 2018-12-18 14:04:44 +01:00
Fred Carlsen
d760b355ec Prevent overflow on instant page 2018-12-18 14:03:40 +01:00
Brandon Millman
4c9bdcd787 fix(website): fix broken copper form post link 2018-12-17 17:47:59 -08:00
Francesco Agosti
b7a8c871d2 Merge pull request #1452 from 0xProject/feature/website/0x-org-flawless
[website] 0x org flawless
2018-12-17 17:25:11 -08:00
fragosti
230236d4d7 fix: uppercase K 2018-12-17 17:24:46 -08:00
fragosti
2372925347 feat: update stats 2018-12-17 17:23:10 -08:00
Steve Klebanoff
df48539d41 Merge pull request #1449 from 0xProject/feature/website/0x-org-steve-links
[website] 0x.org Launch Kit and Ecosystem links
2018-12-17 17:15:43 -08:00
fragosti
90a1947c88 feat: make 0x.org #flawless 2018-12-17 17:13:34 -08:00
Alex Browne
44d9cc53b8 Fix bug in pull_missing_blocks with incorrect start block (#1438) 2018-12-17 17:07:22 -08:00
Steve Klebanoff
293e099cb3 Merge pull request #1451 from 0xProject/feature/website/0x-org-hide-links
[website] 0x.org Remove unused paths
2018-12-17 17:00:56 -08:00
Steve Klebanoff
e34aa4d859 Fix link 2018-12-17 17:00:06 -08:00
Steve Klebanoff
50110b3725 Merge branch 'feature/website/0x-org' into feature/website/0x-org-steve-links 2018-12-17 16:57:21 -08:00
Steve Klebanoff
e5815538e4 Use constants 2018-12-17 16:56:00 -08:00
Francesco Agosti
4fbc544b16 Merge pull request #1450 from 0xProject/feature/website/0x-org-about
[website] 0x org about
2018-12-17 16:53:20 -08:00
Steve Klebanoff
0aa7cbac92 Merge branch 'feature/website/0x-org' into feature/website/0x-org-hide-links 2018-12-17 16:37:55 -08:00
Steve Klebanoff
8b24b7c57c Remove community and market-maker URLs 2018-12-17 16:36:24 -08:00
Francesco Agosti
ed4573fe2c Merge pull request #1447 from 0xProject/feature/website/0x-org-jank-links
[website] Fix 0x org jank links
2018-12-17 16:33:57 -08:00
fragosti
7468be8f17 feat: redirect careers to jobs 2018-12-17 16:32:58 -08:00
fragosti
0dcada8e06 feat: add links to press page 2018-12-17 16:28:18 -08:00
fragosti
b255edc577 feat: remove download our presskit copy 2018-12-17 16:26:22 -08:00
fragosti
4ac1db1247 feat: add press mailto link 2018-12-17 16:25:22 -08:00
Steve Klebanoff
2c24cff950 Link homepage to Why#cases 2018-12-17 16:23:44 -08:00
fragosti
2107285a00 fix: use new AboutPageLayout API everywhere 2018-12-17 16:22:50 -08:00
Steve Klebanoff
095cec4342 Per Matt's sugestion change personalized to dedicated 2018-12-17 16:21:29 -08:00
fragosti
53529439c5 feat: update job titles 2018-12-17 16:20:49 -08:00
fragosti
3cf9cf98dc fix: mission and values link to new tab and not append 2018-12-17 16:19:43 -08:00
Steve Klebanoff
43cc7b6626 Ecosystem links 2018-12-17 16:14:30 -08:00
Steve Klebanoff
5defa94902 Prettify ecosystem 2018-12-17 16:09:55 -08:00
fragosti
e0116da559 feat: link to mission and values 2018-12-17 16:09:51 -08:00
Steve Klebanoff
c385627030 Capitalize K in Launch Kit 2018-12-17 16:02:25 -08:00
Steve Klebanoff
031eb8d6a0 Prettify dropdown 2018-12-17 16:02:16 -08:00
Steve Klebanoff
c5f85a365b Allow banner to open in new window 2018-12-17 16:01:21 -08:00
fragosti
a6fa15c94a feat: add react-shared release notes 2018-12-17 16:01:01 -08:00
Steve Klebanoff
14767f1a51 Prettify banner 2018-12-17 15:58:27 -08:00
Steve Klebanoff
d34d8cac5d Remove unused target 2018-12-17 15:58:05 -08:00
Steve Klebanoff
1e0aa55368 Merge branch 'feature/website/0x-org' into feature/website/0x-org-steve-links 2018-12-17 15:54:16 -08:00
fragosti
bb691aa4ed feat: more blog url fixes 2018-12-17 15:48:17 -08:00
fragosti
64e84a3510 feat: fix blog link 2018-12-17 15:39:22 -08:00
Steve Klebanoff
62f5c58d83 fragment and launchkit url 2018-12-17 15:39:02 -08:00
fragosti
4cf3172c90 feat: final footer polish 2018-12-17 15:34:21 -08:00
fragosti
8452c05952 Merge branch 'feature/website/0x-org' of https://github.com/0xProject/0x-monorepo into feature/website/0x-org-jank-links 2018-12-17 15:27:15 -08:00
Steve Klebanoff
8925317c95 Merge pull request #1444 from 0xProject/feature/website/0x-org-instant-config
[website] 0x.org Instant
2018-12-17 15:24:30 -08:00
Steve Klebanoff
248a3998cf prettify launch kit 2018-12-17 15:15:37 -08:00
fragosti
be3142a96a feat: fix footer links 2018-12-17 15:12:54 -08:00
Steve Klebanoff
4626921bb6 Merge pull request #1445 from 0xProject/feature/0x-org-stats
[website] 0x.org stats
2018-12-17 15:12:05 -08:00
Steve Klebanoff
2593f1b8d7 Merge pull request #1442 from 0xProject/feature/website/0x-org-analytics
[website] 0x.org: Allow manual triggering of error, and report newsletter errors to Rollbar
2018-12-17 15:11:35 -08:00
Brandon Millman
4e80c395b1 Merge pull request #1443 from 0xProject/feature/website/0x-org-portal-updated
[0x.org] fix portal
2018-12-17 14:50:36 -08:00
Steve Klebanoff
1f59c99532 total stats 2018-12-17 14:42:08 -08:00
fragosti
a77e5a1a12 feat: fix links in navbar and dropdown 2018-12-17 14:37:34 -08:00
Steve Klebanoff
35f7dd71e9 prettify about page 2018-12-17 14:37:18 -08:00
Brandon Millman
c4036d7d0f fix(website): update Animation component for styled components v4 2018-12-17 14:31:14 -08:00
Steve Klebanoff
6e0d622a15 Open all new instant links in new window 2018-12-17 14:17:36 -08:00
Steve Klebanoff
0e8f0d1d53 Fix URLs 2018-12-17 13:59:12 -08:00
Steve Klebanoff
c126d01fe3 Conditional getStartedClick working on features list 2018-12-17 13:44:19 -08:00
Steve Klebanoff
6d66476d35 Action takes in useAnchorTag 2018-12-17 13:44:08 -08:00
Steve Klebanoff
039b95c8c1 Janky but didn't want to mess anything else up, send in useAnchorTag boolean to force using anchortag 2018-12-17 13:43:37 -08:00
Brandon Millman
30ccddf0d5 Merge pull request #1441 from 0xProject/feature/website/0x-org-jobs-update
[0x.org] update jobs page to load positions from greenhouse
2018-12-17 13:40:54 -08:00
Steve Klebanoff
024e503657 Prettify button.tsx 2018-12-17 13:37:05 -08:00
Steve Klebanoff
37e5a8a8b7 Prettify file 2018-12-17 13:29:46 -08:00
Steve Klebanoff
592c171557 Custom getStartedLink based on screen size 2018-12-17 13:29:39 -08:00
fragosti
9df0ae90bc feat: use react-shared Link component 2018-12-17 13:28:49 -08:00
Steve Klebanoff
33e06fdf40 Run prettifier 2018-12-17 13:16:19 -08:00
fragosti
cce07acf9a feat: update developer dropdown links 2018-12-17 13:14:49 -08:00
Steve Klebanoff
d32f77ebb9 Add includeEmpty option 2018-12-17 13:01:15 -08:00
Steve Klebanoff
35cb769456 prettify file 2018-12-17 12:57:59 -08:00
Brandon Millman
9fdd6e56a7 fix(website): redirect /jobs to /about/jobs 2018-12-17 12:21:37 -08:00
Brandon Millman
2a0ba501e0 feature(website): implement loading jobs from greenhouse in jobs page 2018-12-17 12:21:36 -08:00
Brandon Millman
90d4a2b590 chore(website): yarn lock 2018-12-17 12:21:36 -08:00
Brandon Millman
f7581d60da fix(website): fix mis-replaced website api backend links 2018-12-17 12:21:03 -08:00
Steve Klebanoff
2cc03216bd manually trigger error and also send in newsletter errors 2018-12-17 12:00:15 -08:00
Steve Klebanoff
cd4e679db7 apply prettier 2018-12-17 11:58:49 -08:00
Alex Browne
28713bdb38 Pull approval events for ZRX and DAI (#1430) 2018-12-17 11:36:03 -08:00
Francesco Agosti
c0b469fdd9 Merge pull request #1440 from bakkenbaeck/feature/website/0x-org
Feature/website/0x org
2018-12-17 11:21:53 -08:00
Ezekiel Aquino
47db165afc Fixes hamburger icon bgcolor, jobs link 2018-12-17 19:56:10 +01:00
Fred Carlsen
f95401ad33 Add definition 2018-12-17 19:46:10 +01:00
Fred Carlsen
5209729eb1 Increase header tolerances 2018-12-17 19:39:37 +01:00
Fred Carlsen
31bbb0696c Show errors from serverside 2018-12-17 19:26:04 +01:00
Fred Carlsen
6ab8415198 Update community page 2018-12-17 19:26:04 +01:00
Fred Carlsen
5a6b538a13 Add community links 2018-12-17 19:26:03 +01:00
Fred Carlsen
42e63b32e3 Replace share image 2018-12-17 19:26:03 +01:00
Ezekiel Aquino
072c80f475 Removes content transform on mobile nav toggle 2018-12-17 18:30:00 +01:00
Ezekiel Aquino
fb623cf63b Untoggles nav on headroom unpin 2018-12-17 18:23:40 +01:00
Ezekiel Aquino
5e4defefb0 Adds headroom instead for toggling nav visibility 2018-12-17 18:06:58 +01:00
Fred Carlsen
8d76053210 Fix default margin 2018-12-17 18:04:51 +01:00
Fred Carlsen
b7d8362fb1 Update lock file 2018-12-17 18:04:36 +01:00
Fred Carlsen
73e8563413 Fix about intros 2018-12-17 18:03:50 +01:00
Ezekiel Aquino
312d864936 Fixes mobile nav overflow on mobile 2018-12-17 17:31:06 +01:00
Fred Carlsen
67caa377a4 Added Community page 2018-12-17 16:01:29 +01:00
Fred Carlsen
8234bd5409 Add def for react-scrollable-anchor 2018-12-17 16:01:16 +01:00
Fred Carlsen
3b8598b54b Prepare banner for light theme 2018-12-17 16:01:06 +01:00
Fred Carlsen
934d3b5d79 Tweak banner border on mobile 2018-12-17 14:32:05 +01:00
Fred Carlsen
5932589776 Fix cta links 2018-12-17 14:20:53 +01:00
Fred Carlsen
19e65965c8 Add market maker page 2018-12-17 14:19:10 +01:00
Fred Carlsen
8490c31fb7 Tweak configurator 2018-12-17 14:03:14 +01:00
Fred Carlsen
f242c4206f Update long term impact icon 2018-12-17 13:32:36 +01:00
Fred Carlsen
88240f6401 Fix liquidity source change 2018-12-17 13:31:41 +01:00
Fred Carlsen
7065a098e3 Update og image 2018-12-17 13:27:00 +01:00
Ezekiel Aquino
6fc80cd776 Fixes scrollable anchors in why page 2018-12-17 12:05:05 +01:00
Fred Carlsen
4611c65aa3 Fix wrong icon name 2018-12-17 11:57:05 +01:00
Fred Carlsen
d6866a6dae Adjust thick stroked svgs 2018-12-17 11:57:05 +01:00
Ezekiel Aquino
68be8ef861 Fix footer link hover states 2018-12-17 11:51:35 +01:00
Ezekiel Aquino
0c298b7be4 Fixes mobile button layout for Definition component 2018-12-17 11:48:32 +01:00
Ezekiel Aquino
6eb8256555 Resolves font flicker on route change
- Adds formular css to globally linked css
2018-12-17 11:42:00 +01:00
Fred Carlsen
240e3558fa Update client list + logos 2018-12-17 11:38:47 +01:00
Fred Carlsen
8988650c8b Fix newsletter input color in light theme 2018-12-17 11:30:11 +01:00
Fred Carlsen
28bad6567b Fix launch kit link 2018-12-17 11:19:59 +01:00
Fred Carlsen
1be948bd55 Fix stray tag 2018-12-17 11:17:24 +01:00
Fred Carlsen
c2b355c25e Fix typo 2018-12-17 11:16:31 +01:00
Fred Carlsen
d12e881e62 Fix homepage icon 2018-12-17 11:15:32 +01:00
Fred Carlsen
85edc297f6 Fix mobile links 2018-12-17 11:14:43 +01:00
Fred Carlsen
96d89ddade Fix portal link 2018-12-17 11:07:00 +01:00
Fred Carlsen
5b4b4123e5 Fix mobile nav placement 2018-12-17 11:04:24 +01:00
Jacob Evans
2a577e0475 Add Docker image and Snapshot commands 2018-12-17 15:44:24 +11:00
Fabio Berger
6382f98608 Fix file name 2018-12-16 18:05:20 -08:00
Fabio Berger
a12b9e82f6 Consolidate use of isVerbose in orderWatcherConfig 2018-12-16 18:00:23 -08:00
Fabio Berger
5d0e715d9a Add isVerbose option to enable/disable logging 2018-12-16 17:46:28 -08:00
Fabio Berger
896c8d17c1 Fix schemas and tests 2018-12-16 17:31:38 -08:00
Fabio Berger
ee4185ab46 Move OrderWatcher Websocket schemas to json-schemas and convert to JSON so that they are language agnostic 2018-12-16 16:52:37 -08:00
Fabio Berger
7661cfc85e Improve our compliance to the JSON RPC spec 2018-12-16 16:21:27 -08:00
Fabio Berger
f510f9df99 remove unused instance variable 2018-12-15 21:34:56 -08:00
Fabio Berger
7cafe396de Ensure fileName matches class name, fix broadcast 2018-12-15 21:34:35 -08:00
kao
6bb2ef9238 Respond to CR 2018-12-15 01:25:23 -08:00
Steve Klebanoff
737d1dc54d Merge pull request #1424 from 0xProject/feature/instant/usd-eth-toggle
[instant] ETH/USD toggle
2018-12-14 17:33:56 -08:00
Steve Klebanoff
aa9aa1f58a more documentation 2018-12-14 17:05:52 -08:00
fragosti
9b4d1a1e38 feat: update prod deploy destination 2018-12-14 16:37:19 -08:00
F. Eugene Aumson
c6815bddac Correct doc titles 2018-12-14 16:22:58 -08:00
Steve Klebanoff
2e2e157fc8 Fix for asset-buyer documentation 2018-12-14 16:20:45 -08:00
F. Eugene Aumson
6639201fdb Tweak special case: only strip Schema as suffix 2018-12-14 16:11:00 -08:00
F. Eugene Aumson
57ac2f28a4 Add example usage to sra_client README 2018-12-14 16:08:57 -08:00
Steve Klebanoff
8c5ff663a9 Merge branch 'development' into feature/instant/usd-eth-toggle 2018-12-14 15:58:34 -08:00
Steve Klebanoff
67422db4bd fix semicolon and apply prettier 2018-12-14 15:58:23 -08:00
Steve Klebanoff
219902a169 rename boolean var 2018-12-14 15:55:52 -08:00
Steve Klebanoff
ab10119c5a one more test for undefined 2018-12-14 15:34:45 -08:00
Steve Klebanoff
5981823ac1 Update asset-buyer changelog describing error change 2018-12-14 15:34:45 -08:00
Steve Klebanoff
69054d85e8 Only send in amountAvailableToFill if it's a non-zero amount, add additional tests and nest, and put error into its own file 2018-12-14 15:34:45 -08:00
Steve Klebanoff
3e596f6a8c Nesting errors 2018-12-14 15:34:45 -08:00
Steve Klebanoff
c3884dfa32 More tests for assetBuyerErrorMessage 2018-12-14 15:34:45 -08:00
Steve Klebanoff
a3d93d17cd Factor in slippage amount in InsufficientAssetLiquidityError error, and show in instant 2018-12-14 15:34:45 -08:00
Steve Klebanoff
c6c45095a8 feat(asset-buyer): Custom InsufficientAssetLiquidityError error
BREAKING CHANGE: A custom InsufficientAssetLiquidityError error is now raised when there is insufficient liquidity
2018-12-14 15:34:45 -08:00
Brandon Millman
7d5388edee chore(website): yarn lock 2018-12-14 14:46:30 -08:00
Brandon Millman
51b1cab72a fix(website) replace 0xproject.com with 0x.org 2018-12-14 14:46:05 -08:00
Brandon Millman
e3dcb7107b Merge pull request #1375 from bakkenbaeck/website
[WIP] Website
2018-12-14 14:42:55 -08:00
Fred Carlsen
f7ceb4cf58 Fix logo link 2018-12-14 23:38:21 +01:00
Fred Carlsen
e53f28c570 Merge remote-tracking branch 'upstream/development' into website
# Conflicts:
#	.gitignore
#	README.md
#	contracts/core/CHANGELOG.json
#	contracts/examples/package.json
#	contracts/extensions/package.json
#	contracts/interfaces/package.json
#	contracts/libs/package.json
#	contracts/multisig/package.json
#	contracts/protocol/CHANGELOG.json
#	contracts/protocol/DEPLOYS.json
#	contracts/protocol/package.json
#	contracts/test-utils/CHANGELOG.json
#	contracts/test-utils/CHANGELOG.md
#	contracts/test-utils/package.json
#	contracts/tokens/CHANGELOG.json
#	contracts/tokens/package.json
#	contracts/utils/package.json
#	packages/0x.js/CHANGELOG.json
#	packages/0x.js/CHANGELOG.md
#	packages/0x.js/package.json
#	packages/abi-gen-wrappers/CHANGELOG.json
#	packages/abi-gen-wrappers/CHANGELOG.md
#	packages/abi-gen-wrappers/package.json
#	packages/abi-gen/CHANGELOG.json
#	packages/abi-gen/CHANGELOG.md
#	packages/abi-gen/package.json
#	packages/assert/CHANGELOG.json
#	packages/assert/CHANGELOG.md
#	packages/assert/package.json
#	packages/asset-buyer/CHANGELOG.md
#	packages/asset-buyer/package.json
#	packages/base-contract/CHANGELOG.json
#	packages/base-contract/CHANGELOG.md
#	packages/base-contract/package.json
#	packages/connect/CHANGELOG.json
#	packages/connect/CHANGELOG.md
#	packages/connect/package.json
#	packages/contract-wrappers/CHANGELOG.json
#	packages/contract-wrappers/CHANGELOG.md
#	packages/contract-wrappers/package.json
#	packages/dev-tools-pages/package.json
#	packages/dev-utils/CHANGELOG.json
#	packages/dev-utils/CHANGELOG.md
#	packages/dev-utils/package.json
#	packages/ethereum-types/CHANGELOG.json
#	packages/ethereum-types/CHANGELOG.md
#	packages/ethereum-types/package.json
#	packages/fill-scenarios/CHANGELOG.json
#	packages/fill-scenarios/CHANGELOG.md
#	packages/fill-scenarios/package.json
#	packages/instant/package.json
#	packages/instant/src/types.ts
#	packages/json-schemas/CHANGELOG.json
#	packages/json-schemas/CHANGELOG.md
#	packages/json-schemas/package.json
#	packages/metacoin/package.json
#	packages/migrations/CHANGELOG.json
#	packages/migrations/CHANGELOG.md
#	packages/migrations/package.json
#	packages/order-utils/CHANGELOG.json
#	packages/order-utils/CHANGELOG.md
#	packages/order-utils/package.json
#	packages/order-watcher/CHANGELOG.json
#	packages/order-watcher/CHANGELOG.md
#	packages/order-watcher/package.json
#	packages/pipeline/package.json
#	packages/pipeline/src/ormconfig.ts
#	packages/pipeline/src/parsers/ddex_orders/index.ts
#	packages/pipeline/src/parsers/oasis_orders/index.ts
#	packages/pipeline/src/parsers/paradex_orders/index.ts
#	packages/pipeline/src/parsers/token_metadata/index.ts
#	packages/pipeline/src/scripts/pull_competing_dex_trades.ts
#	packages/pipeline/src/scripts/pull_ddex_orderbook_snapshots.ts
#	packages/pipeline/src/scripts/pull_idex_orderbook_snapshots.ts
#	packages/pipeline/src/scripts/pull_missing_blocks.ts
#	packages/pipeline/src/scripts/pull_oasis_orderbook_snapshots.ts
#	packages/pipeline/src/scripts/pull_paradex_orderbook_snapshots.ts
#	packages/pipeline/src/scripts/pull_trusted_tokens.ts
#	packages/pipeline/src/scripts/update_relayer_info.ts
#	packages/pipeline/src/utils/get_ohlcv_trading_pairs.ts
#	packages/pipeline/src/utils/index.ts
#	packages/pipeline/test/parsers/ddex_orders/index_test.ts
#	packages/pipeline/test/parsers/oasis_orders/index_test.ts
#	packages/pipeline/test/parsers/paradex_orders/index_test.ts
#	packages/react-docs/CHANGELOG.json
#	packages/react-docs/CHANGELOG.md
#	packages/react-docs/package.json
#	packages/react-shared/CHANGELOG.json
#	packages/react-shared/CHANGELOG.md
#	packages/react-shared/package.json
#	packages/sol-compiler/CHANGELOG.md
#	packages/sol-compiler/package.json
#	packages/sol-cov/CHANGELOG.json
#	packages/sol-cov/CHANGELOG.md
#	packages/sol-cov/package.json
#	packages/sol-doc/CHANGELOG.json
#	packages/sol-doc/CHANGELOG.md
#	packages/sol-doc/package.json
#	packages/sol-resolver/CHANGELOG.md
#	packages/sol-resolver/package.json
#	packages/sra-spec/CHANGELOG.json
#	packages/sra-spec/CHANGELOG.md
#	packages/sra-spec/package.json
#	packages/subproviders/CHANGELOG.json
#	packages/subproviders/CHANGELOG.md
#	packages/subproviders/package.json
#	packages/testnet-faucets/package.json
#	packages/types/CHANGELOG.md
#	packages/types/package.json
#	packages/typescript-typings/CHANGELOG.json
#	packages/typescript-typings/CHANGELOG.md
#	packages/typescript-typings/package.json
#	packages/utils/CHANGELOG.json
#	packages/utils/CHANGELOG.md
#	packages/utils/package.json
#	packages/web3-wrapper/CHANGELOG.json
#	packages/web3-wrapper/CHANGELOG.md
#	packages/web3-wrapper/package.json
#	packages/website/package.json
#	packages/website/public/index.html
#	packages/website/ts/pages/instant/fee_percentage_slider.tsx
#	yarn.lock
2018-12-14 23:24:08 +01:00
Fred Carlsen
5c083ba16b Add id prop 2018-12-14 23:16:59 +01:00
Fred Carlsen
4d5bfb5cc2 Jump down to configurator 2018-12-14 23:16:54 +01:00
Fred Carlsen
2adeed38d8 Fix default heading size 2018-12-14 23:16:44 +01:00
Brandon Millman
21a193e516 feature(instant): add trust wallet detection 2018-12-14 14:10:15 -08:00
Brandon Millman
926fcb296f fix(instant): treat executeBuyQuote errors as signature denials 2018-12-14 14:06:24 -08:00
Fred Carlsen
f6f441cbe6 Update routes 2018-12-14 23:03:51 +01:00
Fred Carlsen
b9fa158092 Update links and routes 2018-12-14 23:03:45 +01:00
F. Eugene Aumson
210840444d HACK: cp files because CircleCI isn't 2018-12-14 13:53:21 -08:00
F. Eugene Aumson
d92e143a7e Stop installing packages as editable 2018-12-14 13:53:21 -08:00
F. Eugene Aumson
087469f1f3 Support ALL the schemas 2018-12-14 13:53:21 -08:00
F. Eugene Aumson
b6c8126589 Move zero_ex.json_schemas to its own package 2018-12-14 13:53:15 -08:00
Fred Carlsen
8570616d97 Update links 2018-12-14 22:39:04 +01:00
Fred Carlsen
373ebdbe38 Copy fixes 2018-12-14 22:38:43 +01:00
Fred Carlsen
a1410409ff Add contact modal to pages with contact link 2018-12-14 22:37:01 +01:00
Fred Carlsen
32eab3acff Fix modal submit 2018-12-14 21:56:12 +01:00
kao
d9b5884834 Respond to CR 2018-12-14 12:52:55 -08:00
Fred Carlsen
76a4468b85 Change chapter link 2018-12-14 21:51:09 +01:00
Fred Carlsen
361dc29338 Fix xianny 2018-12-14 21:50:59 +01:00
Fred Carlsen
dbdd2fb7d0 Tweak modal confirmatino 2018-12-14 21:42:25 +01:00
Fred Carlsen
b07892bb48 Type fixes 2018-12-14 21:33:08 +01:00
zkao
6d45beccad Fix dex order quote/base asset assigning (#1432) 2018-12-14 12:15:35 -08:00
Fred Carlsen
f0581285d0 Type fixes 2018-12-14 20:53:29 +01:00
Fred Carlsen
04d4e797aa Type fixes 2018-12-14 20:41:50 +01:00
Fred Carlsen
ceddc01985 Type fixes 2018-12-14 20:20:27 +01:00
Fred Carlsen
1955c846f2 Fixes 2018-12-14 19:51:39 +01:00
Francesco Agosti
1efde6f59b Merge pull request #1415 from 0xProject/feature/instant/mobile-numeric-keyboard
[instant] Change input to number input, and simplify ScalingInput
2018-12-14 10:50:32 -08:00
Fred Carlsen
6af0cf87e1 Tweak mission 2018-12-14 19:19:50 +01:00
Fred Carlsen
101fd78cb2 Finish tweaking team 2018-12-14 19:19:50 +01:00
Leonid Logvinov
91d432aa56 Apply prettier 2018-12-14 10:14:09 -08:00
Ezekiel Aquino
dde2baf204 Cleanup 2018-12-14 18:57:49 +01:00
Ezekiel Aquino
96cb278cae Cleanup 2018-12-14 18:56:53 +01:00
Ezekiel Aquino
51777ed61d Cleanup ecosystem 2018-12-14 18:54:31 +01:00
Ezekiel Aquino
2b4c557a3f Cleanup select 2018-12-14 18:53:43 +01:00
Ezekiel Aquino
84321c41f3 Cleanup configurator 2018-12-14 18:52:38 +01:00
Ezekiel Aquino
f9dfecaf13 Cleanup 2018-12-14 18:50:09 +01:00
Ezekiel Aquino
d1f73da675 Cleanup 2018-12-14 18:49:08 +01:00
Ezekiel Aquino
94c7bf47db More Cleanup 2018-12-14 18:47:09 +01:00
Fred Carlsen
4e8d653f1f Add links to ecosystem 2018-12-14 18:15:07 +01:00
Fred Carlsen
c5b63ca441 Misc typing 2018-12-14 18:05:50 +01:00
Fred Carlsen
ea668d1376 Add missing colors 2018-12-14 18:05:50 +01:00
Fred Carlsen
086c70bcdc Change ecosystem route 2018-12-14 18:05:50 +01:00
Fred Carlsen
461c7efc26 Link ecosystem 2018-12-14 18:05:50 +01:00
Fred Carlsen
c145349af0 Replace launch kit icon 2018-12-14 18:05:49 +01:00
Fred Carlsen
df445eb53c Declare missing types 2018-12-14 18:05:49 +01:00
Fred Carlsen
eadad19cb5 Mobile tweaks jobs table 2018-12-14 18:05:49 +01:00
Fred Carlsen
d410c44b07 Add icon 2018-12-14 18:05:49 +01:00
Ezekiel Aquino
9fa9a30c4d More lint cleanup 2018-12-14 17:50:27 +01:00
Ezekiel Aquino
bdc8f9aa2a Cleanup 2018-12-14 17:43:56 +01:00
Ezekiel Aquino
6db28c5300 Fix mobile nav hamburger open state 2018-12-14 16:06:06 +01:00
Ezekiel Aquino
0dc9fc4ef7 More animation tweaks 2018-12-14 15:38:56 +01:00
Ezekiel Aquino
41ec26c927 cta boxes hover state 2018-12-14 15:36:42 +01:00
Ezekiel Aquino
51def6ee6b Adds mask to get in touch anim 2018-12-14 15:28:00 +01:00
Fred Carlsen
377b87071a Tweak configurator code width 2018-12-14 15:22:27 +01:00
Fred Carlsen
1782418f92 Fix borders on why page 2018-12-14 15:22:27 +01:00
Fred Carlsen
f3f78f63ec Fix hero landing 2018-12-14 15:22:27 +01:00
Fred Carlsen
a2cb815454 Misc feedbackTweak jobs page 2018-12-14 15:22:27 +01:00
Fred Carlsen
ef200b1ce6 Copy updates 2018-12-14 15:22:27 +01:00
Ezekiel Aquino
f6c173a97e Edits animation 2018-12-14 15:02:01 +01:00
Ezekiel Aquino
ef403108fb Edits CTA landing section 2018-12-14 14:59:35 +01:00
Fred Carlsen
8a06dccbbf Tweak launch kit 2018-12-14 14:01:33 +01:00
Fred Carlsen
4590d07e7f Tweak launch kit + add icons 2018-12-14 14:01:33 +01:00
Fred Carlsen
ba89429aec Tweak definition 2018-12-14 14:00:26 +01:00
Ezekiel Aquino
ee38031696 Fixes borders in why page sections 2018-12-14 13:47:40 +01:00
Ezekiel Aquino
8948029dd7 REplaces links as navlinks in header 2018-12-14 13:32:18 +01:00
Ezekiel Aquino
e78ddd4d5a Slight tweak to landing animation 2018-12-14 13:30:36 +01:00
Ezekiel Aquino
f179dc3ca7 Hide extensions from product menu 2018-12-14 13:28:24 +01:00
Ezekiel Aquino
166a6c85fd Slower instant transition, high res images 2018-12-14 13:27:47 +01:00
Ezekiel Aquino
c7c07a7c01 Landing page animation delay 2018-12-14 13:17:23 +01:00
Ezekiel Aquino
f083cafcc7 Scrolls doc to top/ensures overfow on document on route change 2018-12-14 13:01:31 +01:00
Ezekiel Aquino
fab3a90d5a Adds mission office photo 2018-12-14 12:55:22 +01:00
Fred Carlsen
a04c54b4d8 Delete old launch kit 2018-12-14 12:49:59 +01:00
Fred Carlsen
388c7afb50 Added launch kit page 2018-12-14 12:49:59 +01:00
Fred Carlsen
51f2711796 Add hero icon size 2018-12-14 12:49:59 +01:00
Fred Carlsen
907aa7a844 Fix typedef 2018-12-14 12:49:59 +01:00
Fred Carlsen
9695be13c3 Update olafs pic 2018-12-14 12:49:59 +01:00
Ezekiel Aquino
f452fc5bc7 Resolves some sitewrap warnings [TO DO] 2018-12-14 11:49:32 +01:00
Fred Carlsen
106df4cdaf Linting fix 2018-12-14 11:41:05 +01:00
Fred Carlsen
ed6d83c0a7 Linting error 2018-12-14 11:38:32 +01:00
Fred Carlsen
66480ccb1e Linting fixes 2018-12-14 11:34:14 +01:00
Ezekiel Aquino
7a10f03496 Removes button / link outlines globally 2018-12-14 11:15:19 +01:00
Ezekiel Aquino
64c168eafc Hides mobile nav on desktop, adds flexwrap maxwidth 2018-12-14 11:10:01 +01:00
Leonid Logvinov
44e516ac65 Publish
- @0x/contracts-examples@1.0.2
 - @0x/contracts-extensions@1.0.2
 - @0x/contracts-interfaces@1.0.2
 - @0x/contracts-libs@1.0.2
 - @0x/contracts-multisig@1.0.2
 - @0x/contracts-protocol@2.1.59
 - @0x/contracts-tokens@1.0.2
 - @0x/contracts-utils@1.0.2
2018-12-13 14:58:57 -08:00
Leonid Logvinov
d018f6d9cc Updated CHANGELOGS 2018-12-13 14:58:48 -08:00
Leonid Logvinov
d5e15b05fb Rename contracts CHANGELOGs to DEPLOYs 2018-12-13 14:49:58 -08:00
Leonid Logvinov
59fad5845c Move Forwarder CHANGELOG entries to extensions CHANGELOG 2018-12-13 14:43:40 -08:00
Leonid Logvinov
545101f7a5 Make contracts packages not private 2018-12-13 14:36:34 -08:00
Leonid Logvinov
2abd8fe4ee Publish
- 0x.js@2.0.8
 - @0x/abi-gen@1.0.19
 - @0x/abi-gen-wrappers@2.0.2
 - @0x/assert@1.0.20
 - @0x/asset-buyer@3.0.4
 - @0x/base-contract@3.0.10
 - @0x/connect@3.0.10
 - @0x/contract-wrappers@4.1.3
 - @0x/dev-tools-pages@0.0.10
 - @0x/dev-utils@1.0.21
 - ethereum-types@1.1.4
 - @0x/fill-scenarios@1.0.16
 - @0x/instant@1.0.4
 - @0x/json-schemas@2.1.4
 - @0x/metacoin@0.0.32
 - @0x/migrations@2.2.2
 - @0x/order-utils@3.0.7
 - @0x/order-watcher@2.2.8
 - @0x/pipeline@1.0.2
 - @0x/react-docs@1.0.22
 - @0x/react-shared@1.0.25
 - @0x/sol-compiler@1.1.16
 - @0x/sol-cov@2.1.16
 - @0x/sol-doc@1.0.11
 - @0x/sol-resolver@1.1.1
 - @0x/sra-spec@1.0.13
 - @0x/subproviders@2.1.8
 - @0x/testnet-faucets@1.0.60
 - @0x/tslint-config@2.0.0
 - @0x/types@1.4.1
 - @0x/typescript-typings@3.0.6
 - @0x/utils@2.0.8
 - @0x/web3-wrapper@3.2.1
 - @0x/website@0.0.63
 - @0x/contracts-examples@1.0.1
 - @0x/contracts-extensions@1.0.1
 - @0x/contracts-interfaces@1.0.1
 - @0x/contracts-libs@1.0.1
 - @0x/contracts-multisig@1.0.1
 - @0x/contracts-protocol@2.1.58
 - @0x/contracts-test-utils@1.0.2
 - @0x/contracts-tokens@1.0.1
 - @0x/contracts-utils@1.0.1
2018-12-13 14:28:27 -08:00
Leonid Logvinov
3c578cfda9 Updated CHANGELOGS 2018-12-13 14:28:17 -08:00
Steve Klebanoff
6878705676 Show @ price in light grey 2018-12-13 14:27:27 -08:00
Leonid Logvinov
597b2f38f5 Updated CHANGELOGS 2018-12-13 14:04:56 -08:00
Steve Klebanoff
9697d66b66 typeof -> isString 2018-12-13 13:31:30 -08:00
Xianny
8906c30f37 add special case to scrape OHLCV for eth/usd (#1428) 2018-12-13 13:13:28 -08:00
fragosti
9cd859a68a run linter 2018-12-13 13:03:45 -08:00
fragosti
33c6e40b70 simplify scaling input logic 2018-12-13 12:45:38 -08:00
Brandon Millman
5744a7f61b Merge pull request #1418 from 0xProject/feature/website/integrate-instant-docs-track
[website] add 0x Instant as a track in the docs
2018-12-13 11:43:02 -08:00
F. Eugene Aumson
f9a6c45a03 fix(sra_client.py): Fix version badge in README
* Correct Python SRA client version badge

* Fix spacing for prettier
2018-12-13 11:36:28 -08:00
Leonid Logvinov
f8e84260b5 Bump contracts-test-utils version to match the one on npm 2018-12-13 11:33:55 -08:00
Leonid Logvinov
5a45bc5e7b Revert version bump to unpublished contracts packages 2018-12-13 11:10:24 -08:00
Brandon Millman
80f03ef987 fix(website): update copy of instant track in dev home 2018-12-13 11:00:54 -08:00
Fred Carlsen
e48887bc6f Tweak slider 2018-12-13 19:40:17 +01:00
Fred Carlsen
52272cd290 Hide configurator on smaller screens 2018-12-13 19:40:17 +01:00
Ezekiel Aquino
ac1786585e [WIP] cleanup, typing 2018-12-13 18:44:18 +01:00
Ezekiel Aquino
f4a95c295c WIP Begin cleanup, adds mediaquery component 2018-12-13 18:23:12 +01:00
Fred Carlsen
142d29ba57 Tweak padding 2018-12-13 17:48:58 +01:00
Fred Carlsen
d84c740274 Tweak margin on banner 2018-12-13 17:41:21 +01:00
Fred Carlsen
1c413e632b Styled configurator 2018-12-13 17:38:32 +01:00
Steve Klebanoff
9a1d2c055e Fix SectionHeaderProps 2018-12-13 08:31:40 -08:00
Ezekiel Aquino
803086da57 Cleans up as much as old layout 2018-12-13 17:27:40 +01:00
Ezekiel Aquino
2a242e357f Removes line-height normal on buttons because it messes with alignment 2018-12-13 16:51:53 +01:00
Ezekiel Aquino
1647400a49 Just forces that header button to behave 2018-12-13 16:50:19 +01:00
Ezekiel Aquino
41a8dd3e28 Fix missed Link 2018-12-13 16:41:42 +01:00
Ezekiel Aquino
81690d1ce5 Removes <Link> component, clean up Button.tsx 2018-12-13 16:39:19 +01:00
Fred Carlsen
f846e2f6e0 Cleanup 2018-12-13 16:08:44 +01:00
Fred Carlsen
bfc8a3ccee Tweak slides on mobile 2018-12-13 16:03:03 +01:00
Fred Carlsen
daf334a588 Links on mobile 2018-12-13 16:02:51 +01:00
Fred Carlsen
4d0c59649e Add smoother transitions on slider 2018-12-13 14:49:27 +01:00
Fred Carlsen
a1737f8d93 Feedback from harry 2018-12-13 14:47:15 +01:00
Fred Carlsen
455f244ec5 Hook up newsletter form to api 2018-12-13 13:56:25 +01:00
Fred Carlsen
6f7e27bd7f Tweak z-index 2018-12-13 13:53:10 +01:00
Ezekiel Aquino
ea57367473 Switches client logos 2018-12-13 13:51:25 +01:00
Ezekiel Aquino
088c471b78 Switches landing page icons 2018-12-13 13:39:33 +01:00
Fred Carlsen
9fda63cf74 Mobile tweaks to contactm modal 2018-12-13 13:36:01 +01:00
Fred Carlsen
4cf900631c Update icon and copy 2018-12-13 13:36:01 +01:00
Fred Carlsen
fed79b2fde Update icons 2018-12-13 13:36:01 +01:00
Ezekiel Aquino
d2e29fb081 Refactors mobile nav, theming 2018-12-13 13:18:51 +01:00
Ezekiel Aquino
b4b1d54e49 WIP refactor mobileNavMenu 2018-12-13 12:33:45 +01:00
Ezekiel Aquino
a852a4077d Increase figure font size in landing page stats 2018-12-13 11:53:00 +01:00
Fred Carlsen
1c0bf710a4 Add types 2018-12-13 11:38:03 +01:00
Fred Carlsen
f4e9103b6f Add advisors 2018-12-13 11:37:32 +01:00
Fred Carlsen
f8e95ae483 Added full team 2018-12-13 11:34:24 +01:00
Ezekiel Aquino
70df5a0a17 About pages wrapwidths 2018-12-13 11:26:52 +01:00
Ezekiel Aquino
79dac62646 WIP hero page animation test 2018-12-13 11:03:48 +01:00
Ezekiel Aquino
5bd185e831 Adds images in instant page 2018-12-13 10:54:18 +01:00
kao
687749460d WIP: OrderWatcher WebSocket
Currently incomplete. Main challenge is to figure out how to test
a client + server setup in the single-threaded javascript environment.
2018-12-12 22:39:07 -08:00
Steve Klebanoff
193cd67d6b A little bit of scaling logic for not cutting off text 2018-12-12 17:43:27 -08:00
Steve Klebanoff
8d54772389 show < 0.00001 ETH when amount gets really small 2018-12-12 17:35:04 -08:00
Steve Klebanoff
0f8acedf02 Merge pull request #1410 from 0xProject/fix/instant/zero-quote
[instant] Don't update heartbeat if amount is 0
2018-12-12 17:34:42 -08:00
Fabio Berger
ddf3bb7c04 Add Python SRA client to Developer home 2018-12-12 17:26:54 -08:00
Alex Browne
3a8f3e01b6 Fix bug that occurs when token metadata decimals is undefined. (#1426)
* Fix bug that occurs when token metadata decimals is undefined.

* move toBigNumberOrNull to utils
2018-12-12 16:49:01 -08:00
Steve Klebanoff
167a3fbc11 Use BN equals and call function 2018-12-12 15:57:28 -08:00
Leonid Logvinov
f9d436cd21 Merge pull request #1425 from 0xProject/feature/async-suffix
Check for an Async suffix in functions, not just methods.
2018-12-12 15:54:00 -08:00
Steve Klebanoff
2e7d363f2c Use helper function to check for error 2018-12-12 15:46:46 -08:00
Leonid Logvinov
1534505652 Fix linter errors 2018-12-12 15:32:41 -08:00
Steve Klebanoff
9e5e1f568b show as <$0.01 when less than a cent in USD, and also show 1 significant digit if rounded amount is 0 2018-12-12 14:25:56 -08:00
Steve Klebanoff
65579c0236 Abstract SectionHeader and make 12px per Chris's comment and figma design 2018-12-12 13:43:08 -08:00
Ezekiel Aquino
be045dad9b Edits landing page animation 2018-12-12 20:37:11 +01:00
Ezekiel Aquino
885c22676b Tests landing page animation WIP 2018-12-12 20:34:12 +01:00
Leonid Logvinov
a1186f052d Add PR number 2018-12-12 11:02:51 -08:00
Leonid Logvinov
0e76d66f24 Fix linter errors 2018-12-12 10:59:31 -08:00
Leonid Logvinov
2b523a36c5 Check functions Async suffix 2018-12-12 10:54:49 -08:00
Fred Carlsen
723dd2bcde WIP configurator 2018-12-12 19:45:36 +01:00
Ezekiel Aquino
a900593c88 Tests transition in instant 2018-12-12 19:11:55 +01:00
Steve Klebanoff
756dc1e95e Linting 2018-12-12 10:07:45 -08:00
Steve Klebanoff
68faaaba5f Analytics events for ETH/USD toggle and failure to fetch eth usd price 2018-12-12 10:04:23 -08:00
Ezekiel Aquino
48fdb567cb Adds a bit more whitespace to that scroll image 2018-12-12 19:01:58 +01:00
Ezekiel Aquino
bd5a0616c4 Whitespace on instant image thing, other changes 2018-12-12 18:59:47 +01:00
Steve Klebanoff
0690e68a83 Change base currency to ETH if we can't get USD price 2018-12-12 09:54:06 -08:00
Steve Klebanoff
fb99b5ce9d Show error when fetching usd prices 2018-12-12 09:51:15 -08:00
Steve Klebanoff
aa8dfa88e1 Make primary value in total cost bold 2018-12-12 09:37:39 -08:00
Steve Klebanoff
99941972a3 Small clean up 2018-12-12 09:29:23 -08:00
Steve Klebanoff
8a5609718a Refactor BaseCurrencyChoice to be done in helper function 2018-12-12 09:26:00 -08:00
Steve Klebanoff
aeefdeaef7 Remove unused util 2018-12-12 09:25:48 -08:00
Fred Carlsen
7b4e536e86 Add more profile pics 2018-12-12 18:20:30 +01:00
Fabio Berger
52f733626e Update the a newer version of our Lerna fork with CI fixx 2018-12-12 18:20:30 +01:00
Alex Browne
c8c68fb75a Make pull_missing_blocks script consider all events with block numbers (#1420) 2018-12-12 18:20:29 +01:00
Alex Browne
1364880812 Fix project references for contracts packages (#1419)
- Removed /packages/contracts
- Removed /contracts/core
- Added `yarn build:ts` to CI tests
- Added each contracts "project" to root tsconfig.json
2018-12-12 18:20:29 +01:00
F. Eugene Aumson
ddc1f34c30 feat(sra_client.py)
* Code generation scripts

* Generated code

* Change test config to hit 0x-launch-kit

* Ran prettier on generated code

* First test case, of get_asset_pairs()

* Use launch kit docker image to faciliate CI tests

* Fix markdown rendering for GitHub and PyPI

* Add URL for PyPI to link back to GitHub

* Add one-line package description to README.md

* Remove git_push.sh

* Remove unimplemented tests

* Add sra_client to top-level README package list

* Remove repeated-everywhere long description

* Add shorcuts for publishing

* Remove TypeScript examples
2018-12-12 18:20:29 +01:00
Leonid Logvinov
cdca07d829 Remove accidentally commited files 2018-12-12 18:20:29 +01:00
zkao
59b7e25389 track idex orderbook snapshots (#1397)
* Track Idex and Oasis Orderbook Snapshots
2018-12-12 18:20:29 +01:00
Fabio Berger
87ab8f036c Publish
- 0x.js@2.0.7
 - @0x/abi-gen@1.0.18
 - @0x/abi-gen-wrappers@2.0.1
 - @0x/assert@1.0.19
 - @0x/asset-buyer@3.0.3
 - @0x/base-contract@3.0.9
 - @0x/connect@3.0.9
 - @0x/contract-wrappers@4.1.2
 - @0x/dev-tools-pages@0.0.9
 - @0x/dev-utils@1.0.20
 - ethereum-types@1.1.3
 - @0x/fill-scenarios@1.0.15
 - @0x/instant@1.0.3
 - @0x/json-schemas@2.1.3
 - @0x/metacoin@0.0.31
 - @0x/migrations@2.2.1
 - @0x/monorepo-scripts@1.0.15
 - @0x/order-utils@3.0.6
 - @0x/order-watcher@2.2.7
 - @0x/pipeline@1.0.1
 - @0x/react-docs@1.0.21
 - @0x/react-shared@1.0.24
 - @0x/sol-compiler@1.1.15
 - @0x/sol-cov@2.1.15
 - @0x/sol-doc@1.0.10
 - @0x/sol-resolver@1.1.0
 - @0x/sra-spec@1.0.12
 - @0x/subproviders@2.1.7
 - @0x/testnet-faucets@1.0.59
 - @0x/types@1.4.0
 - @0x/typescript-typings@3.0.5
 - @0x/utils@2.0.7
 - @0x/web3-wrapper@3.2.0
 - @0x/website@0.0.62
 - @0x/contracts-examples@1.0.1
 - @0x/contracts-extensions@1.0.1
 - @0x/contracts-interfaces@1.0.1
 - @0x/contracts-libs@1.0.1
 - @0x/contracts-multisig@1.0.1
 - @0x/contracts-protocol@2.1.57
 - @0x/contracts-test-utils@1.0.1
 - @0x/contracts-tokens@1.0.1
 - @0x/contracts-utils@1.0.1
2018-12-12 18:20:29 +01:00
Fabio Berger
b151b6fe69 Updated CHANGELOGS 2018-12-12 18:19:40 +01:00
Alex Browne
8f911206f7 Refactor event scraping and add support for scraping ERC20 approval events (#1401)
* Refactor event scraping and add support for scraping ERC20 approval events

* Add tests for data_sources/contract-wrappers/utils
2018-12-12 18:19:40 +01:00
F. Eugene Aumson
3496725db6 fix(order_utils.py): Remove stale comment 2018-12-12 18:19:40 +01:00
Leonid Logvinov
ed588decc6 Move OrderValidator to the protocol package 2018-12-12 18:19:39 +01:00
Leonid Logvinov
50e0336018 Revert accidental change 2018-12-12 18:19:39 +01:00
Fabio B
d07e6cb1d6 Update contracts/examples/README.md
Co-Authored-By: LogvinovLeon <logvinov.leon@gmail.com>
2018-12-12 18:19:39 +01:00
Brandon Millman
ca86f18e7d Add link to rexrelay integration example in instant README 2018-12-12 18:19:39 +01:00
Brandon Millman
72e94b3307 chore: fix typo in instant README 2018-12-12 18:19:39 +01:00
Brandon Millman
7c33c91d59 chore: remove extra newline 2018-12-12 18:19:39 +01:00
Brandon Millman
0f1197c14b Update instant README with more integration links 2018-12-12 18:19:39 +01:00
Brandon Millman
4858c0c484 Fix typo in top level README 2018-12-12 18:19:39 +01:00
Brandon Millman
5865b4848d Update top level README packages list with instant 2018-12-12 18:19:39 +01:00
Leonid Logvinov
c9af7dc9e5 Revert access changes 2018-12-12 18:19:39 +01:00
Brandon Millman
6e023e6ea3 Update instant README 2018-12-12 18:19:33 +01:00
Fabio Berger
9176e1f53b Add CHANGELOG entry 2018-12-12 18:19:33 +01:00
Fabio Berger
0dbe2a91a8 Actually pass the signature, not the signature index to a wallet contract's isValidSignature call 2018-12-12 18:19:33 +01:00
Leonid Logvinov
8afac3a92c Re-use solhint configuration 2018-12-12 18:19:33 +01:00
Leonid Logvinov
07a0170f34 Change contracts publish config 2018-12-12 18:19:33 +01:00
Xianny
1dc67b2874 perform null check on token metadata (#1412) 2018-12-12 18:19:33 +01:00
Leonid Logvinov
f09e577885 Updated CHANGELOGS 2018-12-12 18:19:33 +01:00
Leonid Logvinov
2c58b8a886 Rename core package to protocol 2018-12-12 18:19:33 +01:00
Leonid Logvinov
cb53cd05e6 Add coreArtifacts to forwarder wrapper 2018-12-12 18:19:32 +01:00
Leonid Logvinov
982d59d45d Combine duplicate imports 2018-12-12 18:19:32 +01:00
xianny
b76a14d51d change to camelCase 2018-12-12 18:19:32 +01:00
Leonid Logvinov
e8231767ec Refactor our extensions package 2018-12-12 18:19:32 +01:00
Brandon Millman
2b7dabeb6e fix(instant): hide loaders when no token or buy amount is chosen 2018-12-12 18:19:32 +01:00
Leonid Logvinov
dde3a0366b Refactor out examples 2018-12-12 18:19:32 +01:00
Steve Klebanoff
8e071db074 Don't throw error if can't find icon for token 2018-12-12 18:19:31 +01:00
kao
93422eab55 Implement prefer-template tslint rule 2018-12-12 18:19:31 +01:00
fragosti
74e07b63de feat: only use display name from provider in ui 2018-12-12 18:19:31 +01:00
fragosti
7dd0b3a5da feat: refactor provider name and displayName logic 2018-12-12 18:19:31 +01:00
fragosti
b59f20482e feat: log walletDisplayName to Heap 2018-12-12 18:19:31 +01:00
xianny
98aa7a2c54 lint: remove unused variable 2018-12-12 18:19:31 +01:00
Fabio Berger
7527c61af5 Fix linter 2018-12-12 18:19:31 +01:00
xianny
bc6492e352 refresh rate limit every second instead of every minute 2018-12-12 18:19:31 +01:00
xianny
5c4a2461b8 cleanup: stray import, rename variable 2018-12-12 18:19:31 +01:00
xianny
183edee4ac query CC with larger batch size 2018-12-12 18:19:31 +01:00
Fabio Berger
c513082071 Add PR number 2018-12-12 18:19:26 +01:00
Fabio Berger
23a6dfac3c Remove excess commas 2018-12-12 18:19:26 +01:00
Fabio Berger
e368106932 fix: txData returned so that value and gasPrice are BigNumbers to avoid precision errors 2018-12-12 18:19:26 +01:00
Fabio Berger
785981ce58 Update yarn.lock 2018-12-12 18:19:26 +01:00
Fabio B
60bbb9b520 Update contracts/interfaces/README.md
Co-Authored-By: LogvinovLeon <logvinov.leon@gmail.com>
2018-12-12 18:19:26 +01:00
xianny
fb81570678 rename variable and define default in only 1 location 2018-12-12 18:19:26 +01:00
xianny
56b82bbc8b upgrade throttling code 2018-12-12 18:19:26 +01:00
fragosti
05217bb1a2 feat: change color of doctype tag in configurator 2018-12-12 18:19:26 +01:00
Fabio Berger
075fa315e7 Switch out whitepaper with 0x protocol specification 2018-12-12 18:19:26 +01:00
Fabio Berger
fc5f0c9863 Switch out RocketChat icon with Discord icon 2018-12-12 18:19:25 +01:00
fragosti
13e89d027c feat: disable slider when no affiliate info 2018-12-12 18:19:25 +01:00
Leonid Logvinov
ea8f35b743 Refactor out tokens from core contracts package 2018-12-12 18:19:06 +01:00
Leonid Logvinov
9365a3bc75 Refactor our protocol interfaces into @0x/contracts-interfaces 2018-12-12 18:19:06 +01:00
Alex Browne
363095f2fe Change type of transactions.gas_used and gas_price to BigNumber/numeric 2018-12-12 18:19:01 +01:00
Alex Browne
b57b6c04cc Fix prettier 2018-12-12 18:19:00 +01:00
Alex Browne
e1d77d6e10 Address PR feedback 2018-12-12 18:18:56 +01:00
Xianny
da51f6e56f pull OHLCV records from Crypto Compare (#1349)
* [WIP] pull OHLCV records from Crypto Compare

* lint

* refactor to pull logic out of script and into modules

* add entity test for ohlcv_external entity

* implement rate limit and chronological backfill for ohlcv

* add unit tests; cleanup variable names

* Fetch OHLCV pairs params from events table

* better method names

* fix outdated test

* lint

* Clean up after review

* oops

* fix failing test

* better filtering of most recent records

* fix bug when generating pairs

* fix default earliest backfill date

* fix bug with retrieving backfill time

* prettier
2018-12-12 18:18:37 +01:00
Alex Browne
5d0f82c3c6 Introduce framework for running basic tests for entities (#1344)
* Introduce framework for running basic tests for entities

* Add pipeline tests to CircleCI config

* Make pipeline tests more configurable and fix CircleCI config

* Add coverage dir to pipeline package

* Add basic tests for all exchange event entities

* Add tests for remaining entities

* Create separate test scripts in package.json and add new info to README

* Update db_setup.ts to revert migrations even if you are using docker

* Automatically pull the postgres image if needed

* Add comment about why NumberToBigIntTransformer is needed
2018-12-12 18:17:51 +01:00
Jake Ellowitz
1878a0c4b0 updating comment for 0x trusted tokens 2018-12-12 18:17:33 +01:00
Jake Ellowitz
b538fabdef metadata and trusted sources in same raw table 2018-12-12 18:17:26 +01:00
Jake Ellowitz
01716e0d51 Pull token metadata re trusted tokens 2018-12-12 18:17:13 +01:00
Alex Browne
7cd3f3cead Add script for pulling missing block data 2018-12-12 18:17:05 +01:00
Alex Browne
9d9b5edc9c Add support for pulling Cancel and CancelUpTo events 2018-12-12 18:16:55 +01:00
Alex Browne
09a0ca659e Add transactionHash to CancelUpToEvent and CancelEvent entities 2018-12-12 18:16:50 +01:00
Alex Browne
1d189d112e Add homepage_url to relayers 2018-12-12 18:16:46 +01:00
Alex Browne
829b7cb712 Change some column types from varchar to numeric 2018-12-12 18:16:21 +01:00
Alex Browne
fb8267d85e Rename taker and maker amounts in sra_orders 2018-12-12 18:16:08 +01:00
Alex Browne
d842078997 Implement scraping sra orders from radar relay 2018-12-12 18:16:08 +01:00
Alex Browne
7f574949a4 Update schema for sra_orders 2018-12-12 18:15:56 +01:00
Jake Ellowitz
caeb59a9ae Pointing entities to raw schema
Fix linter issues
2018-12-12 18:15:56 +01:00
Jake Ellowitz
ea95de7d9d Mapping dev schema to initial migration 2018-12-12 18:15:56 +01:00
Alex Browne
52f2ee6e79 Configure linter with --format stylish and fix linter errors 2018-12-12 18:15:50 +01:00
Steve Klebanoff
ad3d20b342 Default to USD 2018-12-12 09:15:18 -08:00
Alex Browne
4fa4f13813 Rename Transaction.ts to transaction.ts
Rename Relayer.ts to relayer.ts

Rename Block.ts to block.ts
2018-12-12 18:15:10 +01:00
Alex Browne
f5f01c0c3e Add better error handling for immediately invoked async functions 2018-12-12 18:15:10 +01:00
Steve Klebanoff
3b9e8e669f Refactor OrderDetails to use private instance methods 2018-12-12 09:14:25 -08:00
Alex Browne
99d90bb665 Rename table and column names 2018-12-12 18:14:08 +01:00
Alex Browne
9d8c423b98 Reorganize entities. Make scripts work from any directory. 2018-12-12 18:14:08 +01:00
Alex Browne
d24b2a5a69 Split index.ts into multiple scripts in scripts/ and detect last known block when pulling events 2018-12-12 18:14:01 +01:00
Alex Browne
aa63632fff Remove unused function parameter in index.ts script 2018-12-12 18:13:46 +01:00
Alex Browne
d86f5c4fbd Use bigint for gasUsed and gasPrice in Transaction 2018-12-12 18:13:46 +01:00
Alex Browne
0a69752d20 Update relayer code to use new relayer-registry format 2018-12-12 18:13:46 +01:00
Alex Browne
f6ebdd1a3f Implement fetching and parsing relayer info 2018-12-12 18:13:26 +01:00
Alex Browne
e2f222b08f Implement support for getting and parsing blocks and transactions 2018-12-12 18:13:11 +01:00
Alex Browne
50924d62cb chore: Fix tslint config. 2018-12-12 18:12:53 +01:00
Alex Browne
da5e8b09d9 Fix bugs in merge_v2_events script and disable verbose logging 2018-12-12 18:12:53 +01:00
Alex Browne
fff1e2cfa7 Rename index.ts -> merge_v2_events 2018-12-12 18:12:43 +01:00
Alex Browne
1544e5ed9f Update script to work with existing v1 pipeline data 2018-12-12 18:12:43 +01:00
Alex Browne
4912affbe8 Update pipeline to use new @0x npm org for imports 2018-12-12 18:12:36 +01:00
Alex Browne
c52ab47185 Update to use ContractWrappers + Infura instead of Etherscan 2018-12-12 18:12:30 +01:00
Alex Browne
f082a3f768 Rebase and update to use new modularized artifacts 2018-12-12 18:12:24 +01:00
Alex Browne
27c229a146 Add tests for SRA order conversion 2018-12-12 18:12:18 +01:00
Alex Browne
43c2b81604 Re-add missing tests 2018-12-12 18:12:18 +01:00
Alex Browne
2a133f2c55 Add soruceUrl to SraOrder entity 2018-12-12 18:12:18 +01:00
Alex Browne
4570bc2729 Add preliminary support for scraping orders from SRA endpoints (no pagination, only RR support for now) 2018-12-12 18:12:18 +01:00
Alex Browne
8702a35467 For event entities, rename address -> contractAddress and make it a primary key 2018-12-12 18:12:11 +01:00
Alex Browne
07f80500fa Implement scraping and parsing exchange CancelUpTo events 2018-12-12 18:12:11 +01:00
Alex Browne
97fc4257a0 Use multi-primary keys for event and filter null logIndexes 2018-12-12 18:12:11 +01:00
Alex Browne
25f1b7701f Implement scraping and parsing exchange cancel events 2018-12-12 18:12:11 +01:00
Alex Browne
6b889aeeed Make event parsing more functional and less class-based 2018-12-12 18:12:06 +01:00
Alex Browne
8e0dcb204f Re-organize event parsing and decoding 2018-12-12 18:12:06 +01:00
Alex Browne
0dc000183a Add support for decoding asset data 2018-12-12 18:12:06 +01:00
Alex Browne
90e1028d2f Add typeorm and begin inserting database records 2018-12-12 18:12:01 +01:00
Alex Browne
ed3737c1f1 Make contractAbi a parameter of getContractEventsAsync 2018-12-12 18:11:53 +01:00
Alex Browne
c9dc69bed6 Add tests for etherscan events 2018-12-12 18:11:53 +01:00
Alex Browne
cd7e41bd5b Restructure pipeline package. Create data-sources dir 2018-12-12 18:11:53 +01:00
Alex Browne
c46d2f8f9d Remove old code. Create function for getting contract events via etherscan 2018-12-12 18:11:52 +01:00
Alex Browne
eb1317a59a Rebase pipeline branch off development 2018-12-12 18:11:46 +01:00
Ezekiel Aquino
98325e1cfb Tests animations on about page headers 2018-12-12 17:39:45 +01:00
Fred Carlsen
356b7df534 Fix link line height 2018-12-12 17:36:36 +01:00
Ezekiel Aquino
2340813149 Tests addAnimation method 2018-12-12 17:27:24 +01:00
Steve Klebanoff
8923817b2f Move header to helper 2018-12-12 08:25:20 -08:00
Steve Klebanoff
7aacf1f5a4 Render OrderDetailsRow directly 2018-12-12 08:23:40 -08:00
Ezekiel Aquino
405667fa83 tries out some transitions 2018-12-12 17:20:00 +01:00
Fred Carlsen
0a3162915f Add checkmark 2018-12-12 17:15:51 +01:00
Fred Carlsen
8bcbb64a01 Fix full width slider 2018-12-12 17:15:51 +01:00
Fred Carlsen
ceafe5ed84 Fix jobs link 2018-12-12 17:15:50 +01:00
Fred Carlsen
f788fea095 Fix bg on banner button 2018-12-12 17:15:50 +01:00
Fred Carlsen
88094002d3 Fix border on button 2018-12-12 17:15:50 +01:00
Fred Carlsen
e57a5a6f82 Update team page with pics so far 2018-12-12 17:15:50 +01:00
Ezekiel Aquino
d1ceb2e561 Adds themed footer styling 2018-12-12 17:03:32 +01:00
Ezekiel Aquino
ec2bb616e1 Adds margin to textwrap in definition to have padding when scaled to narrow screen widths 2018-12-12 16:58:16 +01:00
Ezekiel Aquino
bf56a2c7c4 Header mobile styling 2018-12-12 16:47:12 +01:00
Ezekiel Aquino
52b9f4ef3b Increase footer padding-top 2018-12-12 16:18:24 +01:00
Ezekiel Aquino
7845fdbd9c introduces wrapwidth to section component 2018-12-12 16:13:25 +01:00
Fred Carlsen
6d2da94f8a Fix header link active state 2018-12-12 16:06:48 +01:00
Fred Carlsen
20deb01e01 Remove trailing whitespace 2018-12-12 16:06:48 +01:00
Ezekiel Aquino
3d9fc6c865 Removes wrap width on mobile 2018-12-12 16:04:00 +01:00
Ezekiel Aquino
1d5473eece Fixes fullwidth sections 2018-12-12 16:02:43 +01:00
Fred Carlsen
4b4db3802a Add esc support 2018-12-12 15:51:51 +01:00
Fred Carlsen
5eeb848974 Add interface 2018-12-12 15:50:02 +01:00
Fred Carlsen
5df789bd05 Added contact modal 2018-12-12 15:50:01 +01:00
Fred Carlsen
74959cf354 Fix lodash import 2018-12-12 15:49:23 +01:00
Fred Carlsen
39ceff3d6e Type fixes 2018-12-12 15:49:23 +01:00
Ezekiel Aquino
fa501e9c93 Edits jobs page, wip current openings 2018-12-12 15:45:52 +01:00
Ezekiel Aquino
94c90cc49a Cleanup press page, siteWrap 2018-12-12 15:19:11 +01:00
Ezekiel Aquino
d8e03b87d6 Team page grid responsive style 2018-12-12 15:06:37 +01:00
Ezekiel Aquino
f06c17cccc Edits team page 2018-12-12 15:00:03 +01:00
Ezekiel Aquino
ffff1d5fff Edits aboutLayout, mission.tsx 2018-12-12 14:50:31 +01:00
Ezekiel Aquino
fa389f18cd Fix section/wrap overflows 2018-12-12 14:30:54 +01:00
Ezekiel Aquino
7d5aeacb1c Fix banner linting 2018-12-12 14:29:37 +01:00
Ezekiel Aquino
0df51c37d1 Edits banner, types newlayout 2018-12-12 14:28:33 +01:00
Ezekiel Aquino
bb2581612a Adds more types to newLayout 2018-12-12 13:55:12 +01:00
Ezekiel Aquino
3844ce9b60 Types newlayout, cleans up instant 2018-12-12 13:51:40 +01:00
Ezekiel Aquino
0c5fa5892c Fixes fullwidth prop on new layout section 2018-12-12 13:43:06 +01:00
Ezekiel Aquino
b04a9b9296 Re-adds icon in rebased instant page 2018-12-12 13:38:00 +01:00
Ezekiel Aquino
2bf831132a Fixes icons in rebase (why) 2018-12-12 13:35:44 +01:00
Fred Carlsen
6e62b108a9 Added a bunch of types 2018-12-12 13:32:42 +01:00
Fred Carlsen
6262e06afd Remove old dropdown 2018-12-12 13:32:42 +01:00
Ezekiel Aquino
b1f4bb722d More layout changes 2018-12-12 13:32:42 +01:00
Ezekiel Aquino
c5db8f25d3 WIP 2018-12-12 13:32:20 +01:00
Fred Carlsen
965b1ff32f Remove import 2018-12-12 13:24:06 +01:00
Fred Carlsen
7f7403cf72 Remove old loop 2018-12-12 13:08:58 +01:00
Fred Carlsen
088ca6ce7c Added a bunch of types 2018-12-12 13:08:52 +01:00
Fred Carlsen
5df160ffb9 Remove old dropdown 2018-12-12 13:08:31 +01:00
Fred Carlsen
80efe70247 WIP mobile slider 2018-12-12 12:46:30 +01:00
Fred Carlsen
6c4c666d9b WIP mobile slider 2018-12-12 12:35:22 +01:00
Fred Carlsen
1175a18ccc Add content and images to why 2018-12-12 12:06:12 +01:00
Fred Carlsen
19f662c196 Add icons to 0x instant 2018-12-12 12:00:23 +01:00
Fabio B
78a6d23659 Merge pull request #1422 from 0xProject/fix/ci/lernaIssue
CI Lerna Fix
2018-12-11 18:20:45 -08:00
Fabio Berger
f4dc8b12f7 Update the a newer version of our Lerna fork with CI fixx 2018-12-11 17:50:25 -08:00
Alex Browne
5cff911035 Make pull_missing_blocks script consider all events with block numbers (#1420) 2018-12-11 17:31:16 -08:00
Alex Browne
b3fa0c8dac Fix project references for contracts packages (#1419)
- Removed /packages/contracts
- Removed /contracts/core
- Added `yarn build:ts` to CI tests
- Added each contracts "project" to root tsconfig.json
2018-12-11 17:09:00 -08:00
Steve Klebanoff
5f7ed71937 Delete old interface and rename BaseCurrencyChoice 2018-12-11 17:06:27 -08:00
Steve Klebanoff
b1a73f5c74 Refactor out custom components 2018-12-11 17:03:07 -08:00
F. Eugene Aumson
318e7d5b57 feat(sra_client.py)
* Code generation scripts

* Generated code

* Change test config to hit 0x-launch-kit

* Ran prettier on generated code

* First test case, of get_asset_pairs()

* Use launch kit docker image to faciliate CI tests

* Fix markdown rendering for GitHub and PyPI

* Add URL for PyPI to link back to GitHub

* Add one-line package description to README.md

* Remove git_push.sh

* Remove unimplemented tests

* Add sra_client to top-level README package list

* Remove repeated-everywhere long description

* Add shorcuts for publishing

* Remove TypeScript examples
2018-12-11 16:57:53 -08:00
Leonid Logvinov
a939433bd2 Remove accidentally commited files 2018-12-11 16:54:07 -08:00
zkao
42be1a429f track idex orderbook snapshots (#1397)
* Track Idex and Oasis Orderbook Snapshots
2018-12-11 15:48:54 -08:00
Steve Klebanoff
ee7d6fb3af Show as 0 when selected 2018-12-11 14:55:32 -08:00
Steve Klebanoff
286474ca76 Remove unused component 2018-12-11 14:43:07 -08:00
Steve Klebanoff
5cbe04acab feat(instant): ETH/USD toggle 2018-12-11 14:37:45 -08:00
Fred Carlsen
585c789124 Tweak slider 2018-12-11 23:01:26 +01:00
Fred Carlsen
8a761ce2bc Lint 2018-12-11 17:18:58 +01:00
Fred Carlsen
bc8981cbb2 Added team data + image placeholder 2018-12-11 17:18:58 +01:00
Ezekiel Aquino
26c9cd3cb2 dropdown z-index 2018-12-11 17:02:29 +01:00
Ezekiel Aquino
25f66f96b6 Removes headroom 2018-12-11 17:00:44 +01:00
Ezekiel Aquino
0948ed7a87 WIP Adds infinite scroll image on instant page 2018-12-11 16:42:46 +01:00
Ezekiel Aquino
bc64c9566c Header changes, mobile alignments 2018-12-11 16:18:27 +01:00
Fred Carlsen
d068956b69 Adjust h4 heading weight 2018-12-11 16:11:08 +01:00
Fred Carlsen
1e5bc143be Add slider mockup 2018-12-11 16:11:08 +01:00
Fred Carlsen
ec72a4b68c Rename form file 2018-12-11 16:11:08 +01:00
Ezekiel Aquino
1f4af537c0 Button transitions 2018-12-11 15:46:16 +01:00
Ezekiel Aquino
91c4191985 Edits mobile aligment 2018-12-11 15:21:19 +01:00
Ezekiel Aquino
1d6e66d937 Change header button color based on theme 2018-12-11 15:16:59 +01:00
Ezekiel Aquino
79d31895fb Removes overflow-x on document 2018-12-11 15:12:31 +01:00
Ezekiel Aquino
1d4d254496 Cleanup about pages 2018-12-11 15:09:46 +01:00
Ezekiel Aquino
528d882ec4 Creates about page wrapper component, clean up 2018-12-11 14:54:19 +01:00
Fred Carlsen
2471d4098f Add missing keys 2018-12-11 14:40:55 +01:00
Fred Carlsen
33b36eaf07 Add keys to chapters 2018-12-11 14:35:17 +01:00
Fred Carlsen
27bf0d8a16 Add form handler 2018-12-11 14:35:17 +01:00
Fred Carlsen
b5372ade3c Adjust heading weight 2018-12-11 14:35:16 +01:00
Ezekiel Aquino
1b7c9b0775 WIP about pages 2018-12-11 14:21:41 +01:00
Ezekiel Aquino
a4d9434290 Dropdown menu theming 2018-12-11 13:33:51 +01:00
Fred Carlsen
e001988dbe Pull in image from children 2018-12-11 12:55:58 +01:00
Fred Carlsen
54c9709bf0 Added image loop 2018-12-11 12:55:58 +01:00
Fred Carlsen
cc0fb833fe Fix keys 2018-12-11 12:55:58 +01:00
Ezekiel Aquino
96ebad7568 Fix layout, Adds button hovers 2018-12-11 12:26:51 +01:00
Ezekiel Aquino
3fb74be4ba WIP Header styling, hidden on mobile 2018-12-11 12:18:36 +01:00
Ezekiel Aquino
86acca5e1c WIP dropdown menus 2018-12-11 12:11:22 +01:00
Ezekiel Aquino
cb2b45bf04 Loop through products dropdown data 2018-12-11 10:59:37 +01:00
Ezekiel Aquino
3652b8270a Clean up header 2018-12-11 10:48:28 +01:00
Ezekiel Aquino
0a05ef36a6 Cleanup header 2018-12-11 10:47:48 +01:00
Ezekiel Aquino
11c864e20d Adds intermediate large heading size 2018-12-11 10:33:48 +01:00
Brandon Millman
c46870d296 feature(website): add 0x Instant as a track in the docs 2018-12-10 19:31:45 -08:00
fragosti
6e54514013 feat: change input to number input 2018-12-10 17:30:32 -08:00
Ezekiel Aquino
e18be3160e WIP dropdown header 2018-12-10 20:02:48 +01:00
Fred Carlsen
6ef5f28f81 Remove padding for now 2018-12-10 19:19:38 +01:00
Ezekiel Aquino
beffcd990c WIP Updates dropdown menus 2018-12-10 19:13:52 +01:00
Ezekiel Aquino
c622498e50 Edits footer styling 2018-12-10 18:20:08 +01:00
Steve Klebanoff
a0ea0415dd fix(instant): Don't update heartbeat if amount is 0 2018-12-10 09:16:15 -08:00
Ezekiel Aquino
d56df4fdaf Optical margin adjustment to landing page 2018-12-10 18:08:55 +01:00
Ezekiel Aquino
7226944dfd Weightier headers, switches icons in mission page 2018-12-10 18:01:57 +01:00
Ezekiel Aquino
7aee687e6b Updates margins in why, change link component 2018-12-10 17:56:04 +01:00
Fred Carlsen
4138c580bc Add bundle analyzer 2018-12-10 17:51:52 +01:00
Fred Carlsen
a3f12cd4de Add missing separator 2018-12-10 17:51:27 +01:00
Fred Carlsen
a208cba4e8 Add lazyloading + banner 2018-12-10 17:51:27 +01:00
Ezekiel Aquino
8d0b6702c0 Edits why page, removes zenscroll 2018-12-10 17:38:23 +01:00
Ezekiel Aquino
9abd1b79e1 More visual tweaks to instant page 2018-12-10 16:46:53 +01:00
Ezekiel Aquino
bd725eee86 Starts refining isntant page 2018-12-10 16:38:03 +01:00
Fred Carlsen
88c18bd2e6 Update lock file 2018-12-10 16:30:41 +01:00
Fred Carlsen
9dc32c2bca Tweaks 2018-12-10 16:30:41 +01:00
Ezekiel Aquino
bdd287559c Mobile styling on why page 2018-12-10 16:19:12 +01:00
Ezekiel Aquino
194f785939 Refinements to Why page 2018-12-10 16:07:36 +01:00
Fred Carlsen
086568bddf Remove unnecessary dep 2018-12-10 15:55:44 +01:00
Fred Carlsen
3506c0e501 Refactor press highlgihts 2018-12-10 15:55:28 +01:00
Fred Carlsen
93eb31f7a0 Add separator to mission 2018-12-10 15:43:31 +01:00
Fred Carlsen
934117bfe4 Refactor positions 2018-12-10 15:43:31 +01:00
Fred Carlsen
7c33f94836 Mute paragraphs by default 2018-12-10 15:43:31 +01:00
Fred Carlsen
74d0eb40c5 Add links to jobs 2018-12-10 15:43:31 +01:00
Ezekiel Aquino
23987c0fa1 Adds initial scrollto methods in why page, adds stickywrap 2018-12-10 15:30:31 +01:00
Fred Carlsen
cc1b71651d Add active styling to chapter link 2018-12-10 15:20:09 +01:00
Fred Carlsen
5e1892f383 Add padding to banner 2018-12-10 15:20:09 +01:00
Ezekiel Aquino
93d1f2255e Refines footer, newsletterForm 2018-12-10 15:00:35 +01:00
Fred Carlsen
727ced0684 Tweak banner 2018-12-10 14:49:12 +01:00
Fred Carlsen
0ff13edb58 Tweak icons on why 2018-12-10 14:49:12 +01:00
Fred Carlsen
0341ced3f3 Add link to mission 2018-12-10 14:49:12 +01:00
Fred Carlsen
4f6c95b0ca Remove unneeded props 2018-12-10 14:49:12 +01:00
Fred Carlsen
c4ee6836fa Correct icon interface 2018-12-10 14:49:12 +01:00
Ezekiel Aquino
55ed406746 Use defined paddings 2018-12-10 14:26:32 +01:00
Ezekiel Aquino
f93e77e77c Refines landingpage 2018-12-10 14:12:38 +01:00
Fred Carlsen
3ac6da7db1 Added banner 2018-12-10 13:38:06 +01:00
Fred Carlsen
3e93442a43 Remove borderColor prop 2018-12-10 13:38:05 +01:00
Fred Carlsen
a617c801bc Add arrow to link 2018-12-10 13:38:05 +01:00
Ezekiel Aquino
7d9ab27b9d Divides landing into section components, cleanup 2018-12-10 13:11:31 +01:00
Ezekiel Aquino
c686c241c0 Removes percentage paddings on mobile 2018-12-10 12:14:25 +01:00
Ezekiel Aquino
a1889e2a23 Replaces icons in landing, text styling 2018-12-10 12:12:43 +01:00
Ezekiel Aquino
37a1483359 Adds withArrow button 2018-12-10 12:07:08 +01:00
Ezekiel Aquino
80811c9cca Async load icons, adds margins 2018-12-10 11:53:01 +01:00
Fred Carlsen
14d342c3e0 Bind dev server to 0.0.0.0 2018-12-10 11:35:53 +01:00
Fred Carlsen
394105b860 Add options to svg loader 2018-12-10 11:35:53 +01:00
Fred Carlsen
1752aa63da Comment out bg on code 2018-12-10 11:35:53 +01:00
Ezekiel Aquino
9636fd1b76 Adds size definition to Icon 2018-12-10 11:23:54 +01:00
Ezekiel Aquino
16f69ad718 Refactors <Icon> 2018-12-10 11:22:00 +01:00
Fred Carlsen
03ca825639 Cleanup 2018-12-10 11:19:42 +01:00
Fred Carlsen
c995586063 WIP mobile header + developer dropdown 2018-12-10 11:19:20 +01:00
Fred Carlsen
8dd738629a Added global link color to theme 2018-12-10 11:05:16 +01:00
Fred Carlsen
701ea77a79 Mobile tweaks 2018-12-07 13:51:45 +01:00
Fred Carlsen
b68f3eb772 Break heading on why properly 2018-12-07 13:48:10 +01:00
Fred Carlsen
47e8bc8e43 Add viewbox to icons 2018-12-07 12:43:47 +01:00
Fred Carlsen
eb137cf576 Mobile tweaks 2018-12-07 11:00:34 +01:00
Fred Carlsen
f88ff698a4 Remove hardcoded min-width
This breaks smaller viewports than 355px. Should be handled in a local scope by css, not global inline styles.
2018-12-06 15:11:18 +01:00
Fred Carlsen
49a1f84e16 Slash the zeroes 2018-12-06 13:29:20 +01:00
Fred Carlsen
23675b4901 Update lock file 2018-12-06 13:19:33 +01:00
Fred Carlsen
950c56d7b8 Migrate away from injectGlobal 2018-12-06 13:19:24 +01:00
Fred Carlsen
4b166828b8 Import configurator in new instant page 2018-12-06 13:19:00 +01:00
fragosti
c1698aa634 fix: add comma to affiliateInfo config in configurator 2018-12-06 12:06:35 +01:00
Steve Klebanoff
ae6f7cc454 feat(instant): More aggressive error reporting 2018-12-06 12:06:35 +01:00
fragosti
506c736d4f fix: remove target=_blank from instant link 2018-12-06 12:06:35 +01:00
Xianny
0dbb866918 Fix/pipeline/ohlcv (#1393)
The OHLCV script in data pipeline quits early when we get no data from Crypto Compare. Sometimes Crypto Compare gives us a valid empty response (e.g. when we query for way back in time) and we need to just continue. This adds better filtering for the types of Crypto Compare responses to detect when we should continue and when we should really quit.
2018-12-06 12:06:35 +01:00
fragosti
e82f807d7c feat: change New notification to point to instant 2018-12-06 12:06:35 +01:00
fragosti
b586ecdf92 chore: run prettier 2018-12-06 12:06:35 +01:00
fragosti
ff8029402d fix: ensure copy button is above code 2018-12-06 12:06:35 +01:00
fragosti
92361ae811 feat: notify user they've copied to clipboard on copy 2018-12-06 12:06:35 +01:00
fragosti
cba8dc8a75 chore: make default fee percentage in configurator 0 2018-12-06 12:06:35 +01:00
Alex Browne
ef1e5eacbd Fix RadarRelay timestamps (#1391)
* Fixing rr timestamps

* Apply prettier
2018-12-06 12:06:35 +01:00
fragosti
7ba47c47bb feat: lowercase keys in additionalAssetMetaDataMap 2018-12-06 12:06:35 +01:00
fragosti
f8f3a3b3cc chore: add coingecko css example to externall.css 2018-12-06 12:06:35 +01:00
fragosti
b6e79fd9e0 fix: call toLowerCase in asset creation logic 2018-12-06 12:06:35 +01:00
fragosti
b39f511755 fix: input placeholder css specificity increase 2018-12-06 12:06:35 +01:00
Steve Klebanoff
43d1f61d28 Takeout console.log 2018-12-06 12:06:35 +01:00
Steve Klebanoff
37e3f481dd Only include localhost in host domains if in development mode 2018-12-06 12:06:35 +01:00
Steve Klebanoff
5acf053f8b Use dotenv in development 2018-12-06 12:06:35 +01:00
Fabio Berger
b3038787ea Replace Rocket.chat with Discord 2018-12-06 12:06:35 +01:00
Fabio Berger
b9305f6ab7 Fix mixed up chinese translations 2018-12-06 12:06:35 +01:00
Alex Browne
21cbf05362 Change type of transactions.gas_used and gas_price to BigNumber/numeric 2018-12-06 12:06:35 +01:00
Alex Browne
a3718803a0 Fix prettier 2018-12-06 12:06:35 +01:00
Alex Browne
6742142ca5 Address PR feedback 2018-12-06 12:06:35 +01:00
Fabio B
b7e06a2282 Use a string template in packages/pipeline/src/scripts/pull_missing_events.ts
Co-Authored-By: albrow <stephenalexbrowne@gmail.com>
2018-12-06 12:06:35 +01:00
Fabio B
4c65bbbb8f Fix typo in packages/pipeline/src/parsers/bloxy/index.ts
Co-Authored-By: albrow <stephenalexbrowne@gmail.com>
2018-12-06 12:06:35 +01:00
fragosti
105da3f814 chore: run linter 2018-12-06 12:06:35 +01:00
Alex Browne
4a5b72a5ab Fix linter 2018-12-06 12:06:35 +01:00
fragosti
2d6c46b83c feat: add copy code feature 2018-12-06 12:06:35 +01:00
Xianny
6f5787b2c4 pull OHLCV records from Crypto Compare (#1349)
* [WIP] pull OHLCV records from Crypto Compare

* lint

* refactor to pull logic out of script and into modules

* add entity test for ohlcv_external entity

* implement rate limit and chronological backfill for ohlcv

* add unit tests; cleanup variable names

* Fetch OHLCV pairs params from events table

* better method names

* fix outdated test

* lint

* Clean up after review

* oops

* fix failing test

* better filtering of most recent records

* fix bug when generating pairs

* fix default earliest backfill date

* fix bug with retrieving backfill time

* prettier
2018-12-06 12:06:34 +01:00
zkao
f96711bac3 Token_orderbook_snapshots for Ddex and Paradex(#1354)
* Implements the TokenOrderbookSnapshot Table

* Scripts, Data Sources and Entities to pull Ddex and Paradex API data.
2018-12-06 12:05:38 +01:00
Alex Browne
ddd246a945 Add script for parsing competing dex trades from Bloxy (#1355) 2018-12-06 12:05:38 +01:00
Alex Browne
d14d38dabd Introduce framework for running basic tests for entities (#1344)
* Introduce framework for running basic tests for entities

* Add pipeline tests to CircleCI config

* Make pipeline tests more configurable and fix CircleCI config

* Add coverage dir to pipeline package

* Add basic tests for all exchange event entities

* Add tests for remaining entities

* Create separate test scripts in package.json and add new info to README

* Update db_setup.ts to revert migrations even if you are using docker

* Automatically pull the postgres image if needed

* Add comment about why NumberToBigIntTransformer is needed
2018-12-06 12:05:38 +01:00
Alex Browne
3ca876c574 [pipeline] Add additional documentation to the README (#1328) 2018-12-06 12:04:25 +01:00
Alex Browne
6d2f4b91a9 Reduce number of blocks per query in pull_missing_events 2018-12-06 12:04:25 +01:00
Jake Ellowitz
6739261a7e updating comment for 0x trusted tokens 2018-12-06 12:04:25 +01:00
Jake Ellowitz
72c45d9ea9 metadata and trusted sources in same raw table 2018-12-06 12:04:25 +01:00
Jake Ellowitz
75df8a0e8b Pull token metadata re trusted tokens 2018-12-06 12:04:25 +01:00
Alex Browne
f3c28afedd Add script for pulling missing block data 2018-12-06 12:04:25 +01:00
Alex Browne
80ab797d3a Check for special characters in table name in pull_missing_events 2018-12-06 12:04:25 +01:00
Alex Browne
d6dff5f86a Add support for pulling Cancel and CancelUpTo events 2018-12-06 12:04:25 +01:00
Alex Browne
4a715c30fd Add transactionHash to CancelUpToEvent and CancelEvent entities 2018-12-06 12:04:25 +01:00
Alex Browne
65bb8bdb5e Optimize database operations in pull_missing_events script 2018-12-06 12:04:25 +01:00
Alex Browne
5237e9c2ed Add homepage_url to relayers 2018-12-06 12:04:25 +01:00
Alex Browne
6bab2f70b9 Add workaround for broken save method 2018-12-06 12:04:25 +01:00
Alex Browne
a0a41b1b5d Fix chunk size in pull_missing_events 2018-12-06 12:04:25 +01:00
Alex Browne
f07dc5ae6d Use built-in chunk feature of TypeORM save method 2018-12-06 12:04:25 +01:00
Alex Browne
8cb6c2b51b Change some column types from varchar to numeric 2018-12-06 12:04:25 +01:00
Alex Browne
1f87bd8cf6 Add raw schema prefix to query in pull_missing_events 2018-12-06 12:04:25 +01:00
Alex Browne
a2aeca7b66 Rename taker and maker amounts in sra_orders 2018-12-06 12:04:25 +01:00
Alex Browne
e394c4fe1d Implement scraping sra orders from radar relay 2018-12-06 12:04:25 +01:00
Alex Browne
5c655eeda7 Preliminary work for adding RR order book scraping 2018-12-06 12:04:25 +01:00
Alex Browne
d932448563 Update schema for sra_orders 2018-12-06 12:04:25 +01:00
Jake Ellowitz
7f782b6af0 Pointing entities to raw schema
Fix linter issues
2018-12-06 12:04:25 +01:00
Jake Ellowitz
a3f4264790 Mapping dev schema to initial migration 2018-12-06 12:04:25 +01:00
Alex Browne
b818a62d74 Configure linter with --format stylish and fix linter errors 2018-12-06 12:04:25 +01:00
Alex Browne
e69cdfb7b5 Configure TypeORM for migrations. Add new package.json scripts. 2018-12-06 12:04:25 +01:00
Alex Browne
45da317e15 Rename Transaction.ts to transaction.ts
Rename Relayer.ts to relayer.ts

Rename Block.ts to block.ts
2018-12-06 12:04:25 +01:00
Alex Browne
c21cf55b86 Add better error handling for immediately invoked async functions 2018-12-06 12:04:25 +01:00
Alex Browne
2dfdc19c9e Rename table and column names 2018-12-06 12:04:25 +01:00
Alex Browne
012134001a Reorganize entities. Make scripts work from any directory. 2018-12-06 12:04:24 +01:00
Alex Browne
0f869b0545 Split index.ts into multiple scripts in scripts/ and detect last known block when pulling events 2018-12-06 12:04:24 +01:00
Alex Browne
774971c98c Remove unused function parameter in index.ts script 2018-12-06 12:04:24 +01:00
Alex Browne
25b6e7092f Use bigint for gasUsed and gasPrice in Transaction 2018-12-06 12:04:24 +01:00
Alex Browne
62412b8551 Update relayer code to use new relayer-registry format 2018-12-06 12:04:24 +01:00
Alex Browne
374d513090 Remove outdated info from README 2018-12-06 12:04:24 +01:00
Alex Browne
a72463dbdb Add build:ci to pipeline package.json 2018-12-06 12:04:24 +01:00
Alex Browne
b159d4e0ec Implement fetching and parsing relayer info 2018-12-06 12:04:24 +01:00
Alex Browne
1402a3dfae Implement support for getting and parsing blocks and transactions 2018-12-06 12:04:24 +01:00
Alex Browne
64865bc10f chore: Fix tslint config. 2018-12-06 12:04:24 +01:00
Alex Browne
ef00ac6f51 Fix bugs in merge_v2_events script and disable verbose logging 2018-12-06 12:04:24 +01:00
Alex Browne
7a7c66b0ec Enable verbose logging 2018-12-06 12:04:24 +01:00
Alex Browne
0166c29625 Rename index.ts -> merge_v2_events 2018-12-06 12:04:24 +01:00
Alex Browne
9c35d53694 Update script to work with existing v1 pipeline data 2018-12-06 12:04:24 +01:00
Alex Browne
8701f9a7b0 Update pipeline to use new @0x npm org for imports 2018-12-06 12:04:24 +01:00
Alex Browne
427c2cd164 Update to use ContractWrappers + Infura instead of Etherscan 2018-12-06 12:04:24 +01:00
Alex Browne
8c0dfc1936 Rebase and update to use new modularized artifacts 2018-12-06 12:04:24 +01:00
Alex Browne
392e89fcbb Add tests for SRA order conversion 2018-12-06 12:04:24 +01:00
Alex Browne
44c1947740 Re-add missing tests 2018-12-06 12:04:24 +01:00
Alex Browne
5719eb28f7 Add soruceUrl to SraOrder entity 2018-12-06 12:04:24 +01:00
Alex Browne
ce7027d11f Add preliminary support for scraping orders from SRA endpoints (no pagination, only RR support for now) 2018-12-06 12:04:24 +01:00
Alex Browne
3ba98e2192 For event entities, rename address -> contractAddress and make it a primary key 2018-12-06 12:04:24 +01:00
Alex Browne
1ae3592e45 Implement scraping and parsing exchange CancelUpTo events 2018-12-06 12:04:24 +01:00
Alex Browne
dc04d025af Use multi-primary keys for event and filter null logIndexes 2018-12-06 12:04:24 +01:00
Alex Browne
5262d3b1f2 Implement scraping and parsing exchange cancel events 2018-12-06 12:04:24 +01:00
Alex Browne
7d9afce13b Make event parsing more functional and less class-based 2018-12-06 12:04:24 +01:00
Alex Browne
c99b71f354 Re-organize event parsing and decoding 2018-12-06 12:04:24 +01:00
Alex Browne
0133bec07d Add support for decoding asset data 2018-12-06 12:04:24 +01:00
Alex Browne
bd7bde9bb0 Add typeorm and begin inserting database records 2018-12-06 12:04:23 +01:00
Alex Browne
a6e5d126c3 Make contractAbi a parameter of getContractEventsAsync 2018-12-06 12:03:11 +01:00
Alex Browne
8e7ea4695b Add tests for etherscan events 2018-12-06 12:03:11 +01:00
Alex Browne
cc5ea80aa3 Restructure pipeline package. Create data-sources dir 2018-12-06 12:03:11 +01:00
Alex Browne
d1026a64ba Remove old code. Create function for getting contract events via etherscan 2018-12-06 12:03:11 +01:00
Alex Browne
dda44500c5 Rebase pipeline branch off development 2018-12-06 12:01:16 +01:00
fragosti
7b81bd831f fix: instant linting issues 2018-12-06 11:59:27 +01:00
fragosti
44312478fa chore: fix linter issues 2018-12-06 11:58:38 +01:00
fragosti
92f56c63ac chore: remove shark relay from possible SRA endpoints 2018-12-06 11:58:38 +01:00
fragosti
3d69063bf6 hack: make min-height of line-number container 98% to prevent scrollbar from appearing in code demo 2018-12-06 11:58:38 +01:00
fragosti
4e03c754e7 fix: use WebsitePaths type and update wiki link to new link 2018-12-06 11:58:38 +01:00
fragosti
87eaa91410 fix: reset available tokens when sra endpoint is changed 2018-12-06 11:58:38 +01:00
fragosti
8f5c92b143 fix: make select box-shadow darker 2018-12-06 11:58:38 +01:00
fragosti
77cc1a95bb fix: do not show select all if no tokens are available 2018-12-06 11:58:37 +01:00
fragosti
27cb0386a3 feat: update configurator snippet to actually work if copy and pasted 2018-12-06 11:58:37 +01:00
fragosti
42d6284cf7 fix: change liquiditySource to orderSource 2018-12-06 11:58:37 +01:00
fragosti
893e9f2731 feat: update relayer list 2018-12-06 11:58:37 +01:00
fragosti
7a6339ae38 polish: make configurator inputs look more like mocks 2018-12-06 11:58:37 +01:00
fragosti
fbb27b1fb2 feat: fetch asset meta data from the asset meta data map 2018-12-06 11:58:37 +01:00
fragosti
7f8dc8bb1b fix: address to lowercase and explore the docs leads to correct wiki 2018-12-06 11:58:37 +01:00
fragosti
c47b42d7c1 feat: create more dank slider 2018-12-06 11:58:37 +01:00
fragosti
3bdcf7857f feat: make (optional) label inline 2018-12-06 11:56:11 +01:00
fragosti
80a25e4b38 feat: add fee percentage slider 2018-12-06 11:56:11 +01:00
fragosti
4d7e5b4e5d feat: add fee percentage slier 2018-12-06 11:56:11 +01:00
fragosti
659ae0dcca feat: implement basic feeRecipient address in config generator 2018-12-06 11:56:11 +01:00
fragosti
7a52168cd8 fix: use correct styles even when syntax highlighter component removes classnames on second render 2018-12-06 11:56:11 +01:00
fragosti
566953d5e1 feat: implement code generation 2018-12-06 11:56:11 +01:00
fragosti
a849af8a48 feat: implement multi token select component 2018-12-06 11:56:11 +01:00
fragosti
cc235aac38 feat: implement available token fetching 2018-12-06 11:56:11 +01:00
fragosti
ec24bf8401 feat: add MultiSelect component skeleton 2018-12-06 11:56:11 +01:00
fragosti
9ebb096025 feat: add Select component and use for configurator 2018-12-06 11:56:11 +01:00
fragosti
f8b925c9ad feat: move instant base config to types file 2018-12-06 11:56:11 +01:00
fragosti
a20d547814 feat: implement configurator layout 2018-12-06 11:53:46 +01:00
fragosti
3dcb874e08 feat: factor out ActionLink component from features 2018-12-06 11:53:46 +01:00
fragosti
6b952c4236 feat: improve styling of code demo component 2018-12-06 11:53:46 +01:00
fragosti
9e1a94266e feat: have basic code syntax highlighting working 2018-12-06 11:53:46 +01:00
Ezekiel Aquino
a9895c55f9 [WIP] Adds paragraph sizes 2018-12-05 18:07:28 +01:00
Ezekiel Aquino
682b0dd8f4 Implements desktop/mobile font sizing 2018-12-05 17:20:44 +01:00
Fred Carlsen
00dbddc1aa Merge remote-tracking branch 'upstream/development' into website
# Conflicts:
#	packages/website/package.json
#	packages/website/ts/style/colors.ts
2018-12-05 16:15:44 +01:00
Ezekiel Aquino
b552c2bd0c Cleanup 2018-12-04 17:00:30 +01:00
Ezekiel Aquino
ae9614ba36 Fixes Link component to user ReactRouterLink 2018-12-04 16:47:58 +01:00
Ezekiel Aquino
871ec6cfbc Adds sa bit of polish to landing page 2018-12-04 16:41:01 +01:00
Ezekiel Aquino
3c7dca37f5 Adds padding prop to text elements 2018-12-04 16:30:12 +01:00
Ezekiel Aquino
8acb25f577 Refactors buttons/links/header 2018-12-04 15:45:04 +01:00
Ezekiel Aquino
eec40080a0 Refactors Button component 2018-12-04 15:17:33 +01:00
Ezekiel Aquino
4da419cf75 Fixes all lint issues, cleanup 2018-12-04 14:58:37 +01:00
Fred Carlsen
5bf7b9b8f3 Added ecosystem page 2018-12-03 16:13:39 +01:00
Fred Carlsen
950dae0437 Added launch kit 2018-12-03 16:01:06 +01:00
Fred Carlsen
05ef537de0 Adjust team lists 2018-12-03 15:36:33 +01:00
Fred Carlsen
68d7ce1968 Add map to jobs 2018-12-03 15:31:30 +01:00
Fred Carlsen
59eca8d748 ADd content to jobs 2018-12-03 15:31:22 +01:00
Fred Carlsen
06304b30c9 Tweak line heights 2018-12-03 15:31:17 +01:00
Fred Carlsen
03962352df Updated sublinks on about 2018-12-03 14:43:43 +01:00
Fred Carlsen
1c03c9168b Added press logo 2018-12-03 14:43:26 +01:00
Fred Carlsen
b6be92e40b Updated press content 2018-12-03 14:43:19 +01:00
Fred Carlsen
06d4abf1ba Adjust thumb 2018-12-03 14:31:47 +01:00
Fred Carlsen
9349e50bb4 Add skeleton for team, press, jobs 2018-12-03 14:29:36 +01:00
Fred Carlsen
bf672272ce Update boolean values 2018-12-03 14:29:22 +01:00
Fred Carlsen
b9fbb3a725 Add color to interface 2018-12-03 14:28:49 +01:00
Fred Carlsen
64d52e2113 Misc fixes to layout 2018-12-03 14:28:42 +01:00
Fred Carlsen
e0475ce84e Added project logos 2018-12-03 14:00:54 +01:00
Fred Carlsen
64c5181c14 Lint fix 2018-12-03 12:51:51 +01:00
Ezekiel Aquino
6f333f2b55 Fix isFullWidth type declaration in layout 2018-12-03 12:21:57 +01:00
Ezekiel Aquino
7f77347ea4 Changes boolean props to follow is[Property] syntax 2018-12-03 12:19:50 +01:00
Ezekiel Aquino
9ed30fbcca Adds note to layout section 2018-12-03 11:24:22 +01:00
Ezekiel Aquino
1fab30ef80 A bit of formatting, centeres instant text 2018-12-03 11:15:34 +01:00
Ezekiel Aquino
62eba1e820 Uses layout elems in header 2018-12-03 11:10:33 +01:00
Ezekiel Aquino
78703ab370 Some comments and cleanup 2018-12-03 10:54:48 +01:00
Ezekiel Aquino
435d9e47e3 ThemeProvider 2018-11-30 17:07:51 +01:00
Ezekiel Aquino
5c12e664a9 WIP themeprovider 2018-11-30 16:25:54 +01:00
Fred Carlsen
46422ff783 Linting 2018-11-30 16:04:13 +01:00
Fred Carlsen
3a13286585 Added about / mission 2018-11-30 16:04:13 +01:00
Fred Carlsen
c98c8b1ded Prevent compiler from stopping on ts warning 2018-11-30 16:04:12 +01:00
Fred Carlsen
de0b5772bf Linting 2018-11-30 16:04:12 +01:00
Fred Carlsen
dbf62ae205 Correct font-weight for heading 2018-11-30 16:04:12 +01:00
Ezekiel Aquino
7962e4050c Breakpoint on padding 2018-11-30 15:23:26 +01:00
Ezekiel Aquino
6bf9889429 Types return on layout methods 2018-11-30 15:11:09 +01:00
Fred Carlsen
7f8b9ef1f7 Add cta 2018-11-30 15:09:57 +01:00
Fred Carlsen
e91fffd005 Make buttons align 2018-11-30 15:09:57 +01:00
Fred Carlsen
7314fd7252 Link products to 0x instant for now 2018-11-30 15:09:57 +01:00
Fred Carlsen
247a69aaec Added 0x instant skeleton 2018-11-30 15:09:57 +01:00
Fred Carlsen
d78ac3f157 Fix icon warnings 2018-11-30 15:09:57 +01:00
Fred Carlsen
315584ef51 Contain images 2018-11-30 15:09:57 +01:00
Ezekiel Aquino
57e539ed41 Allows margin to be passed variable integers as values, adds comments 2018-11-30 15:07:42 +01:00
Ezekiel Aquino
db1babd5be Makes ts happy with running a function on an optional property value 2018-11-30 14:56:19 +01:00
Ezekiel Aquino
bb63c5c86f Adds proposal for padding prop on Wrappers 2018-11-30 14:55:13 +01:00
Ezekiel Aquino
82d6f2150b Adds wrapGrid, bit of cleanup 2018-11-30 14:35:17 +01:00
Ezekiel Aquino
5f177108d1 Cleanup 2018-11-30 14:19:23 +01:00
Ezekiel Aquino
46aa446a61 Just fixes those warnings on icons 2018-11-30 14:19:23 +01:00
Fred Carlsen
0883f7087b Remove double reference 2018-11-30 14:18:11 +01:00
Fred Carlsen
e782262572 Add route links to header 2018-11-30 14:17:02 +01:00
Ezekiel Aquino
2ba14d656e Some cleanup, reindent 2018-11-30 14:13:31 +01:00
Ezekiel Aquino
0c2848c418 Adds ts caching 2018-11-30 14:04:39 +01:00
Ezekiel Aquino
47ef28f88f Adds awcache to gitignore 2018-11-30 14:04:39 +01:00
Fred Carlsen
e81bd1b7f0 Speed up ts loading with cache 2018-11-30 13:57:33 +01:00
Fred Carlsen
929eb45699 Linting 2018-11-30 13:36:01 +01:00
Fred Carlsen
4456ba0f6a Fix tag 2018-11-30 13:10:15 +01:00
Fred Carlsen
d6329a83d5 Linting errors 2018-11-30 13:08:36 +01:00
Ezekiel Aquino
203baa4541 Replaces Text elements in why route 2018-11-30 12:28:56 +01:00
Ezekiel Aquino
e13406cbf4 Just makes it render 2018-11-30 12:15:20 +01:00
Ezekiel Aquino
df213ac0d5 Text and landing 2018-11-30 12:13:24 +01:00
Fred Carlsen
4d7db045e9 Tweak text 2018-11-30 12:05:56 +01:00
Fred Carlsen
849b744185 Linting + typing 2018-11-30 12:05:51 +01:00
Fred Carlsen
7161e8fed9 Tweak submit position 2018-11-30 12:05:40 +01:00
Fred Carlsen
1105d76861 Linting format 2018-11-30 12:05:31 +01:00
Fred Carlsen
9b6d738ab1 Tweak global styles 2018-11-30 12:05:21 +01:00
Fred Carlsen
d586c1f67a Added coin icon 2018-11-30 12:05:14 +01:00
Fred Carlsen
fff4dd7e94 Export svgs as typed pure components 2018-11-30 12:05:08 +01:00
Fred Carlsen
c2d9585150 Linter fixes 2018-11-30 10:47:26 +01:00
Fred Carlsen
3586dde480 Started on why 0x 2018-11-30 09:58:20 +01:00
Fred Carlsen
d6b92e5786 Add center prop to text 2018-11-30 09:58:20 +01:00
Fred Carlsen
ab24dcc290 Hide trade button on mobile 2018-11-30 09:58:20 +01:00
Fred Carlsen
189920eab9 Added newsletter form to footer 2018-11-30 09:58:20 +01:00
Fred Carlsen
83499176d9 Adjust global font size 2018-11-30 09:58:20 +01:00
Fred Carlsen
5294c31997 Format styles 2018-11-30 09:58:20 +01:00
Ezekiel Aquino
b461147389 Adds buttonWrapper 2018-11-29 15:51:27 +01:00
Ezekiel Aquino
1d0d4ca147 Removes text-decoration on buttons 2018-11-29 15:46:12 +01:00
Ezekiel Aquino
2103d5c3ed Cleans up Button 2018-11-29 15:45:30 +01:00
Fred Carlsen
a21bca7cf4 Cleanup button component 2018-11-29 15:34:26 +01:00
Fred Carlsen
200da7d22c Fix type def 2018-11-29 15:26:21 +01:00
Ezekiel Aquino
a114cf5c2e Introduces WrapCentered 2018-11-29 15:17:00 +01:00
Ezekiel Aquino
4bc5881e9a Tests flush width sections 2018-11-29 15:08:24 +01:00
Ezekiel Aquino
a9d413728e Ooops fixes that 2018-11-29 14:59:20 +01:00
Ezekiel Aquino
e10d34cdfc Enables fullwidth sections. As in edge-to-edge 2018-11-29 14:58:30 +01:00
Ezekiel Aquino
96b9ffc847 Adds fullWidth prop to sections 2018-11-29 14:52:13 +01:00
Fred Carlsen
9d850cea14 Updated text 2018-11-29 14:39:07 +01:00
Ezekiel Aquino
0e7329bcec Tweaks button 2018-11-29 14:36:35 +01:00
Ezekiel Aquino
b564f090f9 Edits button.js 2018-11-29 14:34:06 +01:00
Ezekiel Aquino
ec099dd009 Adds notes to button 2018-11-29 14:33:27 +01:00
Fred Carlsen
0577a0dbc5 Remove export of interface 2018-11-29 14:26:52 +01:00
Fred Carlsen
1bba985124 Add text and illustrations for home 2018-11-29 14:18:19 +01:00
Fred Carlsen
8bcb5b00ba Add transparent button 2018-11-29 14:18:04 +01:00
Fred Carlsen
d0fa615f32 Add transparent button 2018-11-29 13:31:04 +01:00
Fred Carlsen
ef6cffd9d9 Fix linting and typing errors in footer 2018-11-29 11:48:47 +01:00
Fred Carlsen
aa4234a38c WIP landing and button changes 2018-11-29 10:55:34 +01:00
Ezekiel Aquino
9b794c00ea Quick test responsive cols 2018-11-29 09:58:08 +01:00
Ezekiel Aquino
03289293c3 Fixes interface syntax 2018-11-29 09:33:06 +01:00
Ezekiel Aquino
0736ba7159 Adds key to mapped footer elems 2018-11-29 09:23:19 +01:00
Ezekiel Aquino
44ac385e8b Make dev layout guidelines less obtrusive 2018-11-29 09:12:12 +01:00
Ezekiel Aquino
512b483b6f Refactors footer to use layout system 2018-11-29 09:06:39 +01:00
Ezekiel Aquino
5a9755da9b Fix colwidth layout calc 2018-11-29 08:53:25 +01:00
Ezekiel Aquino
be39c5ba99 Moves content wrap to layout.tsx 2018-11-29 08:52:13 +01:00
Ezekiel Aquino
0c5b645e86 Edits column width calc method 2018-11-29 08:46:49 +01:00
Fred Carlsen
23bfad6c40 Add index to list 2018-11-28 18:25:49 +01:00
Fred Carlsen
850c441c70 Start on text component 2018-11-28 18:25:40 +01:00
Fred Carlsen
dc434bdff0 Left align logo 2018-11-28 17:52:14 +01:00
Fred Carlsen
0afd490aec Linting errors 2018-11-28 17:51:34 +01:00
Fred Carlsen
c8520c45cb Fix linting errors 2018-11-28 17:49:48 +01:00
Fred Carlsen
ec6b47ded0 Add footer 2018-11-28 17:46:43 +01:00
Ezekiel Aquino
36d94b894a Test with max widths 2018-11-28 17:43:27 +01:00
Ezekiel Aquino
a18a11da92 Adds section margins 2018-11-28 17:35:13 +01:00
Ezekiel Aquino
4bad973877 Samples full width wraps 2018-11-28 17:32:27 +01:00
Ezekiel Aquino
38e12c2405 [WIP] Proposed layout modules 2018-11-28 17:29:12 +01:00
Fred Carlsen
f9a7cc94e1 Fix key in loop 2018-11-28 17:11:17 +01:00
Fred Carlsen
3382077768 Add bgColor and removePadding props to container 2018-11-28 17:08:59 +01:00
Fred Carlsen
b9cbc87882 Change bg color 2018-11-28 17:08:41 +01:00
Fred Carlsen
d05d5ac10d Fix linting errors 2018-11-28 16:35:59 +01:00
Fred Carlsen
a1fe30e210 Tweak links in header 2018-11-28 16:33:10 +01:00
Fred Carlsen
56ca19dc9b Add ehader 2018-11-28 16:26:56 +01:00
Fred Carlsen
969674a5ce Add container and button 2018-11-28 16:26:42 +01:00
Fred Carlsen
d2a418b368 Fix font references 2018-11-28 16:26:05 +01:00
Fred Carlsen
081859f334 Ignore osx metadata files 2018-11-28 15:21:11 +01:00
Fred Carlsen
1cc06dd9e6 Fix type error in Text component 2018-11-28 15:19:00 +01:00
Fred Carlsen
d642082058 Add styled-component types 2018-11-28 15:19:00 +01:00
Ezekiel Aquino
d3aebd0b79 Renames font-files, adds font-face declaration in globalStyles 2018-11-28 15:02:46 +01:00
Ezekiel Aquino
7b90f095ff Adds very basic SiteWrap and global styling 2018-11-28 14:45:26 +01:00
Ezekiel Aquino
df6c1ae059 Updates styled-components, react typings 2018-11-28 14:45:26 +01:00
Fred Carlsen
5578c70cd6 WIP button 2018-11-28 14:04:38 +01:00
Ezekiel Aquino
3e2c93f5a0 Adds initial /next route to index.tsx 2018-11-28 13:42:02 +01:00
Fred Carlsen
471a4e981a Add @next folder structure 2018-11-28 13:33:46 +01:00
Fred Carlsen
6b4112527f Add svg loader 2018-11-28 13:17:48 +01:00
Fred Carlsen
3a9f8a7296 Add Formular font and normalize 2018-11-28 13:17:00 +01:00
Fred Carlsen
bbb3e5afcc Add brand colors 2018-11-28 13:13:27 +01:00
Fred Carlsen
9b0020a884 Merge remote-tracking branch 'upstream/development' into website 2018-11-27 16:19:36 +01:00
Fred Carlsen
ec12e46e3f Add fix for assertion error to devserver config 2018-11-27 15:40:37 +01:00
August Skare
21d9783ef8 fix puppeteer options for react-snap 2018-11-21 14:09:47 +01:00
August Skare
89ce87f9f1 fix casing for entries in webpack 2018-11-21 12:36:58 +01:00
August Skare
592e1a3e6f Merge branch 'development' into dev-tools-pages 2018-11-21 08:19:29 +01:00
August Skare
99176c2d54 comment for commented BundleAnalyzerPlugin webpack plugin 2018-11-20 15:41:39 +01:00
August Skare
ad0083dfa0 fix type for svg icon in footer 2018-11-20 15:30:49 +01:00
August Skare
6919409c2b typedef for context data 2018-11-20 15:28:18 +01:00
August Skare
f360b2edd6 fix import order 2018-11-20 15:27:56 +01:00
August Skare
339ec3e8eb uniq export names for animations 2018-11-20 15:18:09 +01:00
August Skare
b0c22a222e use lodash.map insted of array.map 2018-11-20 15:15:17 +01:00
August Skare
ea18050589 use lodash isUndefined function 2018-11-20 15:10:59 +01:00
August Skare
117726c6d8 fix imports after renaming 2018-11-19 17:35:22 +01:00
August Skare
31d07fdac8 rename all files and directories to lowercase 2018-11-19 17:27:00 +01:00
August Skare
881655bb57 separate component for inlinecode component 2018-11-19 15:18:07 +01:00
August Skare
38949f7ea4 added missing ; 2018-11-19 15:14:01 +01:00
August Skare
8d3e6f77b7 cleand up code component 2018-11-19 15:13:52 +01:00
August Skare
5865d1f62c strict check for children in contentblock 2018-11-19 14:56:40 +01:00
August Skare
e2607980eb type function call for Container in Animation class 2018-11-19 09:57:18 +01:00
August Skare
f519f5744e remove new-lines between methods in classes 2018-11-19 09:55:03 +01:00
August Skare
fa24ec1a04 clean up tabs component 2018-11-19 09:50:19 +01:00
August Skare
6e1014a647 remove unnecessary children in Interface 2018-11-19 09:47:34 +01:00
August Skare
0b46f44ad3 fix typings for components in header 2018-11-19 09:32:53 +01:00
August Skare
b811b51af9 use styled-components theme in logo insted of color prop 2018-11-19 09:15:50 +01:00
August Skare
b88e2c5483 removed unused prop def from footer component 2018-11-19 09:07:05 +01:00
August Skare
cd333e0977 rename copied to didCopy in Code state 2018-11-19 09:05:22 +01:00
August Skare
62706d83c4 remove constructor from Code component 2018-11-19 09:04:00 +01:00
August Skare
284252e7a4 less verbose tslint disable rule 2018-11-19 08:56:59 +01:00
August Skare
3ad857be6c fix timeout type in animation component 2018-11-19 08:53:25 +01:00
August Skare
7fec2f630c fixed base link styling color 2018-11-16 16:18:03 +01:00
August Skare
c081081448 Merge branch 'development' into dev-tools-pages 2018-11-16 11:28:24 +01:00
August Skare
54bd7df900 fix linting + code syntax for statless components 2018-11-16 11:05:30 +01:00
August Skare
5afef5fe82 update styled-component and styled-component typings 2018-11-16 11:04:55 +01:00
August Skare
0c222f9890 Merge branch 'development' into dev-tools-pages 2018-11-13 10:14:04 +01:00
August Skare
e43988aa44 Merge branch 'development' into dev-tools-pages 2018-11-13 09:52:41 +01:00
August Skare
ee91f56bbe remove unused dependecies 2018-11-12 08:24:21 +01:00
August Skare
52b49fee24 better positioning of hero animation 2018-11-07 13:08:08 +01:00
August Skare
31f096248d lower deboune on animation resize 2018-11-07 13:01:53 +01:00
August Skare
d91c41b29c fix alignment on list bullest 2018-11-07 12:45:25 +01:00
August Skare
c27a2b64ef visual tweaks in code component 2018-11-07 12:39:47 +01:00
August Skare
fdaffb67e8 styling adjustment in uniq components 2018-11-07 12:39:33 +01:00
August Skare
d32bf15b69 align 0x logo in footer 2018-11-07 10:19:33 +01:00
August Skare
7536648f7a right align icons in trace component 2018-11-07 10:16:13 +01:00
August Skare
eb2fa8e4af more spacing on footer items 2018-11-07 10:13:49 +01:00
August Skare
5d3d2736f5 break compiler cards on an earlier breakpoint 2018-11-07 09:51:42 +01:00
August Skare
0574794496 new og images 2018-11-07 09:48:49 +01:00
August Skare
3a23e795ac new hero animation using bodymovin and lottie 2018-11-07 09:48:10 +01:00
August Skare
2dfca078fd copy changes 2018-11-07 09:10:25 +01:00
August Skare
9006e8fced fix issues in code element 2018-11-06 14:39:48 +01:00
August Skare
6b8f8580d8 fix large button on small screens 2018-11-06 14:33:31 +01:00
August Skare
eb9d802146 rename pesudo element in code gutter 2018-10-30 09:07:25 +01:00
August Skare
6b11ca6c1d fix code highlighting with ... 2018-10-30 09:05:52 +01:00
August Skare
4c8178fc30 remove outline on buttons 2018-10-30 08:42:32 +01:00
August Skare
4616d6f59d button tweaks 2018-10-30 08:39:24 +01:00
August Skare
5cb944fe1b optional copy button in code component 2018-10-30 08:27:31 +01:00
August Skare
50c4909f22 change footer copy 2018-10-30 08:24:14 +01:00
August Skare
dd8b9bf987 fix link to 0x in header 2018-10-30 08:21:39 +01:00
August Skare
0e3cd82348 Fixes/august (#12)
* fix button dimensions

* fix footer hover color

* breakout in trace component

* fix padding on button on small screens

* fix title with content on small screens

* sizing adjustment in intro component

* intro component adjustments

* container size adjustments

* meta og images

* fixed gutter size

* trace component fix + breakout fix

* show copy button if touch device

* responsive hero animation
2018-10-29 08:15:20 +00:00
August Skare
3d4041ecd3 Feature/feedbacktweaks (#11)
* Fix typo

* Fix 1px line showing in middle of divs

* Increase inline code padding by 2px

* Make masonry block not full width on screens larger than mobile

* Align list items

* Change button text to copied if it's been copied
2018-10-29 08:13:03 +00:00
August Skare
89e439c521 update content in tabs 2018-10-26 09:59:10 +02:00
August Skare
0f97771d5a fix props drilling to far down 2018-10-26 09:33:30 +02:00
August Skare
74f0515370 alernate prop on inlinecode component 2018-10-26 09:23:09 +02:00
August Skare
f17c7e4a22 fix button position in code component 2018-10-26 08:50:20 +02:00
August Skare
5fe98c816d fix scrollbars in code components 2018-10-26 08:48:17 +02:00
August Skare
f75cfd8aa4 fixed links in footer 2018-10-26 08:44:27 +02:00
August Skare
7577d96671 new hover styling 2018-10-26 08:38:10 +02:00
August Skare
58f5b6d0ad new favicons 2018-10-26 08:29:21 +02:00
August Skare
a11348ce6b fix line-height in lead component 2018-10-26 08:24:44 +02:00
August Skare
a4825d8748 center logo text 2018-10-26 08:22:29 +02:00
August Skare
e3c0363db1 update codeblock in trace component 2018-10-26 08:18:04 +02:00
August Skare
3fdc6e5e47 text color in trace component 2018-10-26 08:15:43 +02:00
August Skare
2ef8204ab4 14px fontsize on code 2018-10-26 08:13:04 +02:00
August Skare
72b4ee76fb update text color on dark background 2018-10-26 08:10:31 +02:00
August Skare
3901380ffb update content on copiler page 2018-10-26 08:08:40 +02:00
August Skare
fb24a18f3f fix dom elements type in intro 2018-10-25 14:15:47 +02:00
August Skare
1899493ca8 breakpoint on medium in intro component 2018-10-25 14:15:47 +02:00
August Skare
1581ced6ec add json support to highlight 2018-10-25 14:15:47 +02:00
Megan Pearson
5e8f53c7b7 Updates intro component 2018-10-25 14:15:47 +02:00
Megan Pearson
370d15ed1d Merge remote-tracking branch 'origin/dev-tools-pages' into dev-tools-pages 2018-10-25 14:12:17 +02:00
Megan Pearson
43b792f307 Fixed typos 2018-10-25 14:12:01 +02:00
Megan Pearson
b844126516 Updates intro component (#10)
* Updates intro component

* Remove unused Inner

* Use Breakout component in Intro
2018-10-25 13:04:50 +01:00
August Skare
43e55a963b Feature/syntaxhighlighting (#9)
* wip code highlighting of lines

* Implements gutter component

* WIP: Profiler with gutter

* cleaned up highlight code

* Removes before content for gutter styling

* Styles gutter

* Add correct Profiler code content

* Adds color variable for gutter gray

* refactor code component width gutter and diffing
2018-10-25 12:19:56 +01:00
Megan Pearson
9cf055c159 Add highlighter.js; basic styling for .diff classes; Start of code block in cov 2018-10-25 13:13:00 +02:00
Megan Pearson
16b5157078 Updates Intro Component to use IntroBody and IntroAside 2018-10-25 13:12:38 +02:00
August Skare
1ae9f68db8 Content (#7)
* optional children in List component

* added real content to trace page

* added real content to cov page

* add support for json highlighting

* real content on compiler page

* real content on profiler page

* remove unused import

* remove list from compiler page

* wrap code components in pages with breakout component

* fix font size on text

* fix typo
2018-10-25 12:10:35 +01:00
August Skare
e5d3e3b33a Feature/tweaks (#8)
* show copy button on focs

* change base link styling

* text-decoration underline on basic links

* basic hover and focus styles on button and tabs

* add links in footer

* change breakpoints vars

* medium breakpoint on footer
2018-10-25 10:54:53 +01:00
August Skare
1c8ea1336e Feature/animations (#6)
* test animation

* test two part video

* new video test

* replace videos with gifs

* rename videos folder to images

* sol-cov gifs

* renames variables

* compiler gif

* change in hero srcset

* better positioning of hero image
2018-10-25 10:50:09 +01:00
August Skare
a4de585feb Feature/colors (#5)
* fix color variables

* rename link var to type
2018-10-23 12:34:35 +01:00
Megan Pearson
e624759bc7 Merge pull request #4 from bakkenbaeck/feature/moreresponsive
Feature/moreresponsive
2018-10-23 10:18:12 +02:00
August Skare
0836ab370e Update margin-bottom
Co-Authored-By: mepearso <megan.e.pearson@gmail.com>
2018-10-23 10:17:48 +02:00
Megan Pearson
66848ef80f Responsive Compiler 2018-10-23 09:59:09 +02:00
Megan Pearson
f0b9365ca9 Responsive intro, again 2018-10-23 09:59:09 +02:00
Megan Pearson
614ca51cb1 Adds wide prop for full width sections 2018-10-23 09:58:34 +02:00
Megan Pearson
f31f9eb24e Implements Lead typography 2018-10-23 09:57:53 +02:00
Megan Pearson
bc029df082 Merge branch 'feature/variables' into dev-tools-pages 2018-10-22 17:05:27 +02:00
Megan Pearson
63b53acd48 Merge branch 'dev-tools-pages' into feature/variables 2018-10-22 14:28:05 +02:00
Megan Pearson
50eee9a657 Merge branch 'feature/alternate-main' into dev-tools-pages 2018-10-22 14:11:20 +02:00
Megan Pearson
917952bc2a Remove unused imports 2018-10-22 14:04:23 +02:00
August Skare
00afb2440d remove contentBlock from content component 2018-10-22 13:27:49 +02:00
August Skare
8cf720986e rename Main to Content 2018-10-22 13:27:49 +02:00
August Skare
97c54f84f0 remove container from all pages 2018-10-22 13:27:49 +02:00
August Skare
e485a98143 support dark alternative of Main component 2018-10-22 13:27:49 +02:00
Megan Pearson
1e29f2875d Remove font size adjustment for small screens from Beta 2018-10-22 13:27:35 +02:00
Megan Pearson
61cd36cc96 Responsive footer 2018-10-22 13:27:35 +02:00
Megan Pearson
a9b4c1cba8 Responsive font sizes in typography and globalstyles 2018-10-22 13:27:35 +02:00
Megan Pearson
5187017f21 Responsive trace 2018-10-22 13:27:35 +02:00
Megan Pearson
73ea2dac6d Responsive header 2018-10-22 13:27:35 +02:00
Megan Pearson
e9232bf070 Exports media breakpoints 2018-10-22 13:27:35 +02:00
Megan Pearson
ee3538262d Changed name of export to colors and updates components 2018-10-22 13:27:35 +02:00
Megan Pearson
47b281b754 Implements color variables and updates components 2018-10-22 13:27:35 +02:00
Megan Pearson
dfa03feb43 Responsive Intro 2018-10-22 11:55:02 +02:00
Megan Pearson
49beb6b7a3 Add light prop to code 2018-10-22 09:53:58 +02:00
Megan Pearson
6066db8f42 Responsive list 2018-10-22 09:53:22 +02:00
August Skare
68c1818139 breakout container for small screens 2018-10-22 09:20:54 +02:00
August Skare
12087b6b70 ligt theme on code 2018-10-22 09:11:37 +02:00
August Skare
15a3c234c5 dont shrink icons in trace component 2018-10-22 09:05:07 +02:00
August Skare
bf7443c985 button styling on small screens 2018-10-22 09:02:59 +02:00
August Skare
6c39d498c2 code fontsize on small screens 2018-10-22 08:52:21 +02:00
August Skare
cacb8acf76 hero spacing adjustment on small screen 2018-10-22 08:46:46 +02:00
August Skare
c1082b9b08 spacing adjustments on contentblock and main components 2018-10-22 08:40:38 +02:00
August Skare
d3c5c68296 remove padding on Trace component on small breakpoint 2018-10-22 08:40:07 +02:00
August Skare
39fd3fd866 spacing adjustment in footer 2018-10-22 08:29:41 +02:00
August Skare
7ed95d3954 don't shrink icons in footer 2018-10-22 08:27:41 +02:00
August Skare
4dc91c86ae keep fonts folder in git 2018-10-22 08:21:34 +02:00
August Skare
7d7f54c751 Feature/build step (#2)
* BundleAnalyzerPlugin

* lazy load highlight.js

* seperate bundles for each page

* prerender apps to html on build

* preload important font files

* dont prerender code copy button

* fix woff2 variant of font

* added missing doctype

* remove metatags component
2018-10-19 16:05:09 +02:00
August Skare
580e574c84 Feature/build step (#2)
* BundleAnalyzerPlugin

* lazy load highlight.js

* seperate bundles for each page

* prerender apps to html on build

* preload important font files

* dont prerender code copy button

* fix woff2 variant of font

* added missing doctype

* remove metatags component
2018-10-19 15:02:15 +01:00
Megan Pearson
736e1717fa Merge branch 'feature/responsive' into feature/variables 2018-10-19 15:36:38 +02:00
Megan Pearson
d6ac1a4f78 Remove font size adjustment for small screens from Beta 2018-10-19 15:32:02 +02:00
Megan Pearson
8a7c61c6f4 Responsive footer 2018-10-19 15:31:26 +02:00
Megan Pearson
9a024fdacf Responsive font sizes in typography and globalstyles 2018-10-19 14:30:38 +02:00
Megan Pearson
135a623b1f Responsive trace 2018-10-19 14:29:59 +02:00
Megan Pearson
ba0b9b259f Responsive header 2018-10-19 11:59:03 +02:00
Megan Pearson
45a24738b5 Exports media breakpoints 2018-10-19 11:33:41 +02:00
Megan Pearson
585ca203b0 Changed name of export to colors and updates components 2018-10-19 11:32:59 +02:00
Megan Pearson
561f441a5b Implements color variables and updates components 2018-10-19 09:37:14 +02:00
August Skare
30f7f83573 added trace component to trace view 2018-10-18 15:25:08 +02:00
August Skare
97646571a1 tweaking header and hero position and sizing 2018-10-18 14:09:02 +02:00
August Skare
ac60d45969 compiler component in compiler view 2018-10-18 14:08:46 +02:00
August Skare
afa52e280c intro component on cov view 2018-10-18 13:59:16 +02:00
August Skare
c57c9752a2 intro component in profiler view 2018-10-18 13:58:07 +02:00
August Skare
b158a6d722 initial commit 2018-10-18 13:28:44 +02:00
August Skare
c616b53c9c update react and styled-components 2018-10-15 13:40:49 +02:00
1549 changed files with 55434 additions and 43595 deletions

View File

@@ -4,7 +4,7 @@ jobs:
build:
resource_class: medium+
docker:
- image: circleci/node:9
- image: circleci/node:9-browsers
environment:
CONTRACTS_COMMIT_HASH: '9ed05f5'
working_directory: ~/repo
@@ -16,8 +16,10 @@ jobs:
command: sudo npm install --global yarn@1.9.4
- run:
name: yarn
command: yarn --frozen-lockfile install || yarn --frozen-lockfile install
command: yarn --frozen-lockfile --ignore-engines install || yarn --frozen-lockfile --ignore-engines install
- setup_remote_docker
- run: yarn build:ci:no_website
- run: yarn build:ts
- save_cache:
key: repo-{{ .Environment.CIRCLE_SHA1 }}
paths:
@@ -25,7 +27,7 @@ jobs:
build-website:
resource_class: medium+
docker:
- image: circleci/node:9
- image: circleci/node:9-browsers
working_directory: ~/repo
steps:
- restore_cache:
@@ -34,7 +36,7 @@ jobs:
- run: cd packages/website && yarn build:prod
test-contracts-ganache:
docker:
- image: circleci/node:9
- image: circleci/node:9-browsers
working_directory: ~/repo
steps:
- restore_cache:
@@ -42,13 +44,16 @@ jobs:
- repo-{{ .Environment.CIRCLE_SHA1 }}
- run: yarn wsrun test:circleci @0x/contracts-multisig
- run: yarn wsrun test:circleci @0x/contracts-utils
- run: yarn wsrun test:circleci @0x/contracts-libs
- run: yarn wsrun test:circleci @0x/contracts-tokens
- run: yarn wsrun test:circleci @0x/contracts-exchange-libs
- run: yarn wsrun test:circleci @0x/contracts-erc20
- run: yarn wsrun test:circleci @0x/contracts-erc721
- run: yarn wsrun test:circleci @0x/contracts-extensions
- run: yarn wsrun test:circleci @0x/contracts-protocol
- run: yarn wsrun test:circleci @0x/contracts-asset-proxy
- run: yarn wsrun test:circleci @0x/contracts-exchange
- run: yarn wsrun test:circleci @0x/contracts-exchange-forwarder
test-contracts-geth:
docker:
- image: circleci/node:9
- image: circleci/node:9-browsers
- image: 0xorg/devnet
working_directory: ~/repo
steps:
@@ -58,15 +63,18 @@ jobs:
# HACK(albrow): we need to sleep 10 seconds to ensure the devnet is
# initialized
- run: sleep 10 && TEST_PROVIDER=geth yarn wsrun test @0x/contracts-multisig
- run: TEST_PROVIDER=geth yarn wsrun test @0x/contracts-utils
- run: TEST_PROVIDER=geth yarn wsrun test @0x/contracts-libs
- run: TEST_PROVIDER=geth yarn wsrun test @0x/contracts-tokens
- run: TEST_PROVIDER=geth yarn wsrun test @0x/contracts-extensions
- run: TEST_PROVIDER=geth yarn wsrun test @0x/contracts-protocol
- run: TEST_PROVIDER=geth yarn wsrun test:circleci @0x/contracts-utils
- run: TEST_PROVIDER=geth yarn wsrun test:circleci @0x/contracts-exchange-libs
- run: TEST_PROVIDER=geth yarn wsrun test:circleci @0x/contracts-erc20
- run: TEST_PROVIDER=geth yarn wsrun test:circleci @0x/contracts-erc721
- run: TEST_PROVIDER=geth yarn wsrun test:circleci @0x/contracts-extensions
- run: TEST_PROVIDER=geth yarn wsrun test:circleci @0x/contracts-asset-proxy
- run: TEST_PROVIDER=geth yarn wsrun test:circleci @0x/contracts-exchange
- run: TEST_PROVIDER=geth yarn wsrun test:circleci @0x/contracts-exchange-forwarder
test-publish:
resource_class: medium+
docker:
- image: circleci/node:9
- image: circleci/node:9-browsers
- image: 0xorg/verdaccio
working_directory: ~/repo
steps:
@@ -76,7 +84,7 @@ jobs:
- run: yarn test:publish:circleci
test-doc-generation:
docker:
- image: circleci/node:9
- image: circleci/node:9-browsers
working_directory: ~/repo
steps:
- restore_cache:
@@ -99,7 +107,7 @@ jobs:
- ~/repo/packages/pipeline/coverage/lcov.info
test-rest:
docker:
- image: circleci/node:9
- image: circleci/node:9-browsers
working_directory: ~/repo
steps:
- restore_cache:
@@ -117,7 +125,7 @@ jobs:
- run: yarn wsrun test:circleci @0x/order-utils
- run: yarn wsrun test:circleci @0x/order-watcher
- run: yarn wsrun test:circleci @0x/sol-compiler
- run: yarn wsrun test:circleci @0x/sol-cov
- run: yarn wsrun test:circleci @0x/sol-tracing-utils
- run: yarn wsrun test:circleci @0x/sol-doc
- run: yarn wsrun test:circleci @0x/subproviders
- run: yarn wsrun test:circleci @0x/web3-wrapper
@@ -168,9 +176,9 @@ jobs:
paths:
- ~/repo/packages/sol-compiler/coverage/lcov.info
- save_cache:
key: coverage-sol-cov-{{ .Environment.CIRCLE_SHA1 }}
key: coverage-sol-tracing-utils-{{ .Environment.CIRCLE_SHA1 }}
paths:
- ~/repo/packages/sol-cov/coverage/lcov.info
- ~/repo/packages/sol-tracing-utils/coverage/lcov.info
- save_cache:
key: coverage-sol-doc-{{ .Environment.CIRCLE_SHA1 }}
paths:
@@ -187,37 +195,54 @@ jobs:
working_directory: ~/repo
docker:
- image: circleci/python
- image: 0xorg/ganache-cli
- image: 0xorg/ganache-cli:2.2.2
- image: 0xorg/launch-kit-ci
command: |
ganache-cli --gasLimit 10000000 --noVMErrorsOnRPCResponse --db /snapshot --noVMErrorsOnRPCResponse -p 8545 --networkId 50 -m "concert load couple harbor equip island argue ramp clarify fence smart topic"
yarn start:ts -p 3000:3000
steps:
- checkout
- run: sudo chown -R circleci:circleci /usr/local/bin
- run: sudo chown -R circleci:circleci /usr/local/lib/python3.7/site-packages
- run: sudo chown -R circleci:circleci /usr/local/lib/python3.7
- restore_cache:
key: deps9-{{ .Branch }}-{{ .Environment.CIRCLE_SHA1 }}
- run:
command: |
cd python-packages/order_utils
cd python-packages
python -m ensurepip
python -m pip install -e .[dev]
./install
- save_cache:
key: deps9-{{ .Branch }}-{{ .Environment.CIRCLE_SHA1 }}
paths:
- '/usr/local/bin'
- '/usr/local/lib/python3.7/site-packages'
- '.eggs'
- '.mypy_cache'
- '.pytest_cache'
- '.tox'
- run:
command: |
cd python-packages/order_utils
coverage run setup.py test
cd python-packages
./cmd_pkgs_in_dep_order.py coverage run setup.py test
- save_cache:
key: coverage-python-contract-addresses-{{ .Environment.CIRCLE_SHA1 }}
paths:
- ~/repo/python-packages/contract_addresses/.coverage
- save_cache:
key: coverage-python-contract-artifacts-{{ .Environment.CIRCLE_SHA1 }}
paths:
- ~/repo/python-packages/contract_artifacts/.coverage
- save_cache:
key: coverage-python-contract-demo-{{ .Environment.CIRCLE_SHA1 }}
paths:
- ~/repo/python-packages/contract_demo/.coverage
- save_cache:
key: coverage-python-json-schemas-{{ .Environment.CIRCLE_SHA1 }}
paths:
- ~/repo/python-packages/json_schemas/.coverage
- save_cache:
key: coverage-python-order-utils-{{ .Environment.CIRCLE_SHA1 }}
paths:
- ~/repo/python-packages/order_utils/.coverage
- save_cache:
key: coverage-python-sra-client-{{ .Environment.CIRCLE_SHA1 }}
paths:
- ~/repo/python-packages/sra_client/.coverage
test-rest-python:
working_directory: ~/repo
docker:
@@ -225,14 +250,14 @@ jobs:
steps:
- checkout
- run: sudo chown -R circleci:circleci /usr/local/bin
- run: sudo chown -R circleci:circleci /usr/local/lib/python3.7/site-packages
- run: sudo chown -R circleci:circleci /usr/local/lib/python3.7
- restore_cache:
key: deps9-{{ .Branch }}-{{ .Environment.CIRCLE_SHA1 }}
- run:
command: |
cd python-packages/order_utils
python -m ensurepip
python -m pip install -e .[dev]
python -m pip install .
- save_cache:
key: deps9-{{ .Branch }}-{{ .Environment.CIRCLE_SHA1 }}
paths:
@@ -253,38 +278,31 @@ jobs:
steps:
- checkout
- run: sudo chown -R circleci:circleci /usr/local/bin
- run: sudo chown -R circleci:circleci /usr/local/lib/python3.7/site-packages
- run: sudo chown -R circleci:circleci /usr/local/lib/python3.7
- restore_cache:
key: deps9-{{ .Branch }}-{{ .Environment.CIRCLE_SHA1 }}
- run:
command: |
cd python-packages/order_utils
python -m ensurepip
python -m pip install -e .[dev]
- save_cache:
key: deps9-{{ .Branch }}-{{ .Environment.CIRCLE_SHA1 }}
paths:
- '/usr/local/bin'
- '/usr/local/lib/python3.7/site-packages'
- run:
command: |
cd python-packages/order_utils
python setup.py lint
cd python-packages
./install
./lint
static-tests:
working_directory: ~/repo
docker:
- image: circleci/node:9
- image: circleci/node:9-browsers
steps:
- restore_cache:
keys:
- repo-{{ .Environment.CIRCLE_SHA1 }}
- run: yarn lerna run lint
- run: yarn prettier:ci
- run: yarn deps_versions:ci
- run: cd packages/0x.js && yarn build:umd:prod
- run: yarn bundlewatch
submit-coverage:
docker:
- image: circleci/node:9
- image: circleci/node:9-browsers
working_directory: ~/repo
steps:
- restore_cache:
@@ -325,7 +343,7 @@ jobs:
- coverage-sol-compiler-{{ .Environment.CIRCLE_SHA1 }}
- restore_cache:
keys:
- coverage-sol-cov-{{ .Environment.CIRCLE_SHA1 }}
- coverage-sol-tracing-utils-{{ .Environment.CIRCLE_SHA1 }}
- restore_cache:
keys:
- coverage-sol-doc-{{ .Environment.CIRCLE_SHA1 }}
@@ -338,6 +356,21 @@ jobs:
- restore_cache:
keys:
- coverage-contracts-{{ .Environment.CIRCLE_SHA1 }}
- restore_cache:
keys:
- coverage-python-json-schemas-{{ .Environment.CIRCLE_SHA1 }}
- restore_cache:
keys:
- coverage-python-contract-addresses-{{ .Environment.CIRCLE_SHA1 }}
- restore_cache:
keys:
- coverage-python-contract-artifacts-{{ .Environment.CIRCLE_SHA1 }}
- restore_cache:
keys:
- coverage-python-contract-demo-{{ .Environment.CIRCLE_SHA1 }}
- restore_cache:
keys:
- coverage-python-sra-client-{{ .Environment.CIRCLE_SHA1 }}
- restore_cache:
keys:
- coverage-python-order-utils-{{ .Environment.CIRCLE_SHA1 }}
@@ -375,7 +408,9 @@ workflows:
requires:
- test-rest
- test-python
- static-tests-python:
requires:
- test-python
- test-python
- static-tests-python
# skip python tox run for now, as we don't yet have multiple test environments to support.
#- test-rest-python

View File

@@ -2,6 +2,7 @@ python: ['python-packages']
contracts: ['contracts']
sol-doc: ['packages/sol-doc']
sol-resolver: ['packages/sol-resolver']
contracts-gen: ['packages/contracts-gen']
sra-spec: ['packages/sra-spec']
subproviders: ['packages/subproviders']
contract-addresses: ['packages/contract-addresses']
@@ -13,7 +14,10 @@ instant: ['packages/instant']
abi-gen-templates: ['packages/abi-gen-templates']
abi-gen: ['packages/abi-gen']
website: ['packages/website']
sol-cov: ['packages/sol-cov']
sol-coverage: ['packages/sol-coverage']
sol-profiler: ['packages/sol-profiler']
sol-trace: ['packages/sol-trace']
sol-tracing-utils: ['packages/sol-tracing-utils']
utils: ['packages/utils']
tslint-config: ['packages/tslint-config']
asset-buyer: ['packages/asset-buyer']

2
.github/stale.yml vendored
View File

@@ -1,7 +1,7 @@
# Number of days of inactivity before an issue becomes stale
daysUntilStale: 30
# Number of days of inactivity before a stale issue is closed
daysUntilClose: 7
daysUntilClose: 30
# Issues with these labels will never be considered stale
exemptLabels:
- pinned

24
.gitignore vendored
View File

@@ -83,27 +83,29 @@ packages/react-docs/example/public/bundle*
packages/testnet-faucets/server/
# generated contract artifacts/
contracts/protocol/generated-artifacts/
contracts/exchange/generated-artifacts/
contracts/asset-proxy/generated-artifacts/
contracts/multisig/generated-artifacts/
contracts/utils/generated-artifacts/
contracts/libs/generated-artifacts/
contracts/interfaces/generated-artifacts/
contracts/tokens/generated-artifacts/
contracts/examples/generated-artifacts/
contracts/exchange-libs/generated-artifacts/
contracts/erc20/generated-artifacts/
contracts/erc721/generated-artifacts/
contracts/extensions/generated-artifacts/
packages/sol-cov/test/fixtures/artifacts/
contracts/exchange-forwarder/generated-artifacts/
packages/sol-tracing-utils/test/fixtures/artifacts/
packages/metacoin/artifacts/
# generated contract wrappers
packages/abi-gen-wrappers/wrappers
contracts/protocol/generated-wrappers/
contracts/exchange/generated-wrappers/
contracts/asset-proxy/generated-wrappers/
contracts/multisig/generated-wrappers/
contracts/utils/generated-wrappers/
contracts/libs/generated-wrappers/
contracts/interfaces/generated-wrappers/
contracts/tokens/generated-wrappers/
contracts/examples/generated-wrappers/
contracts/exchange-libs/generated-wrappers/
contracts/erc20/generated-wrappers/
contracts/erc721/generated-wrappers/
contracts/extensions/generated-wrappers/
contracts/exchange-forwarder/generated-wrappers/
packages/metacoin/src/contract_wrappers
# solc-bin in sol-compiler

View File

@@ -1,29 +1,35 @@
lib
.nyc_output
/contracts/protocol/generated-wrappers
/contracts/protocol/generated-artifacts
/contracts/exchange/generated-wrappers
/contracts/exchange/generated-artifacts
/contracts/asset-proxy/generated-wrappers
/contracts/asset-proxy/generated-artifacts
/contracts/multisig/generated-wrappers
/contracts/multisig/generated-artifacts
/contracts/utils/generated-wrappers
/contracts/utils/generated-artifacts
/contracts/libs/generated-wrappers
/contracts/libs/generated-artifacts
/contracts/interfaces/generated-wrappers
/contracts/interfaces/generated-artifacts
/contracts/tokens/generated-wrappers
/contracts/tokens/generated-artifacts
/contracts/examples/generated-wrappers
/contracts/examples/generated-artifacts
/contracts/exchange-libs/generated-wrappers
/contracts/exchange-libs/generated-artifacts
/contracts/erc20/generated-wrappers
/contracts/erc20/generated-artifacts
/contracts/erc721/generated-wrappers
/contracts/erc721/generated-artifacts
/contracts/extensions/generated-wrappers
/contracts/extensions/generated-artifacts
/contracts/exchange-forwarder/generated-wrappers
/contracts/exchange-forwarder/generated-artifacts
/packages/abi-gen-wrappers/src/generated-wrappers
/packages/contract-artifacts/artifacts
/python-packages/order_utils/src/zero_ex/contract_artifacts/artifacts
/python-packages/contract_artifacts/src/zero_ex/contract_artifacts/artifacts
/packages/json-schemas/schemas
/python-packages/order_utils/src/zero_ex/json_schemas/schemas
/python-packages/json_schemas/src/zero_ex/json_schemas/schemas
/packages/metacoin/src/contract_wrappers
/packages/metacoin/artifacts
/packages/sra-spec/public/
/packages/dev-tools-pages/ts/**/data.json
package.json
scripts/postpublish_utils.js
packages/sol-cov/test/fixtures/artifacts
packages/sol-coverage/test/fixtures/artifacts
.pytest_cache
.mypy_cache
.tox

View File

@@ -24,7 +24,10 @@ packages/metacoin/ @LogvinovLeon
packages/monorepo-scripts/ @fabioberger
packages/order-utils/ @fabioberger @LogvinovLeon
packages/sol-compiler/ @LogvinovLeon
packages/sol-cov/ @LogvinovLeon
packages/sol-coverage/ @LogvinovLeon
packages/sol-profiler/ @LogvinovLeon
packages/sol-trace/ @LogvinovLeon
packages/sol-tracing-utils/ @LogvinovLeon
packages/sol-resolver/ @LogvinovLeon
packages/subproviders/ @fabioberger @dekz
packages/verdaccio/ @albrow

View File

@@ -8,19 +8,19 @@ In the interest of fostering an open and welcoming environment, we as contributo
Examples of behavior that contributes to creating a positive environment include:
* Using welcoming and inclusive language
* Being respectful of differing viewpoints and experiences
* Gracefully accepting constructive criticism
* Focusing on what is best for the community
* Showing empathy towards other community members
- Using welcoming and inclusive language
- Being respectful of differing viewpoints and experiences
- Gracefully accepting constructive criticism
- Focusing on what is best for the community
- Showing empathy towards other community members
Examples of unacceptable behavior by participants include:
* The use of sexualized language or imagery and unwelcome sexual attention or advances
* Trolling, insulting/derogatory comments, and personal or political attacks
* Public or private harassment
* Publishing others' private information, such as a physical or electronic address, without explicit permission
* Other conduct which could reasonably be considered inappropriate in a professional setting
- The use of sexualized language or imagery and unwelcome sexual attention or advances
- Trolling, insulting/derogatory comments, and personal or political attacks
- Public or private harassment
- Publishing others' private information, such as a physical or electronic address, without explicit permission
- Other conduct which could reasonably be considered inappropriate in a professional setting
## Our Responsibilities

View File

@@ -12,26 +12,26 @@ We welcome contributions from anyone on the internet and are grateful for even t
Before removing the `[WIP]` tag and submitting the PR for review, make sure:
* It passes our linter checks (`yarn lint`)
* It is properly formatted with Prettier (`yarn prettier`)
* It passes our continuous integration tests (See: [Enabling code coverage checks on your fork](#enabling-code-coverage-checks-on-your-fork) for instructions on getting the `submit-coverage` test to pass on forks)
* You've created/updated the corresponding [CHANGELOG](#CHANGELOGs) entries.
* Your changes have sufficient test coverage (e.g regression tests have been added for bug fixes)
- It passes our linter checks (`yarn lint`)
- It is properly formatted with Prettier (`yarn prettier`)
- It passes our continuous integration tests (See: [Enabling code coverage checks on your fork](#enabling-code-coverage-checks-on-your-fork) for instructions on getting the `submit-coverage` test to pass on forks)
- You've created/updated the corresponding [CHANGELOG](#CHANGELOGs) entries.
- Your changes have sufficient test coverage (e.g regression tests have been added for bug fixes)
### Branch structure
We have two main branches:
* `master` represents the most recently released (published on npm) version of the codebase.
* `development` represents the current development state of the codebase.
- `master` represents the most recently released (published on npm) version of the codebase.
- `development` represents the current development state of the codebase.
ALL PRs should be opened against `development`.
Branch names should be prefixed with `fix`, `feature` or `refactor`.
* e.g `fix/broken-wiki-link`
* If the PR only edits a single package, add it's name too
* e.g `fix/website/broken-wiki-link`
- e.g `fix/broken-wiki-link`
- If the PR only edits a single package, add it's name too
- e.g `fix/website/broken-wiki-link`
### CHANGELOGs
@@ -67,8 +67,8 @@ If you want to change a rule, or add a custom rule, please make these changes to
Integrate it into your text editor:
* VSCode: [vscode-tslint](https://marketplace.visualstudio.com/items?itemName=eg2.tslint)
* Atom: [linter-tslint](https://atom.io/packages/linter-tslint)
- VSCode: [vscode-tslint](https://marketplace.visualstudio.com/items?itemName=eg2.tslint)
- Atom: [linter-tslint](https://atom.io/packages/linter-tslint)
#### Auto-formatter
@@ -76,10 +76,23 @@ We use [Prettier](https://prettier.io/) to auto-format our code. Be sure to eith
If using the Atom text editor, we recommend you install the following packages:
* VSCode: [prettier-vscode](https://marketplace.visualstudio.com/items?itemName=esbenp.prettier-vscode)
* Atom: [prettier-atom](https://atom.io/packages/prettier-atom)
- VSCode: [prettier-vscode](https://marketplace.visualstudio.com/items?itemName=esbenp.prettier-vscode)
- Atom: [prettier-atom](https://atom.io/packages/prettier-atom)
## Fix `submit-coverage` CI failure
## Unenforced coding conventions
A few of our coding conventions are not yet enforced by the linter/auto-formatter. Be careful to follow these conventions in your PR's.
1. Unused anonymous function parameters should be named with an underscore + number (e.g \_1, \_2, etc...)
1. There should be a new-line between methods in a class and between test cases.
1. If a string literal has the same value in two or more places, it should be a single constant referenced in both places.
1. Do not import from a project's `index.ts` (e.g import { Token } from '../src';). Always import from the source file itself.
1. Generic error variables should be named `err` instead of `e` or `error`.
1. If you _must_ cast a variable to any - try to type it back as fast as possible. (e.g., `const cw = ((zeroEx as any)._contractWrappers as ContractWrappers);`). This ensures subsequent code is type-safe.
1. Our enum conventions coincide with the recommended Typescript conventions, using capitalized keys, and all-caps snake-case values. Eg `GetStats = 'GET_STATS'`
1. All public, exported methods/functions/classes must have associated Javadoc-style comments.
### Fix `submit-coverage` CI failure
If you simply fork the repo and then create a PR from it, your PR will fail the `submit-coverage` check on CI. This is because the 0x CircleCI configuration sets the `COVERALLS_REPO_TOKEN` environment variable to the token for `0xProject/0x-monorepo`, but when running the check against your fork the token needs to match your repo's name `your-username/0x-monorepo`.

View File

@@ -20,7 +20,7 @@
<!--- The following points should be used to indicate the progress of your PR. Put an `x` in all the boxes that apply right now, and come back over time and check them off as you make progress. If you're unsure about any of these, don't hesitate to ask. We're here to help! -->
* [ ] Prefix PR title with `[WIP]` if necessary.
* [ ] Add tests to cover changes as needed.
* [ ] Update documentation as needed.
* [ ] Add new entries to the relevant CHANGELOG.jsons.
- [ ] Prefix PR title with `[WIP]` if necessary.
- [ ] Add tests to cover changes as needed.
- [ ] Update documentation as needed.
- [ ] Add new entries to the relevant CHANGELOG.jsons.

View File

@@ -1,4 +1,4 @@
<img src="https://github.com/0xProject/branding/blob/master/0x_Black_CMYK.png" width="200px" >
<img src="https://github.com/0xProject/branding/blob/master/0x%20Logo/PNG/0x-Logo-Black.png" width="150px" >
---
@@ -24,9 +24,28 @@ Visit our [developer portal](https://0xproject.com/docs/order-utils) for a compr
### Python Packages
| Package | Version | Description |
| --------------------------------------------------- | ----------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------- |
| [`0x-order-utils.py`](/python-packages/order_utils) | [![PyPI](https://img.shields.io/pypi/v/0x-order-utils.svg)](https://pypi.org/project/0x-order-utils/) | A set of utilities for generating, parsing, signing and validating 0x orders |
| Package | Version | Description |
| -------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- |
| [`0x-contract-addresses`](/python-packages/contract_addresses) | [![PyPI](https://img.shields.io/pypi/v/0x-contract-addresses.svg)](https://pypi.org/project/0x-contract-addresses/) | A tiny utility library for getting known deployed contract addresses for a particular network |
| [`0x-contract-artifacts`](/python-packages/contract_artifacts) | [![PyPI](https://img.shields.io/pypi/v/0x-contract-artifacts.svg)](https://pypi.org/project/0x-contract-artifacts/) | 0x smart contract compilation artifacts |
| [`0x-json-schemas`](/python-packages/json_schemas) | [![PyPI](https://img.shields.io/pypi/v/0x-json-schemas.svg)](https://pypi.org/project/0x-json-schemas/) | 0x-related JSON schemas |
| [`0x-order-utils`](/python-packages/order_utils) | [![PyPI](https://img.shields.io/pypi/v/0x-order-utils.svg)](https://pypi.org/project/0x-order-utils/) | A set of utilities for generating, parsing, signing and validating 0x orders |
| [`0x-sra-client`](/python-packages/sra_client) | [![PyPI](https://img.shields.io/pypi/v/0x-sra-client.svg)](https://pypi.org/project/0x-sra-client/) | A Python client for interacting with servers conforming to the Standard Relayer API specification |
### Solidity Packages
| Package | Version | Description |
| ------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [`@0x/contracts-asset-proxy`](/contracts/asset-proxy) | [![npm](https://img.shields.io/npm/v/@0x/contracts-asset-proxy.svg)](https://www.npmjs.com/package/@0x/contracts-asset-proxy) | [`AssetProxy`](https://github.com/0xProject/0x-protocol-specification/blob/master/v2/v2-specification.md#assetproxy) contracts used within the protocol |
| [`@0x/contracts-erc20`](/contracts/erc20) | [![npm](https://img.shields.io/npm/v/@0x/contracts-erc20.svg)](https://www.npmjs.com/package/@0x/contracts-erc20) | Implementations of various ERC20 tokens |
| [`@0x/contracts-erc721`](/contracts/erc721) | [![npm](https://img.shields.io/npm/v/@0x/contracts-erc721.svg)](https://www.npmjs.com/package/@0x/contracts-erc721) | Implementations of various ERC721 tokens |
| [`@0x/contracts-exchange`](/contracts/exchange) | [![npm](https://img.shields.io/npm/v/@0x/contracts-exchange.svg)](https://www.npmjs.com/package/@0x/contracts-exchange) | The [`Exchange`](https://github.com/0xProject/0x-protocol-specification/blob/master/v2/v2-specification.md#exchange) contract used for settling trades within the protocol |
| [`@0x/contracts-exchange-forwarder`](/contracts/exchange-forwarder) | [![npm](https://img.shields.io/npm/v/@0x/contracts-exchange-forwarder.svg)](https://www.npmjs.com/package/@0x/contracts-exchange-forwarder) | A [`Forwarder`](https://github.com/0xProject/0x-protocol-specification/blob/master/v2/forwarder-specification.md) contract used to simplify UX for interacting with the protocol |
| [`@0x/contracts-exchange-libs`](/contracts/exchange-libs) | [![npm](https://img.shields.io/npm/v/@0x/contracts-exchange-libs.svg)](https://www.npmjs.com/package/@0x/contracts-exchange-libs) | Protocol specific Llbraries used within the [`Exchange`](https://github.com/0xProject/0x-protocol-specification/blob/master/v2/v2-specification.md#exchange) contract |
| [`@0x/contracts-extensions`](/contracts/extensions) | [![npm](https://img.shields.io/npm/v/@0x/contracts-extensions.svg)](https://www.npmjs.com/package/@0x/contracts-extensions) | Contracts that interact with and extend the functionality of the core protocol |
| [`@0x/contracts-multisig`](/contracts/multisig) | [![npm](https://img.shields.io/npm/v/@0x/contracts-multisig.svg)](https://www.npmjs.com/package/@0x/contracts-multisig) | Various implementations of multisignature wallets, including the [`AssetProxyOwner`](https://github.com/0xProject/0x-protocol-specification/blob/master/v2/v2-specification.md#assetproxyowner) contract that has permissions to upgrade the protocol |
| [`@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 |
### Typescript/Javascript Packages
@@ -53,7 +72,9 @@ Visit our [developer portal](https://0xproject.com/docs/order-utils) for a compr
| -------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [`@0x/web3-wrapper`](/packages/web3-wrapper) | [![npm](https://img.shields.io/npm/v/@0x/web3-wrapper.svg)](https://www.npmjs.com/package/@0x/web3-wrapper) | An Ethereum JSON RPC client |
| [`@0x/sol-compiler`](/packages/sol-compiler) | [![npm](https://img.shields.io/npm/v/@0x/sol-compiler.svg)](https://www.npmjs.com/package/@0x/sol-compiler) | A wrapper around solc-js that adds smart re-compilation, ability to compile an entire project, Solidity version specific compilation, standard input description support and much more. |
| [`@0x/sol-cov`](/packages/sol-cov) | [![npm](https://img.shields.io/npm/v/@0x/sol-cov.svg)](https://www.npmjs.com/package/@0x/sol-cov) | A solidity test coverage tool |
| [`@0x/sol-coverage`](/packages/sol-coverage) | [![npm](https://img.shields.io/npm/v/@0x/sol-coverage.svg)](https://www.npmjs.com/package/@0x/sol-coverage) | A solidity test coverage tool |
| [`@0x/sol-profiler`](/packages/sol-profiler) | [![npm](https://img.shields.io/npm/v/@0x/sol-profiler.svg)](https://www.npmjs.com/package/@0x/sol-profiler) | A solidity gas cost profiler |
| [`@0x/sol-trace`](/packages/sol-trace) | [![npm](https://img.shields.io/npm/v/@0x/sol-trace.svg)](https://www.npmjs.com/package/@0x/sol-trace) | A solidity stack trace tool |
| [`@0x/sol-resolver`](/packages/sol-resolver) | [![npm](https://img.shields.io/npm/v/@0x/sol-resolver.svg)](https://www.npmjs.com/package/@0x/sol-resolver) | Import resolver for smart contracts dependencies |
| [`@0x/subproviders`](/packages/subproviders) | [![npm](https://img.shields.io/npm/v/@0x/subproviders.svg)](https://www.npmjs.com/package/@0x/subproviders) | Web3 provider middlewares (e.g. LedgerSubprovider) |
| [`@0x/sol-doc`](/packages/sol-doc) | [![npm](https://img.shields.io/npm/v/@0x/sol-doc.svg)](https://www.npmjs.com/package/@0x/sol-doc) | Solidity documentation generator |
@@ -78,7 +99,6 @@ Visit our [developer portal](https://0xproject.com/docs/order-utils) for a compr
| Package | Description |
| -------------------------------------------------- | -------------------------------------------------------------------------------- |
| [`@0x/contracts`](/contracts/core) | 0x protocol solidity smart contracts & tests |
| [`@0x/instant`](/packages/instant) | A free and flexible way to offer simple crypto purchasing in any app or website. |
| [`@0x/testnet-faucets`](/packages/testnet-faucets) | A faucet micro-service that dispenses test ERC20 tokens or Ether |
| [`@0x/website`](/packages/website) | 0x website |
@@ -128,6 +148,12 @@ To build a specific package:
PKG=@0x/web3-wrapper yarn build
```
To build all contracts packages:
```bash
yarn build:contracts
```
### Watch
To re-build all packages on change:
@@ -200,3 +226,9 @@ Run a specific package's test:
```bash
PKG=@0x/web3-wrapper yarn test
```
Run all contracts packages tests:
```bash
yarn test:contracts
```

View File

@@ -5,6 +5,7 @@
"avoid-tx-origin": "warn",
"bracket-align": false,
"code-complexity": false,
"compiler-fixed": false,
"const-name-snakecase": "error",
"expression-indent": "error",
"function-max-lines": false,

View File

@@ -20,7 +20,7 @@ TEST_PROVIDER=geth yarn test
## Code coverage
In order to see the Solidity code coverage output generated by `@0x/sol-cov`, run:
In order to see the Solidity code coverage output generated by `@0x/sol-coverage`, run:
```
yarn test:coverage

View File

@@ -0,0 +1,47 @@
[
{
"version": "1.0.4",
"changes": [
{
"note": "Dependencies updated"
}
],
"timestamp": 1549547375
},
{
"version": "1.0.3",
"changes": [
{
"note": "Fake publish to enable pinning"
}
],
"timestamp": 1549504360
},
{
"timestamp": 1549452781,
"version": "1.0.2",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1549373905,
"version": "1.0.1",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"version": "1.0.0",
"changes": [
{
"note": "Move all AssetProxy contracts out of contracts-protocol to new package",
"pr": 1539
}
]
}
]

View File

@@ -0,0 +1,26 @@
<!--
changelogUtils.file is auto-generated using the monorepo-scripts package. Don't edit directly.
Edit the package's CHANGELOG.json file only.
-->
CHANGELOG
## v1.0.4 - _February 7, 2019_
* Dependencies updated
## v1.0.3 - _February 7, 2019_
* Fake publish to enable pinning
## v1.0.2 - _February 6, 2019_
* Dependencies updated
## v1.0.1 - _February 5, 2019_
* Dependencies updated
## v1.0.0 - _Invalid date_
* Move all AssetProxy contracts out of contracts-protocol to new package (#1539)

View File

@@ -0,0 +1,47 @@
[
{
"name": "MultiAssetProxy",
"version": "1.0.0",
"changes": [
{
"note": "Add MultiAssetProxy implementation",
"pr": 1224,
"networks": {
"3": "0xab8fbd189c569ccdee3a4d929bb7f557be4028f6",
"4": "0xb34cde0ad3a83d04abebc0b66e75196f22216621",
"42": "0xf6313a772c222f51c28f2304c0703b8cf5428fd8"
}
}
]
},
{
"name": "ERC20Proxy",
"version": "1.0.0",
"changes": [
{
"note": "protocol v2 deploy",
"networks": {
"1": "0x2240dab907db71e64d3e0dba4800c83b5c502d4e",
"3": "0xb1408f4c245a23c31b98d2c626777d4c0d766caa",
"4": "0x3e809c563c15a295e832e37053798ddc8d6c8dab",
"42": "0xf1ec01d6236d3cd881a0bf0130ea25fe4234003e"
}
}
]
},
{
"name": "ERC721Proxy",
"version": "1.0.0",
"changes": [
{
"note": "protocol v2 deploy",
"networks": {
"1": "0x208e41fb445f1bb1b6780d58356e81405f3e6127",
"3": "0xe654aac058bfbf9f83fcaee7793311dd82f6ddb4",
"4": "0x8e1ff02637cb5e39f2fa36c14706aa348b065b09",
"42": "0x2a9127c745688a165106c11cd4d647d2220af821"
}
}
]
}
]

View File

@@ -1,15 +1,14 @@
## Contracts
## AssetProxy
Smart contracts that implement the 0x protocol. Addresses of the deployed contracts can be found in the 0x [wiki](https://0xproject.com/wiki#Deployed-Addresses) or the [CHANGELOG](./CHANGELOG.json) of this package.
This package contains the implementations of all of the [`AssetProxy`](https://github.com/0xProject/0x-protocol-specification/blob/master/v2/v2-specification.md#assetproxy) contracts available within the 0x protocol. These contracts are responsible for decoding the `assetData` sent to them and performing the actual transfer of assets. 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.
## Usage
## Installation
Contracts that make up and interact with version 2.0.0 of the protocol can be found in the [contracts](./contracts) directory. The contents of this directory are broken down into the following subdirectories:
**Install**
* [protocol](./contracts/protocol)
* This directory contains the contracts that make up version 2.0.0. A full specification can be found [here](https://github.com/0xProject/0x-protocol-specification/blob/master/v2/v2-specification.md).
* [test](./contracts/test)
* This directory contains mocks and other contracts that are used solely for testing contracts within the other directories.
```bash
npm install @0x/contracts-asset-proxy --save
```
## Bug bounty
@@ -42,13 +41,13 @@ yarn install
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-protocol yarn build
PKG=@0x/contracts-asset-proxy yarn build
```
Or continuously rebuild on change:
```bash
PKG=@0x/contracts-protocol yarn watch
PKG=@0x/contracts-asset-proxy yarn watch
```
### Clean

View File

@@ -0,0 +1,33 @@
{
"artifactsDir": "./generated-artifacts",
"contractsDir": "./contracts",
"useDockerisedSolc": true,
"compilerSettings": {
"optimizer": { "enabled": true, "runs": 1000000 },
"outputSelection": {
"*": {
"*": [
"abi",
"evm.bytecode.object",
"evm.bytecode.sourceMap",
"evm.deployedBytecode.object",
"evm.deployedBytecode.sourceMap"
]
}
}
},
"contracts": [
"@0x/contracts-erc20/contracts/test/DummyERC20Token.sol",
"@0x/contracts-erc20/contracts/test/DummyMultipleReturnERC20Token.sol",
"@0x/contracts-erc20/contracts/test/DummyNoReturnERC20Token.sol",
"@0x/contracts-erc721/contracts/test/DummyERC721Receiver.sol",
"@0x/contracts-erc721/contracts/test/DummyERC721Token.sol",
"src/ERC20Proxy.sol",
"src/ERC721Proxy.sol",
"src/MixinAuthorizable.sol",
"src/MultiAssetProxy.sol",
"src/interfaces/IAssetData.sol",
"src/interfaces/IAssetProxy.sol",
"src/interfaces/IAuthorizable.sol"
]
}

View File

@@ -16,11 +16,11 @@
*/
pragma solidity 0.4.24;
pragma solidity ^0.4.24;
import "@0x/contracts-utils/contracts/utils/Ownable/Ownable.sol";
import "@0x/contracts-utils/contracts/src/Ownable.sol";
import "./mixins/MAssetProxyDispatcher.sol";
import "@0x/contracts-interfaces/contracts/protocol/AssetProxy/IAssetProxy.sol";
import "./interfaces/IAssetProxy.sol";
contract MixinAssetProxyDispatcher is

View File

@@ -16,9 +16,9 @@
*/
pragma solidity 0.4.24;
pragma solidity ^0.4.24;
import "@0x/contracts-utils/contracts/utils/Ownable/Ownable.sol";
import "@0x/contracts-utils/contracts/src/Ownable.sol";
import "./mixins/MAuthorizable.sol";

View File

@@ -18,7 +18,7 @@
pragma solidity 0.4.24;
import "../Exchange/MixinAssetProxyDispatcher.sol";
import "./MixinAssetProxyDispatcher.sol";
import "./MixinAuthorizable.sol";
@@ -33,6 +33,9 @@ contract MultiAssetProxy is
function ()
external
{
// NOTE: The below assembly assumes that clients do some input validation and that the input is properly encoded according to the AbiV2 specification.
// It is technically possible for inputs with very large lengths and offsets to cause overflows. However, this would make the calldata prohibitively
// expensive and we therefore do not check for overflows in these scenarios.
assembly {
// The first 4 bytes of calldata holds the function selector
let selector := and(calldataload(0), 0xffffffff00000000000000000000000000000000000000000000000000000000)
@@ -145,7 +148,7 @@ contract MultiAssetProxy is
let nestedAssetDataLen := calldataload(sub(nestedAssetDataContentsStart, 32))
// Revert if number of elements in `amounts` differs from number of elements in `nestedAssetData`
if iszero(eq(amountsLen, nestedAssetDataLen)) {
if sub(amountsLen, nestedAssetDataLen) {
// Revert with `Error("LENGTH_MISMATCH")`
mstore(0, 0x08c379a000000000000000000000000000000000000000000000000000000000)
mstore(32, 0x0000002000000000000000000000000000000000000000000000000000000000)
@@ -181,8 +184,11 @@ contract MultiAssetProxy is
let amountsElement := calldataload(add(amountsContentsStart, i))
let totalAmount := mul(amountsElement, amount)
// Revert if multiplication resulted in an overflow
if iszero(eq(div(totalAmount, amount), amountsElement)) {
// Revert if `amount` != 0 and multiplication resulted in an overflow
if iszero(or(
iszero(amount),
eq(div(totalAmount, amount), amountsElement)
)) {
// Revert with `Error("UINT256_OVERFLOW")`
mstore(0, 0x08c379a000000000000000000000000000000000000000000000000000000000)
mstore(32, 0x0000002000000000000000000000000000000000000000000000000000000000)
@@ -230,7 +236,7 @@ contract MultiAssetProxy is
// Only load `assetProxy` if `currentAssetProxyId` does not equal `assetProxyId`
// We do not need to check if `currentAssetProxyId` is 0 since `assetProxy` is also initialized to 0
if iszero(eq(currentAssetProxyId, assetProxyId)) {
if sub(currentAssetProxyId, assetProxyId) {
// Update `assetProxyId`
assetProxyId := currentAssetProxyId
// To lookup a value in a mapping, we load from the storage location keccak256(k, p),

View File

@@ -17,7 +17,7 @@
*/
// solhint-disable
pragma solidity 0.4.24;
pragma solidity ^0.4.24;
pragma experimental ABIEncoderV2;

View File

@@ -16,7 +16,7 @@
*/
pragma solidity 0.4.24;
pragma solidity ^0.4.24;
import "./IAuthorizable.sol";

View File

@@ -16,7 +16,7 @@
*/
pragma solidity 0.4.24;
pragma solidity ^0.4.24;
contract IAssetProxyDispatcher {

View File

@@ -16,9 +16,9 @@
*/
pragma solidity 0.4.24;
pragma solidity ^0.4.24;
import "@0x/contracts-utils/contracts/utils/Ownable/IOwnable.sol";
import "@0x/contracts-utils/contracts/src/interfaces/IOwnable.sol";
contract IAuthorizable is

View File

@@ -16,9 +16,9 @@
*/
pragma solidity 0.4.24;
pragma solidity ^0.4.24;
import "@0x/contracts-interfaces/contracts/protocol/Exchange/IAssetProxyDispatcher.sol";
import "../interfaces/IAssetProxyDispatcher.sol";
contract MAssetProxyDispatcher is

View File

@@ -16,9 +16,9 @@
*/
pragma solidity 0.4.24;
pragma solidity ^0.4.24;
import "@0x/contracts-interfaces/contracts/protocol/AssetProxy/IAuthorizable.sol";
import "../interfaces/IAuthorizable.sol";
contract MAuthorizable is

View File

@@ -0,0 +1,85 @@
{
"name": "@0x/contracts-asset-proxy",
"version": "1.0.4",
"engines": {
"node": ">=6.12"
},
"description": "Smart contract components 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",
"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/@(DummyERC20Token|DummyERC721Receiver|DummyERC721Token|DummyMultipleReturnERC20Token|DummyNoReturnERC20Token|ERC20Proxy|ERC721Proxy|IAssetData|IAssetProxy|IAuthorizable|MixinAuthorizable|MultiAssetProxy).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/protocol/README.md",
"devDependencies": {
"@0x/abi-gen": "^2.0.2",
"@0x/contracts-gen": "^1.0.1",
"@0x/dev-utils": "^2.0.2",
"@0x/sol-compiler": "^3.0.2",
"@0x/tslint-config": "^3.0.0",
"@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": "^4.0.2",
"@0x/contracts-erc20": "1.0.2",
"@0x/contracts-erc721": "1.0.2",
"@0x/contracts-test-utils": "^3.0.3",
"@0x/contracts-utils": "2.0.1",
"@0x/order-utils": "^6.0.1",
"@0x/types": "^2.0.2",
"@0x/typescript-typings": "^4.0.0",
"@0x/utils": "^4.0.3",
"@0x/web3-wrapper": "^4.0.2",
"ethereum-types": "^2.0.0",
"lodash": "^4.17.11"
},
"publishConfig": {
"access": "public"
}
}

View File

@@ -0,0 +1,33 @@
/*
* -----------------------------------------------------------------------------
* Warning: This file is auto-generated by contracts-gen. Don't edit manually.
* -----------------------------------------------------------------------------
*/
import { ContractArtifact } from 'ethereum-types';
import * as DummyERC20Token from '../generated-artifacts/DummyERC20Token.json';
import * as DummyERC721Receiver from '../generated-artifacts/DummyERC721Receiver.json';
import * as DummyERC721Token from '../generated-artifacts/DummyERC721Token.json';
import * as DummyMultipleReturnERC20Token from '../generated-artifacts/DummyMultipleReturnERC20Token.json';
import * as DummyNoReturnERC20Token from '../generated-artifacts/DummyNoReturnERC20Token.json';
import * as ERC20Proxy from '../generated-artifacts/ERC20Proxy.json';
import * as ERC721Proxy from '../generated-artifacts/ERC721Proxy.json';
import * as IAssetData from '../generated-artifacts/IAssetData.json';
import * as IAssetProxy from '../generated-artifacts/IAssetProxy.json';
import * as IAuthorizable from '../generated-artifacts/IAuthorizable.json';
import * as MixinAuthorizable from '../generated-artifacts/MixinAuthorizable.json';
import * as MultiAssetProxy from '../generated-artifacts/MultiAssetProxy.json';
export const artifacts = {
DummyERC20Token: DummyERC20Token as ContractArtifact,
DummyMultipleReturnERC20Token: DummyMultipleReturnERC20Token as ContractArtifact,
DummyNoReturnERC20Token: DummyNoReturnERC20Token as ContractArtifact,
DummyERC721Receiver: DummyERC721Receiver as ContractArtifact,
DummyERC721Token: DummyERC721Token as ContractArtifact,
ERC20Proxy: ERC20Proxy as ContractArtifact,
ERC721Proxy: ERC721Proxy as ContractArtifact,
MixinAuthorizable: MixinAuthorizable as ContractArtifact,
MultiAssetProxy: MultiAssetProxy as ContractArtifact,
IAssetData: IAssetData as ContractArtifact,
IAssetProxy: IAssetProxy as ContractArtifact,
IAuthorizable: IAuthorizable as ContractArtifact,
};

View File

@@ -0,0 +1,17 @@
/*
* -----------------------------------------------------------------------------
* Warning: This file is auto-generated by contracts-gen. Don't edit manually.
* -----------------------------------------------------------------------------
*/
export * from '../generated-wrappers/dummy_erc20_token';
export * from '../generated-wrappers/dummy_erc721_receiver';
export * from '../generated-wrappers/dummy_erc721_token';
export * from '../generated-wrappers/dummy_multiple_return_erc20_token';
export * from '../generated-wrappers/dummy_no_return_erc20_token';
export * from '../generated-wrappers/erc20_proxy';
export * from '../generated-wrappers/erc721_proxy';
export * from '../generated-wrappers/i_asset_data';
export * from '../generated-wrappers/i_asset_proxy';
export * from '../generated-wrappers/i_authorizable';
export * from '../generated-wrappers/mixin_authorizable';
export * from '../generated-wrappers/multi_asset_proxy';

View File

@@ -12,8 +12,7 @@ import { BigNumber } from '@0x/utils';
import * as chai from 'chai';
import * as _ from 'lodash';
import { MixinAuthorizableContract } from '../../generated-wrappers/mixin_authorizable';
import { artifacts } from '../../src/artifacts';
import { artifacts, MixinAuthorizableContract } from '../src';
chaiSetup.configure();
const expect = chai.expect;

View File

@@ -1,4 +1,3 @@
import { artifacts as interfacesArtifacts, IAssetDataContract, IAssetProxyContract } from '@0x/contracts-interfaces';
import {
chaiSetup,
constants,
@@ -9,38 +8,41 @@ import {
txDefaults,
web3Wrapper,
} from '@0x/contracts-test-utils';
import {
artifacts as tokensArtifacts,
DummyERC20TokenContract,
DummyERC721ReceiverContract,
DummyERC721TokenContract,
DummyMultipleReturnERC20TokenContract,
DummyNoReturnERC20TokenContract,
} from '@0x/contracts-tokens';
import { BlockchainLifecycle } from '@0x/dev-utils';
import { assetDataUtils } from '@0x/order-utils';
import { RevertReason } from '@0x/types';
import { BigNumber } from '@0x/utils';
import * as chai from 'chai';
import { LogWithDecodedArgs } from 'ethereum-types';
import * as _ from 'lodash';
import { ERC20ProxyContract } from '../../generated-wrappers/erc20_proxy';
import { ERC721ProxyContract } from '../../generated-wrappers/erc721_proxy';
import { MultiAssetProxyContract } from '../../generated-wrappers/multi_asset_proxy';
import { artifacts } from '../../src/artifacts';
import { ERC20Wrapper } from '../utils/erc20_wrapper';
import { ERC721Wrapper } from '../utils/erc721_wrapper';
import {
artifacts,
DummyERC20TokenContract,
DummyERC20TokenTransferEventArgs,
DummyERC721ReceiverContract,
DummyERC721TokenContract,
DummyMultipleReturnERC20TokenContract,
DummyNoReturnERC20TokenContract,
ERC20ProxyContract,
ERC20Wrapper,
ERC721ProxyContract,
ERC721Wrapper,
IAssetDataContract,
IAssetProxyContract,
MultiAssetProxyContract,
} from '../src';
chaiSetup.configure();
const expect = chai.expect;
const blockchainLifecycle = new BlockchainLifecycle(web3Wrapper);
const assetProxyInterface = new IAssetProxyContract(
interfacesArtifacts.IAssetProxy.compilerOutput.abi,
artifacts.IAssetProxy.compilerOutput.abi,
constants.NULL_ADDRESS,
provider,
);
const assetDataInterface = new IAssetDataContract(
interfacesArtifacts.IAssetData.compilerOutput.abi,
artifacts.IAssetData.compilerOutput.abi,
constants.NULL_ADDRESS,
provider,
);
@@ -146,7 +148,7 @@ describe('Asset Transfer Proxies', () => {
constants.DUMMY_TOKEN_DECIMALS,
);
noReturnErc20Token = await DummyNoReturnERC20TokenContract.deployFrom0xArtifactAsync(
tokensArtifacts.DummyNoReturnERC20Token,
artifacts.DummyNoReturnERC20Token,
provider,
txDefaults,
constants.DUMMY_TOKEN_NAME,
@@ -155,7 +157,7 @@ describe('Asset Transfer Proxies', () => {
constants.DUMMY_TOKEN_TOTAL_SUPPLY,
);
multipleReturnErc20Token = await DummyMultipleReturnERC20TokenContract.deployFrom0xArtifactAsync(
tokensArtifacts.DummyMultipleReturnERC20Token,
artifacts.DummyMultipleReturnERC20Token,
provider,
txDefaults,
constants.DUMMY_TOKEN_NAME,
@@ -196,7 +198,7 @@ describe('Asset Transfer Proxies', () => {
// Deploy and configure ERC721 tokens and receiver
[erc721TokenA, erc721TokenB] = await erc721Wrapper.deployDummyTokensAsync();
erc721Receiver = await DummyERC721ReceiverContract.deployFrom0xArtifactAsync(
tokensArtifacts.DummyERC721Receiver,
artifacts.DummyERC721Receiver,
provider,
txDefaults,
);
@@ -257,7 +259,7 @@ describe('Asset Transfer Proxies', () => {
erc20Balances[fromAddress][erc20TokenA.address].minus(amount),
);
expect(newBalances[toAddress][erc20TokenA.address]).to.be.bignumber.equal(
erc20Balances[toAddress][erc20TokenA.address].add(amount),
erc20Balances[toAddress][erc20TokenA.address].plus(amount),
);
});
@@ -316,7 +318,7 @@ describe('Asset Transfer Proxies', () => {
erc20Balances[fromAddress][erc20TokenA.address].minus(amount),
);
expect(newBalances[toAddress][erc20TokenA.address]).to.be.bignumber.equal(
erc20Balances[toAddress][erc20TokenA.address].add(amount),
erc20Balances[toAddress][erc20TokenA.address].plus(amount),
);
});
@@ -560,7 +562,7 @@ describe('Asset Transfer Proxies', () => {
erc721Receiver.address,
amount,
);
const logDecoder = new LogDecoder(web3Wrapper, { ...artifacts, ...tokensArtifacts });
const logDecoder = new LogDecoder(web3Wrapper, artifacts);
const tx = await logDecoder.getTxWithDecodedLogsAsync(
await web3Wrapper.sendTransactionAsync({
to: erc721Proxy.address,
@@ -713,7 +715,7 @@ describe('Asset Transfer Proxies', () => {
const erc20AssetData = assetDataUtils.encodeERC20AssetData(erc20TokenA.address);
const amounts = [erc20Amount];
const nestedAssetData = [erc20AssetData];
const assetData = assetDataInterface.MultiAsset.getABIEncodedTransactionData(amounts, nestedAssetData);
const assetData = assetDataUtils.encodeMultiAssetData(amounts, nestedAssetData);
const data = assetProxyInterface.transferFrom.getABIEncodedTransactionData(
assetData,
fromAddress,
@@ -735,9 +737,39 @@ describe('Asset Transfer Proxies', () => {
erc20Balances[fromAddress][erc20TokenA.address].minus(totalAmount),
);
expect(newBalances[toAddress][erc20TokenA.address]).to.be.bignumber.equal(
erc20Balances[toAddress][erc20TokenA.address].add(totalAmount),
erc20Balances[toAddress][erc20TokenA.address].plus(totalAmount),
);
});
it('should dispatch an ERC20 transfer when input amount is 0', async () => {
const inputAmount = constants.ZERO_AMOUNT;
const erc20Amount = new BigNumber(10);
const erc20AssetData = assetDataUtils.encodeERC20AssetData(erc20TokenA.address);
const amounts = [erc20Amount];
const nestedAssetData = [erc20AssetData];
const assetData = assetDataInterface.MultiAsset.getABIEncodedTransactionData(amounts, nestedAssetData);
const data = assetProxyInterface.transferFrom.getABIEncodedTransactionData(
assetData,
fromAddress,
toAddress,
inputAmount,
);
const erc20Balances = await erc20Wrapper.getBalancesAsync();
const logDecoder = new LogDecoder(web3Wrapper, artifacts);
const tx = await logDecoder.getTxWithDecodedLogsAsync(
await web3Wrapper.sendTransactionAsync({
to: multiAssetProxy.address,
data,
from: authorized,
}),
);
expect(tx.logs.length).to.be.equal(1);
const log = tx.logs[0] as LogWithDecodedArgs<DummyERC20TokenTransferEventArgs>;
const transferEventName = 'Transfer';
expect(log.event).to.equal(transferEventName);
expect(log.args._value).to.be.bignumber.equal(constants.ZERO_AMOUNT);
const newBalances = await erc20Wrapper.getBalancesAsync();
expect(newBalances).to.deep.equal(erc20Balances);
});
it('should successfully transfer multiple of the same ERC20 token', async () => {
const inputAmount = new BigNumber(1);
const erc20Amount1 = new BigNumber(10);
@@ -746,7 +778,7 @@ describe('Asset Transfer Proxies', () => {
const erc20AssetData2 = assetDataUtils.encodeERC20AssetData(erc20TokenA.address);
const amounts = [erc20Amount1, erc20Amount2];
const nestedAssetData = [erc20AssetData1, erc20AssetData2];
const assetData = assetDataInterface.MultiAsset.getABIEncodedTransactionData(amounts, nestedAssetData);
const assetData = assetDataUtils.encodeMultiAssetData(amounts, nestedAssetData);
const data = assetProxyInterface.transferFrom.getABIEncodedTransactionData(
assetData,
fromAddress,
@@ -768,7 +800,7 @@ describe('Asset Transfer Proxies', () => {
erc20Balances[fromAddress][erc20TokenA.address].minus(totalAmount),
);
expect(newBalances[toAddress][erc20TokenA.address]).to.be.bignumber.equal(
erc20Balances[toAddress][erc20TokenA.address].add(totalAmount),
erc20Balances[toAddress][erc20TokenA.address].plus(totalAmount),
);
});
it('should successfully transfer multiple different ERC20 tokens', async () => {
@@ -779,7 +811,7 @@ describe('Asset Transfer Proxies', () => {
const erc20AssetData2 = assetDataUtils.encodeERC20AssetData(erc20TokenB.address);
const amounts = [erc20Amount1, erc20Amount2];
const nestedAssetData = [erc20AssetData1, erc20AssetData2];
const assetData = assetDataInterface.MultiAsset.getABIEncodedTransactionData(amounts, nestedAssetData);
const assetData = assetDataUtils.encodeMultiAssetData(amounts, nestedAssetData);
const data = assetProxyInterface.transferFrom.getABIEncodedTransactionData(
assetData,
fromAddress,
@@ -802,13 +834,13 @@ describe('Asset Transfer Proxies', () => {
erc20Balances[fromAddress][erc20TokenA.address].minus(totalErc20AAmount),
);
expect(newBalances[toAddress][erc20TokenA.address]).to.be.bignumber.equal(
erc20Balances[toAddress][erc20TokenA.address].add(totalErc20AAmount),
erc20Balances[toAddress][erc20TokenA.address].plus(totalErc20AAmount),
);
expect(newBalances[fromAddress][erc20TokenB.address]).to.be.bignumber.equal(
erc20Balances[fromAddress][erc20TokenB.address].minus(totalErc20BAmount),
);
expect(newBalances[toAddress][erc20TokenB.address]).to.be.bignumber.equal(
erc20Balances[toAddress][erc20TokenB.address].add(totalErc20BAmount),
erc20Balances[toAddress][erc20TokenB.address].plus(totalErc20BAmount),
);
});
it('should transfer a single ERC721 token', async () => {
@@ -817,7 +849,7 @@ describe('Asset Transfer Proxies', () => {
const erc721AssetData = assetDataUtils.encodeERC721AssetData(erc721TokenA.address, erc721AFromTokenId);
const amounts = [erc721Amount];
const nestedAssetData = [erc721AssetData];
const assetData = assetDataInterface.MultiAsset.getABIEncodedTransactionData(amounts, nestedAssetData);
const assetData = assetDataUtils.encodeMultiAssetData(amounts, nestedAssetData);
const data = assetProxyInterface.transferFrom.getABIEncodedTransactionData(
assetData,
fromAddress,
@@ -849,7 +881,7 @@ describe('Asset Transfer Proxies', () => {
const erc721Amount = new BigNumber(1);
const amounts = [erc721Amount, erc721Amount];
const nestedAssetData = [erc721AssetData1, erc721AssetData2];
const assetData = assetDataInterface.MultiAsset.getABIEncodedTransactionData(amounts, nestedAssetData);
const assetData = assetDataUtils.encodeMultiAssetData(amounts, nestedAssetData);
const data = assetProxyInterface.transferFrom.getABIEncodedTransactionData(
assetData,
fromAddress,
@@ -881,7 +913,7 @@ describe('Asset Transfer Proxies', () => {
const erc721Amount = new BigNumber(1);
const amounts = [erc721Amount, erc721Amount];
const nestedAssetData = [erc721AssetData1, erc721AssetData2];
const assetData = assetDataInterface.MultiAsset.getABIEncodedTransactionData(amounts, nestedAssetData);
const assetData = assetDataUtils.encodeMultiAssetData(amounts, nestedAssetData);
const data = assetProxyInterface.transferFrom.getABIEncodedTransactionData(
assetData,
fromAddress,
@@ -914,7 +946,7 @@ describe('Asset Transfer Proxies', () => {
const erc721AssetData = assetDataUtils.encodeERC721AssetData(erc721TokenA.address, erc721AFromTokenId);
const amounts = [erc20Amount, erc721Amount];
const nestedAssetData = [erc20AssetData, erc721AssetData];
const assetData = assetDataInterface.MultiAsset.getABIEncodedTransactionData(amounts, nestedAssetData);
const assetData = assetDataUtils.encodeMultiAssetData(amounts, nestedAssetData);
const data = assetProxyInterface.transferFrom.getABIEncodedTransactionData(
assetData,
fromAddress,
@@ -938,7 +970,7 @@ describe('Asset Transfer Proxies', () => {
erc20Balances[fromAddress][erc20TokenA.address].minus(totalAmount),
);
expect(newBalances[toAddress][erc20TokenA.address]).to.be.bignumber.equal(
erc20Balances[toAddress][erc20TokenA.address].add(totalAmount),
erc20Balances[toAddress][erc20TokenA.address].plus(totalAmount),
);
const newOwnerFromAsset = await erc721TokenA.ownerOf.callAsync(erc721AFromTokenId);
expect(newOwnerFromAsset).to.be.equal(toAddress);
@@ -952,10 +984,7 @@ describe('Asset Transfer Proxies', () => {
const amounts = [erc20Amount, erc721Amount];
const nestedAssetData = [erc20AssetData, erc721AssetData];
const extraData = '0102030405060708';
const assetData = `${assetDataInterface.MultiAsset.getABIEncodedTransactionData(
amounts,
nestedAssetData,
)}${extraData}`;
const assetData = `${assetDataUtils.encodeMultiAssetData(amounts, nestedAssetData)}${extraData}`;
const data = assetProxyInterface.transferFrom.getABIEncodedTransactionData(
assetData,
fromAddress,
@@ -979,7 +1008,7 @@ describe('Asset Transfer Proxies', () => {
erc20Balances[fromAddress][erc20TokenA.address].minus(totalAmount),
);
expect(newBalances[toAddress][erc20TokenA.address]).to.be.bignumber.equal(
erc20Balances[toAddress][erc20TokenA.address].add(totalAmount),
erc20Balances[toAddress][erc20TokenA.address].plus(totalAmount),
);
const newOwnerFromAsset = await erc721TokenA.ownerOf.callAsync(erc721AFromTokenId);
expect(newOwnerFromAsset).to.be.equal(toAddress);
@@ -992,7 +1021,7 @@ describe('Asset Transfer Proxies', () => {
const erc20AssetData2 = assetDataUtils.encodeERC20AssetData(erc20TokenB.address);
const amounts = [erc20Amount1, erc20Amount2];
const nestedAssetData = [erc20AssetData1, erc20AssetData2];
const assetData = assetDataInterface.MultiAsset.getABIEncodedTransactionData(amounts, nestedAssetData);
const assetData = assetDataUtils.encodeMultiAssetData(amounts, nestedAssetData);
const data = assetProxyInterface.transferFrom.getABIEncodedTransactionData(
assetData,
fromAddress,
@@ -1015,13 +1044,13 @@ describe('Asset Transfer Proxies', () => {
erc20Balances[fromAddress][erc20TokenA.address].minus(totalErc20AAmount),
);
expect(newBalances[toAddress][erc20TokenA.address]).to.be.bignumber.equal(
erc20Balances[toAddress][erc20TokenA.address].add(totalErc20AAmount),
erc20Balances[toAddress][erc20TokenA.address].plus(totalErc20AAmount),
);
expect(newBalances[fromAddress][erc20TokenB.address]).to.be.bignumber.equal(
erc20Balances[fromAddress][erc20TokenB.address].minus(totalErc20BAmount),
);
expect(newBalances[toAddress][erc20TokenB.address]).to.be.bignumber.equal(
erc20Balances[toAddress][erc20TokenB.address].add(totalErc20BAmount),
erc20Balances[toAddress][erc20TokenB.address].plus(totalErc20BAmount),
);
});
it('should successfully transfer a large amount of tokens', async () => {
@@ -1053,7 +1082,7 @@ describe('Asset Transfer Proxies', () => {
erc721AssetData3,
erc721AssetData4,
];
const assetData = assetDataInterface.MultiAsset.getABIEncodedTransactionData(amounts, nestedAssetData);
const assetData = assetDataUtils.encodeMultiAssetData(amounts, nestedAssetData);
const data = assetProxyInterface.transferFrom.getABIEncodedTransactionData(
assetData,
fromAddress,
@@ -1093,13 +1122,13 @@ describe('Asset Transfer Proxies', () => {
erc20Balances[fromAddress][erc20TokenA.address].minus(totalErc20AAmount),
);
expect(newBalances[toAddress][erc20TokenA.address]).to.be.bignumber.equal(
erc20Balances[toAddress][erc20TokenA.address].add(totalErc20AAmount),
erc20Balances[toAddress][erc20TokenA.address].plus(totalErc20AAmount),
);
expect(newBalances[fromAddress][erc20TokenB.address]).to.be.bignumber.equal(
erc20Balances[fromAddress][erc20TokenB.address].minus(totalErc20BAmount),
);
expect(newBalances[toAddress][erc20TokenB.address]).to.be.bignumber.equal(
erc20Balances[toAddress][erc20TokenB.address].add(totalErc20BAmount),
erc20Balances[toAddress][erc20TokenB.address].plus(totalErc20BAmount),
);
});
it('should revert if a single transfer fails', async () => {
@@ -1111,7 +1140,7 @@ describe('Asset Transfer Proxies', () => {
const erc721AssetData = assetDataUtils.encodeERC721AssetData(erc721TokenA.address, erc721AFromTokenId);
const amounts = [erc20Amount, erc721Amount];
const nestedAssetData = [erc20AssetData, erc721AssetData];
const assetData = assetDataInterface.MultiAsset.getABIEncodedTransactionData(amounts, nestedAssetData);
const assetData = assetDataUtils.encodeMultiAssetData(amounts, nestedAssetData);
const data = assetProxyInterface.transferFrom.getABIEncodedTransactionData(
assetData,
fromAddress,
@@ -1137,6 +1166,7 @@ describe('Asset Transfer Proxies', () => {
const invalidErc721AssetData = `${invalidProxyId}${erc721AssetData.slice(10)}`;
const amounts = [erc20Amount, erc721Amount];
const nestedAssetData = [erc20AssetData, invalidErc721AssetData];
// HACK: This is used to get around validation built into assetDataUtils
const assetData = assetDataInterface.MultiAsset.getABIEncodedTransactionData(amounts, nestedAssetData);
const data = assetProxyInterface.transferFrom.getABIEncodedTransactionData(
assetData,
@@ -1160,6 +1190,7 @@ describe('Asset Transfer Proxies', () => {
const erc721AssetData = assetDataUtils.encodeERC721AssetData(erc721TokenA.address, erc721AFromTokenId);
const amounts = [erc20Amount];
const nestedAssetData = [erc20AssetData, erc721AssetData];
// HACK: This is used to get around validation built into assetDataUtils
const assetData = assetDataInterface.MultiAsset.getABIEncodedTransactionData(amounts, nestedAssetData);
const data = assetProxyInterface.transferFrom.getABIEncodedTransactionData(
assetData,
@@ -1182,7 +1213,7 @@ describe('Asset Transfer Proxies', () => {
const erc20AssetData = assetDataUtils.encodeERC20AssetData(erc20TokenA.address);
const amounts = [erc20Amount];
const nestedAssetData = [erc20AssetData];
const assetData = assetDataInterface.MultiAsset.getABIEncodedTransactionData(amounts, nestedAssetData);
const assetData = assetDataUtils.encodeMultiAssetData(amounts, nestedAssetData);
const data = assetProxyInterface.transferFrom.getABIEncodedTransactionData(
assetData,
fromAddress,
@@ -1206,6 +1237,7 @@ describe('Asset Transfer Proxies', () => {
const erc721AssetData = '0x123456';
const amounts = [erc20Amount, erc721Amount];
const nestedAssetData = [erc20AssetData, erc721AssetData];
// HACK: This is used to get around validation built into assetDataUtils
const assetData = assetDataInterface.MultiAsset.getABIEncodedTransactionData(amounts, nestedAssetData);
const data = assetProxyInterface.transferFrom.getABIEncodedTransactionData(
assetData,
@@ -1230,7 +1262,7 @@ describe('Asset Transfer Proxies', () => {
const erc721AssetData = assetDataUtils.encodeERC721AssetData(erc721TokenA.address, erc721AFromTokenId);
const amounts = [erc20Amount, erc721Amount];
const nestedAssetData = [erc20AssetData, erc721AssetData];
const assetData = assetDataInterface.MultiAsset.getABIEncodedTransactionData(amounts, nestedAssetData);
const assetData = assetDataUtils.encodeMultiAssetData(amounts, nestedAssetData);
const data = assetProxyInterface.transferFrom.getABIEncodedTransactionData(
assetData,
fromAddress,

View File

@@ -1,13 +1,11 @@
import { constants, ERC20BalancesByOwner, txDefaults } from '@0x/contracts-test-utils';
import { artifacts as tokensArtifacts, DummyERC20TokenContract } from '@0x/contracts-tokens';
import { assetDataUtils } from '@0x/order-utils';
import { BigNumber } from '@0x/utils';
import { Web3Wrapper } from '@0x/web3-wrapper';
import { Provider } from 'ethereum-types';
import * as _ from 'lodash';
import { ERC20ProxyContract } from '../../generated-wrappers/erc20_proxy';
import { artifacts } from '../../src/artifacts';
import { artifacts, DummyERC20TokenContract, ERC20ProxyContract } from '../../src';
export class ERC20Wrapper {
private readonly _tokenOwnerAddresses: string[];
@@ -38,7 +36,7 @@ export class ERC20Wrapper {
for (let i = 0; i < numberToDeploy; i++) {
this._dummyTokenContracts.push(
await DummyERC20TokenContract.deployFrom0xArtifactAsync(
tokensArtifacts.DummyERC20Token,
artifacts.DummyERC20Token,
this._provider,
txDefaults,
constants.DUMMY_TOKEN_NAME,

View File

@@ -1,13 +1,11 @@
import { constants, ERC721TokenIdsByOwner, txDefaults } from '@0x/contracts-test-utils';
import { artifacts as tokensArtifacts, DummyERC721TokenContract } from '@0x/contracts-tokens';
import { generatePseudoRandomSalt } from '@0x/order-utils';
import { BigNumber } from '@0x/utils';
import { Web3Wrapper } from '@0x/web3-wrapper';
import { Provider } from 'ethereum-types';
import * as _ from 'lodash';
import { ERC721ProxyContract } from '../../generated-wrappers/erc721_proxy';
import { artifacts } from '../../src/artifacts';
import { artifacts, DummyERC721TokenContract, ERC721ProxyContract } from '../../src';
export class ERC721Wrapper {
private readonly _tokenOwnerAddresses: string[];
@@ -30,7 +28,7 @@ export class ERC721Wrapper {
for (const i of _.times(constants.NUM_DUMMY_ERC721_TO_DEPLOY)) {
this._dummyTokenContracts.push(
await DummyERC721TokenContract.deployFrom0xArtifactAsync(
tokensArtifacts.DummyERC721Token,
artifacts.DummyERC721Token,
this._provider,
txDefaults,
constants.DUMMY_TOKEN_NAME,

View File

@@ -1,3 +1,2 @@
export * from './exchange_wrapper';
export * from './erc20_wrapper';
export * from './erc721_wrapper';

View File

@@ -0,0 +1,20 @@
{
"extends": "../../tsconfig",
"compilerOptions": { "outDir": "lib", "rootDir": ".", "resolveJsonModule": true },
"include": ["./src/**/*", "./test/**/*", "./generated-wrappers/**/*"],
"files": [
"generated-artifacts/DummyERC20Token.json",
"generated-artifacts/DummyERC721Receiver.json",
"generated-artifacts/DummyERC721Token.json",
"generated-artifacts/DummyMultipleReturnERC20Token.json",
"generated-artifacts/DummyNoReturnERC20Token.json",
"generated-artifacts/ERC20Proxy.json",
"generated-artifacts/ERC721Proxy.json",
"generated-artifacts/IAssetData.json",
"generated-artifacts/IAssetProxy.json",
"generated-artifacts/IAuthorizable.json",
"generated-artifacts/MixinAuthorizable.json",
"generated-artifacts/MultiAssetProxy.json"
],
"exclude": ["./deploy/solc/solc_bin"]
}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -1,129 +0,0 @@
{
"schemaVersion": "2.0.0",
"contractName": "TestStaticCallReceiver",
"compilerOutput": {
"abi": [
{
"constant": false,
"inputs": [
{
"name": "hash",
"type": "bytes32"
},
{
"name": "signature",
"type": "bytes"
}
],
"name": "isValidSignature",
"outputs": [
{
"name": "isValid",
"type": "bool"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "hash",
"type": "bytes32"
},
{
"name": "signerAddress",
"type": "address"
},
{
"name": "signature",
"type": "bytes"
}
],
"name": "isValidSignature",
"outputs": [
{
"name": "isValid",
"type": "bool"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "token",
"type": "address"
},
{
"name": "spender",
"type": "address"
},
{
"name": "value",
"type": "uint256"
}
],
"name": "approveERC20",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
}
],
"evm": {
"bytecode": {
"linkReferences": {},
"object": "0x6080604052600160005534801561001557600080fd5b5061023e806100256000396000f3006080604052600436106100565763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416631626ba7e811461005b5780639363470214610093578063a8e5e4aa146100d1575b600080fd5b34801561006757600080fd5b5061007f60048035906024803590810191013561010a565b604080519115158252519081900360200190f35b34801561009f57600080fd5b5061007f60048035906024803573ffffffffffffffffffffffffffffffffffffffff169160443591820191013561011e565b3480156100dd57600080fd5b5061010873ffffffffffffffffffffffffffffffffffffffff60043581169060243516604435610133565b005b6000610114610207565b5060019392505050565b6000610128610207565b506001949350505050565b8273ffffffffffffffffffffffffffffffffffffffff1663095ea7b383836040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156101d657600080fd5b505af11580156101ea573d6000803e3d6000fd5b505050506040513d602081101561020057600080fd5b5050505050565b6000805460010190555600a165627a7a72305820dc9fbd716d3526660fb3bc57c7b20ce5608225c45a4d9a3c6d6e16da10292ae00029",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x1 PUSH1 0x0 SSTORE CALLVALUE DUP1 ISZERO PUSH2 0x15 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x23E DUP1 PUSH2 0x25 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN STOP PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x56 JUMPI PUSH4 0xFFFFFFFF PUSH29 0x100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 CALLDATALOAD DIV AND PUSH4 0x1626BA7E DUP2 EQ PUSH2 0x5B JUMPI DUP1 PUSH4 0x93634702 EQ PUSH2 0x93 JUMPI DUP1 PUSH4 0xA8E5E4AA EQ PUSH2 0xD1 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x67 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x7F PUSH1 0x4 DUP1 CALLDATALOAD SWAP1 PUSH1 0x24 DUP1 CALLDATALOAD SWAP1 DUP2 ADD SWAP2 ADD CALLDATALOAD PUSH2 0x10A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x7F PUSH1 0x4 DUP1 CALLDATALOAD SWAP1 PUSH1 0x24 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 PUSH1 0x44 CALLDATALOAD SWAP2 DUP3 ADD SWAP2 ADD CALLDATALOAD PUSH2 0x11E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xDD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x108 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x4 CALLDATALOAD DUP2 AND SWAP1 PUSH1 0x24 CALLDATALOAD AND PUSH1 0x44 CALLDATALOAD PUSH2 0x133 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 PUSH2 0x114 PUSH2 0x207 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x128 PUSH2 0x207 JUMP JUMPDEST POP PUSH1 0x1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x95EA7B3 DUP4 DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH29 0x100000000000000000000000000000000000000000000000000000000 MUL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1EA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x200 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE JUMP STOP LOG1 PUSH6 0x627A7A723058 KECCAK256 0xdc SWAP16 0xbd PUSH18 0x6D3526660FB3BC57C7B20CE5608225C45A4D SWAP11 EXTCODECOPY PUSH14 0x6E16DA10292AE000290000000000 ",
"sourceMap": "716:1558:68:-;;;780:1;755:26;;716:1558;8:9:-1;5:2;;;30:1;27;20:12;5:2;716:1558:68;;;;;;;"
},
"deployedBytecode": {
"linkReferences": {},
"object": "0x6080604052600436106100565763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416631626ba7e811461005b5780639363470214610093578063a8e5e4aa146100d1575b600080fd5b34801561006757600080fd5b5061007f60048035906024803590810191013561010a565b604080519115158252519081900360200190f35b34801561009f57600080fd5b5061007f60048035906024803573ffffffffffffffffffffffffffffffffffffffff169160443591820191013561011e565b3480156100dd57600080fd5b5061010873ffffffffffffffffffffffffffffffffffffffff60043581169060243516604435610133565b005b6000610114610207565b5060019392505050565b6000610128610207565b506001949350505050565b8273ffffffffffffffffffffffffffffffffffffffff1663095ea7b383836040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156101d657600080fd5b505af11580156101ea573d6000803e3d6000fd5b505050506040513d602081101561020057600080fd5b5050505050565b6000805460010190555600a165627a7a72305820dc9fbd716d3526660fb3bc57c7b20ce5608225c45a4d9a3c6d6e16da10292ae00029",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x56 JUMPI PUSH4 0xFFFFFFFF PUSH29 0x100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 CALLDATALOAD DIV AND PUSH4 0x1626BA7E DUP2 EQ PUSH2 0x5B JUMPI DUP1 PUSH4 0x93634702 EQ PUSH2 0x93 JUMPI DUP1 PUSH4 0xA8E5E4AA EQ PUSH2 0xD1 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x67 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x7F PUSH1 0x4 DUP1 CALLDATALOAD SWAP1 PUSH1 0x24 DUP1 CALLDATALOAD SWAP1 DUP2 ADD SWAP2 ADD CALLDATALOAD PUSH2 0x10A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x7F PUSH1 0x4 DUP1 CALLDATALOAD SWAP1 PUSH1 0x24 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 PUSH1 0x44 CALLDATALOAD SWAP2 DUP3 ADD SWAP2 ADD CALLDATALOAD PUSH2 0x11E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xDD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x108 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x4 CALLDATALOAD DUP2 AND SWAP1 PUSH1 0x24 CALLDATALOAD AND PUSH1 0x44 CALLDATALOAD PUSH2 0x133 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 PUSH2 0x114 PUSH2 0x207 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x128 PUSH2 0x207 JUMP JUMPDEST POP PUSH1 0x1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x95EA7B3 DUP4 DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH29 0x100000000000000000000000000000000000000000000000000000000 MUL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1EA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x200 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE JUMP STOP LOG1 PUSH6 0x627A7A723058 KECCAK256 0xdc SWAP16 0xbd PUSH18 0x6D3526660FB3BC57C7B20CE5608225C45A4D SWAP11 EXTCODECOPY PUSH14 0x6E16DA10292AE000290000000000 ",
"sourceMap": "716:1558:68:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1551:182;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1551:182:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1100:213;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1100:213:68;;;;;;;;;;;;;;;;;;;;;1979:179;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1979:179:68;;;;;;;;;;;;;;;;1551:182;1664:12;1692:13;:11;:13::i;:::-;-1:-1:-1;1722:4:68;1551:182;;;;;:::o;1100:213::-;1244:12;1272:13;:11;:13::i;:::-;-1:-1:-1;1302:4:68;1100:213;;;;;;:::o;1979:179::-;2121:5;2109:26;;;2136:7;2145:5;2109:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2109:42:68;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2109:42:68;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;1979:179:68:o;2204:68::-;2258:5;:7;;;;;;2204:68::o"
}
}
},
"sources": {
"test/TestStaticCallReceiver/TestStaticCallReceiver.sol": {
"id": 68
},
"@0x/contracts-tokens/contracts/tokens/ERC20Token/IERC20Token.sol": {
"id": 20
}
},
"sourceCodes": {
"test/TestStaticCallReceiver/TestStaticCallReceiver.sol": "/*\n\n Copyright 2018 ZeroEx Intl.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n*/\n\npragma solidity 0.4.24;\n\nimport \"@0x/contracts-tokens/contracts/tokens/ERC20Token/IERC20Token.sol\";\n\n\n// solhint-disable no-unused-vars\ncontract TestStaticCallReceiver {\n\n uint256 internal state = 1;\n\n /// @dev Updates state and returns true. Intended to be used with `Validator` signature type.\n /// @param hash Message hash that is signed.\n /// @param signerAddress Address that should have signed the given hash.\n /// @param signature Proof of signing.\n /// @return Validity of order signature.\n function isValidSignature(\n bytes32 hash,\n address signerAddress,\n bytes signature\n )\n external\n returns (bool isValid)\n {\n updateState();\n return true;\n }\n\n /// @dev Updates state and returns true. Intended to be used with `Wallet` signature type.\n /// @param hash Message hash that is signed.\n /// @param signature Proof of signing.\n /// @return Validity of order signature.\n function isValidSignature(\n bytes32 hash,\n bytes signature\n )\n external\n returns (bool isValid)\n {\n updateState();\n return true;\n }\n\n /// @dev Approves an ERC20 token to spend tokens from this address.\n /// @param token Address of ERC20 token.\n /// @param spender Address that will spend tokens.\n /// @param value Amount of tokens spender is approved to spend.\n function approveERC20(\n address token,\n address spender,\n uint256 value\n )\n external\n {\n IERC20Token(token).approve(spender, value);\n }\n\n /// @dev Increments state variable.\n function updateState()\n internal\n {\n state++;\n }\n}\n",
"@0x/contracts-tokens/contracts/tokens/ERC20Token/IERC20Token.sol": "/*\n\n Copyright 2018 ZeroEx Intl.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n*/\n\npragma solidity 0.4.24;\n\n\ncontract IERC20Token {\n\n // solhint-disable no-simple-event-func-name\n event Transfer(\n address indexed _from,\n address indexed _to,\n uint256 _value\n );\n\n event Approval(\n address indexed _owner,\n address indexed _spender,\n uint256 _value\n );\n\n /// @dev send `value` token to `to` from `msg.sender`\n /// @param _to The address of the recipient\n /// @param _value The amount of token to be transferred\n /// @return True if transfer was successful\n function transfer(address _to, uint256 _value)\n external\n returns (bool);\n\n /// @dev send `value` token to `to` from `from` on the condition it is approved by `from`\n /// @param _from The address of the sender\n /// @param _to The address of the recipient\n /// @param _value The amount of token to be transferred\n /// @return True if transfer was successful\n function transferFrom(\n address _from,\n address _to,\n uint256 _value\n )\n external\n returns (bool);\n \n /// @dev `msg.sender` approves `_spender` to spend `_value` tokens\n /// @param _spender The address of the account able to transfer the tokens\n /// @param _value The amount of wei to be approved for transfer\n /// @return Always true if the call has enough gas to complete execution\n function approve(address _spender, uint256 _value)\n external\n returns (bool);\n\n /// @dev Query total supply of token\n /// @return Total supply of token\n function totalSupply()\n external\n view\n returns (uint256);\n \n /// @param _owner The address from which the balance will be retrieved\n /// @return Balance of owner\n function balanceOf(address _owner)\n external\n view\n returns (uint256);\n\n /// @param _owner The address of the account owning tokens\n /// @param _spender The address of the account able to transfer the tokens\n /// @return Amount of remaining tokens allowed to spent\n function allowance(address _owner, address _spender)\n external\n view\n returns (uint256);\n}\n"
},
"sourceTreeHashHex": "0xa3403404c74ebe121bf85d5daa92cad2c4f141038bcb08622d627a2f61dd1e42",
"compiler": {
"name": "solc",
"version": "soljson-v0.4.24+commit.e67f0147.js",
"settings": {
"optimizer": {
"enabled": true,
"runs": 1000000
},
"outputSelection": {
"*": {
"*": [
"abi",
"evm.bytecode.object",
"evm.bytecode.sourceMap",
"evm.deployedBytecode.object",
"evm.deployedBytecode.sourceMap"
]
}
}
}
},
"networks": {}
}

View File

@@ -1,95 +0,0 @@
{
"schemaVersion": "2.0.0",
"contractName": "Validator",
"compilerOutput": {
"abi": [
{
"constant": true,
"inputs": [
{
"name": "hash",
"type": "bytes32"
},
{
"name": "signerAddress",
"type": "address"
},
{
"name": "signature",
"type": "bytes"
}
],
"name": "isValidSignature",
"outputs": [
{
"name": "isValid",
"type": "bool"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"name": "validSigner",
"type": "address"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "constructor"
}
],
"evm": {
"bytecode": {
"linkReferences": {},
"object": "0x608060405234801561001057600080fd5b50604051602080610134833981016040525160008054600160a060020a03909216600160a060020a031990921691909117905560e3806100516000396000f300608060405260043610603e5763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416639363470281146043575b600080fd5b348015604e57600080fd5b50607e60048035906024803573ffffffffffffffffffffffffffffffffffffffff16916044359182019101356092565b604080519115158252519081900360200190f35b505060005473ffffffffffffffffffffffffffffffffffffffff9081169116149190505600a165627a7a723058207475d0b323289366586452d827fd1dda36b13fd92b099dba7987456941d1c3b50029",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP1 PUSH2 0x134 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 MSTORE MLOAD PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB SWAP1 SWAP3 AND PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB NOT SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH1 0xE3 DUP1 PUSH2 0x51 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN STOP PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH1 0x3E JUMPI PUSH4 0xFFFFFFFF PUSH29 0x100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 CALLDATALOAD DIV AND PUSH4 0x93634702 DUP2 EQ PUSH1 0x43 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH1 0x4E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x7E PUSH1 0x4 DUP1 CALLDATALOAD SWAP1 PUSH1 0x24 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 PUSH1 0x44 CALLDATALOAD SWAP2 DUP3 ADD SWAP2 ADD CALLDATALOAD PUSH1 0x92 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST POP POP PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND SWAP2 AND EQ SWAP2 SWAP1 POP JUMP STOP LOG1 PUSH6 0x627A7A723058 KECCAK256 PUSH21 0x75D0B323289366586452D827FD1DDA36B13FD92B09 SWAP14 0xba PUSH26 0x87456941D1C3B500290000000000000000000000000000000000 ",
"sourceMap": "685:992:29:-;;;987:84;8:9:-1;5:2;;;30:1;27;20:12;5:2;987:84:29;;;;;;;;;;;;;1038:12;:26;;-1:-1:-1;;;;;1038:26:29;;;-1:-1:-1;;;;;;1038:26:29;;;;;;;;;685:992;;;;;;"
},
"deployedBytecode": {
"linkReferences": {},
"object": "0x608060405260043610603e5763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416639363470281146043575b600080fd5b348015604e57600080fd5b50607e60048035906024803573ffffffffffffffffffffffffffffffffffffffff16916044359182019101356092565b604080519115158252519081900360200190f35b505060005473ffffffffffffffffffffffffffffffffffffffff9081169116149190505600a165627a7a723058207475d0b323289366586452d827fd1dda36b13fd92b099dba7987456941d1c3b50029",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH1 0x3E JUMPI PUSH4 0xFFFFFFFF PUSH29 0x100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 CALLDATALOAD DIV AND PUSH4 0x93634702 DUP2 EQ PUSH1 0x43 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH1 0x4E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x7E PUSH1 0x4 DUP1 CALLDATALOAD SWAP1 PUSH1 0x24 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 PUSH1 0x44 CALLDATALOAD SWAP2 DUP3 ADD SWAP2 ADD CALLDATALOAD PUSH1 0x92 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST POP POP PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND SWAP2 AND EQ SWAP2 SWAP1 POP JUMP STOP LOG1 PUSH6 0x627A7A723058 KECCAK256 PUSH21 0x75D0B323289366586452D827FD1DDA36B13FD92B09 SWAP14 0xba PUSH26 0x87456941D1C3B500290000000000000000000000000000000000 ",
"sourceMap": "685:992:29:-;;;;;;;;;;;;;;;;;;;;;;;1408:230;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1408:230:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1565:12:29;1618;;;;;1601:29;;;;1408:230;-1:-1:-1;1408:230:29:o"
}
}
},
"sources": {
"examples/Validator/Validator.sol": {
"id": 29
},
"@0x/contracts-interfaces/contracts/protocol/Exchange/IValidator.sol": {
"id": 8
}
},
"sourceCodes": {
"examples/Validator/Validator.sol": "/*\n\n Copyright 2018 ZeroEx Intl.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n*/\n\npragma solidity 0.4.24;\n\nimport \"@0x/contracts-interfaces/contracts/protocol/Exchange/IValidator.sol\";\n\n\ncontract Validator is \n IValidator\n{\n\n // The single valid signer for this wallet.\n // solhint-disable-next-line var-name-mixedcase\n address internal VALID_SIGNER;\n\n /// @dev constructs a new `Validator` with a single valid signer.\n /// @param validSigner The sole, valid signer.\n constructor (address validSigner) public {\n VALID_SIGNER = validSigner;\n }\n\n /// @dev Verifies that a signature is valid. `signer` must match `VALID_SIGNER`.\n /// @param hash Message hash that is signed.\n /// @param signerAddress Address that should have signed the given hash.\n /// @param signature Proof of signing.\n /// @return Validity of signature.\n // solhint-disable no-unused-vars\n function isValidSignature(\n bytes32 hash,\n address signerAddress,\n bytes signature\n )\n external\n view\n returns (bool isValid)\n {\n return (signerAddress == VALID_SIGNER);\n }\n // solhint-enable no-unused-vars\n}\n",
"@0x/contracts-interfaces/contracts/protocol/Exchange/IValidator.sol": "/*\n\n Copyright 2018 ZeroEx Intl.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n*/\n\npragma solidity 0.4.24;\n\n\ncontract IValidator {\n\n /// @dev Verifies that a signature is valid.\n /// @param hash Message hash that is signed.\n /// @param signerAddress Address that should have signed the given hash.\n /// @param signature Proof of signing.\n /// @return Validity of order signature.\n function isValidSignature(\n bytes32 hash,\n address signerAddress,\n bytes signature\n )\n external\n view\n returns (bool isValid);\n}\n"
},
"sourceTreeHashHex": "0xa36c89c09f7e11e88bf4b6926dd23f5aba2ca4a4d2e731836e6274004f9840e1",
"compiler": {
"name": "solc",
"version": "soljson-v0.4.24+commit.e67f0147.js",
"settings": {
"optimizer": {
"enabled": true,
"runs": 1000000
},
"outputSelection": {
"*": {
"*": [
"abi",
"evm.bytecode.object",
"evm.bytecode.sourceMap",
"evm.deployedBytecode.object",
"evm.deployedBytecode.sourceMap"
]
}
}
}
},
"networks": {}
}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

View File

@@ -1,650 +0,0 @@
// tslint:disable:no-consecutive-blank-lines ordered-imports align trailing-comma whitespace class-name
// tslint:disable:no-unused-variable
// tslint:disable:no-unbound-method
import { BaseContract } from '@0x/base-contract';
import { BlockParam, BlockParamLiteral, CallData, ContractAbi, ContractArtifact, DecodedLogArgs, MethodAbi, Provider, TxData, TxDataPayable } from 'ethereum-types';
import { BigNumber, classUtils, logUtils } from '@0x/utils';
import { SimpleContractArtifact } from '@0x/types';
import { Web3Wrapper } from '@0x/web3-wrapper';
import * as ethers from 'ethers';
import * as _ from 'lodash';
// tslint:enable:no-unused-variable
export type ERC20ProxyEventArgs =
| ERC20ProxyAuthorizedAddressAddedEventArgs
| ERC20ProxyAuthorizedAddressRemovedEventArgs;
export enum ERC20ProxyEvents {
AuthorizedAddressAdded = 'AuthorizedAddressAdded',
AuthorizedAddressRemoved = 'AuthorizedAddressRemoved',
}
export interface ERC20ProxyAuthorizedAddressAddedEventArgs extends DecodedLogArgs {
target: string;
caller: string;
}
export interface ERC20ProxyAuthorizedAddressRemovedEventArgs extends DecodedLogArgs {
target: string;
caller: string;
}
/* istanbul ignore next */
// tslint:disable:no-parameter-reassignment
// tslint:disable-next-line:class-name
export class ERC20ProxyContract extends BaseContract {
public addAuthorizedAddress = {
async sendTransactionAsync(
target: string,
txData: Partial<TxData> = {},
): Promise<string> {
const self = this as any as ERC20ProxyContract;
const inputAbi = self._lookupAbi('addAuthorizedAddress(address)').inputs;
[target
] = BaseContract._formatABIDataItemList(inputAbi, [target
], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, [target
]);
const encodedData = self._lookupEthersInterface('addAuthorizedAddress(address)').functions.addAuthorizedAddress.encode([target
]);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...txData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
self.addAuthorizedAddress.estimateGasAsync.bind(
self,
target
),
);
const txHash = await self._web3Wrapper.sendTransactionAsync(txDataWithDefaults);
return txHash;
},
async estimateGasAsync(
target: string,
txData: Partial<TxData> = {},
): Promise<number> {
const self = this as any as ERC20ProxyContract;
const inputAbi = self._lookupAbi('addAuthorizedAddress(address)').inputs;
[target
] = BaseContract._formatABIDataItemList(inputAbi, [target
], BaseContract._bigNumberToString);
const encodedData = self._lookupEthersInterface('addAuthorizedAddress(address)').functions.addAuthorizedAddress.encode([target
]);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...txData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const gas = await self._web3Wrapper.estimateGasAsync(txDataWithDefaults);
return gas;
},
getABIEncodedTransactionData(
target: string,
): string {
const self = this as any as ERC20ProxyContract;
const inputAbi = self._lookupAbi('addAuthorizedAddress(address)').inputs;
[target
] = BaseContract._formatABIDataItemList(inputAbi, [target
], BaseContract._bigNumberToString);
const abiEncodedTransactionData = self._lookupEthersInterface('addAuthorizedAddress(address)').functions.addAuthorizedAddress.encode([target
]);
return abiEncodedTransactionData;
},
async callAsync(
target: string,
callData: Partial<CallData> = {},
defaultBlock?: BlockParam,
): Promise<void
> {
const self = this as any as ERC20ProxyContract;
const functionSignature = 'addAuthorizedAddress(address)';
const inputAbi = self._lookupAbi(functionSignature).inputs;
[target
] = BaseContract._formatABIDataItemList(inputAbi, [target
], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, [target
]);
const ethersFunction = self._lookupEthersInterface(functionSignature).functions.addAuthorizedAddress;
const encodedData = ethersFunction.encode([target
]);
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);
let resultArray = ethersFunction.decode(rawCallResult);
const outputAbi = (_.find(self.abi, {name: 'addAuthorizedAddress'}) as MethodAbi).outputs;
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._lowercaseAddress.bind(this));
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._bnToBigNumber.bind(this));
return resultArray;
},
};
public authorities = {
async callAsync(
index_0: BigNumber,
callData: Partial<CallData> = {},
defaultBlock?: BlockParam,
): Promise<string
> {
const self = this as any as ERC20ProxyContract;
const functionSignature = 'authorities(uint256)';
const inputAbi = self._lookupAbi(functionSignature).inputs;
[index_0
] = BaseContract._formatABIDataItemList(inputAbi, [index_0
], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, [index_0
]);
const ethersFunction = self._lookupEthersInterface(functionSignature).functions.authorities;
const encodedData = ethersFunction.encode([index_0
]);
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);
let resultArray = ethersFunction.decode(rawCallResult);
const outputAbi = (_.find(self.abi, {name: 'authorities'}) as MethodAbi).outputs;
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._lowercaseAddress.bind(this));
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._bnToBigNumber.bind(this));
return resultArray[0];
},
};
public removeAuthorizedAddress = {
async sendTransactionAsync(
target: string,
txData: Partial<TxData> = {},
): Promise<string> {
const self = this as any as ERC20ProxyContract;
const inputAbi = self._lookupAbi('removeAuthorizedAddress(address)').inputs;
[target
] = BaseContract._formatABIDataItemList(inputAbi, [target
], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, [target
]);
const encodedData = self._lookupEthersInterface('removeAuthorizedAddress(address)').functions.removeAuthorizedAddress.encode([target
]);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...txData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
self.removeAuthorizedAddress.estimateGasAsync.bind(
self,
target
),
);
const txHash = await self._web3Wrapper.sendTransactionAsync(txDataWithDefaults);
return txHash;
},
async estimateGasAsync(
target: string,
txData: Partial<TxData> = {},
): Promise<number> {
const self = this as any as ERC20ProxyContract;
const inputAbi = self._lookupAbi('removeAuthorizedAddress(address)').inputs;
[target
] = BaseContract._formatABIDataItemList(inputAbi, [target
], BaseContract._bigNumberToString);
const encodedData = self._lookupEthersInterface('removeAuthorizedAddress(address)').functions.removeAuthorizedAddress.encode([target
]);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...txData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const gas = await self._web3Wrapper.estimateGasAsync(txDataWithDefaults);
return gas;
},
getABIEncodedTransactionData(
target: string,
): string {
const self = this as any as ERC20ProxyContract;
const inputAbi = self._lookupAbi('removeAuthorizedAddress(address)').inputs;
[target
] = BaseContract._formatABIDataItemList(inputAbi, [target
], BaseContract._bigNumberToString);
const abiEncodedTransactionData = self._lookupEthersInterface('removeAuthorizedAddress(address)').functions.removeAuthorizedAddress.encode([target
]);
return abiEncodedTransactionData;
},
async callAsync(
target: string,
callData: Partial<CallData> = {},
defaultBlock?: BlockParam,
): Promise<void
> {
const self = this as any as ERC20ProxyContract;
const functionSignature = 'removeAuthorizedAddress(address)';
const inputAbi = self._lookupAbi(functionSignature).inputs;
[target
] = BaseContract._formatABIDataItemList(inputAbi, [target
], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, [target
]);
const ethersFunction = self._lookupEthersInterface(functionSignature).functions.removeAuthorizedAddress;
const encodedData = ethersFunction.encode([target
]);
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);
let resultArray = ethersFunction.decode(rawCallResult);
const outputAbi = (_.find(self.abi, {name: 'removeAuthorizedAddress'}) as MethodAbi).outputs;
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._lowercaseAddress.bind(this));
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._bnToBigNumber.bind(this));
return resultArray;
},
};
public owner = {
async callAsync(
callData: Partial<CallData> = {},
defaultBlock?: BlockParam,
): Promise<string
> {
const self = this as any as ERC20ProxyContract;
const functionSignature = 'owner()';
const inputAbi = self._lookupAbi(functionSignature).inputs;
[] = BaseContract._formatABIDataItemList(inputAbi, [], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, []);
const ethersFunction = self._lookupEthersInterface(functionSignature).functions.owner;
const encodedData = ethersFunction.encode([]);
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);
let resultArray = ethersFunction.decode(rawCallResult);
const outputAbi = (_.find(self.abi, {name: 'owner'}) as MethodAbi).outputs;
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._lowercaseAddress.bind(this));
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._bnToBigNumber.bind(this));
return resultArray[0];
},
};
public removeAuthorizedAddressAtIndex = {
async sendTransactionAsync(
target: string,
index: BigNumber,
txData: Partial<TxData> = {},
): Promise<string> {
const self = this as any as ERC20ProxyContract;
const inputAbi = self._lookupAbi('removeAuthorizedAddressAtIndex(address,uint256)').inputs;
[target,
index
] = BaseContract._formatABIDataItemList(inputAbi, [target,
index
], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, [target,
index
]);
const encodedData = self._lookupEthersInterface('removeAuthorizedAddressAtIndex(address,uint256)').functions.removeAuthorizedAddressAtIndex.encode([target,
index
]);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...txData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
self.removeAuthorizedAddressAtIndex.estimateGasAsync.bind(
self,
target,
index
),
);
const txHash = await self._web3Wrapper.sendTransactionAsync(txDataWithDefaults);
return txHash;
},
async estimateGasAsync(
target: string,
index: BigNumber,
txData: Partial<TxData> = {},
): Promise<number> {
const self = this as any as ERC20ProxyContract;
const inputAbi = self._lookupAbi('removeAuthorizedAddressAtIndex(address,uint256)').inputs;
[target,
index
] = BaseContract._formatABIDataItemList(inputAbi, [target,
index
], BaseContract._bigNumberToString);
const encodedData = self._lookupEthersInterface('removeAuthorizedAddressAtIndex(address,uint256)').functions.removeAuthorizedAddressAtIndex.encode([target,
index
]);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...txData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const gas = await self._web3Wrapper.estimateGasAsync(txDataWithDefaults);
return gas;
},
getABIEncodedTransactionData(
target: string,
index: BigNumber,
): string {
const self = this as any as ERC20ProxyContract;
const inputAbi = self._lookupAbi('removeAuthorizedAddressAtIndex(address,uint256)').inputs;
[target,
index
] = BaseContract._formatABIDataItemList(inputAbi, [target,
index
], BaseContract._bigNumberToString);
const abiEncodedTransactionData = self._lookupEthersInterface('removeAuthorizedAddressAtIndex(address,uint256)').functions.removeAuthorizedAddressAtIndex.encode([target,
index
]);
return abiEncodedTransactionData;
},
async callAsync(
target: string,
index: BigNumber,
callData: Partial<CallData> = {},
defaultBlock?: BlockParam,
): Promise<void
> {
const self = this as any as ERC20ProxyContract;
const functionSignature = 'removeAuthorizedAddressAtIndex(address,uint256)';
const inputAbi = self._lookupAbi(functionSignature).inputs;
[target,
index
] = BaseContract._formatABIDataItemList(inputAbi, [target,
index
], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, [target,
index
]);
const ethersFunction = self._lookupEthersInterface(functionSignature).functions.removeAuthorizedAddressAtIndex;
const encodedData = ethersFunction.encode([target,
index
]);
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);
let resultArray = ethersFunction.decode(rawCallResult);
const outputAbi = (_.find(self.abi, {name: 'removeAuthorizedAddressAtIndex'}) as MethodAbi).outputs;
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._lowercaseAddress.bind(this));
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._bnToBigNumber.bind(this));
return resultArray;
},
};
public getProxyId = {
async callAsync(
callData: Partial<CallData> = {},
defaultBlock?: BlockParam,
): Promise<string
> {
const self = this as any as ERC20ProxyContract;
const functionSignature = 'getProxyId()';
const inputAbi = self._lookupAbi(functionSignature).inputs;
[] = BaseContract._formatABIDataItemList(inputAbi, [], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, []);
const ethersFunction = self._lookupEthersInterface(functionSignature).functions.getProxyId;
const encodedData = ethersFunction.encode([]);
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);
let resultArray = ethersFunction.decode(rawCallResult);
const outputAbi = (_.find(self.abi, {name: 'getProxyId'}) as MethodAbi).outputs;
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._lowercaseAddress.bind(this));
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._bnToBigNumber.bind(this));
return resultArray[0];
},
};
public authorized = {
async callAsync(
index_0: string,
callData: Partial<CallData> = {},
defaultBlock?: BlockParam,
): Promise<boolean
> {
const self = this as any as ERC20ProxyContract;
const functionSignature = 'authorized(address)';
const inputAbi = self._lookupAbi(functionSignature).inputs;
[index_0
] = BaseContract._formatABIDataItemList(inputAbi, [index_0
], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, [index_0
]);
const ethersFunction = self._lookupEthersInterface(functionSignature).functions.authorized;
const encodedData = ethersFunction.encode([index_0
]);
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);
let resultArray = ethersFunction.decode(rawCallResult);
const outputAbi = (_.find(self.abi, {name: 'authorized'}) as MethodAbi).outputs;
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._lowercaseAddress.bind(this));
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._bnToBigNumber.bind(this));
return resultArray[0];
},
};
public getAuthorizedAddresses = {
async callAsync(
callData: Partial<CallData> = {},
defaultBlock?: BlockParam,
): Promise<string[]
> {
const self = this as any as ERC20ProxyContract;
const functionSignature = 'getAuthorizedAddresses()';
const inputAbi = self._lookupAbi(functionSignature).inputs;
[] = BaseContract._formatABIDataItemList(inputAbi, [], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, []);
const ethersFunction = self._lookupEthersInterface(functionSignature).functions.getAuthorizedAddresses;
const encodedData = ethersFunction.encode([]);
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);
let resultArray = ethersFunction.decode(rawCallResult);
const outputAbi = (_.find(self.abi, {name: 'getAuthorizedAddresses'}) as MethodAbi).outputs;
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._lowercaseAddress.bind(this));
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._bnToBigNumber.bind(this));
return resultArray[0];
},
};
public transferOwnership = {
async sendTransactionAsync(
newOwner: string,
txData: Partial<TxData> = {},
): Promise<string> {
const self = this as any as ERC20ProxyContract;
const inputAbi = self._lookupAbi('transferOwnership(address)').inputs;
[newOwner
] = BaseContract._formatABIDataItemList(inputAbi, [newOwner
], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, [newOwner
]);
const encodedData = self._lookupEthersInterface('transferOwnership(address)').functions.transferOwnership.encode([newOwner
]);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...txData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
self.transferOwnership.estimateGasAsync.bind(
self,
newOwner
),
);
const txHash = await self._web3Wrapper.sendTransactionAsync(txDataWithDefaults);
return txHash;
},
async estimateGasAsync(
newOwner: string,
txData: Partial<TxData> = {},
): Promise<number> {
const self = this as any as ERC20ProxyContract;
const inputAbi = self._lookupAbi('transferOwnership(address)').inputs;
[newOwner
] = BaseContract._formatABIDataItemList(inputAbi, [newOwner
], BaseContract._bigNumberToString);
const encodedData = self._lookupEthersInterface('transferOwnership(address)').functions.transferOwnership.encode([newOwner
]);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...txData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const gas = await self._web3Wrapper.estimateGasAsync(txDataWithDefaults);
return gas;
},
getABIEncodedTransactionData(
newOwner: string,
): string {
const self = this as any as ERC20ProxyContract;
const inputAbi = self._lookupAbi('transferOwnership(address)').inputs;
[newOwner
] = BaseContract._formatABIDataItemList(inputAbi, [newOwner
], BaseContract._bigNumberToString);
const abiEncodedTransactionData = self._lookupEthersInterface('transferOwnership(address)').functions.transferOwnership.encode([newOwner
]);
return abiEncodedTransactionData;
},
async callAsync(
newOwner: string,
callData: Partial<CallData> = {},
defaultBlock?: BlockParam,
): Promise<void
> {
const self = this as any as ERC20ProxyContract;
const functionSignature = 'transferOwnership(address)';
const inputAbi = self._lookupAbi(functionSignature).inputs;
[newOwner
] = BaseContract._formatABIDataItemList(inputAbi, [newOwner
], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, [newOwner
]);
const ethersFunction = self._lookupEthersInterface(functionSignature).functions.transferOwnership;
const encodedData = ethersFunction.encode([newOwner
]);
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);
let resultArray = ethersFunction.decode(rawCallResult);
const outputAbi = (_.find(self.abi, {name: 'transferOwnership'}) as MethodAbi).outputs;
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._lowercaseAddress.bind(this));
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._bnToBigNumber.bind(this));
return resultArray;
},
};
public static async deployFrom0xArtifactAsync(
artifact: ContractArtifact | SimpleContractArtifact,
provider: Provider,
txDefaults: Partial<TxData>,
): Promise<ERC20ProxyContract> {
if (_.isUndefined(artifact.compilerOutput)) {
throw new Error('Compiler output not found in the artifact file');
}
const bytecode = artifact.compilerOutput.evm.bytecode.object;
const abi = artifact.compilerOutput.abi;
return ERC20ProxyContract.deployAsync(bytecode, abi, provider, txDefaults, );
}
public static async deployAsync(
bytecode: string,
abi: ContractAbi,
provider: Provider,
txDefaults: Partial<TxData>,
): Promise<ERC20ProxyContract> {
const constructorAbi = BaseContract._lookupConstructorAbi(abi);
[] = BaseContract._formatABIDataItemList(
constructorAbi.inputs,
[],
BaseContract._bigNumberToString,
);
const iface = new ethers.utils.Interface(abi);
const deployInfo = iface.deployFunction;
const txData = deployInfo.encode(bytecode, []);
const web3Wrapper = new Web3Wrapper(provider);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{data: txData},
txDefaults,
web3Wrapper.estimateGasAsync.bind(web3Wrapper),
);
const txHash = await web3Wrapper.sendTransactionAsync(txDataWithDefaults);
logUtils.log(`transactionHash: ${txHash}`);
const txReceipt = await web3Wrapper.awaitTransactionSuccessAsync(txHash);
logUtils.log(`ERC20Proxy successfully deployed at ${txReceipt.contractAddress}`);
const contractInstance = new ERC20ProxyContract(abi, txReceipt.contractAddress as string, provider, txDefaults);
contractInstance.constructorArgs = [];
return contractInstance;
}
constructor(abi: ContractAbi, address: string, provider: Provider, txDefaults?: Partial<TxData>) {
super('ERC20Proxy', abi, address, provider, txDefaults);
classUtils.bindAll(this, ['_ethersInterfacesByFunctionSignature', 'address', 'abi', '_web3Wrapper']);
}
} // tslint:disable:max-file-line-count
// tslint:enable:no-unbound-method

View File

@@ -1,650 +0,0 @@
// tslint:disable:no-consecutive-blank-lines ordered-imports align trailing-comma whitespace class-name
// tslint:disable:no-unused-variable
// tslint:disable:no-unbound-method
import { BaseContract } from '@0x/base-contract';
import { BlockParam, BlockParamLiteral, CallData, ContractAbi, ContractArtifact, DecodedLogArgs, MethodAbi, Provider, TxData, TxDataPayable } from 'ethereum-types';
import { BigNumber, classUtils, logUtils } from '@0x/utils';
import { SimpleContractArtifact } from '@0x/types';
import { Web3Wrapper } from '@0x/web3-wrapper';
import * as ethers from 'ethers';
import * as _ from 'lodash';
// tslint:enable:no-unused-variable
export type ERC721ProxyEventArgs =
| ERC721ProxyAuthorizedAddressAddedEventArgs
| ERC721ProxyAuthorizedAddressRemovedEventArgs;
export enum ERC721ProxyEvents {
AuthorizedAddressAdded = 'AuthorizedAddressAdded',
AuthorizedAddressRemoved = 'AuthorizedAddressRemoved',
}
export interface ERC721ProxyAuthorizedAddressAddedEventArgs extends DecodedLogArgs {
target: string;
caller: string;
}
export interface ERC721ProxyAuthorizedAddressRemovedEventArgs extends DecodedLogArgs {
target: string;
caller: string;
}
/* istanbul ignore next */
// tslint:disable:no-parameter-reassignment
// tslint:disable-next-line:class-name
export class ERC721ProxyContract extends BaseContract {
public addAuthorizedAddress = {
async sendTransactionAsync(
target: string,
txData: Partial<TxData> = {},
): Promise<string> {
const self = this as any as ERC721ProxyContract;
const inputAbi = self._lookupAbi('addAuthorizedAddress(address)').inputs;
[target
] = BaseContract._formatABIDataItemList(inputAbi, [target
], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, [target
]);
const encodedData = self._lookupEthersInterface('addAuthorizedAddress(address)').functions.addAuthorizedAddress.encode([target
]);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...txData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
self.addAuthorizedAddress.estimateGasAsync.bind(
self,
target
),
);
const txHash = await self._web3Wrapper.sendTransactionAsync(txDataWithDefaults);
return txHash;
},
async estimateGasAsync(
target: string,
txData: Partial<TxData> = {},
): Promise<number> {
const self = this as any as ERC721ProxyContract;
const inputAbi = self._lookupAbi('addAuthorizedAddress(address)').inputs;
[target
] = BaseContract._formatABIDataItemList(inputAbi, [target
], BaseContract._bigNumberToString);
const encodedData = self._lookupEthersInterface('addAuthorizedAddress(address)').functions.addAuthorizedAddress.encode([target
]);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...txData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const gas = await self._web3Wrapper.estimateGasAsync(txDataWithDefaults);
return gas;
},
getABIEncodedTransactionData(
target: string,
): string {
const self = this as any as ERC721ProxyContract;
const inputAbi = self._lookupAbi('addAuthorizedAddress(address)').inputs;
[target
] = BaseContract._formatABIDataItemList(inputAbi, [target
], BaseContract._bigNumberToString);
const abiEncodedTransactionData = self._lookupEthersInterface('addAuthorizedAddress(address)').functions.addAuthorizedAddress.encode([target
]);
return abiEncodedTransactionData;
},
async callAsync(
target: string,
callData: Partial<CallData> = {},
defaultBlock?: BlockParam,
): Promise<void
> {
const self = this as any as ERC721ProxyContract;
const functionSignature = 'addAuthorizedAddress(address)';
const inputAbi = self._lookupAbi(functionSignature).inputs;
[target
] = BaseContract._formatABIDataItemList(inputAbi, [target
], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, [target
]);
const ethersFunction = self._lookupEthersInterface(functionSignature).functions.addAuthorizedAddress;
const encodedData = ethersFunction.encode([target
]);
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);
let resultArray = ethersFunction.decode(rawCallResult);
const outputAbi = (_.find(self.abi, {name: 'addAuthorizedAddress'}) as MethodAbi).outputs;
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._lowercaseAddress.bind(this));
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._bnToBigNumber.bind(this));
return resultArray;
},
};
public authorities = {
async callAsync(
index_0: BigNumber,
callData: Partial<CallData> = {},
defaultBlock?: BlockParam,
): Promise<string
> {
const self = this as any as ERC721ProxyContract;
const functionSignature = 'authorities(uint256)';
const inputAbi = self._lookupAbi(functionSignature).inputs;
[index_0
] = BaseContract._formatABIDataItemList(inputAbi, [index_0
], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, [index_0
]);
const ethersFunction = self._lookupEthersInterface(functionSignature).functions.authorities;
const encodedData = ethersFunction.encode([index_0
]);
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);
let resultArray = ethersFunction.decode(rawCallResult);
const outputAbi = (_.find(self.abi, {name: 'authorities'}) as MethodAbi).outputs;
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._lowercaseAddress.bind(this));
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._bnToBigNumber.bind(this));
return resultArray[0];
},
};
public removeAuthorizedAddress = {
async sendTransactionAsync(
target: string,
txData: Partial<TxData> = {},
): Promise<string> {
const self = this as any as ERC721ProxyContract;
const inputAbi = self._lookupAbi('removeAuthorizedAddress(address)').inputs;
[target
] = BaseContract._formatABIDataItemList(inputAbi, [target
], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, [target
]);
const encodedData = self._lookupEthersInterface('removeAuthorizedAddress(address)').functions.removeAuthorizedAddress.encode([target
]);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...txData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
self.removeAuthorizedAddress.estimateGasAsync.bind(
self,
target
),
);
const txHash = await self._web3Wrapper.sendTransactionAsync(txDataWithDefaults);
return txHash;
},
async estimateGasAsync(
target: string,
txData: Partial<TxData> = {},
): Promise<number> {
const self = this as any as ERC721ProxyContract;
const inputAbi = self._lookupAbi('removeAuthorizedAddress(address)').inputs;
[target
] = BaseContract._formatABIDataItemList(inputAbi, [target
], BaseContract._bigNumberToString);
const encodedData = self._lookupEthersInterface('removeAuthorizedAddress(address)').functions.removeAuthorizedAddress.encode([target
]);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...txData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const gas = await self._web3Wrapper.estimateGasAsync(txDataWithDefaults);
return gas;
},
getABIEncodedTransactionData(
target: string,
): string {
const self = this as any as ERC721ProxyContract;
const inputAbi = self._lookupAbi('removeAuthorizedAddress(address)').inputs;
[target
] = BaseContract._formatABIDataItemList(inputAbi, [target
], BaseContract._bigNumberToString);
const abiEncodedTransactionData = self._lookupEthersInterface('removeAuthorizedAddress(address)').functions.removeAuthorizedAddress.encode([target
]);
return abiEncodedTransactionData;
},
async callAsync(
target: string,
callData: Partial<CallData> = {},
defaultBlock?: BlockParam,
): Promise<void
> {
const self = this as any as ERC721ProxyContract;
const functionSignature = 'removeAuthorizedAddress(address)';
const inputAbi = self._lookupAbi(functionSignature).inputs;
[target
] = BaseContract._formatABIDataItemList(inputAbi, [target
], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, [target
]);
const ethersFunction = self._lookupEthersInterface(functionSignature).functions.removeAuthorizedAddress;
const encodedData = ethersFunction.encode([target
]);
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);
let resultArray = ethersFunction.decode(rawCallResult);
const outputAbi = (_.find(self.abi, {name: 'removeAuthorizedAddress'}) as MethodAbi).outputs;
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._lowercaseAddress.bind(this));
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._bnToBigNumber.bind(this));
return resultArray;
},
};
public owner = {
async callAsync(
callData: Partial<CallData> = {},
defaultBlock?: BlockParam,
): Promise<string
> {
const self = this as any as ERC721ProxyContract;
const functionSignature = 'owner()';
const inputAbi = self._lookupAbi(functionSignature).inputs;
[] = BaseContract._formatABIDataItemList(inputAbi, [], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, []);
const ethersFunction = self._lookupEthersInterface(functionSignature).functions.owner;
const encodedData = ethersFunction.encode([]);
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);
let resultArray = ethersFunction.decode(rawCallResult);
const outputAbi = (_.find(self.abi, {name: 'owner'}) as MethodAbi).outputs;
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._lowercaseAddress.bind(this));
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._bnToBigNumber.bind(this));
return resultArray[0];
},
};
public removeAuthorizedAddressAtIndex = {
async sendTransactionAsync(
target: string,
index: BigNumber,
txData: Partial<TxData> = {},
): Promise<string> {
const self = this as any as ERC721ProxyContract;
const inputAbi = self._lookupAbi('removeAuthorizedAddressAtIndex(address,uint256)').inputs;
[target,
index
] = BaseContract._formatABIDataItemList(inputAbi, [target,
index
], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, [target,
index
]);
const encodedData = self._lookupEthersInterface('removeAuthorizedAddressAtIndex(address,uint256)').functions.removeAuthorizedAddressAtIndex.encode([target,
index
]);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...txData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
self.removeAuthorizedAddressAtIndex.estimateGasAsync.bind(
self,
target,
index
),
);
const txHash = await self._web3Wrapper.sendTransactionAsync(txDataWithDefaults);
return txHash;
},
async estimateGasAsync(
target: string,
index: BigNumber,
txData: Partial<TxData> = {},
): Promise<number> {
const self = this as any as ERC721ProxyContract;
const inputAbi = self._lookupAbi('removeAuthorizedAddressAtIndex(address,uint256)').inputs;
[target,
index
] = BaseContract._formatABIDataItemList(inputAbi, [target,
index
], BaseContract._bigNumberToString);
const encodedData = self._lookupEthersInterface('removeAuthorizedAddressAtIndex(address,uint256)').functions.removeAuthorizedAddressAtIndex.encode([target,
index
]);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...txData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const gas = await self._web3Wrapper.estimateGasAsync(txDataWithDefaults);
return gas;
},
getABIEncodedTransactionData(
target: string,
index: BigNumber,
): string {
const self = this as any as ERC721ProxyContract;
const inputAbi = self._lookupAbi('removeAuthorizedAddressAtIndex(address,uint256)').inputs;
[target,
index
] = BaseContract._formatABIDataItemList(inputAbi, [target,
index
], BaseContract._bigNumberToString);
const abiEncodedTransactionData = self._lookupEthersInterface('removeAuthorizedAddressAtIndex(address,uint256)').functions.removeAuthorizedAddressAtIndex.encode([target,
index
]);
return abiEncodedTransactionData;
},
async callAsync(
target: string,
index: BigNumber,
callData: Partial<CallData> = {},
defaultBlock?: BlockParam,
): Promise<void
> {
const self = this as any as ERC721ProxyContract;
const functionSignature = 'removeAuthorizedAddressAtIndex(address,uint256)';
const inputAbi = self._lookupAbi(functionSignature).inputs;
[target,
index
] = BaseContract._formatABIDataItemList(inputAbi, [target,
index
], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, [target,
index
]);
const ethersFunction = self._lookupEthersInterface(functionSignature).functions.removeAuthorizedAddressAtIndex;
const encodedData = ethersFunction.encode([target,
index
]);
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);
let resultArray = ethersFunction.decode(rawCallResult);
const outputAbi = (_.find(self.abi, {name: 'removeAuthorizedAddressAtIndex'}) as MethodAbi).outputs;
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._lowercaseAddress.bind(this));
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._bnToBigNumber.bind(this));
return resultArray;
},
};
public getProxyId = {
async callAsync(
callData: Partial<CallData> = {},
defaultBlock?: BlockParam,
): Promise<string
> {
const self = this as any as ERC721ProxyContract;
const functionSignature = 'getProxyId()';
const inputAbi = self._lookupAbi(functionSignature).inputs;
[] = BaseContract._formatABIDataItemList(inputAbi, [], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, []);
const ethersFunction = self._lookupEthersInterface(functionSignature).functions.getProxyId;
const encodedData = ethersFunction.encode([]);
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);
let resultArray = ethersFunction.decode(rawCallResult);
const outputAbi = (_.find(self.abi, {name: 'getProxyId'}) as MethodAbi).outputs;
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._lowercaseAddress.bind(this));
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._bnToBigNumber.bind(this));
return resultArray[0];
},
};
public authorized = {
async callAsync(
index_0: string,
callData: Partial<CallData> = {},
defaultBlock?: BlockParam,
): Promise<boolean
> {
const self = this as any as ERC721ProxyContract;
const functionSignature = 'authorized(address)';
const inputAbi = self._lookupAbi(functionSignature).inputs;
[index_0
] = BaseContract._formatABIDataItemList(inputAbi, [index_0
], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, [index_0
]);
const ethersFunction = self._lookupEthersInterface(functionSignature).functions.authorized;
const encodedData = ethersFunction.encode([index_0
]);
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);
let resultArray = ethersFunction.decode(rawCallResult);
const outputAbi = (_.find(self.abi, {name: 'authorized'}) as MethodAbi).outputs;
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._lowercaseAddress.bind(this));
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._bnToBigNumber.bind(this));
return resultArray[0];
},
};
public getAuthorizedAddresses = {
async callAsync(
callData: Partial<CallData> = {},
defaultBlock?: BlockParam,
): Promise<string[]
> {
const self = this as any as ERC721ProxyContract;
const functionSignature = 'getAuthorizedAddresses()';
const inputAbi = self._lookupAbi(functionSignature).inputs;
[] = BaseContract._formatABIDataItemList(inputAbi, [], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, []);
const ethersFunction = self._lookupEthersInterface(functionSignature).functions.getAuthorizedAddresses;
const encodedData = ethersFunction.encode([]);
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);
let resultArray = ethersFunction.decode(rawCallResult);
const outputAbi = (_.find(self.abi, {name: 'getAuthorizedAddresses'}) as MethodAbi).outputs;
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._lowercaseAddress.bind(this));
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._bnToBigNumber.bind(this));
return resultArray[0];
},
};
public transferOwnership = {
async sendTransactionAsync(
newOwner: string,
txData: Partial<TxData> = {},
): Promise<string> {
const self = this as any as ERC721ProxyContract;
const inputAbi = self._lookupAbi('transferOwnership(address)').inputs;
[newOwner
] = BaseContract._formatABIDataItemList(inputAbi, [newOwner
], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, [newOwner
]);
const encodedData = self._lookupEthersInterface('transferOwnership(address)').functions.transferOwnership.encode([newOwner
]);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...txData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
self.transferOwnership.estimateGasAsync.bind(
self,
newOwner
),
);
const txHash = await self._web3Wrapper.sendTransactionAsync(txDataWithDefaults);
return txHash;
},
async estimateGasAsync(
newOwner: string,
txData: Partial<TxData> = {},
): Promise<number> {
const self = this as any as ERC721ProxyContract;
const inputAbi = self._lookupAbi('transferOwnership(address)').inputs;
[newOwner
] = BaseContract._formatABIDataItemList(inputAbi, [newOwner
], BaseContract._bigNumberToString);
const encodedData = self._lookupEthersInterface('transferOwnership(address)').functions.transferOwnership.encode([newOwner
]);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...txData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const gas = await self._web3Wrapper.estimateGasAsync(txDataWithDefaults);
return gas;
},
getABIEncodedTransactionData(
newOwner: string,
): string {
const self = this as any as ERC721ProxyContract;
const inputAbi = self._lookupAbi('transferOwnership(address)').inputs;
[newOwner
] = BaseContract._formatABIDataItemList(inputAbi, [newOwner
], BaseContract._bigNumberToString);
const abiEncodedTransactionData = self._lookupEthersInterface('transferOwnership(address)').functions.transferOwnership.encode([newOwner
]);
return abiEncodedTransactionData;
},
async callAsync(
newOwner: string,
callData: Partial<CallData> = {},
defaultBlock?: BlockParam,
): Promise<void
> {
const self = this as any as ERC721ProxyContract;
const functionSignature = 'transferOwnership(address)';
const inputAbi = self._lookupAbi(functionSignature).inputs;
[newOwner
] = BaseContract._formatABIDataItemList(inputAbi, [newOwner
], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, [newOwner
]);
const ethersFunction = self._lookupEthersInterface(functionSignature).functions.transferOwnership;
const encodedData = ethersFunction.encode([newOwner
]);
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);
let resultArray = ethersFunction.decode(rawCallResult);
const outputAbi = (_.find(self.abi, {name: 'transferOwnership'}) as MethodAbi).outputs;
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._lowercaseAddress.bind(this));
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._bnToBigNumber.bind(this));
return resultArray;
},
};
public static async deployFrom0xArtifactAsync(
artifact: ContractArtifact | SimpleContractArtifact,
provider: Provider,
txDefaults: Partial<TxData>,
): Promise<ERC721ProxyContract> {
if (_.isUndefined(artifact.compilerOutput)) {
throw new Error('Compiler output not found in the artifact file');
}
const bytecode = artifact.compilerOutput.evm.bytecode.object;
const abi = artifact.compilerOutput.abi;
return ERC721ProxyContract.deployAsync(bytecode, abi, provider, txDefaults, );
}
public static async deployAsync(
bytecode: string,
abi: ContractAbi,
provider: Provider,
txDefaults: Partial<TxData>,
): Promise<ERC721ProxyContract> {
const constructorAbi = BaseContract._lookupConstructorAbi(abi);
[] = BaseContract._formatABIDataItemList(
constructorAbi.inputs,
[],
BaseContract._bigNumberToString,
);
const iface = new ethers.utils.Interface(abi);
const deployInfo = iface.deployFunction;
const txData = deployInfo.encode(bytecode, []);
const web3Wrapper = new Web3Wrapper(provider);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{data: txData},
txDefaults,
web3Wrapper.estimateGasAsync.bind(web3Wrapper),
);
const txHash = await web3Wrapper.sendTransactionAsync(txDataWithDefaults);
logUtils.log(`transactionHash: ${txHash}`);
const txReceipt = await web3Wrapper.awaitTransactionSuccessAsync(txHash);
logUtils.log(`ERC721Proxy successfully deployed at ${txReceipt.contractAddress}`);
const contractInstance = new ERC721ProxyContract(abi, txReceipt.contractAddress as string, provider, txDefaults);
contractInstance.constructorArgs = [];
return contractInstance;
}
constructor(abi: ContractAbi, address: string, provider: Provider, txDefaults?: Partial<TxData>) {
super('ERC721Proxy', abi, address, provider, txDefaults);
classUtils.bindAll(this, ['_ethersInterfacesByFunctionSignature', 'address', 'abi', '_web3Wrapper']);
}
} // tslint:disable:max-file-line-count
// tslint:enable:no-unbound-method

File diff suppressed because it is too large Load Diff

View File

@@ -1,379 +0,0 @@
// tslint:disable:no-consecutive-blank-lines ordered-imports align trailing-comma whitespace class-name
// tslint:disable:no-unused-variable
// tslint:disable:no-unbound-method
import { BaseContract } from '@0x/base-contract';
import { BlockParam, BlockParamLiteral, CallData, ContractAbi, ContractArtifact, DecodedLogArgs, MethodAbi, Provider, TxData, TxDataPayable } from 'ethereum-types';
import { BigNumber, classUtils, logUtils } from '@0x/utils';
import { SimpleContractArtifact } from '@0x/types';
import { Web3Wrapper } from '@0x/web3-wrapper';
import * as ethers from 'ethers';
import * as _ from 'lodash';
// tslint:enable:no-unused-variable
/* istanbul ignore next */
// tslint:disable:no-parameter-reassignment
// tslint:disable-next-line:class-name
export class ExchangeWrapperContract extends BaseContract {
public fillOrder = {
async sendTransactionAsync(
order: {makerAddress: string;takerAddress: string;feeRecipientAddress: string;senderAddress: string;makerAssetAmount: BigNumber;takerAssetAmount: BigNumber;makerFee: BigNumber;takerFee: BigNumber;expirationTimeSeconds: BigNumber;salt: BigNumber;makerAssetData: string;takerAssetData: string},
takerAssetFillAmount: BigNumber,
salt: BigNumber,
orderSignature: string,
takerSignature: string,
txData: Partial<TxData> = {},
): Promise<string> {
const self = this as any as ExchangeWrapperContract;
const inputAbi = self._lookupAbi('fillOrder({address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes},uint256,uint256,bytes,bytes)').inputs;
[order,
takerAssetFillAmount,
salt,
orderSignature,
takerSignature
] = BaseContract._formatABIDataItemList(inputAbi, [order,
takerAssetFillAmount,
salt,
orderSignature,
takerSignature
], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, [order,
takerAssetFillAmount,
salt,
orderSignature,
takerSignature
]);
const encodedData = self._lookupEthersInterface('fillOrder({address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes},uint256,uint256,bytes,bytes)').functions.fillOrder.encode([order,
takerAssetFillAmount,
salt,
orderSignature,
takerSignature
]);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...txData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
self.fillOrder.estimateGasAsync.bind(
self,
order,
takerAssetFillAmount,
salt,
orderSignature,
takerSignature
),
);
const txHash = await self._web3Wrapper.sendTransactionAsync(txDataWithDefaults);
return txHash;
},
async estimateGasAsync(
order: {makerAddress: string;takerAddress: string;feeRecipientAddress: string;senderAddress: string;makerAssetAmount: BigNumber;takerAssetAmount: BigNumber;makerFee: BigNumber;takerFee: BigNumber;expirationTimeSeconds: BigNumber;salt: BigNumber;makerAssetData: string;takerAssetData: string},
takerAssetFillAmount: BigNumber,
salt: BigNumber,
orderSignature: string,
takerSignature: string,
txData: Partial<TxData> = {},
): Promise<number> {
const self = this as any as ExchangeWrapperContract;
const inputAbi = self._lookupAbi('fillOrder({address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes},uint256,uint256,bytes,bytes)').inputs;
[order,
takerAssetFillAmount,
salt,
orderSignature,
takerSignature
] = BaseContract._formatABIDataItemList(inputAbi, [order,
takerAssetFillAmount,
salt,
orderSignature,
takerSignature
], BaseContract._bigNumberToString);
const encodedData = self._lookupEthersInterface('fillOrder({address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes},uint256,uint256,bytes,bytes)').functions.fillOrder.encode([order,
takerAssetFillAmount,
salt,
orderSignature,
takerSignature
]);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...txData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const gas = await self._web3Wrapper.estimateGasAsync(txDataWithDefaults);
return gas;
},
getABIEncodedTransactionData(
order: {makerAddress: string;takerAddress: string;feeRecipientAddress: string;senderAddress: string;makerAssetAmount: BigNumber;takerAssetAmount: BigNumber;makerFee: BigNumber;takerFee: BigNumber;expirationTimeSeconds: BigNumber;salt: BigNumber;makerAssetData: string;takerAssetData: string},
takerAssetFillAmount: BigNumber,
salt: BigNumber,
orderSignature: string,
takerSignature: string,
): string {
const self = this as any as ExchangeWrapperContract;
const inputAbi = self._lookupAbi('fillOrder({address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes},uint256,uint256,bytes,bytes)').inputs;
[order,
takerAssetFillAmount,
salt,
orderSignature,
takerSignature
] = BaseContract._formatABIDataItemList(inputAbi, [order,
takerAssetFillAmount,
salt,
orderSignature,
takerSignature
], BaseContract._bigNumberToString);
const abiEncodedTransactionData = self._lookupEthersInterface('fillOrder({address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes},uint256,uint256,bytes,bytes)').functions.fillOrder.encode([order,
takerAssetFillAmount,
salt,
orderSignature,
takerSignature
]);
return abiEncodedTransactionData;
},
async callAsync(
order: {makerAddress: string;takerAddress: string;feeRecipientAddress: string;senderAddress: string;makerAssetAmount: BigNumber;takerAssetAmount: BigNumber;makerFee: BigNumber;takerFee: BigNumber;expirationTimeSeconds: BigNumber;salt: BigNumber;makerAssetData: string;takerAssetData: string},
takerAssetFillAmount: BigNumber,
salt: BigNumber,
orderSignature: string,
takerSignature: string,
callData: Partial<CallData> = {},
defaultBlock?: BlockParam,
): Promise<void
> {
const self = this as any as ExchangeWrapperContract;
const functionSignature = 'fillOrder({address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes},uint256,uint256,bytes,bytes)';
const inputAbi = self._lookupAbi(functionSignature).inputs;
[order,
takerAssetFillAmount,
salt,
orderSignature,
takerSignature
] = BaseContract._formatABIDataItemList(inputAbi, [order,
takerAssetFillAmount,
salt,
orderSignature,
takerSignature
], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, [order,
takerAssetFillAmount,
salt,
orderSignature,
takerSignature
]);
const ethersFunction = self._lookupEthersInterface(functionSignature).functions.fillOrder;
const encodedData = ethersFunction.encode([order,
takerAssetFillAmount,
salt,
orderSignature,
takerSignature
]);
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);
let resultArray = ethersFunction.decode(rawCallResult);
const outputAbi = (_.find(self.abi, {name: 'fillOrder'}) as MethodAbi).outputs;
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._lowercaseAddress.bind(this));
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._bnToBigNumber.bind(this));
return resultArray;
},
};
public cancelOrdersUpTo = {
async sendTransactionAsync(
targetOrderEpoch: BigNumber,
salt: BigNumber,
makerSignature: string,
txData: Partial<TxData> = {},
): Promise<string> {
const self = this as any as ExchangeWrapperContract;
const inputAbi = self._lookupAbi('cancelOrdersUpTo(uint256,uint256,bytes)').inputs;
[targetOrderEpoch,
salt,
makerSignature
] = BaseContract._formatABIDataItemList(inputAbi, [targetOrderEpoch,
salt,
makerSignature
], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, [targetOrderEpoch,
salt,
makerSignature
]);
const encodedData = self._lookupEthersInterface('cancelOrdersUpTo(uint256,uint256,bytes)').functions.cancelOrdersUpTo.encode([targetOrderEpoch,
salt,
makerSignature
]);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...txData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
self.cancelOrdersUpTo.estimateGasAsync.bind(
self,
targetOrderEpoch,
salt,
makerSignature
),
);
const txHash = await self._web3Wrapper.sendTransactionAsync(txDataWithDefaults);
return txHash;
},
async estimateGasAsync(
targetOrderEpoch: BigNumber,
salt: BigNumber,
makerSignature: string,
txData: Partial<TxData> = {},
): Promise<number> {
const self = this as any as ExchangeWrapperContract;
const inputAbi = self._lookupAbi('cancelOrdersUpTo(uint256,uint256,bytes)').inputs;
[targetOrderEpoch,
salt,
makerSignature
] = BaseContract._formatABIDataItemList(inputAbi, [targetOrderEpoch,
salt,
makerSignature
], BaseContract._bigNumberToString);
const encodedData = self._lookupEthersInterface('cancelOrdersUpTo(uint256,uint256,bytes)').functions.cancelOrdersUpTo.encode([targetOrderEpoch,
salt,
makerSignature
]);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...txData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const gas = await self._web3Wrapper.estimateGasAsync(txDataWithDefaults);
return gas;
},
getABIEncodedTransactionData(
targetOrderEpoch: BigNumber,
salt: BigNumber,
makerSignature: string,
): string {
const self = this as any as ExchangeWrapperContract;
const inputAbi = self._lookupAbi('cancelOrdersUpTo(uint256,uint256,bytes)').inputs;
[targetOrderEpoch,
salt,
makerSignature
] = BaseContract._formatABIDataItemList(inputAbi, [targetOrderEpoch,
salt,
makerSignature
], BaseContract._bigNumberToString);
const abiEncodedTransactionData = self._lookupEthersInterface('cancelOrdersUpTo(uint256,uint256,bytes)').functions.cancelOrdersUpTo.encode([targetOrderEpoch,
salt,
makerSignature
]);
return abiEncodedTransactionData;
},
async callAsync(
targetOrderEpoch: BigNumber,
salt: BigNumber,
makerSignature: string,
callData: Partial<CallData> = {},
defaultBlock?: BlockParam,
): Promise<void
> {
const self = this as any as ExchangeWrapperContract;
const functionSignature = 'cancelOrdersUpTo(uint256,uint256,bytes)';
const inputAbi = self._lookupAbi(functionSignature).inputs;
[targetOrderEpoch,
salt,
makerSignature
] = BaseContract._formatABIDataItemList(inputAbi, [targetOrderEpoch,
salt,
makerSignature
], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, [targetOrderEpoch,
salt,
makerSignature
]);
const ethersFunction = self._lookupEthersInterface(functionSignature).functions.cancelOrdersUpTo;
const encodedData = ethersFunction.encode([targetOrderEpoch,
salt,
makerSignature
]);
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);
let resultArray = ethersFunction.decode(rawCallResult);
const outputAbi = (_.find(self.abi, {name: 'cancelOrdersUpTo'}) as MethodAbi).outputs;
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._lowercaseAddress.bind(this));
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._bnToBigNumber.bind(this));
return resultArray;
},
};
public static async deployFrom0xArtifactAsync(
artifact: ContractArtifact | SimpleContractArtifact,
provider: Provider,
txDefaults: Partial<TxData>,
_exchange: string,
): Promise<ExchangeWrapperContract> {
if (_.isUndefined(artifact.compilerOutput)) {
throw new Error('Compiler output not found in the artifact file');
}
const bytecode = artifact.compilerOutput.evm.bytecode.object;
const abi = artifact.compilerOutput.abi;
return ExchangeWrapperContract.deployAsync(bytecode, abi, provider, txDefaults, _exchange
);
}
public static async deployAsync(
bytecode: string,
abi: ContractAbi,
provider: Provider,
txDefaults: Partial<TxData>,
_exchange: string,
): Promise<ExchangeWrapperContract> {
const constructorAbi = BaseContract._lookupConstructorAbi(abi);
[_exchange
] = BaseContract._formatABIDataItemList(
constructorAbi.inputs,
[_exchange
],
BaseContract._bigNumberToString,
);
const iface = new ethers.utils.Interface(abi);
const deployInfo = iface.deployFunction;
const txData = deployInfo.encode(bytecode, [_exchange
]);
const web3Wrapper = new Web3Wrapper(provider);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{data: txData},
txDefaults,
web3Wrapper.estimateGasAsync.bind(web3Wrapper),
);
const txHash = await web3Wrapper.sendTransactionAsync(txDataWithDefaults);
logUtils.log(`transactionHash: ${txHash}`);
const txReceipt = await web3Wrapper.awaitTransactionSuccessAsync(txHash);
logUtils.log(`ExchangeWrapper successfully deployed at ${txReceipt.contractAddress}`);
const contractInstance = new ExchangeWrapperContract(abi, txReceipt.contractAddress as string, provider, txDefaults);
contractInstance.constructorArgs = [_exchange
];
return contractInstance;
}
constructor(abi: ContractAbi, address: string, provider: Provider, txDefaults?: Partial<TxData>) {
super('ExchangeWrapper', abi, address, provider, txDefaults);
classUtils.bindAll(this, ['_ethersInterfacesByFunctionSignature', 'address', 'abi', '_web3Wrapper']);
}
} // tslint:disable:max-file-line-count
// tslint:enable:no-unbound-method

View File

@@ -1,731 +0,0 @@
// tslint:disable:no-consecutive-blank-lines ordered-imports align trailing-comma whitespace class-name
// tslint:disable:no-unused-variable
// tslint:disable:no-unbound-method
import { BaseContract } from '@0x/base-contract';
import { BlockParam, BlockParamLiteral, CallData, ContractAbi, ContractArtifact, DecodedLogArgs, MethodAbi, Provider, TxData, TxDataPayable } from 'ethereum-types';
import { BigNumber, classUtils, logUtils } from '@0x/utils';
import { SimpleContractArtifact } from '@0x/types';
import { Web3Wrapper } from '@0x/web3-wrapper';
import * as ethers from 'ethers';
import * as _ from 'lodash';
// tslint:enable:no-unused-variable
/* istanbul ignore next */
// tslint:disable:no-parameter-reassignment
// tslint:disable-next-line:class-name
export class ForwarderContract extends BaseContract {
public marketBuyOrdersWithEth = {
async sendTransactionAsync(
orders: 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}>,
makerAssetFillAmount: BigNumber,
signatures: string[],
feeOrders: 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}>,
feeSignatures: string[],
feePercentage: BigNumber,
feeRecipient: string,
txData: Partial<TxDataPayable> = {},
): Promise<string> {
const self = this as any as ForwarderContract;
const inputAbi = self._lookupAbi('marketBuyOrdersWithEth(tuple[],uint256,bytes[],tuple[],bytes[],uint256,address)').inputs;
[orders,
makerAssetFillAmount,
signatures,
feeOrders,
feeSignatures,
feePercentage,
feeRecipient
] = BaseContract._formatABIDataItemList(inputAbi, [orders,
makerAssetFillAmount,
signatures,
feeOrders,
feeSignatures,
feePercentage,
feeRecipient
], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, [orders,
makerAssetFillAmount,
signatures,
feeOrders,
feeSignatures,
feePercentage,
feeRecipient
]);
const encodedData = self._lookupEthersInterface('marketBuyOrdersWithEth(tuple[],uint256,bytes[],tuple[],bytes[],uint256,address)').functions.marketBuyOrdersWithEth.encode([orders,
makerAssetFillAmount,
signatures,
feeOrders,
feeSignatures,
feePercentage,
feeRecipient
]);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...txData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
self.marketBuyOrdersWithEth.estimateGasAsync.bind(
self,
orders,
makerAssetFillAmount,
signatures,
feeOrders,
feeSignatures,
feePercentage,
feeRecipient
),
);
const txHash = await self._web3Wrapper.sendTransactionAsync(txDataWithDefaults);
return txHash;
},
async estimateGasAsync(
orders: 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}>,
makerAssetFillAmount: BigNumber,
signatures: string[],
feeOrders: 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}>,
feeSignatures: string[],
feePercentage: BigNumber,
feeRecipient: string,
txData: Partial<TxData> = {},
): Promise<number> {
const self = this as any as ForwarderContract;
const inputAbi = self._lookupAbi('marketBuyOrdersWithEth(tuple[],uint256,bytes[],tuple[],bytes[],uint256,address)').inputs;
[orders,
makerAssetFillAmount,
signatures,
feeOrders,
feeSignatures,
feePercentage,
feeRecipient
] = BaseContract._formatABIDataItemList(inputAbi, [orders,
makerAssetFillAmount,
signatures,
feeOrders,
feeSignatures,
feePercentage,
feeRecipient
], BaseContract._bigNumberToString);
const encodedData = self._lookupEthersInterface('marketBuyOrdersWithEth(tuple[],uint256,bytes[],tuple[],bytes[],uint256,address)').functions.marketBuyOrdersWithEth.encode([orders,
makerAssetFillAmount,
signatures,
feeOrders,
feeSignatures,
feePercentage,
feeRecipient
]);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...txData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const gas = await self._web3Wrapper.estimateGasAsync(txDataWithDefaults);
return gas;
},
getABIEncodedTransactionData(
orders: 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}>,
makerAssetFillAmount: BigNumber,
signatures: string[],
feeOrders: 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}>,
feeSignatures: string[],
feePercentage: BigNumber,
feeRecipient: string,
): string {
const self = this as any as ForwarderContract;
const inputAbi = self._lookupAbi('marketBuyOrdersWithEth(tuple[],uint256,bytes[],tuple[],bytes[],uint256,address)').inputs;
[orders,
makerAssetFillAmount,
signatures,
feeOrders,
feeSignatures,
feePercentage,
feeRecipient
] = BaseContract._formatABIDataItemList(inputAbi, [orders,
makerAssetFillAmount,
signatures,
feeOrders,
feeSignatures,
feePercentage,
feeRecipient
], BaseContract._bigNumberToString);
const abiEncodedTransactionData = self._lookupEthersInterface('marketBuyOrdersWithEth(tuple[],uint256,bytes[],tuple[],bytes[],uint256,address)').functions.marketBuyOrdersWithEth.encode([orders,
makerAssetFillAmount,
signatures,
feeOrders,
feeSignatures,
feePercentage,
feeRecipient
]);
return abiEncodedTransactionData;
},
async callAsync(
orders: 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}>,
makerAssetFillAmount: BigNumber,
signatures: string[],
feeOrders: 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}>,
feeSignatures: string[],
feePercentage: BigNumber,
feeRecipient: string,
callData: Partial<CallData> = {},
defaultBlock?: BlockParam,
): Promise<[{makerAssetFilledAmount: BigNumber;takerAssetFilledAmount: BigNumber;makerFeePaid: BigNumber;takerFeePaid: BigNumber}, {makerAssetFilledAmount: BigNumber;takerAssetFilledAmount: BigNumber;makerFeePaid: BigNumber;takerFeePaid: BigNumber}]
> {
const self = this as any as ForwarderContract;
const functionSignature = 'marketBuyOrdersWithEth(tuple[],uint256,bytes[],tuple[],bytes[],uint256,address)';
const inputAbi = self._lookupAbi(functionSignature).inputs;
[orders,
makerAssetFillAmount,
signatures,
feeOrders,
feeSignatures,
feePercentage,
feeRecipient
] = BaseContract._formatABIDataItemList(inputAbi, [orders,
makerAssetFillAmount,
signatures,
feeOrders,
feeSignatures,
feePercentage,
feeRecipient
], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, [orders,
makerAssetFillAmount,
signatures,
feeOrders,
feeSignatures,
feePercentage,
feeRecipient
]);
const ethersFunction = self._lookupEthersInterface(functionSignature).functions.marketBuyOrdersWithEth;
const encodedData = ethersFunction.encode([orders,
makerAssetFillAmount,
signatures,
feeOrders,
feeSignatures,
feePercentage,
feeRecipient
]);
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);
let resultArray = ethersFunction.decode(rawCallResult);
const outputAbi = (_.find(self.abi, {name: 'marketBuyOrdersWithEth'}) as MethodAbi).outputs;
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._lowercaseAddress.bind(this));
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._bnToBigNumber.bind(this));
return resultArray;
},
};
public withdrawAsset = {
async sendTransactionAsync(
assetData: string,
amount: BigNumber,
txData: Partial<TxData> = {},
): Promise<string> {
const self = this as any as ForwarderContract;
const inputAbi = self._lookupAbi('withdrawAsset(bytes,uint256)').inputs;
[assetData,
amount
] = BaseContract._formatABIDataItemList(inputAbi, [assetData,
amount
], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, [assetData,
amount
]);
const encodedData = self._lookupEthersInterface('withdrawAsset(bytes,uint256)').functions.withdrawAsset.encode([assetData,
amount
]);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...txData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
self.withdrawAsset.estimateGasAsync.bind(
self,
assetData,
amount
),
);
const txHash = await self._web3Wrapper.sendTransactionAsync(txDataWithDefaults);
return txHash;
},
async estimateGasAsync(
assetData: string,
amount: BigNumber,
txData: Partial<TxData> = {},
): Promise<number> {
const self = this as any as ForwarderContract;
const inputAbi = self._lookupAbi('withdrawAsset(bytes,uint256)').inputs;
[assetData,
amount
] = BaseContract._formatABIDataItemList(inputAbi, [assetData,
amount
], BaseContract._bigNumberToString);
const encodedData = self._lookupEthersInterface('withdrawAsset(bytes,uint256)').functions.withdrawAsset.encode([assetData,
amount
]);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...txData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const gas = await self._web3Wrapper.estimateGasAsync(txDataWithDefaults);
return gas;
},
getABIEncodedTransactionData(
assetData: string,
amount: BigNumber,
): string {
const self = this as any as ForwarderContract;
const inputAbi = self._lookupAbi('withdrawAsset(bytes,uint256)').inputs;
[assetData,
amount
] = BaseContract._formatABIDataItemList(inputAbi, [assetData,
amount
], BaseContract._bigNumberToString);
const abiEncodedTransactionData = self._lookupEthersInterface('withdrawAsset(bytes,uint256)').functions.withdrawAsset.encode([assetData,
amount
]);
return abiEncodedTransactionData;
},
async callAsync(
assetData: string,
amount: BigNumber,
callData: Partial<CallData> = {},
defaultBlock?: BlockParam,
): Promise<void
> {
const self = this as any as ForwarderContract;
const functionSignature = 'withdrawAsset(bytes,uint256)';
const inputAbi = self._lookupAbi(functionSignature).inputs;
[assetData,
amount
] = BaseContract._formatABIDataItemList(inputAbi, [assetData,
amount
], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, [assetData,
amount
]);
const ethersFunction = self._lookupEthersInterface(functionSignature).functions.withdrawAsset;
const encodedData = ethersFunction.encode([assetData,
amount
]);
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);
let resultArray = ethersFunction.decode(rawCallResult);
const outputAbi = (_.find(self.abi, {name: 'withdrawAsset'}) as MethodAbi).outputs;
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._lowercaseAddress.bind(this));
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._bnToBigNumber.bind(this));
return resultArray;
},
};
public owner = {
async callAsync(
callData: Partial<CallData> = {},
defaultBlock?: BlockParam,
): Promise<string
> {
const self = this as any as ForwarderContract;
const functionSignature = 'owner()';
const inputAbi = self._lookupAbi(functionSignature).inputs;
[] = BaseContract._formatABIDataItemList(inputAbi, [], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, []);
const ethersFunction = self._lookupEthersInterface(functionSignature).functions.owner;
const encodedData = ethersFunction.encode([]);
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);
let resultArray = ethersFunction.decode(rawCallResult);
const outputAbi = (_.find(self.abi, {name: 'owner'}) as MethodAbi).outputs;
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._lowercaseAddress.bind(this));
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._bnToBigNumber.bind(this));
return resultArray[0];
},
};
public marketSellOrdersWithEth = {
async sendTransactionAsync(
orders: 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}>,
signatures: string[],
feeOrders: 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}>,
feeSignatures: string[],
feePercentage: BigNumber,
feeRecipient: string,
txData: Partial<TxDataPayable> = {},
): Promise<string> {
const self = this as any as ForwarderContract;
const inputAbi = self._lookupAbi('marketSellOrdersWithEth(tuple[],bytes[],tuple[],bytes[],uint256,address)').inputs;
[orders,
signatures,
feeOrders,
feeSignatures,
feePercentage,
feeRecipient
] = BaseContract._formatABIDataItemList(inputAbi, [orders,
signatures,
feeOrders,
feeSignatures,
feePercentage,
feeRecipient
], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, [orders,
signatures,
feeOrders,
feeSignatures,
feePercentage,
feeRecipient
]);
const encodedData = self._lookupEthersInterface('marketSellOrdersWithEth(tuple[],bytes[],tuple[],bytes[],uint256,address)').functions.marketSellOrdersWithEth.encode([orders,
signatures,
feeOrders,
feeSignatures,
feePercentage,
feeRecipient
]);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...txData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
self.marketSellOrdersWithEth.estimateGasAsync.bind(
self,
orders,
signatures,
feeOrders,
feeSignatures,
feePercentage,
feeRecipient
),
);
const txHash = await self._web3Wrapper.sendTransactionAsync(txDataWithDefaults);
return txHash;
},
async estimateGasAsync(
orders: 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}>,
signatures: string[],
feeOrders: 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}>,
feeSignatures: string[],
feePercentage: BigNumber,
feeRecipient: string,
txData: Partial<TxData> = {},
): Promise<number> {
const self = this as any as ForwarderContract;
const inputAbi = self._lookupAbi('marketSellOrdersWithEth(tuple[],bytes[],tuple[],bytes[],uint256,address)').inputs;
[orders,
signatures,
feeOrders,
feeSignatures,
feePercentage,
feeRecipient
] = BaseContract._formatABIDataItemList(inputAbi, [orders,
signatures,
feeOrders,
feeSignatures,
feePercentage,
feeRecipient
], BaseContract._bigNumberToString);
const encodedData = self._lookupEthersInterface('marketSellOrdersWithEth(tuple[],bytes[],tuple[],bytes[],uint256,address)').functions.marketSellOrdersWithEth.encode([orders,
signatures,
feeOrders,
feeSignatures,
feePercentage,
feeRecipient
]);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...txData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const gas = await self._web3Wrapper.estimateGasAsync(txDataWithDefaults);
return gas;
},
getABIEncodedTransactionData(
orders: 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}>,
signatures: string[],
feeOrders: 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}>,
feeSignatures: string[],
feePercentage: BigNumber,
feeRecipient: string,
): string {
const self = this as any as ForwarderContract;
const inputAbi = self._lookupAbi('marketSellOrdersWithEth(tuple[],bytes[],tuple[],bytes[],uint256,address)').inputs;
[orders,
signatures,
feeOrders,
feeSignatures,
feePercentage,
feeRecipient
] = BaseContract._formatABIDataItemList(inputAbi, [orders,
signatures,
feeOrders,
feeSignatures,
feePercentage,
feeRecipient
], BaseContract._bigNumberToString);
const abiEncodedTransactionData = self._lookupEthersInterface('marketSellOrdersWithEth(tuple[],bytes[],tuple[],bytes[],uint256,address)').functions.marketSellOrdersWithEth.encode([orders,
signatures,
feeOrders,
feeSignatures,
feePercentage,
feeRecipient
]);
return abiEncodedTransactionData;
},
async callAsync(
orders: 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}>,
signatures: string[],
feeOrders: 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}>,
feeSignatures: string[],
feePercentage: BigNumber,
feeRecipient: string,
callData: Partial<CallData> = {},
defaultBlock?: BlockParam,
): Promise<[{makerAssetFilledAmount: BigNumber;takerAssetFilledAmount: BigNumber;makerFeePaid: BigNumber;takerFeePaid: BigNumber}, {makerAssetFilledAmount: BigNumber;takerAssetFilledAmount: BigNumber;makerFeePaid: BigNumber;takerFeePaid: BigNumber}]
> {
const self = this as any as ForwarderContract;
const functionSignature = 'marketSellOrdersWithEth(tuple[],bytes[],tuple[],bytes[],uint256,address)';
const inputAbi = self._lookupAbi(functionSignature).inputs;
[orders,
signatures,
feeOrders,
feeSignatures,
feePercentage,
feeRecipient
] = BaseContract._formatABIDataItemList(inputAbi, [orders,
signatures,
feeOrders,
feeSignatures,
feePercentage,
feeRecipient
], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, [orders,
signatures,
feeOrders,
feeSignatures,
feePercentage,
feeRecipient
]);
const ethersFunction = self._lookupEthersInterface(functionSignature).functions.marketSellOrdersWithEth;
const encodedData = ethersFunction.encode([orders,
signatures,
feeOrders,
feeSignatures,
feePercentage,
feeRecipient
]);
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);
let resultArray = ethersFunction.decode(rawCallResult);
const outputAbi = (_.find(self.abi, {name: 'marketSellOrdersWithEth'}) as MethodAbi).outputs;
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._lowercaseAddress.bind(this));
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._bnToBigNumber.bind(this));
return resultArray;
},
};
public transferOwnership = {
async sendTransactionAsync(
newOwner: string,
txData: Partial<TxData> = {},
): Promise<string> {
const self = this as any as ForwarderContract;
const inputAbi = self._lookupAbi('transferOwnership(address)').inputs;
[newOwner
] = BaseContract._formatABIDataItemList(inputAbi, [newOwner
], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, [newOwner
]);
const encodedData = self._lookupEthersInterface('transferOwnership(address)').functions.transferOwnership.encode([newOwner
]);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...txData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
self.transferOwnership.estimateGasAsync.bind(
self,
newOwner
),
);
const txHash = await self._web3Wrapper.sendTransactionAsync(txDataWithDefaults);
return txHash;
},
async estimateGasAsync(
newOwner: string,
txData: Partial<TxData> = {},
): Promise<number> {
const self = this as any as ForwarderContract;
const inputAbi = self._lookupAbi('transferOwnership(address)').inputs;
[newOwner
] = BaseContract._formatABIDataItemList(inputAbi, [newOwner
], BaseContract._bigNumberToString);
const encodedData = self._lookupEthersInterface('transferOwnership(address)').functions.transferOwnership.encode([newOwner
]);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...txData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const gas = await self._web3Wrapper.estimateGasAsync(txDataWithDefaults);
return gas;
},
getABIEncodedTransactionData(
newOwner: string,
): string {
const self = this as any as ForwarderContract;
const inputAbi = self._lookupAbi('transferOwnership(address)').inputs;
[newOwner
] = BaseContract._formatABIDataItemList(inputAbi, [newOwner
], BaseContract._bigNumberToString);
const abiEncodedTransactionData = self._lookupEthersInterface('transferOwnership(address)').functions.transferOwnership.encode([newOwner
]);
return abiEncodedTransactionData;
},
async callAsync(
newOwner: string,
callData: Partial<CallData> = {},
defaultBlock?: BlockParam,
): Promise<void
> {
const self = this as any as ForwarderContract;
const functionSignature = 'transferOwnership(address)';
const inputAbi = self._lookupAbi(functionSignature).inputs;
[newOwner
] = BaseContract._formatABIDataItemList(inputAbi, [newOwner
], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, [newOwner
]);
const ethersFunction = self._lookupEthersInterface(functionSignature).functions.transferOwnership;
const encodedData = ethersFunction.encode([newOwner
]);
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);
let resultArray = ethersFunction.decode(rawCallResult);
const outputAbi = (_.find(self.abi, {name: 'transferOwnership'}) as MethodAbi).outputs;
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._lowercaseAddress.bind(this));
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._bnToBigNumber.bind(this));
return resultArray;
},
};
public static async deployFrom0xArtifactAsync(
artifact: ContractArtifact | SimpleContractArtifact,
provider: Provider,
txDefaults: Partial<TxData>,
_exchange: string,
_zrxAssetData: string,
_wethAssetData: string,
): Promise<ForwarderContract> {
if (_.isUndefined(artifact.compilerOutput)) {
throw new Error('Compiler output not found in the artifact file');
}
const bytecode = artifact.compilerOutput.evm.bytecode.object;
const abi = artifact.compilerOutput.abi;
return ForwarderContract.deployAsync(bytecode, abi, provider, txDefaults, _exchange,
_zrxAssetData,
_wethAssetData
);
}
public static async deployAsync(
bytecode: string,
abi: ContractAbi,
provider: Provider,
txDefaults: Partial<TxData>,
_exchange: string,
_zrxAssetData: string,
_wethAssetData: string,
): Promise<ForwarderContract> {
const constructorAbi = BaseContract._lookupConstructorAbi(abi);
[_exchange,
_zrxAssetData,
_wethAssetData
] = BaseContract._formatABIDataItemList(
constructorAbi.inputs,
[_exchange,
_zrxAssetData,
_wethAssetData
],
BaseContract._bigNumberToString,
);
const iface = new ethers.utils.Interface(abi);
const deployInfo = iface.deployFunction;
const txData = deployInfo.encode(bytecode, [_exchange,
_zrxAssetData,
_wethAssetData
]);
const web3Wrapper = new Web3Wrapper(provider);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{data: txData},
txDefaults,
web3Wrapper.estimateGasAsync.bind(web3Wrapper),
);
const txHash = await web3Wrapper.sendTransactionAsync(txDataWithDefaults);
logUtils.log(`transactionHash: ${txHash}`);
const txReceipt = await web3Wrapper.awaitTransactionSuccessAsync(txHash);
logUtils.log(`Forwarder successfully deployed at ${txReceipt.contractAddress}`);
const contractInstance = new ForwarderContract(abi, txReceipt.contractAddress as string, provider, txDefaults);
contractInstance.constructorArgs = [_exchange,
_zrxAssetData,
_wethAssetData
];
return contractInstance;
}
constructor(abi: ContractAbi, address: string, provider: Provider, txDefaults?: Partial<TxData>) {
super('Forwarder', abi, address, provider, txDefaults);
classUtils.bindAll(this, ['_ethersInterfacesByFunctionSignature', 'address', 'abi', '_web3Wrapper']);
}
} // tslint:disable:max-file-line-count
// tslint:enable:no-unbound-method

View File

@@ -1,620 +0,0 @@
// tslint:disable:no-consecutive-blank-lines ordered-imports align trailing-comma whitespace class-name
// tslint:disable:no-unused-variable
// tslint:disable:no-unbound-method
import { BaseContract } from '@0x/base-contract';
import { BlockParam, BlockParamLiteral, CallData, ContractAbi, ContractArtifact, DecodedLogArgs, MethodAbi, Provider, TxData, TxDataPayable } from 'ethereum-types';
import { BigNumber, classUtils, logUtils } from '@0x/utils';
import { SimpleContractArtifact } from '@0x/types';
import { Web3Wrapper } from '@0x/web3-wrapper';
import * as ethers from 'ethers';
import * as _ from 'lodash';
// tslint:enable:no-unused-variable
export type MixinAuthorizableEventArgs =
| MixinAuthorizableAuthorizedAddressAddedEventArgs
| MixinAuthorizableAuthorizedAddressRemovedEventArgs;
export enum MixinAuthorizableEvents {
AuthorizedAddressAdded = 'AuthorizedAddressAdded',
AuthorizedAddressRemoved = 'AuthorizedAddressRemoved',
}
export interface MixinAuthorizableAuthorizedAddressAddedEventArgs extends DecodedLogArgs {
target: string;
caller: string;
}
export interface MixinAuthorizableAuthorizedAddressRemovedEventArgs extends DecodedLogArgs {
target: string;
caller: string;
}
/* istanbul ignore next */
// tslint:disable:no-parameter-reassignment
// tslint:disable-next-line:class-name
export class MixinAuthorizableContract extends BaseContract {
public addAuthorizedAddress = {
async sendTransactionAsync(
target: string,
txData: Partial<TxData> = {},
): Promise<string> {
const self = this as any as MixinAuthorizableContract;
const inputAbi = self._lookupAbi('addAuthorizedAddress(address)').inputs;
[target
] = BaseContract._formatABIDataItemList(inputAbi, [target
], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, [target
]);
const encodedData = self._lookupEthersInterface('addAuthorizedAddress(address)').functions.addAuthorizedAddress.encode([target
]);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...txData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
self.addAuthorizedAddress.estimateGasAsync.bind(
self,
target
),
);
const txHash = await self._web3Wrapper.sendTransactionAsync(txDataWithDefaults);
return txHash;
},
async estimateGasAsync(
target: string,
txData: Partial<TxData> = {},
): Promise<number> {
const self = this as any as MixinAuthorizableContract;
const inputAbi = self._lookupAbi('addAuthorizedAddress(address)').inputs;
[target
] = BaseContract._formatABIDataItemList(inputAbi, [target
], BaseContract._bigNumberToString);
const encodedData = self._lookupEthersInterface('addAuthorizedAddress(address)').functions.addAuthorizedAddress.encode([target
]);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...txData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const gas = await self._web3Wrapper.estimateGasAsync(txDataWithDefaults);
return gas;
},
getABIEncodedTransactionData(
target: string,
): string {
const self = this as any as MixinAuthorizableContract;
const inputAbi = self._lookupAbi('addAuthorizedAddress(address)').inputs;
[target
] = BaseContract._formatABIDataItemList(inputAbi, [target
], BaseContract._bigNumberToString);
const abiEncodedTransactionData = self._lookupEthersInterface('addAuthorizedAddress(address)').functions.addAuthorizedAddress.encode([target
]);
return abiEncodedTransactionData;
},
async callAsync(
target: string,
callData: Partial<CallData> = {},
defaultBlock?: BlockParam,
): Promise<void
> {
const self = this as any as MixinAuthorizableContract;
const functionSignature = 'addAuthorizedAddress(address)';
const inputAbi = self._lookupAbi(functionSignature).inputs;
[target
] = BaseContract._formatABIDataItemList(inputAbi, [target
], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, [target
]);
const ethersFunction = self._lookupEthersInterface(functionSignature).functions.addAuthorizedAddress;
const encodedData = ethersFunction.encode([target
]);
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);
let resultArray = ethersFunction.decode(rawCallResult);
const outputAbi = (_.find(self.abi, {name: 'addAuthorizedAddress'}) as MethodAbi).outputs;
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._lowercaseAddress.bind(this));
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._bnToBigNumber.bind(this));
return resultArray;
},
};
public authorities = {
async callAsync(
index_0: BigNumber,
callData: Partial<CallData> = {},
defaultBlock?: BlockParam,
): Promise<string
> {
const self = this as any as MixinAuthorizableContract;
const functionSignature = 'authorities(uint256)';
const inputAbi = self._lookupAbi(functionSignature).inputs;
[index_0
] = BaseContract._formatABIDataItemList(inputAbi, [index_0
], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, [index_0
]);
const ethersFunction = self._lookupEthersInterface(functionSignature).functions.authorities;
const encodedData = ethersFunction.encode([index_0
]);
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);
let resultArray = ethersFunction.decode(rawCallResult);
const outputAbi = (_.find(self.abi, {name: 'authorities'}) as MethodAbi).outputs;
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._lowercaseAddress.bind(this));
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._bnToBigNumber.bind(this));
return resultArray[0];
},
};
public removeAuthorizedAddress = {
async sendTransactionAsync(
target: string,
txData: Partial<TxData> = {},
): Promise<string> {
const self = this as any as MixinAuthorizableContract;
const inputAbi = self._lookupAbi('removeAuthorizedAddress(address)').inputs;
[target
] = BaseContract._formatABIDataItemList(inputAbi, [target
], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, [target
]);
const encodedData = self._lookupEthersInterface('removeAuthorizedAddress(address)').functions.removeAuthorizedAddress.encode([target
]);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...txData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
self.removeAuthorizedAddress.estimateGasAsync.bind(
self,
target
),
);
const txHash = await self._web3Wrapper.sendTransactionAsync(txDataWithDefaults);
return txHash;
},
async estimateGasAsync(
target: string,
txData: Partial<TxData> = {},
): Promise<number> {
const self = this as any as MixinAuthorizableContract;
const inputAbi = self._lookupAbi('removeAuthorizedAddress(address)').inputs;
[target
] = BaseContract._formatABIDataItemList(inputAbi, [target
], BaseContract._bigNumberToString);
const encodedData = self._lookupEthersInterface('removeAuthorizedAddress(address)').functions.removeAuthorizedAddress.encode([target
]);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...txData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const gas = await self._web3Wrapper.estimateGasAsync(txDataWithDefaults);
return gas;
},
getABIEncodedTransactionData(
target: string,
): string {
const self = this as any as MixinAuthorizableContract;
const inputAbi = self._lookupAbi('removeAuthorizedAddress(address)').inputs;
[target
] = BaseContract._formatABIDataItemList(inputAbi, [target
], BaseContract._bigNumberToString);
const abiEncodedTransactionData = self._lookupEthersInterface('removeAuthorizedAddress(address)').functions.removeAuthorizedAddress.encode([target
]);
return abiEncodedTransactionData;
},
async callAsync(
target: string,
callData: Partial<CallData> = {},
defaultBlock?: BlockParam,
): Promise<void
> {
const self = this as any as MixinAuthorizableContract;
const functionSignature = 'removeAuthorizedAddress(address)';
const inputAbi = self._lookupAbi(functionSignature).inputs;
[target
] = BaseContract._formatABIDataItemList(inputAbi, [target
], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, [target
]);
const ethersFunction = self._lookupEthersInterface(functionSignature).functions.removeAuthorizedAddress;
const encodedData = ethersFunction.encode([target
]);
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);
let resultArray = ethersFunction.decode(rawCallResult);
const outputAbi = (_.find(self.abi, {name: 'removeAuthorizedAddress'}) as MethodAbi).outputs;
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._lowercaseAddress.bind(this));
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._bnToBigNumber.bind(this));
return resultArray;
},
};
public owner = {
async callAsync(
callData: Partial<CallData> = {},
defaultBlock?: BlockParam,
): Promise<string
> {
const self = this as any as MixinAuthorizableContract;
const functionSignature = 'owner()';
const inputAbi = self._lookupAbi(functionSignature).inputs;
[] = BaseContract._formatABIDataItemList(inputAbi, [], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, []);
const ethersFunction = self._lookupEthersInterface(functionSignature).functions.owner;
const encodedData = ethersFunction.encode([]);
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);
let resultArray = ethersFunction.decode(rawCallResult);
const outputAbi = (_.find(self.abi, {name: 'owner'}) as MethodAbi).outputs;
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._lowercaseAddress.bind(this));
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._bnToBigNumber.bind(this));
return resultArray[0];
},
};
public removeAuthorizedAddressAtIndex = {
async sendTransactionAsync(
target: string,
index: BigNumber,
txData: Partial<TxData> = {},
): Promise<string> {
const self = this as any as MixinAuthorizableContract;
const inputAbi = self._lookupAbi('removeAuthorizedAddressAtIndex(address,uint256)').inputs;
[target,
index
] = BaseContract._formatABIDataItemList(inputAbi, [target,
index
], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, [target,
index
]);
const encodedData = self._lookupEthersInterface('removeAuthorizedAddressAtIndex(address,uint256)').functions.removeAuthorizedAddressAtIndex.encode([target,
index
]);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...txData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
self.removeAuthorizedAddressAtIndex.estimateGasAsync.bind(
self,
target,
index
),
);
const txHash = await self._web3Wrapper.sendTransactionAsync(txDataWithDefaults);
return txHash;
},
async estimateGasAsync(
target: string,
index: BigNumber,
txData: Partial<TxData> = {},
): Promise<number> {
const self = this as any as MixinAuthorizableContract;
const inputAbi = self._lookupAbi('removeAuthorizedAddressAtIndex(address,uint256)').inputs;
[target,
index
] = BaseContract._formatABIDataItemList(inputAbi, [target,
index
], BaseContract._bigNumberToString);
const encodedData = self._lookupEthersInterface('removeAuthorizedAddressAtIndex(address,uint256)').functions.removeAuthorizedAddressAtIndex.encode([target,
index
]);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...txData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const gas = await self._web3Wrapper.estimateGasAsync(txDataWithDefaults);
return gas;
},
getABIEncodedTransactionData(
target: string,
index: BigNumber,
): string {
const self = this as any as MixinAuthorizableContract;
const inputAbi = self._lookupAbi('removeAuthorizedAddressAtIndex(address,uint256)').inputs;
[target,
index
] = BaseContract._formatABIDataItemList(inputAbi, [target,
index
], BaseContract._bigNumberToString);
const abiEncodedTransactionData = self._lookupEthersInterface('removeAuthorizedAddressAtIndex(address,uint256)').functions.removeAuthorizedAddressAtIndex.encode([target,
index
]);
return abiEncodedTransactionData;
},
async callAsync(
target: string,
index: BigNumber,
callData: Partial<CallData> = {},
defaultBlock?: BlockParam,
): Promise<void
> {
const self = this as any as MixinAuthorizableContract;
const functionSignature = 'removeAuthorizedAddressAtIndex(address,uint256)';
const inputAbi = self._lookupAbi(functionSignature).inputs;
[target,
index
] = BaseContract._formatABIDataItemList(inputAbi, [target,
index
], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, [target,
index
]);
const ethersFunction = self._lookupEthersInterface(functionSignature).functions.removeAuthorizedAddressAtIndex;
const encodedData = ethersFunction.encode([target,
index
]);
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);
let resultArray = ethersFunction.decode(rawCallResult);
const outputAbi = (_.find(self.abi, {name: 'removeAuthorizedAddressAtIndex'}) as MethodAbi).outputs;
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._lowercaseAddress.bind(this));
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._bnToBigNumber.bind(this));
return resultArray;
},
};
public authorized = {
async callAsync(
index_0: string,
callData: Partial<CallData> = {},
defaultBlock?: BlockParam,
): Promise<boolean
> {
const self = this as any as MixinAuthorizableContract;
const functionSignature = 'authorized(address)';
const inputAbi = self._lookupAbi(functionSignature).inputs;
[index_0
] = BaseContract._formatABIDataItemList(inputAbi, [index_0
], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, [index_0
]);
const ethersFunction = self._lookupEthersInterface(functionSignature).functions.authorized;
const encodedData = ethersFunction.encode([index_0
]);
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);
let resultArray = ethersFunction.decode(rawCallResult);
const outputAbi = (_.find(self.abi, {name: 'authorized'}) as MethodAbi).outputs;
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._lowercaseAddress.bind(this));
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._bnToBigNumber.bind(this));
return resultArray[0];
},
};
public getAuthorizedAddresses = {
async callAsync(
callData: Partial<CallData> = {},
defaultBlock?: BlockParam,
): Promise<string[]
> {
const self = this as any as MixinAuthorizableContract;
const functionSignature = 'getAuthorizedAddresses()';
const inputAbi = self._lookupAbi(functionSignature).inputs;
[] = BaseContract._formatABIDataItemList(inputAbi, [], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, []);
const ethersFunction = self._lookupEthersInterface(functionSignature).functions.getAuthorizedAddresses;
const encodedData = ethersFunction.encode([]);
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);
let resultArray = ethersFunction.decode(rawCallResult);
const outputAbi = (_.find(self.abi, {name: 'getAuthorizedAddresses'}) as MethodAbi).outputs;
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._lowercaseAddress.bind(this));
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._bnToBigNumber.bind(this));
return resultArray[0];
},
};
public transferOwnership = {
async sendTransactionAsync(
newOwner: string,
txData: Partial<TxData> = {},
): Promise<string> {
const self = this as any as MixinAuthorizableContract;
const inputAbi = self._lookupAbi('transferOwnership(address)').inputs;
[newOwner
] = BaseContract._formatABIDataItemList(inputAbi, [newOwner
], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, [newOwner
]);
const encodedData = self._lookupEthersInterface('transferOwnership(address)').functions.transferOwnership.encode([newOwner
]);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...txData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
self.transferOwnership.estimateGasAsync.bind(
self,
newOwner
),
);
const txHash = await self._web3Wrapper.sendTransactionAsync(txDataWithDefaults);
return txHash;
},
async estimateGasAsync(
newOwner: string,
txData: Partial<TxData> = {},
): Promise<number> {
const self = this as any as MixinAuthorizableContract;
const inputAbi = self._lookupAbi('transferOwnership(address)').inputs;
[newOwner
] = BaseContract._formatABIDataItemList(inputAbi, [newOwner
], BaseContract._bigNumberToString);
const encodedData = self._lookupEthersInterface('transferOwnership(address)').functions.transferOwnership.encode([newOwner
]);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...txData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const gas = await self._web3Wrapper.estimateGasAsync(txDataWithDefaults);
return gas;
},
getABIEncodedTransactionData(
newOwner: string,
): string {
const self = this as any as MixinAuthorizableContract;
const inputAbi = self._lookupAbi('transferOwnership(address)').inputs;
[newOwner
] = BaseContract._formatABIDataItemList(inputAbi, [newOwner
], BaseContract._bigNumberToString);
const abiEncodedTransactionData = self._lookupEthersInterface('transferOwnership(address)').functions.transferOwnership.encode([newOwner
]);
return abiEncodedTransactionData;
},
async callAsync(
newOwner: string,
callData: Partial<CallData> = {},
defaultBlock?: BlockParam,
): Promise<void
> {
const self = this as any as MixinAuthorizableContract;
const functionSignature = 'transferOwnership(address)';
const inputAbi = self._lookupAbi(functionSignature).inputs;
[newOwner
] = BaseContract._formatABIDataItemList(inputAbi, [newOwner
], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, [newOwner
]);
const ethersFunction = self._lookupEthersInterface(functionSignature).functions.transferOwnership;
const encodedData = ethersFunction.encode([newOwner
]);
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);
let resultArray = ethersFunction.decode(rawCallResult);
const outputAbi = (_.find(self.abi, {name: 'transferOwnership'}) as MethodAbi).outputs;
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._lowercaseAddress.bind(this));
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._bnToBigNumber.bind(this));
return resultArray;
},
};
public static async deployFrom0xArtifactAsync(
artifact: ContractArtifact | SimpleContractArtifact,
provider: Provider,
txDefaults: Partial<TxData>,
): Promise<MixinAuthorizableContract> {
if (_.isUndefined(artifact.compilerOutput)) {
throw new Error('Compiler output not found in the artifact file');
}
const bytecode = artifact.compilerOutput.evm.bytecode.object;
const abi = artifact.compilerOutput.abi;
return MixinAuthorizableContract.deployAsync(bytecode, abi, provider, txDefaults, );
}
public static async deployAsync(
bytecode: string,
abi: ContractAbi,
provider: Provider,
txDefaults: Partial<TxData>,
): Promise<MixinAuthorizableContract> {
const constructorAbi = BaseContract._lookupConstructorAbi(abi);
[] = BaseContract._formatABIDataItemList(
constructorAbi.inputs,
[],
BaseContract._bigNumberToString,
);
const iface = new ethers.utils.Interface(abi);
const deployInfo = iface.deployFunction;
const txData = deployInfo.encode(bytecode, []);
const web3Wrapper = new Web3Wrapper(provider);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{data: txData},
txDefaults,
web3Wrapper.estimateGasAsync.bind(web3Wrapper),
);
const txHash = await web3Wrapper.sendTransactionAsync(txDataWithDefaults);
logUtils.log(`transactionHash: ${txHash}`);
const txReceipt = await web3Wrapper.awaitTransactionSuccessAsync(txHash);
logUtils.log(`MixinAuthorizable successfully deployed at ${txReceipt.contractAddress}`);
const contractInstance = new MixinAuthorizableContract(abi, txReceipt.contractAddress as string, provider, txDefaults);
contractInstance.constructorArgs = [];
return contractInstance;
}
constructor(abi: ContractAbi, address: string, provider: Provider, txDefaults?: Partial<TxData>) {
super('MixinAuthorizable', abi, address, provider, txDefaults);
classUtils.bindAll(this, ['_ethersInterfacesByFunctionSignature', 'address', 'abi', '_web3Wrapper']);
}
} // tslint:disable:max-file-line-count
// tslint:enable:no-unbound-method

View File

@@ -1,358 +0,0 @@
// tslint:disable:no-consecutive-blank-lines ordered-imports align trailing-comma whitespace class-name
// tslint:disable:no-unused-variable
// tslint:disable:no-unbound-method
import { BaseContract } from '@0x/base-contract';
import { BlockParam, BlockParamLiteral, CallData, ContractAbi, ContractArtifact, DecodedLogArgs, MethodAbi, Provider, TxData, TxDataPayable } from 'ethereum-types';
import { BigNumber, classUtils, logUtils } from '@0x/utils';
import { SimpleContractArtifact } from '@0x/types';
import { Web3Wrapper } from '@0x/web3-wrapper';
import * as ethers from 'ethers';
import * as _ from 'lodash';
// tslint:enable:no-unused-variable
/* istanbul ignore next */
// tslint:disable:no-parameter-reassignment
// tslint:disable-next-line:class-name
export class OrderValidatorContract extends BaseContract {
public getOrderAndTraderInfo = {
async callAsync(
order: {makerAddress: string;takerAddress: string;feeRecipientAddress: string;senderAddress: string;makerAssetAmount: BigNumber;takerAssetAmount: BigNumber;makerFee: BigNumber;takerFee: BigNumber;expirationTimeSeconds: BigNumber;salt: BigNumber;makerAssetData: string;takerAssetData: string},
takerAddress: string,
callData: Partial<CallData> = {},
defaultBlock?: BlockParam,
): Promise<[{orderStatus: number;orderHash: string;orderTakerAssetFilledAmount: BigNumber}, {makerBalance: BigNumber;makerAllowance: BigNumber;takerBalance: BigNumber;takerAllowance: BigNumber;makerZrxBalance: BigNumber;makerZrxAllowance: BigNumber;takerZrxBalance: BigNumber;takerZrxAllowance: BigNumber}]
> {
const self = this as any as OrderValidatorContract;
const functionSignature = 'getOrderAndTraderInfo({address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes},address)';
const inputAbi = self._lookupAbi(functionSignature).inputs;
[order,
takerAddress
] = BaseContract._formatABIDataItemList(inputAbi, [order,
takerAddress
], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, [order,
takerAddress
]);
const ethersFunction = self._lookupEthersInterface(functionSignature).functions.getOrderAndTraderInfo;
const encodedData = ethersFunction.encode([order,
takerAddress
]);
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);
let resultArray = ethersFunction.decode(rawCallResult);
const outputAbi = (_.find(self.abi, {name: 'getOrderAndTraderInfo'}) as MethodAbi).outputs;
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._lowercaseAddress.bind(this));
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._bnToBigNumber.bind(this));
return resultArray;
},
};
public getBalanceAndAllowance = {
async callAsync(
target: string,
assetData: string,
callData: Partial<CallData> = {},
defaultBlock?: BlockParam,
): Promise<[BigNumber, BigNumber]
> {
const self = this as any as OrderValidatorContract;
const functionSignature = 'getBalanceAndAllowance(address,bytes)';
const inputAbi = self._lookupAbi(functionSignature).inputs;
[target,
assetData
] = BaseContract._formatABIDataItemList(inputAbi, [target,
assetData
], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, [target,
assetData
]);
const ethersFunction = self._lookupEthersInterface(functionSignature).functions.getBalanceAndAllowance;
const encodedData = ethersFunction.encode([target,
assetData
]);
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);
let resultArray = ethersFunction.decode(rawCallResult);
const outputAbi = (_.find(self.abi, {name: 'getBalanceAndAllowance'}) as MethodAbi).outputs;
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._lowercaseAddress.bind(this));
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._bnToBigNumber.bind(this));
return resultArray;
},
};
public getOrdersAndTradersInfo = {
async callAsync(
orders: 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}>,
takerAddresses: string[],
callData: Partial<CallData> = {},
defaultBlock?: BlockParam,
): Promise<[Array<{orderStatus: number;orderHash: string;orderTakerAssetFilledAmount: BigNumber}>, Array<{makerBalance: BigNumber;makerAllowance: BigNumber;takerBalance: BigNumber;takerAllowance: BigNumber;makerZrxBalance: BigNumber;makerZrxAllowance: BigNumber;takerZrxBalance: BigNumber;takerZrxAllowance: BigNumber}>]
> {
const self = this as any as OrderValidatorContract;
const functionSignature = 'getOrdersAndTradersInfo(tuple[],address[])';
const inputAbi = self._lookupAbi(functionSignature).inputs;
[orders,
takerAddresses
] = BaseContract._formatABIDataItemList(inputAbi, [orders,
takerAddresses
], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, [orders,
takerAddresses
]);
const ethersFunction = self._lookupEthersInterface(functionSignature).functions.getOrdersAndTradersInfo;
const encodedData = ethersFunction.encode([orders,
takerAddresses
]);
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);
let resultArray = ethersFunction.decode(rawCallResult);
const outputAbi = (_.find(self.abi, {name: 'getOrdersAndTradersInfo'}) as MethodAbi).outputs;
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._lowercaseAddress.bind(this));
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._bnToBigNumber.bind(this));
return resultArray;
},
};
public getTradersInfo = {
async callAsync(
orders: 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}>,
takerAddresses: string[],
callData: Partial<CallData> = {},
defaultBlock?: BlockParam,
): Promise<Array<{makerBalance: BigNumber;makerAllowance: BigNumber;takerBalance: BigNumber;takerAllowance: BigNumber;makerZrxBalance: BigNumber;makerZrxAllowance: BigNumber;takerZrxBalance: BigNumber;takerZrxAllowance: BigNumber}>
> {
const self = this as any as OrderValidatorContract;
const functionSignature = 'getTradersInfo(tuple[],address[])';
const inputAbi = self._lookupAbi(functionSignature).inputs;
[orders,
takerAddresses
] = BaseContract._formatABIDataItemList(inputAbi, [orders,
takerAddresses
], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, [orders,
takerAddresses
]);
const ethersFunction = self._lookupEthersInterface(functionSignature).functions.getTradersInfo;
const encodedData = ethersFunction.encode([orders,
takerAddresses
]);
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);
let resultArray = ethersFunction.decode(rawCallResult);
const outputAbi = (_.find(self.abi, {name: 'getTradersInfo'}) as MethodAbi).outputs;
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._lowercaseAddress.bind(this));
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._bnToBigNumber.bind(this));
return resultArray[0];
},
};
public getERC721TokenOwner = {
async callAsync(
token: string,
tokenId: BigNumber,
callData: Partial<CallData> = {},
defaultBlock?: BlockParam,
): Promise<string
> {
const self = this as any as OrderValidatorContract;
const functionSignature = 'getERC721TokenOwner(address,uint256)';
const inputAbi = self._lookupAbi(functionSignature).inputs;
[token,
tokenId
] = BaseContract._formatABIDataItemList(inputAbi, [token,
tokenId
], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, [token,
tokenId
]);
const ethersFunction = self._lookupEthersInterface(functionSignature).functions.getERC721TokenOwner;
const encodedData = ethersFunction.encode([token,
tokenId
]);
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);
let resultArray = ethersFunction.decode(rawCallResult);
const outputAbi = (_.find(self.abi, {name: 'getERC721TokenOwner'}) as MethodAbi).outputs;
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._lowercaseAddress.bind(this));
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._bnToBigNumber.bind(this));
return resultArray[0];
},
};
public getBalancesAndAllowances = {
async callAsync(
target: string,
assetData: string[],
callData: Partial<CallData> = {},
defaultBlock?: BlockParam,
): Promise<[BigNumber[], BigNumber[]]
> {
const self = this as any as OrderValidatorContract;
const functionSignature = 'getBalancesAndAllowances(address,bytes[])';
const inputAbi = self._lookupAbi(functionSignature).inputs;
[target,
assetData
] = BaseContract._formatABIDataItemList(inputAbi, [target,
assetData
], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, [target,
assetData
]);
const ethersFunction = self._lookupEthersInterface(functionSignature).functions.getBalancesAndAllowances;
const encodedData = ethersFunction.encode([target,
assetData
]);
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);
let resultArray = ethersFunction.decode(rawCallResult);
const outputAbi = (_.find(self.abi, {name: 'getBalancesAndAllowances'}) as MethodAbi).outputs;
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._lowercaseAddress.bind(this));
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._bnToBigNumber.bind(this));
return resultArray;
},
};
public getTraderInfo = {
async callAsync(
order: {makerAddress: string;takerAddress: string;feeRecipientAddress: string;senderAddress: string;makerAssetAmount: BigNumber;takerAssetAmount: BigNumber;makerFee: BigNumber;takerFee: BigNumber;expirationTimeSeconds: BigNumber;salt: BigNumber;makerAssetData: string;takerAssetData: string},
takerAddress: string,
callData: Partial<CallData> = {},
defaultBlock?: BlockParam,
): Promise<{makerBalance: BigNumber;makerAllowance: BigNumber;takerBalance: BigNumber;takerAllowance: BigNumber;makerZrxBalance: BigNumber;makerZrxAllowance: BigNumber;takerZrxBalance: BigNumber;takerZrxAllowance: BigNumber}
> {
const self = this as any as OrderValidatorContract;
const functionSignature = 'getTraderInfo({address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes},address)';
const inputAbi = self._lookupAbi(functionSignature).inputs;
[order,
takerAddress
] = BaseContract._formatABIDataItemList(inputAbi, [order,
takerAddress
], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, [order,
takerAddress
]);
const ethersFunction = self._lookupEthersInterface(functionSignature).functions.getTraderInfo;
const encodedData = ethersFunction.encode([order,
takerAddress
]);
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);
let resultArray = ethersFunction.decode(rawCallResult);
const outputAbi = (_.find(self.abi, {name: 'getTraderInfo'}) as MethodAbi).outputs;
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._lowercaseAddress.bind(this));
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._bnToBigNumber.bind(this));
return resultArray[0];
},
};
public static async deployFrom0xArtifactAsync(
artifact: ContractArtifact | SimpleContractArtifact,
provider: Provider,
txDefaults: Partial<TxData>,
_exchange: string,
_zrxAssetData: string,
): Promise<OrderValidatorContract> {
if (_.isUndefined(artifact.compilerOutput)) {
throw new Error('Compiler output not found in the artifact file');
}
const bytecode = artifact.compilerOutput.evm.bytecode.object;
const abi = artifact.compilerOutput.abi;
return OrderValidatorContract.deployAsync(bytecode, abi, provider, txDefaults, _exchange,
_zrxAssetData
);
}
public static async deployAsync(
bytecode: string,
abi: ContractAbi,
provider: Provider,
txDefaults: Partial<TxData>,
_exchange: string,
_zrxAssetData: string,
): Promise<OrderValidatorContract> {
const constructorAbi = BaseContract._lookupConstructorAbi(abi);
[_exchange,
_zrxAssetData
] = BaseContract._formatABIDataItemList(
constructorAbi.inputs,
[_exchange,
_zrxAssetData
],
BaseContract._bigNumberToString,
);
const iface = new ethers.utils.Interface(abi);
const deployInfo = iface.deployFunction;
const txData = deployInfo.encode(bytecode, [_exchange,
_zrxAssetData
]);
const web3Wrapper = new Web3Wrapper(provider);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{data: txData},
txDefaults,
web3Wrapper.estimateGasAsync.bind(web3Wrapper),
);
const txHash = await web3Wrapper.sendTransactionAsync(txDataWithDefaults);
logUtils.log(`transactionHash: ${txHash}`);
const txReceipt = await web3Wrapper.awaitTransactionSuccessAsync(txHash);
logUtils.log(`OrderValidator successfully deployed at ${txReceipt.contractAddress}`);
const contractInstance = new OrderValidatorContract(abi, txReceipt.contractAddress as string, provider, txDefaults);
contractInstance.constructorArgs = [_exchange,
_zrxAssetData
];
return contractInstance;
}
constructor(abi: ContractAbi, address: string, provider: Provider, txDefaults?: Partial<TxData>) {
super('OrderValidator', abi, address, provider, txDefaults);
classUtils.bindAll(this, ['_ethersInterfacesByFunctionSignature', 'address', 'abi', '_web3Wrapper']);
}
} // tslint:disable:max-file-line-count
// tslint:enable:no-unbound-method

View File

@@ -1,524 +0,0 @@
// tslint:disable:no-consecutive-blank-lines ordered-imports align trailing-comma whitespace class-name
// tslint:disable:no-unused-variable
// tslint:disable:no-unbound-method
import { BaseContract } from '@0x/base-contract';
import { BlockParam, BlockParamLiteral, CallData, ContractAbi, ContractArtifact, DecodedLogArgs, MethodAbi, Provider, TxData, TxDataPayable } from 'ethereum-types';
import { BigNumber, classUtils, logUtils } from '@0x/utils';
import { SimpleContractArtifact } from '@0x/types';
import { Web3Wrapper } from '@0x/web3-wrapper';
import * as ethers from 'ethers';
import * as _ from 'lodash';
// tslint:enable:no-unused-variable
export type TestAssetProxyDispatcherEventArgs =
| TestAssetProxyDispatcherAssetProxyRegisteredEventArgs;
export enum TestAssetProxyDispatcherEvents {
AssetProxyRegistered = 'AssetProxyRegistered',
}
export interface TestAssetProxyDispatcherAssetProxyRegisteredEventArgs extends DecodedLogArgs {
id: string;
assetProxy: string;
}
/* istanbul ignore next */
// tslint:disable:no-parameter-reassignment
// tslint:disable-next-line:class-name
export class TestAssetProxyDispatcherContract extends BaseContract {
public assetProxies = {
async callAsync(
index_0: string,
callData: Partial<CallData> = {},
defaultBlock?: BlockParam,
): Promise<string
> {
const self = this as any as TestAssetProxyDispatcherContract;
const functionSignature = 'assetProxies(bytes4)';
const inputAbi = self._lookupAbi(functionSignature).inputs;
[index_0
] = BaseContract._formatABIDataItemList(inputAbi, [index_0
], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, [index_0
]);
const ethersFunction = self._lookupEthersInterface(functionSignature).functions.assetProxies;
const encodedData = ethersFunction.encode([index_0
]);
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);
let resultArray = ethersFunction.decode(rawCallResult);
const outputAbi = (_.find(self.abi, {name: 'assetProxies'}) as MethodAbi).outputs;
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._lowercaseAddress.bind(this));
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._bnToBigNumber.bind(this));
return resultArray[0];
},
};
public getAssetProxy = {
async callAsync(
assetProxyId: string,
callData: Partial<CallData> = {},
defaultBlock?: BlockParam,
): Promise<string
> {
const self = this as any as TestAssetProxyDispatcherContract;
const functionSignature = 'getAssetProxy(bytes4)';
const inputAbi = self._lookupAbi(functionSignature).inputs;
[assetProxyId
] = BaseContract._formatABIDataItemList(inputAbi, [assetProxyId
], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, [assetProxyId
]);
const ethersFunction = self._lookupEthersInterface(functionSignature).functions.getAssetProxy;
const encodedData = ethersFunction.encode([assetProxyId
]);
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);
let resultArray = ethersFunction.decode(rawCallResult);
const outputAbi = (_.find(self.abi, {name: 'getAssetProxy'}) as MethodAbi).outputs;
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._lowercaseAddress.bind(this));
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._bnToBigNumber.bind(this));
return resultArray[0];
},
};
public publicDispatchTransferFrom = {
async sendTransactionAsync(
assetData: string,
from: string,
to: string,
amount: BigNumber,
txData: Partial<TxData> = {},
): Promise<string> {
const self = this as any as TestAssetProxyDispatcherContract;
const inputAbi = self._lookupAbi('publicDispatchTransferFrom(bytes,address,address,uint256)').inputs;
[assetData,
from,
to,
amount
] = BaseContract._formatABIDataItemList(inputAbi, [assetData,
from,
to,
amount
], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, [assetData,
from,
to,
amount
]);
const encodedData = self._lookupEthersInterface('publicDispatchTransferFrom(bytes,address,address,uint256)').functions.publicDispatchTransferFrom.encode([assetData,
from,
to,
amount
]);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...txData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
self.publicDispatchTransferFrom.estimateGasAsync.bind(
self,
assetData,
from,
to,
amount
),
);
const txHash = await self._web3Wrapper.sendTransactionAsync(txDataWithDefaults);
return txHash;
},
async estimateGasAsync(
assetData: string,
from: string,
to: string,
amount: BigNumber,
txData: Partial<TxData> = {},
): Promise<number> {
const self = this as any as TestAssetProxyDispatcherContract;
const inputAbi = self._lookupAbi('publicDispatchTransferFrom(bytes,address,address,uint256)').inputs;
[assetData,
from,
to,
amount
] = BaseContract._formatABIDataItemList(inputAbi, [assetData,
from,
to,
amount
], BaseContract._bigNumberToString);
const encodedData = self._lookupEthersInterface('publicDispatchTransferFrom(bytes,address,address,uint256)').functions.publicDispatchTransferFrom.encode([assetData,
from,
to,
amount
]);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...txData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const gas = await self._web3Wrapper.estimateGasAsync(txDataWithDefaults);
return gas;
},
getABIEncodedTransactionData(
assetData: string,
from: string,
to: string,
amount: BigNumber,
): string {
const self = this as any as TestAssetProxyDispatcherContract;
const inputAbi = self._lookupAbi('publicDispatchTransferFrom(bytes,address,address,uint256)').inputs;
[assetData,
from,
to,
amount
] = BaseContract._formatABIDataItemList(inputAbi, [assetData,
from,
to,
amount
], BaseContract._bigNumberToString);
const abiEncodedTransactionData = self._lookupEthersInterface('publicDispatchTransferFrom(bytes,address,address,uint256)').functions.publicDispatchTransferFrom.encode([assetData,
from,
to,
amount
]);
return abiEncodedTransactionData;
},
async callAsync(
assetData: string,
from: string,
to: string,
amount: BigNumber,
callData: Partial<CallData> = {},
defaultBlock?: BlockParam,
): Promise<void
> {
const self = this as any as TestAssetProxyDispatcherContract;
const functionSignature = 'publicDispatchTransferFrom(bytes,address,address,uint256)';
const inputAbi = self._lookupAbi(functionSignature).inputs;
[assetData,
from,
to,
amount
] = BaseContract._formatABIDataItemList(inputAbi, [assetData,
from,
to,
amount
], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, [assetData,
from,
to,
amount
]);
const ethersFunction = self._lookupEthersInterface(functionSignature).functions.publicDispatchTransferFrom;
const encodedData = ethersFunction.encode([assetData,
from,
to,
amount
]);
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);
let resultArray = ethersFunction.decode(rawCallResult);
const outputAbi = (_.find(self.abi, {name: 'publicDispatchTransferFrom'}) as MethodAbi).outputs;
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._lowercaseAddress.bind(this));
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._bnToBigNumber.bind(this));
return resultArray;
},
};
public owner = {
async callAsync(
callData: Partial<CallData> = {},
defaultBlock?: BlockParam,
): Promise<string
> {
const self = this as any as TestAssetProxyDispatcherContract;
const functionSignature = 'owner()';
const inputAbi = self._lookupAbi(functionSignature).inputs;
[] = BaseContract._formatABIDataItemList(inputAbi, [], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, []);
const ethersFunction = self._lookupEthersInterface(functionSignature).functions.owner;
const encodedData = ethersFunction.encode([]);
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);
let resultArray = ethersFunction.decode(rawCallResult);
const outputAbi = (_.find(self.abi, {name: 'owner'}) as MethodAbi).outputs;
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._lowercaseAddress.bind(this));
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._bnToBigNumber.bind(this));
return resultArray[0];
},
};
public registerAssetProxy = {
async sendTransactionAsync(
assetProxy: string,
txData: Partial<TxData> = {},
): Promise<string> {
const self = this as any as TestAssetProxyDispatcherContract;
const inputAbi = self._lookupAbi('registerAssetProxy(address)').inputs;
[assetProxy
] = BaseContract._formatABIDataItemList(inputAbi, [assetProxy
], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, [assetProxy
]);
const encodedData = self._lookupEthersInterface('registerAssetProxy(address)').functions.registerAssetProxy.encode([assetProxy
]);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...txData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
self.registerAssetProxy.estimateGasAsync.bind(
self,
assetProxy
),
);
const txHash = await self._web3Wrapper.sendTransactionAsync(txDataWithDefaults);
return txHash;
},
async estimateGasAsync(
assetProxy: string,
txData: Partial<TxData> = {},
): Promise<number> {
const self = this as any as TestAssetProxyDispatcherContract;
const inputAbi = self._lookupAbi('registerAssetProxy(address)').inputs;
[assetProxy
] = BaseContract._formatABIDataItemList(inputAbi, [assetProxy
], BaseContract._bigNumberToString);
const encodedData = self._lookupEthersInterface('registerAssetProxy(address)').functions.registerAssetProxy.encode([assetProxy
]);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...txData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const gas = await self._web3Wrapper.estimateGasAsync(txDataWithDefaults);
return gas;
},
getABIEncodedTransactionData(
assetProxy: string,
): string {
const self = this as any as TestAssetProxyDispatcherContract;
const inputAbi = self._lookupAbi('registerAssetProxy(address)').inputs;
[assetProxy
] = BaseContract._formatABIDataItemList(inputAbi, [assetProxy
], BaseContract._bigNumberToString);
const abiEncodedTransactionData = self._lookupEthersInterface('registerAssetProxy(address)').functions.registerAssetProxy.encode([assetProxy
]);
return abiEncodedTransactionData;
},
async callAsync(
assetProxy: string,
callData: Partial<CallData> = {},
defaultBlock?: BlockParam,
): Promise<void
> {
const self = this as any as TestAssetProxyDispatcherContract;
const functionSignature = 'registerAssetProxy(address)';
const inputAbi = self._lookupAbi(functionSignature).inputs;
[assetProxy
] = BaseContract._formatABIDataItemList(inputAbi, [assetProxy
], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, [assetProxy
]);
const ethersFunction = self._lookupEthersInterface(functionSignature).functions.registerAssetProxy;
const encodedData = ethersFunction.encode([assetProxy
]);
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);
let resultArray = ethersFunction.decode(rawCallResult);
const outputAbi = (_.find(self.abi, {name: 'registerAssetProxy'}) as MethodAbi).outputs;
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._lowercaseAddress.bind(this));
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._bnToBigNumber.bind(this));
return resultArray;
},
};
public transferOwnership = {
async sendTransactionAsync(
newOwner: string,
txData: Partial<TxData> = {},
): Promise<string> {
const self = this as any as TestAssetProxyDispatcherContract;
const inputAbi = self._lookupAbi('transferOwnership(address)').inputs;
[newOwner
] = BaseContract._formatABIDataItemList(inputAbi, [newOwner
], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, [newOwner
]);
const encodedData = self._lookupEthersInterface('transferOwnership(address)').functions.transferOwnership.encode([newOwner
]);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...txData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
self.transferOwnership.estimateGasAsync.bind(
self,
newOwner
),
);
const txHash = await self._web3Wrapper.sendTransactionAsync(txDataWithDefaults);
return txHash;
},
async estimateGasAsync(
newOwner: string,
txData: Partial<TxData> = {},
): Promise<number> {
const self = this as any as TestAssetProxyDispatcherContract;
const inputAbi = self._lookupAbi('transferOwnership(address)').inputs;
[newOwner
] = BaseContract._formatABIDataItemList(inputAbi, [newOwner
], BaseContract._bigNumberToString);
const encodedData = self._lookupEthersInterface('transferOwnership(address)').functions.transferOwnership.encode([newOwner
]);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...txData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const gas = await self._web3Wrapper.estimateGasAsync(txDataWithDefaults);
return gas;
},
getABIEncodedTransactionData(
newOwner: string,
): string {
const self = this as any as TestAssetProxyDispatcherContract;
const inputAbi = self._lookupAbi('transferOwnership(address)').inputs;
[newOwner
] = BaseContract._formatABIDataItemList(inputAbi, [newOwner
], BaseContract._bigNumberToString);
const abiEncodedTransactionData = self._lookupEthersInterface('transferOwnership(address)').functions.transferOwnership.encode([newOwner
]);
return abiEncodedTransactionData;
},
async callAsync(
newOwner: string,
callData: Partial<CallData> = {},
defaultBlock?: BlockParam,
): Promise<void
> {
const self = this as any as TestAssetProxyDispatcherContract;
const functionSignature = 'transferOwnership(address)';
const inputAbi = self._lookupAbi(functionSignature).inputs;
[newOwner
] = BaseContract._formatABIDataItemList(inputAbi, [newOwner
], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, [newOwner
]);
const ethersFunction = self._lookupEthersInterface(functionSignature).functions.transferOwnership;
const encodedData = ethersFunction.encode([newOwner
]);
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);
let resultArray = ethersFunction.decode(rawCallResult);
const outputAbi = (_.find(self.abi, {name: 'transferOwnership'}) as MethodAbi).outputs;
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._lowercaseAddress.bind(this));
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._bnToBigNumber.bind(this));
return resultArray;
},
};
public static async deployFrom0xArtifactAsync(
artifact: ContractArtifact | SimpleContractArtifact,
provider: Provider,
txDefaults: Partial<TxData>,
): Promise<TestAssetProxyDispatcherContract> {
if (_.isUndefined(artifact.compilerOutput)) {
throw new Error('Compiler output not found in the artifact file');
}
const bytecode = artifact.compilerOutput.evm.bytecode.object;
const abi = artifact.compilerOutput.abi;
return TestAssetProxyDispatcherContract.deployAsync(bytecode, abi, provider, txDefaults, );
}
public static async deployAsync(
bytecode: string,
abi: ContractAbi,
provider: Provider,
txDefaults: Partial<TxData>,
): Promise<TestAssetProxyDispatcherContract> {
const constructorAbi = BaseContract._lookupConstructorAbi(abi);
[] = BaseContract._formatABIDataItemList(
constructorAbi.inputs,
[],
BaseContract._bigNumberToString,
);
const iface = new ethers.utils.Interface(abi);
const deployInfo = iface.deployFunction;
const txData = deployInfo.encode(bytecode, []);
const web3Wrapper = new Web3Wrapper(provider);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{data: txData},
txDefaults,
web3Wrapper.estimateGasAsync.bind(web3Wrapper),
);
const txHash = await web3Wrapper.sendTransactionAsync(txDataWithDefaults);
logUtils.log(`transactionHash: ${txHash}`);
const txReceipt = await web3Wrapper.awaitTransactionSuccessAsync(txHash);
logUtils.log(`TestAssetProxyDispatcher successfully deployed at ${txReceipt.contractAddress}`);
const contractInstance = new TestAssetProxyDispatcherContract(abi, txReceipt.contractAddress as string, provider, txDefaults);
contractInstance.constructorArgs = [];
return contractInstance;
}
constructor(abi: ContractAbi, address: string, provider: Provider, txDefaults?: Partial<TxData>) {
super('TestAssetProxyDispatcher', abi, address, provider, txDefaults);
classUtils.bindAll(this, ['_ethersInterfacesByFunctionSignature', 'address', 'abi', '_web3Wrapper']);
}
} // tslint:disable:max-file-line-count
// tslint:enable:no-unbound-method

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -1,747 +0,0 @@
// tslint:disable:no-consecutive-blank-lines ordered-imports align trailing-comma whitespace class-name
// tslint:disable:no-unused-variable
// tslint:disable:no-unbound-method
import { BaseContract } from '@0x/base-contract';
import { BlockParam, BlockParamLiteral, CallData, ContractAbi, ContractArtifact, DecodedLogArgs, MethodAbi, Provider, TxData, TxDataPayable } from 'ethereum-types';
import { BigNumber, classUtils, logUtils } from '@0x/utils';
import { SimpleContractArtifact } from '@0x/types';
import { Web3Wrapper } from '@0x/web3-wrapper';
import * as ethers from 'ethers';
import * as _ from 'lodash';
// tslint:enable:no-unused-variable
export type TestSignatureValidatorEventArgs =
| TestSignatureValidatorSignatureValidatorApprovalEventArgs;
export enum TestSignatureValidatorEvents {
SignatureValidatorApproval = 'SignatureValidatorApproval',
}
export interface TestSignatureValidatorSignatureValidatorApprovalEventArgs extends DecodedLogArgs {
signerAddress: string;
validatorAddress: string;
approved: boolean;
}
/* istanbul ignore next */
// tslint:disable:no-parameter-reassignment
// tslint:disable-next-line:class-name
export class TestSignatureValidatorContract extends BaseContract {
public preSign = {
async sendTransactionAsync(
hash: string,
signerAddress: string,
signature: string,
txData: Partial<TxData> = {},
): Promise<string> {
const self = this as any as TestSignatureValidatorContract;
const inputAbi = self._lookupAbi('preSign(bytes32,address,bytes)').inputs;
[hash,
signerAddress,
signature
] = BaseContract._formatABIDataItemList(inputAbi, [hash,
signerAddress,
signature
], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, [hash,
signerAddress,
signature
]);
const encodedData = self._lookupEthersInterface('preSign(bytes32,address,bytes)').functions.preSign.encode([hash,
signerAddress,
signature
]);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...txData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
self.preSign.estimateGasAsync.bind(
self,
hash,
signerAddress,
signature
),
);
const txHash = await self._web3Wrapper.sendTransactionAsync(txDataWithDefaults);
return txHash;
},
async estimateGasAsync(
hash: string,
signerAddress: string,
signature: string,
txData: Partial<TxData> = {},
): Promise<number> {
const self = this as any as TestSignatureValidatorContract;
const inputAbi = self._lookupAbi('preSign(bytes32,address,bytes)').inputs;
[hash,
signerAddress,
signature
] = BaseContract._formatABIDataItemList(inputAbi, [hash,
signerAddress,
signature
], BaseContract._bigNumberToString);
const encodedData = self._lookupEthersInterface('preSign(bytes32,address,bytes)').functions.preSign.encode([hash,
signerAddress,
signature
]);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...txData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const gas = await self._web3Wrapper.estimateGasAsync(txDataWithDefaults);
return gas;
},
getABIEncodedTransactionData(
hash: string,
signerAddress: string,
signature: string,
): string {
const self = this as any as TestSignatureValidatorContract;
const inputAbi = self._lookupAbi('preSign(bytes32,address,bytes)').inputs;
[hash,
signerAddress,
signature
] = BaseContract._formatABIDataItemList(inputAbi, [hash,
signerAddress,
signature
], BaseContract._bigNumberToString);
const abiEncodedTransactionData = self._lookupEthersInterface('preSign(bytes32,address,bytes)').functions.preSign.encode([hash,
signerAddress,
signature
]);
return abiEncodedTransactionData;
},
async callAsync(
hash: string,
signerAddress: string,
signature: string,
callData: Partial<CallData> = {},
defaultBlock?: BlockParam,
): Promise<void
> {
const self = this as any as TestSignatureValidatorContract;
const functionSignature = 'preSign(bytes32,address,bytes)';
const inputAbi = self._lookupAbi(functionSignature).inputs;
[hash,
signerAddress,
signature
] = BaseContract._formatABIDataItemList(inputAbi, [hash,
signerAddress,
signature
], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, [hash,
signerAddress,
signature
]);
const ethersFunction = self._lookupEthersInterface(functionSignature).functions.preSign;
const encodedData = ethersFunction.encode([hash,
signerAddress,
signature
]);
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);
let resultArray = ethersFunction.decode(rawCallResult);
const outputAbi = (_.find(self.abi, {name: 'preSign'}) as MethodAbi).outputs;
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._lowercaseAddress.bind(this));
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._bnToBigNumber.bind(this));
return resultArray;
},
};
public transactions = {
async callAsync(
index_0: string,
callData: Partial<CallData> = {},
defaultBlock?: BlockParam,
): Promise<boolean
> {
const self = this as any as TestSignatureValidatorContract;
const functionSignature = 'transactions(bytes32)';
const inputAbi = self._lookupAbi(functionSignature).inputs;
[index_0
] = BaseContract._formatABIDataItemList(inputAbi, [index_0
], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, [index_0
]);
const ethersFunction = self._lookupEthersInterface(functionSignature).functions.transactions;
const encodedData = ethersFunction.encode([index_0
]);
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);
let resultArray = ethersFunction.decode(rawCallResult);
const outputAbi = (_.find(self.abi, {name: 'transactions'}) as MethodAbi).outputs;
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._lowercaseAddress.bind(this));
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._bnToBigNumber.bind(this));
return resultArray[0];
},
};
public setSignatureValidatorApproval = {
async sendTransactionAsync(
validatorAddress: string,
approval: boolean,
txData: Partial<TxData> = {},
): Promise<string> {
const self = this as any as TestSignatureValidatorContract;
const inputAbi = self._lookupAbi('setSignatureValidatorApproval(address,bool)').inputs;
[validatorAddress,
approval
] = BaseContract._formatABIDataItemList(inputAbi, [validatorAddress,
approval
], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, [validatorAddress,
approval
]);
const encodedData = self._lookupEthersInterface('setSignatureValidatorApproval(address,bool)').functions.setSignatureValidatorApproval.encode([validatorAddress,
approval
]);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...txData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
self.setSignatureValidatorApproval.estimateGasAsync.bind(
self,
validatorAddress,
approval
),
);
const txHash = await self._web3Wrapper.sendTransactionAsync(txDataWithDefaults);
return txHash;
},
async estimateGasAsync(
validatorAddress: string,
approval: boolean,
txData: Partial<TxData> = {},
): Promise<number> {
const self = this as any as TestSignatureValidatorContract;
const inputAbi = self._lookupAbi('setSignatureValidatorApproval(address,bool)').inputs;
[validatorAddress,
approval
] = BaseContract._formatABIDataItemList(inputAbi, [validatorAddress,
approval
], BaseContract._bigNumberToString);
const encodedData = self._lookupEthersInterface('setSignatureValidatorApproval(address,bool)').functions.setSignatureValidatorApproval.encode([validatorAddress,
approval
]);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...txData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const gas = await self._web3Wrapper.estimateGasAsync(txDataWithDefaults);
return gas;
},
getABIEncodedTransactionData(
validatorAddress: string,
approval: boolean,
): string {
const self = this as any as TestSignatureValidatorContract;
const inputAbi = self._lookupAbi('setSignatureValidatorApproval(address,bool)').inputs;
[validatorAddress,
approval
] = BaseContract._formatABIDataItemList(inputAbi, [validatorAddress,
approval
], BaseContract._bigNumberToString);
const abiEncodedTransactionData = self._lookupEthersInterface('setSignatureValidatorApproval(address,bool)').functions.setSignatureValidatorApproval.encode([validatorAddress,
approval
]);
return abiEncodedTransactionData;
},
async callAsync(
validatorAddress: string,
approval: boolean,
callData: Partial<CallData> = {},
defaultBlock?: BlockParam,
): Promise<void
> {
const self = this as any as TestSignatureValidatorContract;
const functionSignature = 'setSignatureValidatorApproval(address,bool)';
const inputAbi = self._lookupAbi(functionSignature).inputs;
[validatorAddress,
approval
] = BaseContract._formatABIDataItemList(inputAbi, [validatorAddress,
approval
], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, [validatorAddress,
approval
]);
const ethersFunction = self._lookupEthersInterface(functionSignature).functions.setSignatureValidatorApproval;
const encodedData = ethersFunction.encode([validatorAddress,
approval
]);
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);
let resultArray = ethersFunction.decode(rawCallResult);
const outputAbi = (_.find(self.abi, {name: 'setSignatureValidatorApproval'}) as MethodAbi).outputs;
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._lowercaseAddress.bind(this));
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._bnToBigNumber.bind(this));
return resultArray;
},
};
public allowedValidators = {
async callAsync(
index_0: string,
index_1: string,
callData: Partial<CallData> = {},
defaultBlock?: BlockParam,
): Promise<boolean
> {
const self = this as any as TestSignatureValidatorContract;
const functionSignature = 'allowedValidators(address,address)';
const inputAbi = self._lookupAbi(functionSignature).inputs;
[index_0,
index_1
] = BaseContract._formatABIDataItemList(inputAbi, [index_0,
index_1
], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, [index_0,
index_1
]);
const ethersFunction = self._lookupEthersInterface(functionSignature).functions.allowedValidators;
const encodedData = ethersFunction.encode([index_0,
index_1
]);
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);
let resultArray = ethersFunction.decode(rawCallResult);
const outputAbi = (_.find(self.abi, {name: 'allowedValidators'}) as MethodAbi).outputs;
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._lowercaseAddress.bind(this));
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._bnToBigNumber.bind(this));
return resultArray[0];
},
};
public preSigned = {
async callAsync(
index_0: string,
index_1: string,
callData: Partial<CallData> = {},
defaultBlock?: BlockParam,
): Promise<boolean
> {
const self = this as any as TestSignatureValidatorContract;
const functionSignature = 'preSigned(bytes32,address)';
const inputAbi = self._lookupAbi(functionSignature).inputs;
[index_0,
index_1
] = BaseContract._formatABIDataItemList(inputAbi, [index_0,
index_1
], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, [index_0,
index_1
]);
const ethersFunction = self._lookupEthersInterface(functionSignature).functions.preSigned;
const encodedData = ethersFunction.encode([index_0,
index_1
]);
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);
let resultArray = ethersFunction.decode(rawCallResult);
const outputAbi = (_.find(self.abi, {name: 'preSigned'}) as MethodAbi).outputs;
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._lowercaseAddress.bind(this));
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._bnToBigNumber.bind(this));
return resultArray[0];
},
};
public isValidSignature = {
async callAsync(
hash: string,
signerAddress: string,
signature: string,
callData: Partial<CallData> = {},
defaultBlock?: BlockParam,
): Promise<boolean
> {
const self = this as any as TestSignatureValidatorContract;
const functionSignature = 'isValidSignature(bytes32,address,bytes)';
const inputAbi = self._lookupAbi(functionSignature).inputs;
[hash,
signerAddress,
signature
] = BaseContract._formatABIDataItemList(inputAbi, [hash,
signerAddress,
signature
], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, [hash,
signerAddress,
signature
]);
const ethersFunction = self._lookupEthersInterface(functionSignature).functions.isValidSignature;
const encodedData = ethersFunction.encode([hash,
signerAddress,
signature
]);
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);
let resultArray = ethersFunction.decode(rawCallResult);
const outputAbi = (_.find(self.abi, {name: 'isValidSignature'}) as MethodAbi).outputs;
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._lowercaseAddress.bind(this));
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._bnToBigNumber.bind(this));
return resultArray[0];
},
};
public publicIsValidSignature = {
async callAsync(
hash: string,
signer: string,
signature: string,
callData: Partial<CallData> = {},
defaultBlock?: BlockParam,
): Promise<boolean
> {
const self = this as any as TestSignatureValidatorContract;
const functionSignature = 'publicIsValidSignature(bytes32,address,bytes)';
const inputAbi = self._lookupAbi(functionSignature).inputs;
[hash,
signer,
signature
] = BaseContract._formatABIDataItemList(inputAbi, [hash,
signer,
signature
], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, [hash,
signer,
signature
]);
const ethersFunction = self._lookupEthersInterface(functionSignature).functions.publicIsValidSignature;
const encodedData = ethersFunction.encode([hash,
signer,
signature
]);
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);
let resultArray = ethersFunction.decode(rawCallResult);
const outputAbi = (_.find(self.abi, {name: 'publicIsValidSignature'}) as MethodAbi).outputs;
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._lowercaseAddress.bind(this));
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._bnToBigNumber.bind(this));
return resultArray[0];
},
};
public executeTransaction = {
async sendTransactionAsync(
salt: BigNumber,
signerAddress: string,
data: string,
signature: string,
txData: Partial<TxData> = {},
): Promise<string> {
const self = this as any as TestSignatureValidatorContract;
const inputAbi = self._lookupAbi('executeTransaction(uint256,address,bytes,bytes)').inputs;
[salt,
signerAddress,
data,
signature
] = BaseContract._formatABIDataItemList(inputAbi, [salt,
signerAddress,
data,
signature
], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, [salt,
signerAddress,
data,
signature
]);
const encodedData = self._lookupEthersInterface('executeTransaction(uint256,address,bytes,bytes)').functions.executeTransaction.encode([salt,
signerAddress,
data,
signature
]);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...txData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
self.executeTransaction.estimateGasAsync.bind(
self,
salt,
signerAddress,
data,
signature
),
);
const txHash = await self._web3Wrapper.sendTransactionAsync(txDataWithDefaults);
return txHash;
},
async estimateGasAsync(
salt: BigNumber,
signerAddress: string,
data: string,
signature: string,
txData: Partial<TxData> = {},
): Promise<number> {
const self = this as any as TestSignatureValidatorContract;
const inputAbi = self._lookupAbi('executeTransaction(uint256,address,bytes,bytes)').inputs;
[salt,
signerAddress,
data,
signature
] = BaseContract._formatABIDataItemList(inputAbi, [salt,
signerAddress,
data,
signature
], BaseContract._bigNumberToString);
const encodedData = self._lookupEthersInterface('executeTransaction(uint256,address,bytes,bytes)').functions.executeTransaction.encode([salt,
signerAddress,
data,
signature
]);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...txData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const gas = await self._web3Wrapper.estimateGasAsync(txDataWithDefaults);
return gas;
},
getABIEncodedTransactionData(
salt: BigNumber,
signerAddress: string,
data: string,
signature: string,
): string {
const self = this as any as TestSignatureValidatorContract;
const inputAbi = self._lookupAbi('executeTransaction(uint256,address,bytes,bytes)').inputs;
[salt,
signerAddress,
data,
signature
] = BaseContract._formatABIDataItemList(inputAbi, [salt,
signerAddress,
data,
signature
], BaseContract._bigNumberToString);
const abiEncodedTransactionData = self._lookupEthersInterface('executeTransaction(uint256,address,bytes,bytes)').functions.executeTransaction.encode([salt,
signerAddress,
data,
signature
]);
return abiEncodedTransactionData;
},
async callAsync(
salt: BigNumber,
signerAddress: string,
data: string,
signature: string,
callData: Partial<CallData> = {},
defaultBlock?: BlockParam,
): Promise<void
> {
const self = this as any as TestSignatureValidatorContract;
const functionSignature = 'executeTransaction(uint256,address,bytes,bytes)';
const inputAbi = self._lookupAbi(functionSignature).inputs;
[salt,
signerAddress,
data,
signature
] = BaseContract._formatABIDataItemList(inputAbi, [salt,
signerAddress,
data,
signature
], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, [salt,
signerAddress,
data,
signature
]);
const ethersFunction = self._lookupEthersInterface(functionSignature).functions.executeTransaction;
const encodedData = ethersFunction.encode([salt,
signerAddress,
data,
signature
]);
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);
let resultArray = ethersFunction.decode(rawCallResult);
const outputAbi = (_.find(self.abi, {name: 'executeTransaction'}) as MethodAbi).outputs;
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._lowercaseAddress.bind(this));
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._bnToBigNumber.bind(this));
return resultArray;
},
};
public EIP712_DOMAIN_HASH = {
async callAsync(
callData: Partial<CallData> = {},
defaultBlock?: BlockParam,
): Promise<string
> {
const self = this as any as TestSignatureValidatorContract;
const functionSignature = 'EIP712_DOMAIN_HASH()';
const inputAbi = self._lookupAbi(functionSignature).inputs;
[] = BaseContract._formatABIDataItemList(inputAbi, [], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, []);
const ethersFunction = self._lookupEthersInterface(functionSignature).functions.EIP712_DOMAIN_HASH;
const encodedData = ethersFunction.encode([]);
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);
let resultArray = ethersFunction.decode(rawCallResult);
const outputAbi = (_.find(self.abi, {name: 'EIP712_DOMAIN_HASH'}) as MethodAbi).outputs;
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._lowercaseAddress.bind(this));
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._bnToBigNumber.bind(this));
return resultArray[0];
},
};
public currentContextAddress = {
async callAsync(
callData: Partial<CallData> = {},
defaultBlock?: BlockParam,
): Promise<string
> {
const self = this as any as TestSignatureValidatorContract;
const functionSignature = 'currentContextAddress()';
const inputAbi = self._lookupAbi(functionSignature).inputs;
[] = BaseContract._formatABIDataItemList(inputAbi, [], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, []);
const ethersFunction = self._lookupEthersInterface(functionSignature).functions.currentContextAddress;
const encodedData = ethersFunction.encode([]);
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);
let resultArray = ethersFunction.decode(rawCallResult);
const outputAbi = (_.find(self.abi, {name: 'currentContextAddress'}) as MethodAbi).outputs;
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._lowercaseAddress.bind(this));
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._bnToBigNumber.bind(this));
return resultArray[0];
},
};
public static async deployFrom0xArtifactAsync(
artifact: ContractArtifact | SimpleContractArtifact,
provider: Provider,
txDefaults: Partial<TxData>,
): Promise<TestSignatureValidatorContract> {
if (_.isUndefined(artifact.compilerOutput)) {
throw new Error('Compiler output not found in the artifact file');
}
const bytecode = artifact.compilerOutput.evm.bytecode.object;
const abi = artifact.compilerOutput.abi;
return TestSignatureValidatorContract.deployAsync(bytecode, abi, provider, txDefaults, );
}
public static async deployAsync(
bytecode: string,
abi: ContractAbi,
provider: Provider,
txDefaults: Partial<TxData>,
): Promise<TestSignatureValidatorContract> {
const constructorAbi = BaseContract._lookupConstructorAbi(abi);
[] = BaseContract._formatABIDataItemList(
constructorAbi.inputs,
[],
BaseContract._bigNumberToString,
);
const iface = new ethers.utils.Interface(abi);
const deployInfo = iface.deployFunction;
const txData = deployInfo.encode(bytecode, []);
const web3Wrapper = new Web3Wrapper(provider);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{data: txData},
txDefaults,
web3Wrapper.estimateGasAsync.bind(web3Wrapper),
);
const txHash = await web3Wrapper.sendTransactionAsync(txDataWithDefaults);
logUtils.log(`transactionHash: ${txHash}`);
const txReceipt = await web3Wrapper.awaitTransactionSuccessAsync(txHash);
logUtils.log(`TestSignatureValidator successfully deployed at ${txReceipt.contractAddress}`);
const contractInstance = new TestSignatureValidatorContract(abi, txReceipt.contractAddress as string, provider, txDefaults);
contractInstance.constructorArgs = [];
return contractInstance;
}
constructor(abi: ContractAbi, address: string, provider: Provider, txDefaults?: Partial<TxData>) {
super('TestSignatureValidator', abi, address, provider, txDefaults);
classUtils.bindAll(this, ['_ethersInterfacesByFunctionSignature', 'address', 'abi', '_web3Wrapper']);
}
} // tslint:disable:max-file-line-count
// tslint:enable:no-unbound-method

View File

@@ -1,450 +0,0 @@
// tslint:disable:no-consecutive-blank-lines ordered-imports align trailing-comma whitespace class-name
// tslint:disable:no-unused-variable
// tslint:disable:no-unbound-method
import { BaseContract } from '@0x/base-contract';
import { BlockParam, BlockParamLiteral, CallData, ContractAbi, ContractArtifact, DecodedLogArgs, MethodAbi, Provider, TxData, TxDataPayable } from 'ethereum-types';
import { BigNumber, classUtils, logUtils } from '@0x/utils';
import { SimpleContractArtifact } from '@0x/types';
import { Web3Wrapper } from '@0x/web3-wrapper';
import * as ethers from 'ethers';
import * as _ from 'lodash';
// tslint:enable:no-unused-variable
/* istanbul ignore next */
// tslint:disable:no-parameter-reassignment
// tslint:disable-next-line:class-name
export class TestStaticCallReceiverContract extends BaseContract {
public isValidSignature2 = {
async sendTransactionAsync(
hash: string,
signature: string,
txData: Partial<TxData> = {},
): Promise<string> {
const self = this as any as TestStaticCallReceiverContract;
const inputAbi = self._lookupAbi('isValidSignature(bytes32,bytes)').inputs;
[hash,
signature
] = BaseContract._formatABIDataItemList(inputAbi, [hash,
signature
], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, [hash,
signature
]);
const encodedData = self._lookupEthersInterface('isValidSignature(bytes32,bytes)').functions.isValidSignature.encode([hash,
signature
]);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...txData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
self.isValidSignature2.estimateGasAsync.bind(
self,
hash,
signature
),
);
const txHash = await self._web3Wrapper.sendTransactionAsync(txDataWithDefaults);
return txHash;
},
async estimateGasAsync(
hash: string,
signature: string,
txData: Partial<TxData> = {},
): Promise<number> {
const self = this as any as TestStaticCallReceiverContract;
const inputAbi = self._lookupAbi('isValidSignature(bytes32,bytes)').inputs;
[hash,
signature
] = BaseContract._formatABIDataItemList(inputAbi, [hash,
signature
], BaseContract._bigNumberToString);
const encodedData = self._lookupEthersInterface('isValidSignature(bytes32,bytes)').functions.isValidSignature.encode([hash,
signature
]);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...txData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const gas = await self._web3Wrapper.estimateGasAsync(txDataWithDefaults);
return gas;
},
getABIEncodedTransactionData(
hash: string,
signature: string,
): string {
const self = this as any as TestStaticCallReceiverContract;
const inputAbi = self._lookupAbi('isValidSignature(bytes32,bytes)').inputs;
[hash,
signature
] = BaseContract._formatABIDataItemList(inputAbi, [hash,
signature
], BaseContract._bigNumberToString);
const abiEncodedTransactionData = self._lookupEthersInterface('isValidSignature(bytes32,bytes)').functions.isValidSignature.encode([hash,
signature
]);
return abiEncodedTransactionData;
},
async callAsync(
hash: string,
signature: string,
callData: Partial<CallData> = {},
defaultBlock?: BlockParam,
): Promise<boolean
> {
const self = this as any as TestStaticCallReceiverContract;
const functionSignature = 'isValidSignature(bytes32,bytes)';
const inputAbi = self._lookupAbi(functionSignature).inputs;
[hash,
signature
] = BaseContract._formatABIDataItemList(inputAbi, [hash,
signature
], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, [hash,
signature
]);
const ethersFunction = self._lookupEthersInterface(functionSignature).functions.isValidSignature;
const encodedData = ethersFunction.encode([hash,
signature
]);
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);
let resultArray = ethersFunction.decode(rawCallResult);
const outputAbi = (_.find(self.abi, {name: 'isValidSignature'}) as MethodAbi).outputs;
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._lowercaseAddress.bind(this));
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._bnToBigNumber.bind(this));
return resultArray[0];
},
};
public isValidSignature1 = {
async sendTransactionAsync(
hash: string,
signerAddress: string,
signature: string,
txData: Partial<TxData> = {},
): Promise<string> {
const self = this as any as TestStaticCallReceiverContract;
const inputAbi = self._lookupAbi('isValidSignature(bytes32,address,bytes)').inputs;
[hash,
signerAddress,
signature
] = BaseContract._formatABIDataItemList(inputAbi, [hash,
signerAddress,
signature
], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, [hash,
signerAddress,
signature
]);
const encodedData = self._lookupEthersInterface('isValidSignature(bytes32,address,bytes)').functions.isValidSignature.encode([hash,
signerAddress,
signature
]);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...txData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
self.isValidSignature1.estimateGasAsync.bind(
self,
hash,
signerAddress,
signature
),
);
const txHash = await self._web3Wrapper.sendTransactionAsync(txDataWithDefaults);
return txHash;
},
async estimateGasAsync(
hash: string,
signerAddress: string,
signature: string,
txData: Partial<TxData> = {},
): Promise<number> {
const self = this as any as TestStaticCallReceiverContract;
const inputAbi = self._lookupAbi('isValidSignature(bytes32,address,bytes)').inputs;
[hash,
signerAddress,
signature
] = BaseContract._formatABIDataItemList(inputAbi, [hash,
signerAddress,
signature
], BaseContract._bigNumberToString);
const encodedData = self._lookupEthersInterface('isValidSignature(bytes32,address,bytes)').functions.isValidSignature.encode([hash,
signerAddress,
signature
]);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...txData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const gas = await self._web3Wrapper.estimateGasAsync(txDataWithDefaults);
return gas;
},
getABIEncodedTransactionData(
hash: string,
signerAddress: string,
signature: string,
): string {
const self = this as any as TestStaticCallReceiverContract;
const inputAbi = self._lookupAbi('isValidSignature(bytes32,address,bytes)').inputs;
[hash,
signerAddress,
signature
] = BaseContract._formatABIDataItemList(inputAbi, [hash,
signerAddress,
signature
], BaseContract._bigNumberToString);
const abiEncodedTransactionData = self._lookupEthersInterface('isValidSignature(bytes32,address,bytes)').functions.isValidSignature.encode([hash,
signerAddress,
signature
]);
return abiEncodedTransactionData;
},
async callAsync(
hash: string,
signerAddress: string,
signature: string,
callData: Partial<CallData> = {},
defaultBlock?: BlockParam,
): Promise<boolean
> {
const self = this as any as TestStaticCallReceiverContract;
const functionSignature = 'isValidSignature(bytes32,address,bytes)';
const inputAbi = self._lookupAbi(functionSignature).inputs;
[hash,
signerAddress,
signature
] = BaseContract._formatABIDataItemList(inputAbi, [hash,
signerAddress,
signature
], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, [hash,
signerAddress,
signature
]);
const ethersFunction = self._lookupEthersInterface(functionSignature).functions.isValidSignature;
const encodedData = ethersFunction.encode([hash,
signerAddress,
signature
]);
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);
let resultArray = ethersFunction.decode(rawCallResult);
const outputAbi = (_.find(self.abi, {name: 'isValidSignature'}) as MethodAbi).outputs;
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._lowercaseAddress.bind(this));
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._bnToBigNumber.bind(this));
return resultArray[0];
},
};
public approveERC20 = {
async sendTransactionAsync(
token: string,
spender: string,
value: BigNumber,
txData: Partial<TxData> = {},
): Promise<string> {
const self = this as any as TestStaticCallReceiverContract;
const inputAbi = self._lookupAbi('approveERC20(address,address,uint256)').inputs;
[token,
spender,
value
] = BaseContract._formatABIDataItemList(inputAbi, [token,
spender,
value
], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, [token,
spender,
value
]);
const encodedData = self._lookupEthersInterface('approveERC20(address,address,uint256)').functions.approveERC20.encode([token,
spender,
value
]);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...txData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
self.approveERC20.estimateGasAsync.bind(
self,
token,
spender,
value
),
);
const txHash = await self._web3Wrapper.sendTransactionAsync(txDataWithDefaults);
return txHash;
},
async estimateGasAsync(
token: string,
spender: string,
value: BigNumber,
txData: Partial<TxData> = {},
): Promise<number> {
const self = this as any as TestStaticCallReceiverContract;
const inputAbi = self._lookupAbi('approveERC20(address,address,uint256)').inputs;
[token,
spender,
value
] = BaseContract._formatABIDataItemList(inputAbi, [token,
spender,
value
], BaseContract._bigNumberToString);
const encodedData = self._lookupEthersInterface('approveERC20(address,address,uint256)').functions.approveERC20.encode([token,
spender,
value
]);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...txData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const gas = await self._web3Wrapper.estimateGasAsync(txDataWithDefaults);
return gas;
},
getABIEncodedTransactionData(
token: string,
spender: string,
value: BigNumber,
): string {
const self = this as any as TestStaticCallReceiverContract;
const inputAbi = self._lookupAbi('approveERC20(address,address,uint256)').inputs;
[token,
spender,
value
] = BaseContract._formatABIDataItemList(inputAbi, [token,
spender,
value
], BaseContract._bigNumberToString);
const abiEncodedTransactionData = self._lookupEthersInterface('approveERC20(address,address,uint256)').functions.approveERC20.encode([token,
spender,
value
]);
return abiEncodedTransactionData;
},
async callAsync(
token: string,
spender: string,
value: BigNumber,
callData: Partial<CallData> = {},
defaultBlock?: BlockParam,
): Promise<void
> {
const self = this as any as TestStaticCallReceiverContract;
const functionSignature = 'approveERC20(address,address,uint256)';
const inputAbi = self._lookupAbi(functionSignature).inputs;
[token,
spender,
value
] = BaseContract._formatABIDataItemList(inputAbi, [token,
spender,
value
], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, [token,
spender,
value
]);
const ethersFunction = self._lookupEthersInterface(functionSignature).functions.approveERC20;
const encodedData = ethersFunction.encode([token,
spender,
value
]);
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);
let resultArray = ethersFunction.decode(rawCallResult);
const outputAbi = (_.find(self.abi, {name: 'approveERC20'}) as MethodAbi).outputs;
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._lowercaseAddress.bind(this));
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._bnToBigNumber.bind(this));
return resultArray;
},
};
public static async deployFrom0xArtifactAsync(
artifact: ContractArtifact | SimpleContractArtifact,
provider: Provider,
txDefaults: Partial<TxData>,
): Promise<TestStaticCallReceiverContract> {
if (_.isUndefined(artifact.compilerOutput)) {
throw new Error('Compiler output not found in the artifact file');
}
const bytecode = artifact.compilerOutput.evm.bytecode.object;
const abi = artifact.compilerOutput.abi;
return TestStaticCallReceiverContract.deployAsync(bytecode, abi, provider, txDefaults, );
}
public static async deployAsync(
bytecode: string,
abi: ContractAbi,
provider: Provider,
txDefaults: Partial<TxData>,
): Promise<TestStaticCallReceiverContract> {
const constructorAbi = BaseContract._lookupConstructorAbi(abi);
[] = BaseContract._formatABIDataItemList(
constructorAbi.inputs,
[],
BaseContract._bigNumberToString,
);
const iface = new ethers.utils.Interface(abi);
const deployInfo = iface.deployFunction;
const txData = deployInfo.encode(bytecode, []);
const web3Wrapper = new Web3Wrapper(provider);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{data: txData},
txDefaults,
web3Wrapper.estimateGasAsync.bind(web3Wrapper),
);
const txHash = await web3Wrapper.sendTransactionAsync(txDataWithDefaults);
logUtils.log(`transactionHash: ${txHash}`);
const txReceipt = await web3Wrapper.awaitTransactionSuccessAsync(txHash);
logUtils.log(`TestStaticCallReceiver successfully deployed at ${txReceipt.contractAddress}`);
const contractInstance = new TestStaticCallReceiverContract(abi, txReceipt.contractAddress as string, provider, txDefaults);
contractInstance.constructorArgs = [];
return contractInstance;
}
constructor(abi: ContractAbi, address: string, provider: Provider, txDefaults?: Partial<TxData>) {
super('TestStaticCallReceiver', abi, address, provider, txDefaults);
classUtils.bindAll(this, ['_ethersInterfacesByFunctionSignature', 'address', 'abi', '_web3Wrapper']);
}
} // tslint:disable:max-file-line-count
// tslint:enable:no-unbound-method

View File

@@ -1,116 +0,0 @@
// tslint:disable:no-consecutive-blank-lines ordered-imports align trailing-comma whitespace class-name
// tslint:disable:no-unused-variable
// tslint:disable:no-unbound-method
import { BaseContract } from '@0x/base-contract';
import { BlockParam, BlockParamLiteral, CallData, ContractAbi, ContractArtifact, DecodedLogArgs, MethodAbi, Provider, TxData, TxDataPayable } from 'ethereum-types';
import { BigNumber, classUtils, logUtils } from '@0x/utils';
import { SimpleContractArtifact } from '@0x/types';
import { Web3Wrapper } from '@0x/web3-wrapper';
import * as ethers from 'ethers';
import * as _ from 'lodash';
// tslint:enable:no-unused-variable
/* istanbul ignore next */
// tslint:disable:no-parameter-reassignment
// tslint:disable-next-line:class-name
export class ValidatorContract extends BaseContract {
public isValidSignature = {
async callAsync(
hash: string,
signerAddress: string,
signature: string,
callData: Partial<CallData> = {},
defaultBlock?: BlockParam,
): Promise<boolean
> {
const self = this as any as ValidatorContract;
const functionSignature = 'isValidSignature(bytes32,address,bytes)';
const inputAbi = self._lookupAbi(functionSignature).inputs;
[hash,
signerAddress,
signature
] = BaseContract._formatABIDataItemList(inputAbi, [hash,
signerAddress,
signature
], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, [hash,
signerAddress,
signature
]);
const ethersFunction = self._lookupEthersInterface(functionSignature).functions.isValidSignature;
const encodedData = ethersFunction.encode([hash,
signerAddress,
signature
]);
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);
let resultArray = ethersFunction.decode(rawCallResult);
const outputAbi = (_.find(self.abi, {name: 'isValidSignature'}) as MethodAbi).outputs;
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._lowercaseAddress.bind(this));
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._bnToBigNumber.bind(this));
return resultArray[0];
},
};
public static async deployFrom0xArtifactAsync(
artifact: ContractArtifact | SimpleContractArtifact,
provider: Provider,
txDefaults: Partial<TxData>,
validSigner: string,
): Promise<ValidatorContract> {
if (_.isUndefined(artifact.compilerOutput)) {
throw new Error('Compiler output not found in the artifact file');
}
const bytecode = artifact.compilerOutput.evm.bytecode.object;
const abi = artifact.compilerOutput.abi;
return ValidatorContract.deployAsync(bytecode, abi, provider, txDefaults, validSigner
);
}
public static async deployAsync(
bytecode: string,
abi: ContractAbi,
provider: Provider,
txDefaults: Partial<TxData>,
validSigner: string,
): Promise<ValidatorContract> {
const constructorAbi = BaseContract._lookupConstructorAbi(abi);
[validSigner
] = BaseContract._formatABIDataItemList(
constructorAbi.inputs,
[validSigner
],
BaseContract._bigNumberToString,
);
const iface = new ethers.utils.Interface(abi);
const deployInfo = iface.deployFunction;
const txData = deployInfo.encode(bytecode, [validSigner
]);
const web3Wrapper = new Web3Wrapper(provider);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{data: txData},
txDefaults,
web3Wrapper.estimateGasAsync.bind(web3Wrapper),
);
const txHash = await web3Wrapper.sendTransactionAsync(txDataWithDefaults);
logUtils.log(`transactionHash: ${txHash}`);
const txReceipt = await web3Wrapper.awaitTransactionSuccessAsync(txHash);
logUtils.log(`Validator successfully deployed at ${txReceipt.contractAddress}`);
const contractInstance = new ValidatorContract(abi, txReceipt.contractAddress as string, provider, txDefaults);
contractInstance.constructorArgs = [validSigner
];
return contractInstance;
}
constructor(abi: ContractAbi, address: string, provider: Provider, txDefaults?: Partial<TxData>) {
super('Validator', abi, address, provider, txDefaults);
classUtils.bindAll(this, ['_ethersInterfacesByFunctionSignature', 'address', 'abi', '_web3Wrapper']);
}
} // tslint:disable:max-file-line-count
// tslint:enable:no-unbound-method

View File

@@ -1,111 +0,0 @@
// tslint:disable:no-consecutive-blank-lines ordered-imports align trailing-comma whitespace class-name
// tslint:disable:no-unused-variable
// tslint:disable:no-unbound-method
import { BaseContract } from '@0x/base-contract';
import { BlockParam, BlockParamLiteral, CallData, ContractAbi, ContractArtifact, DecodedLogArgs, MethodAbi, Provider, TxData, TxDataPayable } from 'ethereum-types';
import { BigNumber, classUtils, logUtils } from '@0x/utils';
import { SimpleContractArtifact } from '@0x/types';
import { Web3Wrapper } from '@0x/web3-wrapper';
import * as ethers from 'ethers';
import * as _ from 'lodash';
// tslint:enable:no-unused-variable
/* istanbul ignore next */
// tslint:disable:no-parameter-reassignment
// tslint:disable-next-line:class-name
export class WalletContract extends BaseContract {
public isValidSignature = {
async callAsync(
hash: string,
eip712Signature: string,
callData: Partial<CallData> = {},
defaultBlock?: BlockParam,
): Promise<boolean
> {
const self = this as any as WalletContract;
const functionSignature = 'isValidSignature(bytes32,bytes)';
const inputAbi = self._lookupAbi(functionSignature).inputs;
[hash,
eip712Signature
] = BaseContract._formatABIDataItemList(inputAbi, [hash,
eip712Signature
], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, [hash,
eip712Signature
]);
const ethersFunction = self._lookupEthersInterface(functionSignature).functions.isValidSignature;
const encodedData = ethersFunction.encode([hash,
eip712Signature
]);
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);
let resultArray = ethersFunction.decode(rawCallResult);
const outputAbi = (_.find(self.abi, {name: 'isValidSignature'}) as MethodAbi).outputs;
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._lowercaseAddress.bind(this));
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._bnToBigNumber.bind(this));
return resultArray[0];
},
};
public static async deployFrom0xArtifactAsync(
artifact: ContractArtifact | SimpleContractArtifact,
provider: Provider,
txDefaults: Partial<TxData>,
walletOwner: string,
): Promise<WalletContract> {
if (_.isUndefined(artifact.compilerOutput)) {
throw new Error('Compiler output not found in the artifact file');
}
const bytecode = artifact.compilerOutput.evm.bytecode.object;
const abi = artifact.compilerOutput.abi;
return WalletContract.deployAsync(bytecode, abi, provider, txDefaults, walletOwner
);
}
public static async deployAsync(
bytecode: string,
abi: ContractAbi,
provider: Provider,
txDefaults: Partial<TxData>,
walletOwner: string,
): Promise<WalletContract> {
const constructorAbi = BaseContract._lookupConstructorAbi(abi);
[walletOwner
] = BaseContract._formatABIDataItemList(
constructorAbi.inputs,
[walletOwner
],
BaseContract._bigNumberToString,
);
const iface = new ethers.utils.Interface(abi);
const deployInfo = iface.deployFunction;
const txData = deployInfo.encode(bytecode, [walletOwner
]);
const web3Wrapper = new Web3Wrapper(provider);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{data: txData},
txDefaults,
web3Wrapper.estimateGasAsync.bind(web3Wrapper),
);
const txHash = await web3Wrapper.sendTransactionAsync(txDataWithDefaults);
logUtils.log(`transactionHash: ${txHash}`);
const txReceipt = await web3Wrapper.awaitTransactionSuccessAsync(txHash);
logUtils.log(`Wallet successfully deployed at ${txReceipt.contractAddress}`);
const contractInstance = new WalletContract(abi, txReceipt.contractAddress as string, provider, txDefaults);
contractInstance.constructorArgs = [walletOwner
];
return contractInstance;
}
constructor(abi: ContractAbi, address: string, provider: Provider, txDefaults?: Partial<TxData>) {
super('Wallet', abi, address, provider, txDefaults);
classUtils.bindAll(this, ['_ethersInterfacesByFunctionSignature', 'address', 'abi', '_web3Wrapper']);
}
} // tslint:disable:max-file-line-count
// tslint:enable:no-unbound-method

View File

@@ -1,548 +0,0 @@
// tslint:disable:no-consecutive-blank-lines ordered-imports align trailing-comma whitespace class-name
// tslint:disable:no-unused-variable
// tslint:disable:no-unbound-method
import { BaseContract } from '@0x/base-contract';
import { BlockParam, BlockParamLiteral, CallData, ContractAbi, ContractArtifact, DecodedLogArgs, MethodAbi, Provider, TxData, TxDataPayable } from 'ethereum-types';
import { BigNumber, classUtils, logUtils } from '@0x/utils';
import { SimpleContractArtifact } from '@0x/types';
import { Web3Wrapper } from '@0x/web3-wrapper';
import * as ethers from 'ethers';
import * as _ from 'lodash';
// tslint:enable:no-unused-variable
/* istanbul ignore next */
// tslint:disable:no-parameter-reassignment
// tslint:disable-next-line:class-name
export class WhitelistContract extends BaseContract {
public fillOrderIfWhitelisted = {
async sendTransactionAsync(
order: {makerAddress: string;takerAddress: string;feeRecipientAddress: string;senderAddress: string;makerAssetAmount: BigNumber;takerAssetAmount: BigNumber;makerFee: BigNumber;takerFee: BigNumber;expirationTimeSeconds: BigNumber;salt: BigNumber;makerAssetData: string;takerAssetData: string},
takerAssetFillAmount: BigNumber,
salt: BigNumber,
orderSignature: string,
txData: Partial<TxData> = {},
): Promise<string> {
const self = this as any as WhitelistContract;
const inputAbi = self._lookupAbi('fillOrderIfWhitelisted({address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes},uint256,uint256,bytes)').inputs;
[order,
takerAssetFillAmount,
salt,
orderSignature
] = BaseContract._formatABIDataItemList(inputAbi, [order,
takerAssetFillAmount,
salt,
orderSignature
], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, [order,
takerAssetFillAmount,
salt,
orderSignature
]);
const encodedData = self._lookupEthersInterface('fillOrderIfWhitelisted({address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes},uint256,uint256,bytes)').functions.fillOrderIfWhitelisted.encode([order,
takerAssetFillAmount,
salt,
orderSignature
]);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...txData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
self.fillOrderIfWhitelisted.estimateGasAsync.bind(
self,
order,
takerAssetFillAmount,
salt,
orderSignature
),
);
const txHash = await self._web3Wrapper.sendTransactionAsync(txDataWithDefaults);
return txHash;
},
async estimateGasAsync(
order: {makerAddress: string;takerAddress: string;feeRecipientAddress: string;senderAddress: string;makerAssetAmount: BigNumber;takerAssetAmount: BigNumber;makerFee: BigNumber;takerFee: BigNumber;expirationTimeSeconds: BigNumber;salt: BigNumber;makerAssetData: string;takerAssetData: string},
takerAssetFillAmount: BigNumber,
salt: BigNumber,
orderSignature: string,
txData: Partial<TxData> = {},
): Promise<number> {
const self = this as any as WhitelistContract;
const inputAbi = self._lookupAbi('fillOrderIfWhitelisted({address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes},uint256,uint256,bytes)').inputs;
[order,
takerAssetFillAmount,
salt,
orderSignature
] = BaseContract._formatABIDataItemList(inputAbi, [order,
takerAssetFillAmount,
salt,
orderSignature
], BaseContract._bigNumberToString);
const encodedData = self._lookupEthersInterface('fillOrderIfWhitelisted({address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes},uint256,uint256,bytes)').functions.fillOrderIfWhitelisted.encode([order,
takerAssetFillAmount,
salt,
orderSignature
]);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...txData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const gas = await self._web3Wrapper.estimateGasAsync(txDataWithDefaults);
return gas;
},
getABIEncodedTransactionData(
order: {makerAddress: string;takerAddress: string;feeRecipientAddress: string;senderAddress: string;makerAssetAmount: BigNumber;takerAssetAmount: BigNumber;makerFee: BigNumber;takerFee: BigNumber;expirationTimeSeconds: BigNumber;salt: BigNumber;makerAssetData: string;takerAssetData: string},
takerAssetFillAmount: BigNumber,
salt: BigNumber,
orderSignature: string,
): string {
const self = this as any as WhitelistContract;
const inputAbi = self._lookupAbi('fillOrderIfWhitelisted({address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes},uint256,uint256,bytes)').inputs;
[order,
takerAssetFillAmount,
salt,
orderSignature
] = BaseContract._formatABIDataItemList(inputAbi, [order,
takerAssetFillAmount,
salt,
orderSignature
], BaseContract._bigNumberToString);
const abiEncodedTransactionData = self._lookupEthersInterface('fillOrderIfWhitelisted({address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes},uint256,uint256,bytes)').functions.fillOrderIfWhitelisted.encode([order,
takerAssetFillAmount,
salt,
orderSignature
]);
return abiEncodedTransactionData;
},
async callAsync(
order: {makerAddress: string;takerAddress: string;feeRecipientAddress: string;senderAddress: string;makerAssetAmount: BigNumber;takerAssetAmount: BigNumber;makerFee: BigNumber;takerFee: BigNumber;expirationTimeSeconds: BigNumber;salt: BigNumber;makerAssetData: string;takerAssetData: string},
takerAssetFillAmount: BigNumber,
salt: BigNumber,
orderSignature: string,
callData: Partial<CallData> = {},
defaultBlock?: BlockParam,
): Promise<void
> {
const self = this as any as WhitelistContract;
const functionSignature = 'fillOrderIfWhitelisted({address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes},uint256,uint256,bytes)';
const inputAbi = self._lookupAbi(functionSignature).inputs;
[order,
takerAssetFillAmount,
salt,
orderSignature
] = BaseContract._formatABIDataItemList(inputAbi, [order,
takerAssetFillAmount,
salt,
orderSignature
], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, [order,
takerAssetFillAmount,
salt,
orderSignature
]);
const ethersFunction = self._lookupEthersInterface(functionSignature).functions.fillOrderIfWhitelisted;
const encodedData = ethersFunction.encode([order,
takerAssetFillAmount,
salt,
orderSignature
]);
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);
let resultArray = ethersFunction.decode(rawCallResult);
const outputAbi = (_.find(self.abi, {name: 'fillOrderIfWhitelisted'}) as MethodAbi).outputs;
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._lowercaseAddress.bind(this));
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._bnToBigNumber.bind(this));
return resultArray;
},
};
public isWhitelisted = {
async callAsync(
index_0: string,
callData: Partial<CallData> = {},
defaultBlock?: BlockParam,
): Promise<boolean
> {
const self = this as any as WhitelistContract;
const functionSignature = 'isWhitelisted(address)';
const inputAbi = self._lookupAbi(functionSignature).inputs;
[index_0
] = BaseContract._formatABIDataItemList(inputAbi, [index_0
], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, [index_0
]);
const ethersFunction = self._lookupEthersInterface(functionSignature).functions.isWhitelisted;
const encodedData = ethersFunction.encode([index_0
]);
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);
let resultArray = ethersFunction.decode(rawCallResult);
const outputAbi = (_.find(self.abi, {name: 'isWhitelisted'}) as MethodAbi).outputs;
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._lowercaseAddress.bind(this));
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._bnToBigNumber.bind(this));
return resultArray[0];
},
};
public owner = {
async callAsync(
callData: Partial<CallData> = {},
defaultBlock?: BlockParam,
): Promise<string
> {
const self = this as any as WhitelistContract;
const functionSignature = 'owner()';
const inputAbi = self._lookupAbi(functionSignature).inputs;
[] = BaseContract._formatABIDataItemList(inputAbi, [], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, []);
const ethersFunction = self._lookupEthersInterface(functionSignature).functions.owner;
const encodedData = ethersFunction.encode([]);
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);
let resultArray = ethersFunction.decode(rawCallResult);
const outputAbi = (_.find(self.abi, {name: 'owner'}) as MethodAbi).outputs;
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._lowercaseAddress.bind(this));
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._bnToBigNumber.bind(this));
return resultArray[0];
},
};
public isValidSignature = {
async callAsync(
hash: string,
signerAddress: string,
signature: string,
callData: Partial<CallData> = {},
defaultBlock?: BlockParam,
): Promise<boolean
> {
const self = this as any as WhitelistContract;
const functionSignature = 'isValidSignature(bytes32,address,bytes)';
const inputAbi = self._lookupAbi(functionSignature).inputs;
[hash,
signerAddress,
signature
] = BaseContract._formatABIDataItemList(inputAbi, [hash,
signerAddress,
signature
], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, [hash,
signerAddress,
signature
]);
const ethersFunction = self._lookupEthersInterface(functionSignature).functions.isValidSignature;
const encodedData = ethersFunction.encode([hash,
signerAddress,
signature
]);
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);
let resultArray = ethersFunction.decode(rawCallResult);
const outputAbi = (_.find(self.abi, {name: 'isValidSignature'}) as MethodAbi).outputs;
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._lowercaseAddress.bind(this));
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._bnToBigNumber.bind(this));
return resultArray[0];
},
};
public updateWhitelistStatus = {
async sendTransactionAsync(
target: string,
isApproved: boolean,
txData: Partial<TxData> = {},
): Promise<string> {
const self = this as any as WhitelistContract;
const inputAbi = self._lookupAbi('updateWhitelistStatus(address,bool)').inputs;
[target,
isApproved
] = BaseContract._formatABIDataItemList(inputAbi, [target,
isApproved
], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, [target,
isApproved
]);
const encodedData = self._lookupEthersInterface('updateWhitelistStatus(address,bool)').functions.updateWhitelistStatus.encode([target,
isApproved
]);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...txData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
self.updateWhitelistStatus.estimateGasAsync.bind(
self,
target,
isApproved
),
);
const txHash = await self._web3Wrapper.sendTransactionAsync(txDataWithDefaults);
return txHash;
},
async estimateGasAsync(
target: string,
isApproved: boolean,
txData: Partial<TxData> = {},
): Promise<number> {
const self = this as any as WhitelistContract;
const inputAbi = self._lookupAbi('updateWhitelistStatus(address,bool)').inputs;
[target,
isApproved
] = BaseContract._formatABIDataItemList(inputAbi, [target,
isApproved
], BaseContract._bigNumberToString);
const encodedData = self._lookupEthersInterface('updateWhitelistStatus(address,bool)').functions.updateWhitelistStatus.encode([target,
isApproved
]);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...txData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const gas = await self._web3Wrapper.estimateGasAsync(txDataWithDefaults);
return gas;
},
getABIEncodedTransactionData(
target: string,
isApproved: boolean,
): string {
const self = this as any as WhitelistContract;
const inputAbi = self._lookupAbi('updateWhitelistStatus(address,bool)').inputs;
[target,
isApproved
] = BaseContract._formatABIDataItemList(inputAbi, [target,
isApproved
], BaseContract._bigNumberToString);
const abiEncodedTransactionData = self._lookupEthersInterface('updateWhitelistStatus(address,bool)').functions.updateWhitelistStatus.encode([target,
isApproved
]);
return abiEncodedTransactionData;
},
async callAsync(
target: string,
isApproved: boolean,
callData: Partial<CallData> = {},
defaultBlock?: BlockParam,
): Promise<void
> {
const self = this as any as WhitelistContract;
const functionSignature = 'updateWhitelistStatus(address,bool)';
const inputAbi = self._lookupAbi(functionSignature).inputs;
[target,
isApproved
] = BaseContract._formatABIDataItemList(inputAbi, [target,
isApproved
], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, [target,
isApproved
]);
const ethersFunction = self._lookupEthersInterface(functionSignature).functions.updateWhitelistStatus;
const encodedData = ethersFunction.encode([target,
isApproved
]);
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);
let resultArray = ethersFunction.decode(rawCallResult);
const outputAbi = (_.find(self.abi, {name: 'updateWhitelistStatus'}) as MethodAbi).outputs;
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._lowercaseAddress.bind(this));
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._bnToBigNumber.bind(this));
return resultArray;
},
};
public transferOwnership = {
async sendTransactionAsync(
newOwner: string,
txData: Partial<TxData> = {},
): Promise<string> {
const self = this as any as WhitelistContract;
const inputAbi = self._lookupAbi('transferOwnership(address)').inputs;
[newOwner
] = BaseContract._formatABIDataItemList(inputAbi, [newOwner
], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, [newOwner
]);
const encodedData = self._lookupEthersInterface('transferOwnership(address)').functions.transferOwnership.encode([newOwner
]);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...txData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
self.transferOwnership.estimateGasAsync.bind(
self,
newOwner
),
);
const txHash = await self._web3Wrapper.sendTransactionAsync(txDataWithDefaults);
return txHash;
},
async estimateGasAsync(
newOwner: string,
txData: Partial<TxData> = {},
): Promise<number> {
const self = this as any as WhitelistContract;
const inputAbi = self._lookupAbi('transferOwnership(address)').inputs;
[newOwner
] = BaseContract._formatABIDataItemList(inputAbi, [newOwner
], BaseContract._bigNumberToString);
const encodedData = self._lookupEthersInterface('transferOwnership(address)').functions.transferOwnership.encode([newOwner
]);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...txData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const gas = await self._web3Wrapper.estimateGasAsync(txDataWithDefaults);
return gas;
},
getABIEncodedTransactionData(
newOwner: string,
): string {
const self = this as any as WhitelistContract;
const inputAbi = self._lookupAbi('transferOwnership(address)').inputs;
[newOwner
] = BaseContract._formatABIDataItemList(inputAbi, [newOwner
], BaseContract._bigNumberToString);
const abiEncodedTransactionData = self._lookupEthersInterface('transferOwnership(address)').functions.transferOwnership.encode([newOwner
]);
return abiEncodedTransactionData;
},
async callAsync(
newOwner: string,
callData: Partial<CallData> = {},
defaultBlock?: BlockParam,
): Promise<void
> {
const self = this as any as WhitelistContract;
const functionSignature = 'transferOwnership(address)';
const inputAbi = self._lookupAbi(functionSignature).inputs;
[newOwner
] = BaseContract._formatABIDataItemList(inputAbi, [newOwner
], BaseContract._bigNumberToString.bind(self));
BaseContract.strictArgumentEncodingCheck(inputAbi, [newOwner
]);
const ethersFunction = self._lookupEthersInterface(functionSignature).functions.transferOwnership;
const encodedData = ethersFunction.encode([newOwner
]);
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
const rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
BaseContract._throwIfRevertWithReasonCallResult(rawCallResult);
let resultArray = ethersFunction.decode(rawCallResult);
const outputAbi = (_.find(self.abi, {name: 'transferOwnership'}) as MethodAbi).outputs;
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._lowercaseAddress.bind(this));
resultArray = BaseContract._formatABIDataItemList(outputAbi, resultArray, BaseContract._bnToBigNumber.bind(this));
return resultArray;
},
};
public static async deployFrom0xArtifactAsync(
artifact: ContractArtifact | SimpleContractArtifact,
provider: Provider,
txDefaults: Partial<TxData>,
_exchange: string,
): Promise<WhitelistContract> {
if (_.isUndefined(artifact.compilerOutput)) {
throw new Error('Compiler output not found in the artifact file');
}
const bytecode = artifact.compilerOutput.evm.bytecode.object;
const abi = artifact.compilerOutput.abi;
return WhitelistContract.deployAsync(bytecode, abi, provider, txDefaults, _exchange
);
}
public static async deployAsync(
bytecode: string,
abi: ContractAbi,
provider: Provider,
txDefaults: Partial<TxData>,
_exchange: string,
): Promise<WhitelistContract> {
const constructorAbi = BaseContract._lookupConstructorAbi(abi);
[_exchange
] = BaseContract._formatABIDataItemList(
constructorAbi.inputs,
[_exchange
],
BaseContract._bigNumberToString,
);
const iface = new ethers.utils.Interface(abi);
const deployInfo = iface.deployFunction;
const txData = deployInfo.encode(bytecode, [_exchange
]);
const web3Wrapper = new Web3Wrapper(provider);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{data: txData},
txDefaults,
web3Wrapper.estimateGasAsync.bind(web3Wrapper),
);
const txHash = await web3Wrapper.sendTransactionAsync(txDataWithDefaults);
logUtils.log(`transactionHash: ${txHash}`);
const txReceipt = await web3Wrapper.awaitTransactionSuccessAsync(txHash);
logUtils.log(`Whitelist successfully deployed at ${txReceipt.contractAddress}`);
const contractInstance = new WhitelistContract(abi, txReceipt.contractAddress as string, provider, txDefaults);
contractInstance.constructorArgs = [_exchange
];
return contractInstance;
}
constructor(abi: ContractAbi, address: string, provider: Provider, txDefaults?: Partial<TxData>) {
super('Whitelist', abi, address, provider, txDefaults);
classUtils.bindAll(this, ['_ethersInterfacesByFunctionSignature', 'address', 'abi', '_web3Wrapper']);
}
} // tslint:disable:max-file-line-count
// tslint:enable:no-unbound-method

View File

@@ -0,0 +1 @@
contracts/src/ZRXToken.sol

View File

@@ -0,0 +1,47 @@
[
{
"version": "1.0.4",
"changes": [
{
"note": "Dependencies updated"
}
],
"timestamp": 1549547375
},
{
"version": "1.0.3",
"changes": [
{
"note": "Fake publish to enable pinning"
}
],
"timestamp": 1549504360
},
{
"timestamp": 1549452781,
"version": "1.0.2",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"timestamp": 1549373905,
"version": "1.0.1",
"changes": [
{
"note": "Dependencies updated"
}
]
},
{
"version": "1.0.0",
"changes": [
{
"note": "Move all ERC20 contracts out of contracts-tokens to new package",
"pr": 1539
}
]
}
]

View File

@@ -0,0 +1,26 @@
<!--
changelogUtils.file is auto-generated using the monorepo-scripts package. Don't edit directly.
Edit the package's CHANGELOG.json file only.
-->
CHANGELOG
## v1.0.4 - _February 7, 2019_
* Dependencies updated
## v1.0.3 - _February 7, 2019_
* Fake publish to enable pinning
## v1.0.2 - _February 6, 2019_
* Dependencies updated
## v1.0.1 - _February 5, 2019_
* Dependencies updated
## v1.0.0 - _Invalid date_
* Move all ERC20 contracts out of contracts-tokens to new package (#1539)

View File

@@ -8,6 +8,7 @@
"networks": {
"1": "0xe41d2489571d322189246dafa5ebde1f4699f498",
"3": "0xff67881f8d12f372d91baae9752eb3631ff0ed00",
"4": "0x2727e688b8fd40b198cd5fe6e408e00494a06f07",
"42": "0x2002d3812f58e35f0ea1ffbf80a75a38c32175fa"
}
}

View File

@@ -1,13 +1,14 @@
## Contract interfaces
## ERC20 Tokens
Smart contract interfaces of the 0x protocol.
This package contains implementations of various [ERC20](https://github.com/ethereum/EIPs/blob/master/EIPS/eip-20.md) tokens, including WETH (Wrapped Ether) and ZRX. 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.
## Usage
## Installation
Contracts that make up and interact with version 2.0.0 of the protocol can be found in the [contracts](./contracts) directory. The contents of this directory are broken down into the following subdirectories:
**Install**
* [protocol](./contracts/protocol)
* This directory contains the contract interfaces that make up version 2.0.0. A full specification can be found [here](https://github.com/0xProject/0x-protocol-specification/blob/master/v2/v2-specification.md).
```bash
npm install @0x/contracts-erc20 --save
```
## Bug bounty
@@ -40,13 +41,13 @@ yarn install
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-interfaces yarn build
PKG=@0x/contracts-erc20 yarn build
```
Or continuously rebuild on change:
```bash
PKG=@0x/contracts-interfaces yarn watch
PKG=@0x/contracts-erc20 yarn watch
```
### Clean

View File

@@ -0,0 +1,32 @@
{
"artifactsDir": "./generated-artifacts",
"contractsDir": "./contracts",
"useDockerisedSolc": true,
"compilerSettings": {
"optimizer": { "enabled": true, "runs": 1000000 },
"outputSelection": {
"*": {
"*": [
"abi",
"evm.bytecode.object",
"evm.bytecode.sourceMap",
"evm.deployedBytecode.object",
"evm.deployedBytecode.sourceMap"
]
}
}
},
"contracts": [
"src/ERC20Token.sol",
"src/MintableERC20Token.sol",
"src/UnlimitedAllowanceERC20Token.sol",
"src/WETH9.sol",
"src/ZRXToken.sol",
"src/interfaces/IERC20Token.sol",
"src/interfaces/IEtherToken.sol",
"test/DummyERC20Token.sol",
"test/DummyMultipleReturnERC20Token.sol",
"test/DummyNoReturnERC20Token.sol",
"test/ReentrantERC20Token.sol"
]
}

View File

@@ -16,9 +16,9 @@
*/
pragma solidity 0.4.24;
pragma solidity ^0.4.24;
import "./IERC20Token.sol";
import "./interfaces/IERC20Token.sol";
contract ERC20Token is

View File

@@ -16,9 +16,9 @@
*/
pragma solidity 0.4.24;
pragma solidity ^0.4.24;
import "@0x/contracts-utils/contracts/utils/SafeMath/SafeMath.sol";
import "@0x/contracts-utils/contracts/src/SafeMath.sol";
import "./UnlimitedAllowanceERC20Token.sol";

View File

@@ -16,9 +16,9 @@
*/
pragma solidity 0.4.24;
pragma solidity ^0.4.24;
import "../ERC20Token/ERC20Token.sol";
import "./ERC20Token.sol";
contract UnlimitedAllowanceERC20Token is

View File

@@ -0,0 +1,150 @@
/*
Copyright 2018 ZeroEx Intl.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
pragma solidity 0.4.11;
contract Token {
/// @return total amount of tokens
function totalSupply() constant returns (uint supply) {}
/// @param _owner The address from which the balance will be retrieved
/// @return The balance
function balanceOf(address _owner) constant returns (uint balance) {}
/// @notice send `_value` token to `_to` from `msg.sender`
/// @param _to The address of the recipient
/// @param _value The amount of token to be transferred
/// @return Whether the transfer was successful or not
function transfer(address _to, uint _value) returns (bool success) {}
/// @notice send `_value` token to `_to` from `_from` on the condition it is approved by `_from`
/// @param _from The address of the sender
/// @param _to The address of the recipient
/// @param _value The amount of token to be transferred
/// @return Whether the transfer was successful or not
function transferFrom(address _from, address _to, uint _value) returns (bool success) {}
/// @notice `msg.sender` approves `_addr` to spend `_value` tokens
/// @param _spender The address of the account able to transfer the tokens
/// @param _value The amount of wei to be approved for transfer
/// @return Whether the approval was successful or not
function approve(address _spender, uint _value) returns (bool success) {}
/// @param _owner The address of the account owning tokens
/// @param _spender The address of the account able to transfer the tokens
/// @return Amount of remaining tokens allowed to spent
function allowance(address _owner, address _spender) constant returns (uint remaining) {}
event Transfer(address indexed _from, address indexed _to, uint _value);
event Approval(address indexed _owner, address indexed _spender, uint _value);
}
contract ERC20Token is Token {
function transfer(address _to, uint _value) returns (bool) {
//Default assumes totalSupply can't be over max (2^256 - 1).
if (balances[msg.sender] >= _value && balances[_to] + _value >= balances[_to]) {
balances[msg.sender] -= _value;
balances[_to] += _value;
Transfer(msg.sender, _to, _value);
return true;
} else { return false; }
}
function transferFrom(address _from, address _to, uint _value) returns (bool) {
if (balances[_from] >= _value && allowed[_from][msg.sender] >= _value && balances[_to] + _value >= balances[_to]) {
balances[_to] += _value;
balances[_from] -= _value;
allowed[_from][msg.sender] -= _value;
Transfer(_from, _to, _value);
return true;
} else { return false; }
}
function balanceOf(address _owner) constant returns (uint) {
return balances[_owner];
}
function approve(address _spender, uint _value) returns (bool) {
allowed[msg.sender][_spender] = _value;
Approval(msg.sender, _spender, _value);
return true;
}
function allowance(address _owner, address _spender) constant returns (uint) {
return allowed[_owner][_spender];
}
mapping (address => uint) balances;
mapping (address => mapping (address => uint)) allowed;
uint public totalSupply;
}
contract UnlimitedAllowanceToken is ERC20Token {
uint constant MAX_UINT = 2**256 - 1;
/// @dev ERC20 transferFrom, modified such that an allowance of MAX_UINT represents an unlimited allowance.
/// @param _from Address to transfer from.
/// @param _to Address to transfer to.
/// @param _value Amount to transfer.
/// @return Success of transfer.
function transferFrom(address _from, address _to, uint _value)
public
returns (bool)
{
uint allowance = allowed[_from][msg.sender];
if (balances[_from] >= _value
&& allowance >= _value
&& balances[_to] + _value >= balances[_to]
) {
balances[_to] += _value;
balances[_from] -= _value;
if (allowance < MAX_UINT) {
allowed[_from][msg.sender] -= _value;
}
Transfer(_from, _to, _value);
return true;
} else {
return false;
}
}
}
contract ZRXToken is
UnlimitedAllowanceToken
{
// solhint-disable const-name-snakecase
uint8 constant public decimals = 18;
uint256 public totalSupply = 10**27; // 1 billion tokens, 18 decimal places
string constant public name = "0x Protocol Token";
string constant public symbol = "ZRX";
// solhint-enableconst-name-snakecase
function ZRXToken()
public
{
balances[msg.sender] = totalSupply;
}
}

View File

@@ -16,7 +16,7 @@
*/
pragma solidity 0.4.24;
pragma solidity ^0.4.24;
contract IERC20Token {

View File

@@ -16,9 +16,9 @@
*/
pragma solidity 0.4.24;
pragma solidity ^0.4.24;
import "../ERC20Token/IERC20Token.sol";
import "./IERC20Token.sol";
contract IEtherToken is

View File

@@ -18,8 +18,8 @@
pragma solidity 0.4.24;
import "@0x/contracts-utils/contracts/utils/Ownable/Ownable.sol";
import "../../tokens/ERC20Token/MintableERC20Token.sol";
import "@0x/contracts-utils/contracts/src/Ownable.sol";
import "../src/MintableERC20Token.sol";
contract DummyERC20Token is

View File

@@ -19,10 +19,10 @@
pragma solidity 0.4.24;
pragma experimental ABIEncoderV2;
import "@0x/contracts-utils/contracts/utils/LibBytes/LibBytes.sol";
import "../../tokens/ERC20Token/ERC20Token.sol";
import "@0x/contracts-interfaces/contracts/protocol/Exchange/IExchange.sol";
import "@0x/contracts-libs/contracts/libs/LibOrder.sol";
import "@0x/contracts-utils/contracts/src/LibBytes.sol";
import "../src/ERC20Token.sol";
import "@0x/contracts-exchange/contracts/src/interfaces/IExchange.sol";
import "@0x/contracts-exchange-libs/contracts/src/LibOrder.sol";
// solhint-disable no-unused-vars

View File

@@ -1,7 +1,6 @@
{
"private": true,
"name": "@0x/contracts-tokens",
"version": "1.0.1",
"name": "@0x/contracts-erc20",
"version": "1.0.4",
"engines": {
"node": ">=6.12"
},
@@ -20,7 +19,8 @@
"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 --contracts-dir contracts",
"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",
@@ -29,10 +29,12 @@
"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/@(DummyERC20Token|DummyMultipleReturnERC20Token|DummyNoReturnERC20Token|DummyERC721Receiver|InvalidERC721Receiver|DummyERC721Token|ReentrantERC20Token|ERC20Token|IERC20Token|MintableERC20Token|UnlimitedAllowanceERC20Token|ERC721Token|IERC721Receiver|IERC721Token|MintableERC721Token|IEtherToken|WETH9|ERC20Token_v1|Token_v1|UnlimitedAllowanceToken_v1|ZRXToken).json"
"abis": "./generated-artifacts/@(DummyERC20Token|DummyMultipleReturnERC20Token|DummyNoReturnERC20Token|ERC20Token|IERC20Token|IEtherToken|MintableERC20Token|ReentrantERC20Token|UnlimitedAllowanceERC20Token|WETH9|ZRXToken).json",
"abis:comment": "This list is auto-generated by contracts-gen. Don't edit manually."
},
"repository": {
"type": "git",
@@ -44,48 +46,36 @@
},
"homepage": "https://github.com/0xProject/0x-monorepo/contracts/tokens/README.md",
"devDependencies": {
"@0x/abi-gen": "^1.0.18",
"@0x/contracts-test-utils": "^1.0.1",
"@0x/dev-utils": "^1.0.20",
"@0x/sol-compiler": "^1.1.15",
"@0x/sol-cov": "^2.1.15",
"@0x/subproviders": "^2.1.7",
"@0x/tslint-config": "^1.0.10",
"@types/bn.js": "^4.11.0",
"@0x/abi-gen": "^2.0.2",
"@0x/contracts-gen": "^1.0.1",
"@0x/contracts-test-utils": "^3.0.3",
"@0x/dev-utils": "^2.0.2",
"@0x/sol-compiler": "^3.0.2",
"@0x/tslint-config": "^3.0.0",
"@types/lodash": "4.14.104",
"@types/node": "*",
"@types/yargs": "^10.0.0",
"chai": "^4.0.1",
"chai-as-promised": "^7.1.0",
"chai-bignumber": "^2.0.1",
"chai-bignumber": "^3.0.0",
"dirty-chai": "^2.0.1",
"ethereumjs-abi": "0.6.5",
"make-promises-safe": "^1.1.0",
"mocha": "^4.1.0",
"npm-run-all": "^4.1.2",
"shx": "^0.2.2",
"solc": "^0.4.24",
"solhint": "^1.4.1",
"tslint": "5.11.0",
"typescript": "3.0.1",
"yargs": "^10.0.3"
"typescript": "3.0.1"
},
"dependencies": {
"@0x/base-contract": "^3.0.9",
"@0x/contracts-interfaces": "^1.0.1",
"@0x/contracts-libs": "^1.0.1",
"@0x/contracts-multisig": "^1.0.1",
"@0x/contracts-utils": "^1.0.1",
"@0x/order-utils": "^3.0.6",
"@0x/types": "^1.4.0",
"@0x/typescript-typings": "^3.0.5",
"@0x/utils": "^2.0.7",
"@0x/web3-wrapper": "^3.2.0",
"@types/js-combinatorics": "^0.5.29",
"bn.js": "^4.11.8",
"ethereum-types": "^1.1.3",
"ethereumjs-util": "^5.1.1",
"lodash": "^4.17.5"
"@0x/base-contract": "^4.0.2",
"@0x/contracts-exchange-libs": "1.0.2",
"@0x/contracts-utils": "2.0.1",
"@0x/types": "^2.0.2",
"@0x/typescript-typings": "^4.0.0",
"@0x/utils": "^4.0.3",
"@0x/web3-wrapper": "^4.0.2",
"ethereum-types": "^2.0.0",
"lodash": "^4.17.11"
},
"publishConfig": {
"access": "public"

View File

@@ -0,0 +1,31 @@
/*
* -----------------------------------------------------------------------------
* Warning: This file is auto-generated by contracts-gen. Don't edit manually.
* -----------------------------------------------------------------------------
*/
import { ContractArtifact } from 'ethereum-types';
import * as DummyERC20Token from '../generated-artifacts/DummyERC20Token.json';
import * as DummyMultipleReturnERC20Token from '../generated-artifacts/DummyMultipleReturnERC20Token.json';
import * as DummyNoReturnERC20Token from '../generated-artifacts/DummyNoReturnERC20Token.json';
import * as ERC20Token from '../generated-artifacts/ERC20Token.json';
import * as IERC20Token from '../generated-artifacts/IERC20Token.json';
import * as IEtherToken from '../generated-artifacts/IEtherToken.json';
import * as MintableERC20Token from '../generated-artifacts/MintableERC20Token.json';
import * as ReentrantERC20Token from '../generated-artifacts/ReentrantERC20Token.json';
import * as UnlimitedAllowanceERC20Token from '../generated-artifacts/UnlimitedAllowanceERC20Token.json';
import * as WETH9 from '../generated-artifacts/WETH9.json';
import * as ZRXToken from '../generated-artifacts/ZRXToken.json';
export const artifacts = {
ERC20Token: ERC20Token as ContractArtifact,
MintableERC20Token: MintableERC20Token as ContractArtifact,
UnlimitedAllowanceERC20Token: UnlimitedAllowanceERC20Token as ContractArtifact,
WETH9: WETH9 as ContractArtifact,
ZRXToken: (ZRXToken as any) as ContractArtifact,
IERC20Token: IERC20Token as ContractArtifact,
IEtherToken: IEtherToken as ContractArtifact,
DummyERC20Token: DummyERC20Token as ContractArtifact,
DummyMultipleReturnERC20Token: DummyMultipleReturnERC20Token as ContractArtifact,
DummyNoReturnERC20Token: DummyNoReturnERC20Token as ContractArtifact,
ReentrantERC20Token: ReentrantERC20Token as ContractArtifact,
};

View File

@@ -0,0 +1,16 @@
/*
* -----------------------------------------------------------------------------
* Warning: This file is auto-generated by contracts-gen. Don't edit manually.
* -----------------------------------------------------------------------------
*/
export * from '../generated-wrappers/dummy_erc20_token';
export * from '../generated-wrappers/dummy_multiple_return_erc20_token';
export * from '../generated-wrappers/dummy_no_return_erc20_token';
export * from '../generated-wrappers/erc20_token';
export * from '../generated-wrappers/i_erc20_token';
export * from '../generated-wrappers/i_ether_token';
export * from '../generated-wrappers/mintable_erc20_token';
export * from '../generated-wrappers/reentrant_erc20_token';
export * from '../generated-wrappers/unlimited_allowance_erc20_token';
export * from '../generated-wrappers/weth9';
export * from '../generated-wrappers/zrx_token';

View File

@@ -109,7 +109,7 @@ describe('UnlimitedAllowanceToken', () => {
const amountToTransfer = ownerBalance;
const spenderAllowance = await token.allowance.callAsync(owner, spender);
const isSpenderAllowanceInsufficient = spenderAllowance.cmp(amountToTransfer) < 0;
const isSpenderAllowanceInsufficient = spenderAllowance.comparedTo(amountToTransfer) < 0;
expect(isSpenderAllowanceInsufficient).to.be.true();
return expectContractCallFailedAsync(

View File

@@ -117,7 +117,7 @@ describe('ZRXToken', () => {
const amountToTransfer = ownerBalance;
const spenderAllowance = await zrxToken.allowance.callAsync(owner, spender);
const isSpenderAllowanceInsufficient = spenderAllowance.cmp(amountToTransfer) < 0;
const isSpenderAllowanceInsufficient = spenderAllowance.comparedTo(amountToTransfer) < 0;
expect(isSpenderAllowanceInsufficient).to.be.true();
const didReturnTrue = await zrxToken.transferFrom.callAsync(owner, spender, amountToTransfer, {

View File

@@ -0,0 +1,19 @@
{
"extends": "../../tsconfig",
"compilerOptions": { "outDir": "lib", "rootDir": ".", "resolveJsonModule": true },
"include": ["./src/**/*", "./test/**/*", "./generated-wrappers/**/*"],
"files": [
"generated-artifacts/DummyERC20Token.json",
"generated-artifacts/DummyMultipleReturnERC20Token.json",
"generated-artifacts/DummyNoReturnERC20Token.json",
"generated-artifacts/ERC20Token.json",
"generated-artifacts/IERC20Token.json",
"generated-artifacts/IEtherToken.json",
"generated-artifacts/MintableERC20Token.json",
"generated-artifacts/ReentrantERC20Token.json",
"generated-artifacts/UnlimitedAllowanceERC20Token.json",
"generated-artifacts/WETH9.json",
"generated-artifacts/ZRXToken.json"
],
"exclude": ["./deploy/solc/solc_bin"]
}

Some files were not shown because too many files have changed in this diff Show More