From 4b3e0383235ca4ca0127f24c2e05543bb45a56bb Mon Sep 17 00:00:00 2001 From: Amir Bandeali Date: Wed, 29 Nov 2017 22:02:43 -0800 Subject: Add contracts to packages, fix most linting errors --- packages/contracts/util/formatters.ts | 74 +++++++++++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 packages/contracts/util/formatters.ts (limited to 'packages/contracts/util/formatters.ts') diff --git a/packages/contracts/util/formatters.ts b/packages/contracts/util/formatters.ts new file mode 100644 index 000000000..cda548617 --- /dev/null +++ b/packages/contracts/util/formatters.ts @@ -0,0 +1,74 @@ +import {BigNumber} from 'bignumber.js'; +import * as _ from 'lodash'; + +import {Order} from './order'; +import {BatchCancelOrders, BatchFillOrders, FillOrdersUpTo} from './types'; + +export const formatters = { + createBatchFill(orders: Order[], + shouldThrowOnInsufficientBalanceOrAllowance: boolean, + fillTakerTokenAmounts: BigNumber[] = []) { + const batchFill: BatchFillOrders = { + orderAddresses: [], + orderValues: [], + fillTakerTokenAmounts, + shouldThrowOnInsufficientBalanceOrAllowance, + v: [], + r: [], + s: [], + }; + _.forEach(orders, order => { + batchFill.orderAddresses.push([order.params.maker, order.params.taker, order.params.makerToken, + order.params.takerToken, order.params.feeRecipient]); + batchFill.orderValues.push([order.params.makerTokenAmount, order.params.takerTokenAmount, order.params.makerFee, + order.params.takerFee, order.params.expirationTimestampInSec, order.params.salt]); + batchFill.v.push(order.params.v); + batchFill.r.push(order.params.r); + batchFill.s.push(order.params.s); + if (fillTakerTokenAmounts.length < orders.length) { + batchFill.fillTakerTokenAmounts.push(order.params.takerTokenAmount); + } + }); + return batchFill; + }, + createFillUpTo(orders: Order[], + shouldThrowOnInsufficientBalanceOrAllowance: boolean, + fillTakerTokenAmount: BigNumber) { + const fillUpTo: FillOrdersUpTo = { + orderAddresses: [], + orderValues: [], + fillTakerTokenAmount, + shouldThrowOnInsufficientBalanceOrAllowance, + v: [], + r: [], + s: [], + }; + orders.forEach(order => { + fillUpTo.orderAddresses.push([order.params.maker, order.params.taker, order.params.makerToken, + order.params.takerToken, order.params.feeRecipient]); + fillUpTo.orderValues.push([order.params.makerTokenAmount, order.params.takerTokenAmount, order.params.makerFee, + order.params.takerFee, order.params.expirationTimestampInSec, order.params.salt]); + fillUpTo.v.push(order.params.v); + fillUpTo.r.push(order.params.r); + fillUpTo.s.push(order.params.s); + }); + return fillUpTo; + }, + createBatchCancel(orders: Order[], cancelTakerTokenAmounts: BigNumber[] = []) { + const batchCancel: BatchCancelOrders = { + orderAddresses: [], + orderValues: [], + cancelTakerTokenAmounts, + }; + orders.forEach(order => { + batchCancel.orderAddresses.push([order.params.maker, order.params.taker, order.params.makerToken, + order.params.takerToken, order.params.feeRecipient]); + batchCancel.orderValues.push([order.params.makerTokenAmount, order.params.takerTokenAmount, order.params.makerFee, + order.params.takerFee, order.params.expirationTimestampInSec, order.params.salt]); + if (cancelTakerTokenAmounts.length < orders.length) { + batchCancel.cancelTakerTokenAmounts.push(order.params.takerTokenAmount); + } + }); + return batchCancel; + }, +}; -- cgit v1.2.3