Pass in fee and assetAmount rather then the whole signedOrder

This commit is contained in:
Fabio Berger 2018-06-07 18:33:42 +02:00
parent dee0fec9e9
commit f5ad553be3
3 changed files with 26 additions and 45 deletions

View File

@ -113,10 +113,9 @@ export class OrderStateUtils {
const zrxAssetData = assetProxyUtils.encodeERC20ProxyData(zrxTokenAddress); const zrxAssetData = assetProxyUtils.encodeERC20ProxyData(zrxTokenAddress);
const isMakerAssetZRX = signedOrder.makerAssetData === zrxAssetData; const isMakerAssetZRX = signedOrder.makerAssetData === zrxAssetData;
const isTraderMaker = true;
const remainingFillableCalculator = new RemainingFillableCalculator( const remainingFillableCalculator = new RemainingFillableCalculator(
isTraderMaker, signedOrder.makerFee,
signedOrder, signedOrder.makerAssetAmount,
isMakerAssetZRX, isMakerAssetZRX,
transferrableMakerAssetAmount, transferrableMakerAssetAmount,
transferrableFeeAssetAmount, transferrableFeeAssetAmount,

View File

@ -1,8 +1,6 @@
import { SignedOrder } from '@0xproject/types';
import { BigNumber } from '@0xproject/utils'; import { BigNumber } from '@0xproject/utils';
export class RemainingFillableCalculator { export class RemainingFillableCalculator {
private _signedOrder: SignedOrder;
private _isTraderAssetZRX: boolean; private _isTraderAssetZRX: boolean;
// Transferrable Amount is the minimum of Approval and Balance // Transferrable Amount is the minimum of Approval and Balance
private _transferrableAssetAmount: BigNumber; private _transferrableAssetAmount: BigNumber;
@ -12,21 +10,15 @@ export class RemainingFillableCalculator {
private _orderFee: BigNumber; private _orderFee: BigNumber;
private _orderAssetAmount: BigNumber; private _orderAssetAmount: BigNumber;
constructor( constructor(
isTraderMaker: boolean, orderFee: BigNumber,
signedOrder: SignedOrder, orderAssetAmount: BigNumber,
isTraderAssetZRX: boolean, isTraderAssetZRX: boolean,
transferrableAssetAmount: BigNumber, transferrableAssetAmount: BigNumber,
transferrableFeeAmount: BigNumber, transferrableFeeAmount: BigNumber,
remainingOrderAssetAmount: BigNumber, remainingOrderAssetAmount: BigNumber,
) { ) {
if (isTraderMaker) { this._orderFee = orderFee;
this._orderFee = signedOrder.makerFee; this._orderAssetAmount = orderAssetAmount;
this._orderAssetAmount = signedOrder.makerAssetAmount;
} else {
this._orderFee = signedOrder.takerFee;
this._orderAssetAmount = signedOrder.takerAssetAmount;
}
this._signedOrder = signedOrder;
this._isTraderAssetZRX = isTraderAssetZRX; this._isTraderAssetZRX = isTraderAssetZRX;
this._transferrableAssetAmount = transferrableAssetAmount; this._transferrableAssetAmount = transferrableAssetAmount;
this._transferrableFeeAmount = transferrableFeeAmount; this._transferrableFeeAmount = transferrableFeeAmount;

View File

@ -65,10 +65,9 @@ describe('RemainingFillableCalculator', () => {
it('calculates the correct amount when unfilled and funds available', () => { it('calculates the correct amount when unfilled and funds available', () => {
signedOrder = buildSignedOrder(); signedOrder = buildSignedOrder();
remainingMakeAssetAmount = signedOrder.makerAssetAmount; remainingMakeAssetAmount = signedOrder.makerAssetAmount;
const isTraderMaker = true;
calculator = new RemainingFillableCalculator( calculator = new RemainingFillableCalculator(
isTraderMaker, signedOrder.makerFee,
signedOrder, signedOrder.makerAssetAmount,
isMakeAssetZRX, isMakeAssetZRX,
transferrableMakeAssetAmount, transferrableMakeAssetAmount,
transferrableMakerFeeTokenAmount, transferrableMakerFeeTokenAmount,
@ -79,10 +78,9 @@ describe('RemainingFillableCalculator', () => {
it('calculates the correct amount when partially filled and funds available', () => { it('calculates the correct amount when partially filled and funds available', () => {
signedOrder = buildSignedOrder(); signedOrder = buildSignedOrder();
remainingMakeAssetAmount = Web3Wrapper.toBaseUnitAmount(new BigNumber(1), decimals); remainingMakeAssetAmount = Web3Wrapper.toBaseUnitAmount(new BigNumber(1), decimals);
const isTraderMaker = true;
calculator = new RemainingFillableCalculator( calculator = new RemainingFillableCalculator(
isTraderMaker, signedOrder.makerFee,
signedOrder, signedOrder.makerAssetAmount,
isMakeAssetZRX, isMakeAssetZRX,
transferrableMakeAssetAmount, transferrableMakeAssetAmount,
transferrableMakerFeeTokenAmount, transferrableMakerFeeTokenAmount,
@ -94,10 +92,9 @@ describe('RemainingFillableCalculator', () => {
signedOrder = buildSignedOrder(); signedOrder = buildSignedOrder();
transferrableMakerFeeTokenAmount = zero; transferrableMakerFeeTokenAmount = zero;
remainingMakeAssetAmount = signedOrder.makerAssetAmount; remainingMakeAssetAmount = signedOrder.makerAssetAmount;
const isTraderMaker = true;
calculator = new RemainingFillableCalculator( calculator = new RemainingFillableCalculator(
isTraderMaker, signedOrder.makerFee,
signedOrder, signedOrder.makerAssetAmount,
isMakeAssetZRX, isMakeAssetZRX,
transferrableMakeAssetAmount, transferrableMakeAssetAmount,
transferrableMakerFeeTokenAmount, transferrableMakerFeeTokenAmount,
@ -110,10 +107,9 @@ describe('RemainingFillableCalculator', () => {
const partiallyFilledAmount = Web3Wrapper.toBaseUnitAmount(new BigNumber(2), decimals); const partiallyFilledAmount = Web3Wrapper.toBaseUnitAmount(new BigNumber(2), decimals);
remainingMakeAssetAmount = signedOrder.makerAssetAmount.minus(partiallyFilledAmount); remainingMakeAssetAmount = signedOrder.makerAssetAmount.minus(partiallyFilledAmount);
transferrableMakeAssetAmount = remainingMakeAssetAmount.minus(partiallyFilledAmount); transferrableMakeAssetAmount = remainingMakeAssetAmount.minus(partiallyFilledAmount);
const isTraderMaker = true;
calculator = new RemainingFillableCalculator( calculator = new RemainingFillableCalculator(
isTraderMaker, signedOrder.makerFee,
signedOrder, signedOrder.makerAssetAmount,
isMakeAssetZRX, isMakeAssetZRX,
transferrableMakeAssetAmount, transferrableMakeAssetAmount,
transferrableMakerFeeTokenAmount, transferrableMakerFeeTokenAmount,
@ -134,10 +130,9 @@ describe('RemainingFillableCalculator', () => {
remainingMakeAssetAmount = signedOrder.makerAssetAmount; remainingMakeAssetAmount = signedOrder.makerAssetAmount;
const transferredAmount = Web3Wrapper.toBaseUnitAmount(new BigNumber(2), decimals); const transferredAmount = Web3Wrapper.toBaseUnitAmount(new BigNumber(2), decimals);
transferrableMakeAssetAmount = remainingMakeAssetAmount.minus(transferredAmount); transferrableMakeAssetAmount = remainingMakeAssetAmount.minus(transferredAmount);
const isTraderMaker = true;
calculator = new RemainingFillableCalculator( calculator = new RemainingFillableCalculator(
isTraderMaker, signedOrder.makerFee,
signedOrder, signedOrder.makerAssetAmount,
isMakeAssetZRX, isMakeAssetZRX,
transferrableMakeAssetAmount, transferrableMakeAssetAmount,
transferrableMakerFeeTokenAmount, transferrableMakerFeeTokenAmount,
@ -159,10 +154,9 @@ describe('RemainingFillableCalculator', () => {
remainingMakeAssetAmount = signedOrder.makerAssetAmount; remainingMakeAssetAmount = signedOrder.makerAssetAmount;
const transferredAmount = Web3Wrapper.toBaseUnitAmount(new BigNumber(2), decimals); const transferredAmount = Web3Wrapper.toBaseUnitAmount(new BigNumber(2), decimals);
transferrableMakeAssetAmount = remainingMakeAssetAmount.minus(transferredAmount); transferrableMakeAssetAmount = remainingMakeAssetAmount.minus(transferredAmount);
const isTraderMaker = true;
calculator = new RemainingFillableCalculator( calculator = new RemainingFillableCalculator(
isTraderMaker, signedOrder.makerFee,
signedOrder, signedOrder.makerAssetAmount,
isMakeAssetZRX, isMakeAssetZRX,
transferrableMakeAssetAmount, transferrableMakeAssetAmount,
transferrableMakerFeeTokenAmount, transferrableMakerFeeTokenAmount,
@ -186,10 +180,9 @@ describe('RemainingFillableCalculator', () => {
transferrableMakeAssetAmount = makerAmount.plus(makerFeeAmount); transferrableMakeAssetAmount = makerAmount.plus(makerFeeAmount);
transferrableMakerFeeTokenAmount = transferrableMakeAssetAmount; transferrableMakerFeeTokenAmount = transferrableMakeAssetAmount;
remainingMakeAssetAmount = signedOrder.makerAssetAmount; remainingMakeAssetAmount = signedOrder.makerAssetAmount;
const isTraderMaker = true;
calculator = new RemainingFillableCalculator( calculator = new RemainingFillableCalculator(
isTraderMaker, signedOrder.makerFee,
signedOrder, signedOrder.makerAssetAmount,
isMakeAssetZRX, isMakeAssetZRX,
transferrableMakeAssetAmount, transferrableMakeAssetAmount,
transferrableMakerFeeTokenAmount, transferrableMakerFeeTokenAmount,
@ -200,10 +193,9 @@ describe('RemainingFillableCalculator', () => {
it('calculates the correct amount when partially filled and funds available', () => { it('calculates the correct amount when partially filled and funds available', () => {
signedOrder = buildSignedOrder(); signedOrder = buildSignedOrder();
remainingMakeAssetAmount = Web3Wrapper.toBaseUnitAmount(new BigNumber(1), decimals); remainingMakeAssetAmount = Web3Wrapper.toBaseUnitAmount(new BigNumber(1), decimals);
const isTraderMaker = true;
calculator = new RemainingFillableCalculator( calculator = new RemainingFillableCalculator(
isTraderMaker, signedOrder.makerFee,
signedOrder, signedOrder.makerAssetAmount,
isMakeAssetZRX, isMakeAssetZRX,
transferrableMakeAssetAmount, transferrableMakeAssetAmount,
transferrableMakerFeeTokenAmount, transferrableMakerFeeTokenAmount,
@ -216,10 +208,9 @@ describe('RemainingFillableCalculator', () => {
transferrableMakeAssetAmount = zero; transferrableMakeAssetAmount = zero;
transferrableMakerFeeTokenAmount = zero; transferrableMakerFeeTokenAmount = zero;
remainingMakeAssetAmount = signedOrder.makerAssetAmount; remainingMakeAssetAmount = signedOrder.makerAssetAmount;
const isTraderMaker = true;
calculator = new RemainingFillableCalculator( calculator = new RemainingFillableCalculator(
isTraderMaker, signedOrder.makerFee,
signedOrder, signedOrder.makerAssetAmount,
isMakeAssetZRX, isMakeAssetZRX,
transferrableMakeAssetAmount, transferrableMakeAssetAmount,
transferrableMakerFeeTokenAmount, transferrableMakerFeeTokenAmount,
@ -236,10 +227,9 @@ describe('RemainingFillableCalculator', () => {
const orderToFeeRatio = signedOrder.makerAssetAmount.dividedToIntegerBy(signedOrder.makerFee); const orderToFeeRatio = signedOrder.makerAssetAmount.dividedToIntegerBy(signedOrder.makerFee);
const expectedFillableAmount = new BigNumber(450980); const expectedFillableAmount = new BigNumber(450980);
const isTraderMaker = true;
calculator = new RemainingFillableCalculator( calculator = new RemainingFillableCalculator(
isTraderMaker, signedOrder.makerFee,
signedOrder, signedOrder.makerAssetAmount,
isMakeAssetZRX, isMakeAssetZRX,
transferrableMakeAssetAmount, transferrableMakeAssetAmount,
transferrableMakerFeeTokenAmount, transferrableMakerFeeTokenAmount,