aboutsummaryrefslogtreecommitdiffstats
path: root/packages/forwarder-helper/src/utils/forwarder_helper_impl_config_utils.ts
diff options
context:
space:
mode:
authorFabio Berger <me@fabioberger.com>2018-09-25 20:07:14 +0800
committerFabio Berger <me@fabioberger.com>2018-09-25 20:07:14 +0800
commit977d55c61b9ba8979e0846a780cd8020c821df9b (patch)
treea4c7c16da62f7c3aed4321927d8ef16fc5d23eeb /packages/forwarder-helper/src/utils/forwarder_helper_impl_config_utils.ts
parentfc3acec669f21b8c5bcb5e3d4f712c2adaf2cf64 (diff)
parent78ef98c27ce954f7e46b261b0809ff9d8d70519b (diff)
downloaddexon-sol-tools-977d55c61b9ba8979e0846a780cd8020c821df9b.tar
dexon-sol-tools-977d55c61b9ba8979e0846a780cd8020c821df9b.tar.gz
dexon-sol-tools-977d55c61b9ba8979e0846a780cd8020c821df9b.tar.bz2
dexon-sol-tools-977d55c61b9ba8979e0846a780cd8020c821df9b.tar.lz
dexon-sol-tools-977d55c61b9ba8979e0846a780cd8020c821df9b.tar.xz
dexon-sol-tools-977d55c61b9ba8979e0846a780cd8020c821df9b.tar.zst
dexon-sol-tools-977d55c61b9ba8979e0846a780cd8020c821df9b.zip
merge development
Diffstat (limited to 'packages/forwarder-helper/src/utils/forwarder_helper_impl_config_utils.ts')
-rw-r--r--packages/forwarder-helper/src/utils/forwarder_helper_impl_config_utils.ts92
1 files changed, 0 insertions, 92 deletions
diff --git a/packages/forwarder-helper/src/utils/forwarder_helper_impl_config_utils.ts b/packages/forwarder-helper/src/utils/forwarder_helper_impl_config_utils.ts
deleted file mode 100644
index 253384f65..000000000
--- a/packages/forwarder-helper/src/utils/forwarder_helper_impl_config_utils.ts
+++ /dev/null
@@ -1,92 +0,0 @@
-import { sortingUtils } from '@0xproject/order-utils';
-import { SignedOrder } from '@0xproject/types';
-import { BigNumber } from '@0xproject/utils';
-import * as _ from 'lodash';
-
-import { ForwarderHelperImplConfig } from '../forwarder_helper_impl';
-
-interface SignedOrderWithAmount extends SignedOrder {
- remainingFillAmount: BigNumber;
-}
-
-export const forwarderHelperImplConfigUtils = {
- sortedConfig(config: ForwarderHelperImplConfig): ForwarderHelperImplConfig {
- const { orders, feeOrders, remainingFillableMakerAssetAmounts, remainingFillableFeeAmounts } = config;
- // TODO: provide a feeRate to the sorting function to more accurately sort based on the current market for ZRX tokens
- const orderSorter = (ordersToSort: SignedOrder[]) => {
- return sortingUtils.sortOrdersByFeeAdjustedRate(ordersToSort);
- };
- const sortOrdersResult = sortOrdersAndRemainingFillAmounts(
- orderSorter,
- orders,
- remainingFillableMakerAssetAmounts,
- );
- const feeOrderSorter = (ordersToSort: SignedOrder[]) => {
- return sortingUtils.sortFeeOrdersByFeeAdjustedRate(ordersToSort);
- };
- const sortFeeOrdersResult = sortOrdersAndRemainingFillAmounts(
- feeOrderSorter,
- feeOrders,
- remainingFillableFeeAmounts,
- );
- return {
- orders: sortOrdersResult.orders,
- feeOrders: sortFeeOrdersResult.orders,
- remainingFillableMakerAssetAmounts: sortOrdersResult.remainingFillAmounts,
- remainingFillableFeeAmounts: sortFeeOrdersResult.remainingFillAmounts,
- };
- },
-};
-
-type OrderSorter = (orders: SignedOrder[]) => SignedOrder[];
-
-function sortOrdersAndRemainingFillAmounts(
- orderSorter: OrderSorter,
- orders: SignedOrder[],
- remainingFillAmounts?: BigNumber[],
-): { orders: SignedOrder[]; remainingFillAmounts?: BigNumber[] } {
- if (!_.isUndefined(remainingFillAmounts)) {
- // Bundle orders together with their remainingFillAmounts so that we can sort them together
- const orderWithAmounts = bundleSignedOrderWithAmounts(orders, remainingFillAmounts);
- // Sort
- const sortedOrderWithAmounts = orderSorter(orderWithAmounts) as SignedOrderWithAmount[];
- // Unbundle after sorting
- const unbundledSortedOrderWithAmounts = unbundleSignedOrderWithAmounts(sortedOrderWithAmounts);
- return {
- orders: unbundledSortedOrderWithAmounts.orders,
- remainingFillAmounts: unbundledSortedOrderWithAmounts.amounts,
- };
- } else {
- const sortedOrders = orderSorter(orders);
- return {
- orders: sortedOrders,
- };
- }
-}
-
-function bundleSignedOrderWithAmounts(orders: SignedOrder[], amounts: BigNumber[]): SignedOrderWithAmount[] {
- const ordersAndAmounts = _.map(orders, (order, index) => {
- return {
- ...order,
- remainingFillAmount: amounts[index],
- };
- });
- return ordersAndAmounts;
-}
-
-function unbundleSignedOrderWithAmounts(
- signedOrderWithAmounts: SignedOrderWithAmount[],
-): { orders: SignedOrder[]; amounts: BigNumber[] } {
- const orders = _.map(signedOrderWithAmounts, order => {
- const { remainingFillAmount, ...rest } = order;
- return rest;
- });
- const amounts = _.map(signedOrderWithAmounts, order => {
- const { remainingFillAmount } = order;
- return remainingFillAmount;
- });
- return {
- orders,
- amounts,
- };
-}