From f68b8d82e0854af7d831b1ebfd2fa192af7300ad Mon Sep 17 00:00:00 2001 From: Amir Bandeali Date: Mon, 3 Jun 2019 17:48:26 -0700 Subject: [PATCH] Move LibTransactionDecoder to dev-utils package --- contracts/asset-proxy/test/lib_asset_data.ts | 7 +- contracts/dev-utils/compiler.json | 2 +- .../dev-utils/contracts/src/DevUtils.sol | 2 +- .../contracts/src/LibTransactionDecoder.sol | 0 contracts/dev-utils/package.json | 2 +- contracts/dev-utils/src/artifacts.ts | 6 +- contracts/dev-utils/src/wrappers.ts | 1 + .../dev-utils/test/lib_transaction_decoder.ts | 144 +++++++++++ ...dev_utils.ts => order_validation_utils.ts} | 5 +- contracts/dev-utils/tsconfig.json | 2 +- contracts/exchange-libs/compiler.json | 1 - contracts/exchange-libs/package.json | 2 +- contracts/exchange-libs/src/artifacts.ts | 2 - contracts/exchange-libs/src/wrappers.ts | 1 - .../test/lib_transaction_decoder.ts | 231 ------------------ contracts/exchange-libs/tsconfig.json | 1 - 16 files changed, 159 insertions(+), 250 deletions(-) rename contracts/{exchange-libs => dev-utils}/contracts/src/LibTransactionDecoder.sol (100%) create mode 100644 contracts/dev-utils/test/lib_transaction_decoder.ts rename contracts/dev-utils/test/{dev_utils.ts => order_validation_utils.ts} (99%) delete mode 100644 contracts/exchange-libs/test/lib_transaction_decoder.ts diff --git a/contracts/asset-proxy/test/lib_asset_data.ts b/contracts/asset-proxy/test/lib_asset_data.ts index 29f18a9159..e44ef85468 100644 --- a/contracts/asset-proxy/test/lib_asset_data.ts +++ b/contracts/asset-proxy/test/lib_asset_data.ts @@ -115,16 +115,13 @@ describe('LibAssetData', () => { provider, txDefaults, ); - // Somewhat re-inventing the wheel here, but the prior art currently - // exists only as an unexported test util in the erc1155 package - // (Erc1155Wrapper.mintFungibleTokensAsync() in erc1155/test/utils/). - // This is concise enough to justify duplication, but it sure is ugly. - // tslint:disable-next-line no-unnecessary-type-assertion + const logDecoder = new LogDecoder(web3Wrapper, erc1155Artifacts); const transactionReceipt = await logDecoder.getTxWithDecodedLogsAsync( await erc1155Token.create.sendTransactionAsync('uri:Dummy', /*isNonFungible:*/ false), ); + // tslint:disable-next-line no-unnecessary-type-assertion erc1155TokenId = (transactionReceipt.logs[0] as LogWithDecodedArgs).args.id; await erc1155Token.mintFungible.awaitTransactionSuccessAsync( erc1155TokenId, diff --git a/contracts/dev-utils/compiler.json b/contracts/dev-utils/compiler.json index 2157d0a193..1117c0be6b 100644 --- a/contracts/dev-utils/compiler.json +++ b/contracts/dev-utils/compiler.json @@ -22,5 +22,5 @@ } } }, - "contracts": ["src/DevUtils.sol"] + "contracts": ["src/DevUtils.sol", "src/LibTransactionDecoder.sol"] } diff --git a/contracts/dev-utils/contracts/src/DevUtils.sol b/contracts/dev-utils/contracts/src/DevUtils.sol index b3827051b5..16de2404cb 100644 --- a/contracts/dev-utils/contracts/src/DevUtils.sol +++ b/contracts/dev-utils/contracts/src/DevUtils.sol @@ -20,7 +20,7 @@ pragma solidity ^0.5.5; pragma experimental ABIEncoderV2; import "./OrderValidationUtils.sol"; -import "@0x/contracts-exchange-libs/contracts/src/LibTransactionDecoder.sol"; +import "./LibTransactionDecoder.sol"; // solhint-disable no-empty-blocks diff --git a/contracts/exchange-libs/contracts/src/LibTransactionDecoder.sol b/contracts/dev-utils/contracts/src/LibTransactionDecoder.sol similarity index 100% rename from contracts/exchange-libs/contracts/src/LibTransactionDecoder.sol rename to contracts/dev-utils/contracts/src/LibTransactionDecoder.sol diff --git a/contracts/dev-utils/package.json b/contracts/dev-utils/package.json index d12ddb5281..a7c6450bc7 100644 --- a/contracts/dev-utils/package.json +++ b/contracts/dev-utils/package.json @@ -34,7 +34,7 @@ "lint-contracts": "solhint -c ../.solhint.json contracts/**/**/**/**/*.sol" }, "config": { - "abis": "./generated-artifacts/@(DevUtils).json", + "abis": "./generated-artifacts/@(DevUtils|LibTransactionDecoder).json", "abis:comment": "This list is auto-generated by contracts-gen. Don't edit manually." }, "repository": { diff --git a/contracts/dev-utils/src/artifacts.ts b/contracts/dev-utils/src/artifacts.ts index 148184dd70..229b8eb26b 100644 --- a/contracts/dev-utils/src/artifacts.ts +++ b/contracts/dev-utils/src/artifacts.ts @@ -6,4 +6,8 @@ import { ContractArtifact } from 'ethereum-types'; import * as DevUtils from '../generated-artifacts/DevUtils.json'; -export const artifacts = { DevUtils: DevUtils as ContractArtifact }; +import * as LibTransactionDecoder from '../generated-artifacts/LibTransactionDecoder.json'; +export const artifacts = { + DevUtils: DevUtils as ContractArtifact, + LibTransactionDecoder: LibTransactionDecoder as ContractArtifact, +}; diff --git a/contracts/dev-utils/src/wrappers.ts b/contracts/dev-utils/src/wrappers.ts index ca8ce678dc..78bc0dcfce 100644 --- a/contracts/dev-utils/src/wrappers.ts +++ b/contracts/dev-utils/src/wrappers.ts @@ -4,3 +4,4 @@ * ----------------------------------------------------------------------------- */ export * from '../generated-wrappers/dev_utils'; +export * from '../generated-wrappers/lib_transaction_decoder'; diff --git a/contracts/dev-utils/test/lib_transaction_decoder.ts b/contracts/dev-utils/test/lib_transaction_decoder.ts new file mode 100644 index 0000000000..26f5cf42b5 --- /dev/null +++ b/contracts/dev-utils/test/lib_transaction_decoder.ts @@ -0,0 +1,144 @@ +import { artifacts as exchangeArtifacts, IExchangeContract } from '@0x/contracts-exchange'; +import { chaiSetup, constants, provider, txDefaults, web3Wrapper } from '@0x/contracts-test-utils'; +import { BlockchainLifecycle } from '@0x/dev-utils'; +import { BigNumber } from '@0x/utils'; +import * as chai from 'chai'; + +import { artifacts, LibTransactionDecoderContract } from '../src'; + +chaiSetup.configure(); +const expect = chai.expect; +const blockchainLifecycle = new BlockchainLifecycle(web3Wrapper); + +const order = { + makerAddress: '0xe36ea790bc9d7ab70c55260c66d52b1eca985f84', + takerAddress: '0x0000000000000000000000000000000000000000', + feeRecipientAddress: '0x78dc5d2d739606d31509c31d654056a45185ecb6', + senderAddress: '0x6ecbe1db9ef729cbe972c83fb886247691fb6beb', + makerAssetAmount: new BigNumber('100000000000000000000'), + takerAssetAmount: new BigNumber('200000000000000000000'), + makerFee: new BigNumber('1000000000000000000'), + takerFee: new BigNumber('1000000000000000000'), + expirationTimeSeconds: new BigNumber('1552396423'), + salt: new BigNumber('66097384406870180066678463045003379626790660770396923976862707230261946348951'), + makerAssetData: '0xf47261b000000000000000000000000034d402f14d58e001d8efbe6585051bf9706aa064', + takerAssetData: '0xf47261b000000000000000000000000025b8fe1de9daf8ba351890744ff28cf7dfa8f5e3', +}; +const takerAssetFillAmount = new BigNumber('100000000000000000000'); +const signature = + '0x1ce8e3c600d933423172b5021158a6be2e818613ff8e762d70ef490c752fd98a626a215f09f169668990414de75a53da221c294a3002f796d004827258b641876e03'; + +describe('LibTransactionDecoder', () => { + let libTxDecoder: LibTransactionDecoderContract; + const exchangeInterface = new IExchangeContract( + exchangeArtifacts.Exchange.compilerOutput.abi, + constants.NULL_ADDRESS, + provider, + txDefaults, + ); + before(async () => { + await blockchainLifecycle.startAsync(); + libTxDecoder = await LibTransactionDecoderContract.deployFrom0xArtifactAsync( + artifacts.LibTransactionDecoder, + provider, + txDefaults, + ); + }); + after(async () => { + await blockchainLifecycle.revertAsync(); + }); + + it('should decode an Exchange.batchCancelOrders() transaction', async () => { + const input = exchangeInterface.batchCancelOrders.getABIEncodedTransactionData([order, order]); + expect(await libTxDecoder.decodeZeroExTransactionData.callAsync(input)).to.deep.equal([ + 'batchCancelOrders', + [order, order], + [], + [], + ]); + }); + + for (const func of ['batchFillOrders', 'batchFillOrdersNoThrow', 'batchFillOrKillOrders']) { + const input = (exchangeInterface as any)[func].getABIEncodedTransactionData( + [order, order], + [takerAssetFillAmount, takerAssetFillAmount], + [signature, signature], + ); + it(`should decode an Exchange.${func}() transaction`, async () => { + expect(await libTxDecoder.decodeZeroExTransactionData.callAsync(input)).to.deep.equal([ + func, + [order, order], + [takerAssetFillAmount, takerAssetFillAmount], + [signature, signature], + ]); + }); + } + + it('should decode an Exchange.cancelOrder() transaction', async () => { + const input = exchangeInterface.cancelOrder.getABIEncodedTransactionData(order); + expect(await libTxDecoder.decodeZeroExTransactionData.callAsync(input)).to.deep.equal([ + 'cancelOrder', + [order], + [], + [], + ]); + }); + + for (const func of ['fillOrder', 'fillOrderNoThrow', 'fillOrKillOrder']) { + const input = (exchangeInterface as any)[func].getABIEncodedTransactionData( + order, + takerAssetFillAmount, + signature, + ); + it(`should decode an Exchange.${func}() transaction`, async () => { + expect(await libTxDecoder.decodeZeroExTransactionData.callAsync(input)).to.deep.equal([ + func, + [order], + [takerAssetFillAmount], + [signature], + ]); + }); + } + + for (const func of ['marketBuyOrders', 'marketBuyOrdersNoThrow', 'marketSellOrders', 'marketSellOrdersNoThrow']) { + const input = (exchangeInterface as any)[func].getABIEncodedTransactionData( + [order, order], + takerAssetFillAmount, + [signature, signature], + ); + it(`should decode an Exchange.${func}() transaction`, async () => { + expect(await libTxDecoder.decodeZeroExTransactionData.callAsync(input)).to.deep.equal([ + func, + [order, order], + [takerAssetFillAmount], + [signature, signature], + ]); + }); + } + + it('should decode an Exchange.matchOrders() transaction', async () => { + const complementaryOrder = { + ...order, + makerAddress: order.takerAddress, + takerAddress: order.makerAddress, + makerAssetData: order.takerAssetData, + takerAssetData: order.makerAssetData, + makerAssetAmount: order.takerAssetAmount, + takerAssetAmount: order.makerAssetAmount, + makerFee: order.takerFee, + takerFee: order.makerFee, + }; + const input = exchangeInterface.matchOrders.getABIEncodedTransactionData( + order, + complementaryOrder, + signature, + signature, + ); + expect(await libTxDecoder.decodeZeroExTransactionData.callAsync(input)).to.deep.equal([ + 'matchOrders', + [order, complementaryOrder], + [order.takerAssetAmount, complementaryOrder.takerAssetAmount], + [signature, signature], + ]); + }); +}); diff --git a/contracts/dev-utils/test/dev_utils.ts b/contracts/dev-utils/test/order_validation_utils.ts similarity index 99% rename from contracts/dev-utils/test/dev_utils.ts rename to contracts/dev-utils/test/order_validation_utils.ts index 7d8ac0cfe0..bff78732c0 100644 --- a/contracts/dev-utils/test/dev_utils.ts +++ b/contracts/dev-utils/test/order_validation_utils.ts @@ -16,7 +16,6 @@ import { assetDataUtils, orderHashUtils } from '@0x/order-utils'; import { SignedOrder } from '@0x/types'; import { BigNumber } from '@0x/utils'; import * as chai from 'chai'; -import * as _ from 'lodash'; import { artifacts, DevUtilsContract } from '../src'; @@ -24,7 +23,7 @@ chaiSetup.configure(); const expect = chai.expect; const blockchainLifecycle = new BlockchainLifecycle(web3Wrapper); -describe('DevUtils', () => { +describe('OrderValidationUtils', () => { let makerAddress: string; let takerAddress: string; let owner: string; @@ -56,7 +55,7 @@ describe('DevUtils', () => { before(async () => { const accounts = await web3Wrapper.getAvailableAddressesAsync(); - const usedAddresses = ([owner, makerAddress, takerAddress] = _.slice(accounts, 0, 3)); + const usedAddresses = ([owner, makerAddress, takerAddress] = accounts.slice(0, 3)); const erc20Wrapper = new ERC20Wrapper(provider, usedAddresses, owner); const erc721Wrapper = new ERC721Wrapper(provider, usedAddresses, owner); diff --git a/contracts/dev-utils/tsconfig.json b/contracts/dev-utils/tsconfig.json index b428ecd4d9..eec1de9575 100644 --- a/contracts/dev-utils/tsconfig.json +++ b/contracts/dev-utils/tsconfig.json @@ -2,6 +2,6 @@ "extends": "../../tsconfig", "compilerOptions": { "outDir": "lib", "rootDir": ".", "resolveJsonModule": true }, "include": ["./src/**/*", "./test/**/*", "./generated-wrappers/**/*"], - "files": ["generated-artifacts/DevUtils.json"], + "files": ["generated-artifacts/DevUtils.json", "generated-artifacts/LibTransactionDecoder.json"], "exclude": ["./deploy/solc/solc_bin"] } diff --git a/contracts/exchange-libs/compiler.json b/contracts/exchange-libs/compiler.json index a7ba8cc2fc..7a985d3c12 100644 --- a/contracts/exchange-libs/compiler.json +++ b/contracts/exchange-libs/compiler.json @@ -30,7 +30,6 @@ "src/LibFillResults.sol", "src/LibMath.sol", "src/LibOrder.sol", - "src/LibTransactionDecoder.sol", "test/TestLibs.sol" ] } diff --git a/contracts/exchange-libs/package.json b/contracts/exchange-libs/package.json index b03cb2489e..ee7ed5332c 100644 --- a/contracts/exchange-libs/package.json +++ b/contracts/exchange-libs/package.json @@ -34,7 +34,7 @@ "lint-contracts": "solhint -c ../.solhint.json contracts/**/**/**/**/*.sol" }, "config": { - "abis": "./generated-artifacts/@(LibAbiEncoder|LibAssetProxyErrors|LibConstants|LibEIP712|LibFillResults|LibMath|LibOrder|LibTransactionDecoder|TestLibs).json", + "abis": "./generated-artifacts/@(LibAbiEncoder|LibAssetProxyErrors|LibConstants|LibEIP712|LibFillResults|LibMath|LibOrder|TestLibs).json", "abis:comment": "This list is auto-generated by contracts-gen. Don't edit manually." }, "repository": { diff --git a/contracts/exchange-libs/src/artifacts.ts b/contracts/exchange-libs/src/artifacts.ts index 735802ab65..861d6f3d2d 100644 --- a/contracts/exchange-libs/src/artifacts.ts +++ b/contracts/exchange-libs/src/artifacts.ts @@ -12,7 +12,6 @@ import * as LibEIP712 from '../generated-artifacts/LibEIP712.json'; import * as LibFillResults from '../generated-artifacts/LibFillResults.json'; import * as LibMath from '../generated-artifacts/LibMath.json'; import * as LibOrder from '../generated-artifacts/LibOrder.json'; -import * as LibTransactionDecoder from '../generated-artifacts/LibTransactionDecoder.json'; import * as TestLibs from '../generated-artifacts/TestLibs.json'; export const artifacts = { LibAbiEncoder: LibAbiEncoder as ContractArtifact, @@ -22,6 +21,5 @@ export const artifacts = { LibFillResults: LibFillResults as ContractArtifact, LibMath: LibMath as ContractArtifact, LibOrder: LibOrder as ContractArtifact, - LibTransactionDecoder: LibTransactionDecoder as ContractArtifact, TestLibs: TestLibs as ContractArtifact, }; diff --git a/contracts/exchange-libs/src/wrappers.ts b/contracts/exchange-libs/src/wrappers.ts index 0cede57f8c..05244d87b7 100644 --- a/contracts/exchange-libs/src/wrappers.ts +++ b/contracts/exchange-libs/src/wrappers.ts @@ -10,5 +10,4 @@ export * from '../generated-wrappers/lib_e_i_p712'; export * from '../generated-wrappers/lib_fill_results'; export * from '../generated-wrappers/lib_math'; export * from '../generated-wrappers/lib_order'; -export * from '../generated-wrappers/lib_transaction_decoder'; export * from '../generated-wrappers/test_libs'; diff --git a/contracts/exchange-libs/test/lib_transaction_decoder.ts b/contracts/exchange-libs/test/lib_transaction_decoder.ts deleted file mode 100644 index 36e6db3070..0000000000 --- a/contracts/exchange-libs/test/lib_transaction_decoder.ts +++ /dev/null @@ -1,231 +0,0 @@ -import { chaiSetup, provider, txDefaults, web3Wrapper } from '@0x/contracts-test-utils'; -import { BlockchainLifecycle } from '@0x/dev-utils'; -import { Order } from '@0x/types'; -import { BigNumber } from '@0x/utils'; -import * as chai from 'chai'; - -import { artifacts, LibTransactionDecoderContract } from '../src'; - -chaiSetup.configure(); -const expect = chai.expect; -const blockchainLifecycle = new BlockchainLifecycle(web3Wrapper); - -type OrderWithoutExchange = Pick>; - -const INPUTS: { order: OrderWithoutExchange; takerAssetFillAmount: BigNumber; signature: string } = { - order: { - makerAddress: '0xe36ea790bc9d7ab70c55260c66d52b1eca985f84', - takerAddress: '0x0000000000000000000000000000000000000000', - feeRecipientAddress: '0x78dc5d2d739606d31509c31d654056a45185ecb6', - senderAddress: '0x6ecbe1db9ef729cbe972c83fb886247691fb6beb', - makerAssetAmount: new BigNumber('100000000000000000000'), - takerAssetAmount: new BigNumber('200000000000000000000'), - makerFee: new BigNumber('1000000000000000000'), - takerFee: new BigNumber('1000000000000000000'), - expirationTimeSeconds: new BigNumber('1552396423'), - salt: new BigNumber('66097384406870180066678463045003379626790660770396923976862707230261946348951'), - makerAssetData: '0xf47261b000000000000000000000000034d402f14d58e001d8efbe6585051bf9706aa064', - takerAssetData: '0xf47261b000000000000000000000000025b8fe1de9daf8ba351890744ff28cf7dfa8f5e3', - }, - takerAssetFillAmount: new BigNumber('100000000000000000000'), - signature: - '0x1ce8e3c600d933423172b5021158a6be2e818613ff8e762d70ef490c752fd98a626a215f09f169668990414de75a53da221c294a3002f796d004827258b641876e03', -}; - -const ENCODED_INPUTS: { [functionName: string]: string } = { - // It would be best to encode inputs as part of the test run, but that's - // not really possible in this case, because doing so would introduce a - // dependency on @0x/contracts-exchange, but of course that package already - // depends on @0x/contracts-exchange-libs (this package), so it would - // introduce a circular dependency. - // - // Values used in this object are declared along with the (commented out) - // code that generated them. Running that code depends on the following: - // - // import { artifacts as exchangeArtifacts, ExchangeContract } from '@0x/contracts-exchange'; - // import { getContractAddressesForNetworkOrThrow, NetworkId } from '@0x/contract-addresses'; - // const exchangeContract = new ExchangeContract( - // exchangeArtifacts.Exchange.compilerOutput.abi, - // getContractAddressesForNetworkOrThrow(NetworkId.Ganache).exchange, - // provider, - // ); - // - batchCancelOrders: - // exchangeContract.batchCancelOrders.getABIEncodedTransactionData([ - // INPUTS.order, - // INPUTS.order, - // ]), - '0x4ac147820000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000040000000000000000000000000e36ea790bc9d7ab70c55260c66d52b1eca985f84000000000000000000000000000000000000000000000000000000000000000000000000000000000000000078dc5d2d739606d31509c31d654056a45185ecb60000000000000000000000006ecbe1db9ef729cbe972c83fb886247691fb6beb0000000000000000000000000000000000000000000000056bc75e2d6310000000000000000000000000000000000000000000000000000ad78ebc5ac62000000000000000000000000000000000000000000000000000000de0b6b3a76400000000000000000000000000000000000000000000000000000de0b6b3a7640000000000000000000000000000000000000000000000000000000000005c87b0879221cb37dcf690e02b0f9aecf44fcaa5ed9ce99697e86743795fa132596ff597000000000000000000000000000000000000000000000000000000000000018000000000000000000000000000000000000000000000000000000000000001e00000000000000000000000000000000000000000000000000000000000000024f47261b000000000000000000000000034d402f14d58e001d8efbe6585051bf9706aa064000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024f47261b000000000000000000000000025b8fe1de9daf8ba351890744ff28cf7dfa8f5e300000000000000000000000000000000000000000000000000000000', - batchFillOrders: - // exchangeContract.batchFillOrders.getABIEncodedTransactionData( - // [INPUTS.order, INPUTS.order], - // [INPUTS.takerAssetFillAmount, INPUTS.takerAssetFillAmount], - // [INPUTS.signature, INPUTS.signature], - // ), - '0x297bb70b000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000360000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000040000000000000000000000000e36ea790bc9d7ab70c55260c66d52b1eca985f84000000000000000000000000000000000000000000000000000000000000000000000000000000000000000078dc5d2d739606d31509c31d654056a45185ecb60000000000000000000000006ecbe1db9ef729cbe972c83fb886247691fb6beb0000000000000000000000000000000000000000000000056bc75e2d6310000000000000000000000000000000000000000000000000000ad78ebc5ac62000000000000000000000000000000000000000000000000000000de0b6b3a76400000000000000000000000000000000000000000000000000000de0b6b3a7640000000000000000000000000000000000000000000000000000000000005c87b0879221cb37dcf690e02b0f9aecf44fcaa5ed9ce99697e86743795fa132596ff597000000000000000000000000000000000000000000000000000000000000018000000000000000000000000000000000000000000000000000000000000001e00000000000000000000000000000000000000000000000000000000000000024f47261b000000000000000000000000034d402f14d58e001d8efbe6585051bf9706aa064000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024f47261b000000000000000000000000025b8fe1de9daf8ba351890744ff28cf7dfa8f5e30000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000056bc75e2d631000000000000000000000000000000000000000000000000000056bc75e2d6310000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000421ce8e3c600d933423172b5021158a6be2e818613ff8e762d70ef490c752fd98a626a215f09f169668990414de75a53da221c294a3002f796d004827258b641876e03000000000000000000000000000000000000000000000000000000000000', - batchFillOrdersNoThrow: - // exchangeContract.batchFillOrdersNoThrow.getABIEncodedTransactionData( - // [INPUTS.order, INPUTS.order], - // [INPUTS.takerAssetFillAmount, INPUTS.takerAssetFillAmount], - // [INPUTS.signature, INPUTS.signature], - // ), - '0x50dde190000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000360000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000040000000000000000000000000e36ea790bc9d7ab70c55260c66d52b1eca985f84000000000000000000000000000000000000000000000000000000000000000000000000000000000000000078dc5d2d739606d31509c31d654056a45185ecb60000000000000000000000006ecbe1db9ef729cbe972c83fb886247691fb6beb0000000000000000000000000000000000000000000000056bc75e2d6310000000000000000000000000000000000000000000000000000ad78ebc5ac62000000000000000000000000000000000000000000000000000000de0b6b3a76400000000000000000000000000000000000000000000000000000de0b6b3a7640000000000000000000000000000000000000000000000000000000000005c87b0879221cb37dcf690e02b0f9aecf44fcaa5ed9ce99697e86743795fa132596ff597000000000000000000000000000000000000000000000000000000000000018000000000000000000000000000000000000000000000000000000000000001e00000000000000000000000000000000000000000000000000000000000000024f47261b000000000000000000000000034d402f14d58e001d8efbe6585051bf9706aa064000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024f47261b000000000000000000000000025b8fe1de9daf8ba351890744ff28cf7dfa8f5e30000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000056bc75e2d631000000000000000000000000000000000000000000000000000056bc75e2d6310000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000421ce8e3c600d933423172b5021158a6be2e818613ff8e762d70ef490c752fd98a626a215f09f169668990414de75a53da221c294a3002f796d004827258b641876e03000000000000000000000000000000000000000000000000000000000000', - batchFillOrKillOrders: - // exchangeContract.batchFillOrKillOrders.getABIEncodedTransactionData( - // [INPUTS.order, INPUTS.order], - // [INPUTS.takerAssetFillAmount, INPUTS.takerAssetFillAmount], - // [INPUTS.signature, INPUTS.signature], - // ), - '0x4d0ae546000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000360000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000040000000000000000000000000e36ea790bc9d7ab70c55260c66d52b1eca985f84000000000000000000000000000000000000000000000000000000000000000000000000000000000000000078dc5d2d739606d31509c31d654056a45185ecb60000000000000000000000006ecbe1db9ef729cbe972c83fb886247691fb6beb0000000000000000000000000000000000000000000000056bc75e2d6310000000000000000000000000000000000000000000000000000ad78ebc5ac62000000000000000000000000000000000000000000000000000000de0b6b3a76400000000000000000000000000000000000000000000000000000de0b6b3a7640000000000000000000000000000000000000000000000000000000000005c87b0879221cb37dcf690e02b0f9aecf44fcaa5ed9ce99697e86743795fa132596ff597000000000000000000000000000000000000000000000000000000000000018000000000000000000000000000000000000000000000000000000000000001e00000000000000000000000000000000000000000000000000000000000000024f47261b000000000000000000000000034d402f14d58e001d8efbe6585051bf9706aa064000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024f47261b000000000000000000000000025b8fe1de9daf8ba351890744ff28cf7dfa8f5e30000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000056bc75e2d631000000000000000000000000000000000000000000000000000056bc75e2d6310000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000421ce8e3c600d933423172b5021158a6be2e818613ff8e762d70ef490c752fd98a626a215f09f169668990414de75a53da221c294a3002f796d004827258b641876e03000000000000000000000000000000000000000000000000000000000000', - cancelOrder: - // exchangeContract.cancelOrder.getABIEncodedTransactionData(INPUTS.order), - '0xd46b02c30000000000000000000000000000000000000000000000000000000000000020000000000000000000000000e36ea790bc9d7ab70c55260c66d52b1eca985f84000000000000000000000000000000000000000000000000000000000000000000000000000000000000000078dc5d2d739606d31509c31d654056a45185ecb60000000000000000000000006ecbe1db9ef729cbe972c83fb886247691fb6beb0000000000000000000000000000000000000000000000056bc75e2d6310000000000000000000000000000000000000000000000000000ad78ebc5ac62000000000000000000000000000000000000000000000000000000de0b6b3a76400000000000000000000000000000000000000000000000000000de0b6b3a7640000000000000000000000000000000000000000000000000000000000005c87b0879221cb37dcf690e02b0f9aecf44fcaa5ed9ce99697e86743795fa132596ff597000000000000000000000000000000000000000000000000000000000000018000000000000000000000000000000000000000000000000000000000000001e00000000000000000000000000000000000000000000000000000000000000024f47261b000000000000000000000000034d402f14d58e001d8efbe6585051bf9706aa064000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024f47261b000000000000000000000000025b8fe1de9daf8ba351890744ff28cf7dfa8f5e300000000000000000000000000000000000000000000000000000000', - fillOrder: - // exchangeContract.fillOrder.getABIEncodedTransactionData( - // INPUTS.order, - // INPUTS.takerAssetFillAmount, - // INPUTS.signature, - // ), - '0xb4be83d500000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000056bc75e2d6310000000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000e36ea790bc9d7ab70c55260c66d52b1eca985f84000000000000000000000000000000000000000000000000000000000000000000000000000000000000000078dc5d2d739606d31509c31d654056a45185ecb60000000000000000000000006ecbe1db9ef729cbe972c83fb886247691fb6beb0000000000000000000000000000000000000000000000056bc75e2d6310000000000000000000000000000000000000000000000000000ad78ebc5ac62000000000000000000000000000000000000000000000000000000de0b6b3a76400000000000000000000000000000000000000000000000000000de0b6b3a7640000000000000000000000000000000000000000000000000000000000005c87b0879221cb37dcf690e02b0f9aecf44fcaa5ed9ce99697e86743795fa132596ff597000000000000000000000000000000000000000000000000000000000000018000000000000000000000000000000000000000000000000000000000000001e00000000000000000000000000000000000000000000000000000000000000024f47261b000000000000000000000000034d402f14d58e001d8efbe6585051bf9706aa064000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024f47261b000000000000000000000000025b8fe1de9daf8ba351890744ff28cf7dfa8f5e30000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000421ce8e3c600d933423172b5021158a6be2e818613ff8e762d70ef490c752fd98a626a215f09f169668990414de75a53da221c294a3002f796d004827258b641876e03000000000000000000000000000000000000000000000000000000000000', - fillOrderNoThrow: - // exchangeContract.fillOrderNoThrow.getABIEncodedTransactionData( - // INPUTS.order, - // INPUTS.takerAssetFillAmount, - // INPUTS.signature, - // ), - '0x3e228bae00000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000056bc75e2d6310000000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000e36ea790bc9d7ab70c55260c66d52b1eca985f84000000000000000000000000000000000000000000000000000000000000000000000000000000000000000078dc5d2d739606d31509c31d654056a45185ecb60000000000000000000000006ecbe1db9ef729cbe972c83fb886247691fb6beb0000000000000000000000000000000000000000000000056bc75e2d6310000000000000000000000000000000000000000000000000000ad78ebc5ac62000000000000000000000000000000000000000000000000000000de0b6b3a76400000000000000000000000000000000000000000000000000000de0b6b3a7640000000000000000000000000000000000000000000000000000000000005c87b0879221cb37dcf690e02b0f9aecf44fcaa5ed9ce99697e86743795fa132596ff597000000000000000000000000000000000000000000000000000000000000018000000000000000000000000000000000000000000000000000000000000001e00000000000000000000000000000000000000000000000000000000000000024f47261b000000000000000000000000034d402f14d58e001d8efbe6585051bf9706aa064000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024f47261b000000000000000000000000025b8fe1de9daf8ba351890744ff28cf7dfa8f5e30000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000421ce8e3c600d933423172b5021158a6be2e818613ff8e762d70ef490c752fd98a626a215f09f169668990414de75a53da221c294a3002f796d004827258b641876e03000000000000000000000000000000000000000000000000000000000000', - fillOrKillOrder: - // exchangeContract.fillOrKillOrder.getABIEncodedTransactionData( - // INPUTS.order, - // INPUTS.takerAssetFillAmount, - // INPUTS.signature, - // ), - '0x64a3bc1500000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000056bc75e2d6310000000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000e36ea790bc9d7ab70c55260c66d52b1eca985f84000000000000000000000000000000000000000000000000000000000000000000000000000000000000000078dc5d2d739606d31509c31d654056a45185ecb60000000000000000000000006ecbe1db9ef729cbe972c83fb886247691fb6beb0000000000000000000000000000000000000000000000056bc75e2d6310000000000000000000000000000000000000000000000000000ad78ebc5ac62000000000000000000000000000000000000000000000000000000de0b6b3a76400000000000000000000000000000000000000000000000000000de0b6b3a7640000000000000000000000000000000000000000000000000000000000005c87b0879221cb37dcf690e02b0f9aecf44fcaa5ed9ce99697e86743795fa132596ff597000000000000000000000000000000000000000000000000000000000000018000000000000000000000000000000000000000000000000000000000000001e00000000000000000000000000000000000000000000000000000000000000024f47261b000000000000000000000000034d402f14d58e001d8efbe6585051bf9706aa064000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024f47261b000000000000000000000000025b8fe1de9daf8ba351890744ff28cf7dfa8f5e30000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000421ce8e3c600d933423172b5021158a6be2e818613ff8e762d70ef490c752fd98a626a215f09f169668990414de75a53da221c294a3002f796d004827258b641876e03000000000000000000000000000000000000000000000000000000000000', - marketBuyOrders: - // exchangeContract.marketBuyOrders.getABIEncodedTransactionData( - // [INPUTS.order, INPUTS.order], - // INPUTS.takerAssetFillAmount, - // [INPUTS.signature, INPUTS.signature], - // ), - '0xe5fa431b00000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000056bc75e2d631000000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000040000000000000000000000000e36ea790bc9d7ab70c55260c66d52b1eca985f84000000000000000000000000000000000000000000000000000000000000000000000000000000000000000078dc5d2d739606d31509c31d654056a45185ecb60000000000000000000000006ecbe1db9ef729cbe972c83fb886247691fb6beb0000000000000000000000000000000000000000000000056bc75e2d6310000000000000000000000000000000000000000000000000000ad78ebc5ac62000000000000000000000000000000000000000000000000000000de0b6b3a76400000000000000000000000000000000000000000000000000000de0b6b3a7640000000000000000000000000000000000000000000000000000000000005c87b0879221cb37dcf690e02b0f9aecf44fcaa5ed9ce99697e86743795fa132596ff597000000000000000000000000000000000000000000000000000000000000018000000000000000000000000000000000000000000000000000000000000001e00000000000000000000000000000000000000000000000000000000000000024f47261b000000000000000000000000034d402f14d58e001d8efbe6585051bf9706aa064000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024f47261b000000000000000000000000025b8fe1de9daf8ba351890744ff28cf7dfa8f5e30000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000421ce8e3c600d933423172b5021158a6be2e818613ff8e762d70ef490c752fd98a626a215f09f169668990414de75a53da221c294a3002f796d004827258b641876e03000000000000000000000000000000000000000000000000000000000000', - marketBuyOrdersNoThrow: - // exchangeContract.marketBuyOrdersNoThrow.getABIEncodedTransactionData( - // [INPUTS.order, INPUTS.order], - // INPUTS.takerAssetFillAmount, - // [INPUTS.signature, INPUTS.signature], - // ), - '0xa3e2038000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000056bc75e2d631000000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000040000000000000000000000000e36ea790bc9d7ab70c55260c66d52b1eca985f84000000000000000000000000000000000000000000000000000000000000000000000000000000000000000078dc5d2d739606d31509c31d654056a45185ecb60000000000000000000000006ecbe1db9ef729cbe972c83fb886247691fb6beb0000000000000000000000000000000000000000000000056bc75e2d6310000000000000000000000000000000000000000000000000000ad78ebc5ac62000000000000000000000000000000000000000000000000000000de0b6b3a76400000000000000000000000000000000000000000000000000000de0b6b3a7640000000000000000000000000000000000000000000000000000000000005c87b0879221cb37dcf690e02b0f9aecf44fcaa5ed9ce99697e86743795fa132596ff597000000000000000000000000000000000000000000000000000000000000018000000000000000000000000000000000000000000000000000000000000001e00000000000000000000000000000000000000000000000000000000000000024f47261b000000000000000000000000034d402f14d58e001d8efbe6585051bf9706aa064000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024f47261b000000000000000000000000025b8fe1de9daf8ba351890744ff28cf7dfa8f5e30000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000421ce8e3c600d933423172b5021158a6be2e818613ff8e762d70ef490c752fd98a626a215f09f169668990414de75a53da221c294a3002f796d004827258b641876e03000000000000000000000000000000000000000000000000000000000000', - marketSellOrders: - // exchangeContract.marketSellOrders.getABIEncodedTransactionData( - // [INPUTS.order, INPUTS.order], - // INPUTS.takerAssetFillAmount, - // [INPUTS.signature, INPUTS.signature], - // ), - '0x7e1d980800000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000056bc75e2d631000000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000040000000000000000000000000e36ea790bc9d7ab70c55260c66d52b1eca985f84000000000000000000000000000000000000000000000000000000000000000000000000000000000000000078dc5d2d739606d31509c31d654056a45185ecb60000000000000000000000006ecbe1db9ef729cbe972c83fb886247691fb6beb0000000000000000000000000000000000000000000000056bc75e2d6310000000000000000000000000000000000000000000000000000ad78ebc5ac62000000000000000000000000000000000000000000000000000000de0b6b3a76400000000000000000000000000000000000000000000000000000de0b6b3a7640000000000000000000000000000000000000000000000000000000000005c87b0879221cb37dcf690e02b0f9aecf44fcaa5ed9ce99697e86743795fa132596ff597000000000000000000000000000000000000000000000000000000000000018000000000000000000000000000000000000000000000000000000000000001e00000000000000000000000000000000000000000000000000000000000000024f47261b000000000000000000000000034d402f14d58e001d8efbe6585051bf9706aa064000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024f47261b000000000000000000000000025b8fe1de9daf8ba351890744ff28cf7dfa8f5e30000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000421ce8e3c600d933423172b5021158a6be2e818613ff8e762d70ef490c752fd98a626a215f09f169668990414de75a53da221c294a3002f796d004827258b641876e03000000000000000000000000000000000000000000000000000000000000', - marketSellOrdersNoThrow: - // exchangeContract.marketSellOrdersNoThrow.getABIEncodedTransactionData( - // [INPUTS.order, INPUTS.order], - // INPUTS.takerAssetFillAmount, - // [INPUTS.signature, INPUTS.signature], - // ), - '0xdd1c7d1800000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000056bc75e2d631000000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000040000000000000000000000000e36ea790bc9d7ab70c55260c66d52b1eca985f84000000000000000000000000000000000000000000000000000000000000000000000000000000000000000078dc5d2d739606d31509c31d654056a45185ecb60000000000000000000000006ecbe1db9ef729cbe972c83fb886247691fb6beb0000000000000000000000000000000000000000000000056bc75e2d6310000000000000000000000000000000000000000000000000000ad78ebc5ac62000000000000000000000000000000000000000000000000000000de0b6b3a76400000000000000000000000000000000000000000000000000000de0b6b3a7640000000000000000000000000000000000000000000000000000000000005c87b0879221cb37dcf690e02b0f9aecf44fcaa5ed9ce99697e86743795fa132596ff597000000000000000000000000000000000000000000000000000000000000018000000000000000000000000000000000000000000000000000000000000001e00000000000000000000000000000000000000000000000000000000000000024f47261b000000000000000000000000034d402f14d58e001d8efbe6585051bf9706aa064000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024f47261b000000000000000000000000025b8fe1de9daf8ba351890744ff28cf7dfa8f5e30000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000421ce8e3c600d933423172b5021158a6be2e818613ff8e762d70ef490c752fd98a626a215f09f169668990414de75a53da221c294a3002f796d004827258b641876e03000000000000000000000000000000000000000000000000000000000000', - matchOrders: - // exchangeContract.matchOrders.getABIEncodedTransactionData( - // INPUTS.order, - // makeComplementaryOrder(INPUTS.order), - // INPUTS.signature, - // INPUTS.signature, - // ), - '0x3c28d86100000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000026000000000000000000000000000000000000000000000000000000000000002600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000078dc5d2d739606d31509c31d654056a45185ecb60000000000000000000000006ecbe1db9ef729cbe972c83fb886247691fb6beb00000000000000000000000000000000000000000000000ad78ebc5ac620000000000000000000000000000000000000000000000000000ad78ebc5ac62000000000000000000000000000000000000000000000000000000de0b6b3a76400000000000000000000000000000000000000000000000000000de0b6b3a7640000000000000000000000000000000000000000000000000000000000005c87b0879221cb37dcf690e02b0f9aecf44fcaa5ed9ce99697e86743795fa132596ff597000000000000000000000000000000000000000000000000000000000000018000000000000000000000000000000000000000000000000000000000000001800000000000000000000000000000000000000000000000000000000000000024f47261b000000000000000000000000025b8fe1de9daf8ba351890744ff28cf7dfa8f5e30000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000421ce8e3c600d933423172b5021158a6be2e818613ff8e762d70ef490c752fd98a626a215f09f169668990414de75a53da221c294a3002f796d004827258b641876e03000000000000000000000000000000000000000000000000000000000000', -}; - -describe('LibTransactionDecoder', () => { - let libTxDecoder: LibTransactionDecoderContract; - - before(async () => { - await blockchainLifecycle.startAsync(); - libTxDecoder = await LibTransactionDecoderContract.deployFrom0xArtifactAsync( - artifacts.LibTransactionDecoder, - provider, - txDefaults, - ); - }); - after(async () => { - await blockchainLifecycle.revertAsync(); - }); - - it('should decode an Exchange.batchCancelOrders() transaction', async () => { - expect( - await libTxDecoder.decodeZeroExTransactionData.callAsync(ENCODED_INPUTS.batchCancelOrders), - ).to.deep.equal(['batchCancelOrders', [INPUTS.order, INPUTS.order], [], []]); - }); - - for (const func of ['batchFillOrders', 'batchFillOrdersNoThrow', 'batchFillOrKillOrders']) { - it(`should decode an Exchange.${func}() transaction`, async () => { - expect(await libTxDecoder.decodeZeroExTransactionData.callAsync(ENCODED_INPUTS[func])).to.deep.equal([ - func, - [INPUTS.order, INPUTS.order], - [INPUTS.takerAssetFillAmount, INPUTS.takerAssetFillAmount], - [INPUTS.signature, INPUTS.signature], - ]); - }); - } - - it('should decode an Exchange.cancelOrder() transaction', async () => { - expect(await libTxDecoder.decodeZeroExTransactionData.callAsync(ENCODED_INPUTS.cancelOrder)).to.deep.equal([ - 'cancelOrder', - [INPUTS.order], - [], - [], - ]); - }); - - for (const func of ['fillOrder', 'fillOrderNoThrow', 'fillOrKillOrder']) { - it(`should decode an Exchange.${func}() transaction`, async () => { - expect(await libTxDecoder.decodeZeroExTransactionData.callAsync(ENCODED_INPUTS[func])).to.deep.equal([ - func, - [INPUTS.order], - [INPUTS.takerAssetFillAmount], - [INPUTS.signature], - ]); - }); - } - - for (const func of ['marketBuyOrders', 'marketBuyOrdersNoThrow', 'marketSellOrders', 'marketSellOrdersNoThrow']) { - it(`should decode an Exchange.${func}() transaction`, async () => { - expect(await libTxDecoder.decodeZeroExTransactionData.callAsync(ENCODED_INPUTS[func])).to.deep.equal([ - func, - [INPUTS.order, INPUTS.order], - [INPUTS.takerAssetFillAmount], - [INPUTS.signature, INPUTS.signature], - ]); - }); - } - - it('should decode an Exchange.matchOrders() transaction', async () => { - function makeComplementaryOrder(order: OrderWithoutExchange): OrderWithoutExchange { - const complementaryOrder = order; - - complementaryOrder.makerAddress = order.takerAddress; - complementaryOrder.takerAddress = order.makerAddress; - - complementaryOrder.makerAssetData = order.takerAssetData; - complementaryOrder.takerAssetData = order.makerAssetData; - - complementaryOrder.makerAssetAmount = order.takerAssetAmount; - complementaryOrder.takerAssetAmount = order.makerAssetAmount; - - complementaryOrder.makerFee = order.takerFee; - complementaryOrder.takerFee = order.makerFee; - - return complementaryOrder; - } - - expect(await libTxDecoder.decodeZeroExTransactionData.callAsync(ENCODED_INPUTS.matchOrders)).to.deep.equal([ - 'matchOrders', - [INPUTS.order, makeComplementaryOrder(INPUTS.order)], - [INPUTS.order.takerAssetAmount, makeComplementaryOrder(INPUTS.order).takerAssetAmount], - [INPUTS.signature, INPUTS.signature], - ]); - }); -}); diff --git a/contracts/exchange-libs/tsconfig.json b/contracts/exchange-libs/tsconfig.json index cf9bf35633..1b5d541758 100644 --- a/contracts/exchange-libs/tsconfig.json +++ b/contracts/exchange-libs/tsconfig.json @@ -10,7 +10,6 @@ "generated-artifacts/LibFillResults.json", "generated-artifacts/LibMath.json", "generated-artifacts/LibOrder.json", - "generated-artifacts/LibTransactionDecoder.json", "generated-artifacts/TestLibs.json" ], "exclude": ["./deploy/solc/solc_bin"]