* Export artifacts and addresses from abi-gen-wrappers * only export addresses, not artifacts * abi-gen-wrappers no longer accept ContractAbi as constructor param ABI is now hardcoded when wrapper is generated * remove unused imports * remove unused import * changes after review * fix method ordering * update constructor args * prettier * statically enumerate ABI properties * remove abi-gen-wrappers generated-wrappers from prettierignore * add template for recursive components * add `indexed` field for EventParameter * prettier * update known-good wrappers with ABIs and fix Python ABI loading * remove generated-artifacts and update gitignore
48 lines
2.2 KiB
TypeScript
48 lines
2.2 KiB
TypeScript
import { IExchangeContract } from '@0x/contracts-exchange';
|
|
import { constants as devConstants, provider } from '@0x/contracts-test-utils';
|
|
import { SignedOrder } from '@0x/types';
|
|
|
|
import { constants } from './index';
|
|
|
|
export const exchangeDataEncoder = {
|
|
encodeOrdersToExchangeData(fnName: string, orders: SignedOrder[]): string {
|
|
const exchangeInstance = new IExchangeContract(devConstants.NULL_ADDRESS, provider);
|
|
let data;
|
|
if (constants.SINGLE_FILL_FN_NAMES.indexOf(fnName) !== -1) {
|
|
data = (exchangeInstance as any)[fnName].getABIEncodedTransactionData(
|
|
orders[0],
|
|
orders[0].takerAssetAmount,
|
|
orders[0].signature,
|
|
);
|
|
} else if (constants.BATCH_FILL_FN_NAMES.indexOf(fnName) !== -1) {
|
|
data = (exchangeInstance as any)[fnName].getABIEncodedTransactionData(
|
|
orders,
|
|
orders.map(order => order.takerAssetAmount),
|
|
orders.map(order => order.signature),
|
|
);
|
|
} else if (constants.MARKET_FILL_FN_NAMES.indexOf(fnName) !== -1) {
|
|
data = (exchangeInstance as any)[fnName].getABIEncodedTransactionData(
|
|
orders,
|
|
orders.map(order => order.takerAssetAmount).reduce((prev, curr) => prev.plus(curr)),
|
|
orders.map(order => order.signature),
|
|
);
|
|
} else if (fnName === constants.MATCH_ORDERS) {
|
|
data = exchangeInstance.matchOrders.getABIEncodedTransactionData(
|
|
orders[0],
|
|
orders[1],
|
|
orders[0].signature,
|
|
orders[1].signature,
|
|
);
|
|
} else if (fnName === constants.CANCEL_ORDER) {
|
|
data = exchangeInstance.cancelOrder.getABIEncodedTransactionData(orders[0]);
|
|
} else if (fnName === constants.BATCH_CANCEL_ORDERS) {
|
|
data = exchangeInstance.batchCancelOrders.getABIEncodedTransactionData(orders);
|
|
} else if (fnName === constants.CANCEL_ORDERS_UP_TO) {
|
|
data = exchangeInstance.cancelOrdersUpTo.getABIEncodedTransactionData(devConstants.ZERO_AMOUNT);
|
|
} else {
|
|
throw new Error(`Error: ${fnName} not a supported function`);
|
|
}
|
|
return data;
|
|
},
|
|
};
|