| 
							
							
							
						 |  |  | @@ -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<Order, Exclude<keyof Order, 'exchangeAddress'>>; | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  | 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], | 
		
	
		
			
				|  |  |  |  |         ]); | 
		
	
		
			
				|  |  |  |  |     }); | 
		
	
		
			
				|  |  |  |  | }); |