Files
protocol/packages/asset-swapper/src/utils/utils.ts
David Sun e5133a2dd9 prettier
2019-09-21 22:21:55 -04:00

42 lines
1.7 KiB
TypeScript

import { SignedOrder } from '@0x/types';
import { BigNumber } from '@0x/utils';
import { Web3Wrapper } from '@0x/web3-wrapper';
import { AbiDefinition, ContractAbi, MethodAbi } from 'ethereum-types';
import * as _ from 'lodash';
import { constants } from '../constants';
import { OrdersAndFillableAmounts } from '../types';
// tslint:disable:no-unnecessary-type-assertion
export const utils = {
numberPercentageToEtherTokenAmountPercentage(percentage: number): BigNumber {
return Web3Wrapper.toBaseUnitAmount(constants.ONE_AMOUNT, constants.ETHER_TOKEN_DECIMALS).multipliedBy(
percentage,
);
},
getMethodAbiFromContractAbi(abi: ContractAbi, name: string): MethodAbi | undefined {
return _.find(
abi,
(def: AbiDefinition): boolean => {
if (def.type === 'function') {
const methodDef = def as MethodAbi;
return methodDef.name === name;
} else {
return false;
}
},
) as MethodAbi | undefined;
},
isFeeOrdersRequiredToFillOrders(ordersAndFillableAmounts: OrdersAndFillableAmounts): boolean {
const { orders, remainingFillableMakerAssetAmounts } = ordersAndFillableAmounts;
return _.some(
orders,
(order: SignedOrder, index: number): boolean => {
const remainingFillableMakerAssetAmount = remainingFillableMakerAssetAmounts[index];
// If takerFee is a non zero value and order is still fillable, fee orders are required
return !order.takerFee.isZero() && !remainingFillableMakerAssetAmount.isZero();
},
);
},
};