Fixes before refactor
This commit is contained in:
parent
d6589004c7
commit
fb812d59b0
@ -78,14 +78,14 @@ export class OrderStateUtils {
|
|||||||
const remainingTakerTokenAmount = totalTakerTokenAmount.minus(unavailableTakerTokenAmount);
|
const remainingTakerTokenAmount = totalTakerTokenAmount.minus(unavailableTakerTokenAmount);
|
||||||
const remainingMakerTokenAmount = remainingTakerTokenAmount.times(totalMakerTokenAmount)
|
const remainingMakerTokenAmount = remainingTakerTokenAmount.times(totalMakerTokenAmount)
|
||||||
.dividedToIntegerBy(totalTakerTokenAmount);
|
.dividedToIntegerBy(totalTakerTokenAmount);
|
||||||
const remainingFeeTokenAmount = remainingTakerTokenAmount.times(signedOrder.makerFee)
|
const remainingMakerFeeAmount = remainingTakerTokenAmount.times(signedOrder.makerFee)
|
||||||
.dividedToIntegerBy(totalTakerTokenAmount);
|
.dividedToIntegerBy(totalTakerTokenAmount);
|
||||||
const transferrableMakerTokenAmount = BigNumber.min([makerProxyAllowance, makerBalance]);
|
const transferrableMakerTokenAmount = BigNumber.min([makerProxyAllowance, makerBalance]);
|
||||||
const transferrableFeeTokenAmount = BigNumber.min([makerFeeProxyAllowance, makerFeeBalance]);
|
const transferrableFeeTokenAmount = BigNumber.min([makerFeeProxyAllowance, makerFeeBalance]);
|
||||||
|
|
||||||
const remainingFillableMakerTokenAmount = this.calculateRemainingMakerTokenAmount(
|
const remainingFillableMakerTokenAmount = this.calculateRemainingMakerTokenAmount(
|
||||||
transferrableMakerTokenAmount, transferrableFeeTokenAmount, remainingMakerTokenAmount,
|
transferrableMakerTokenAmount, transferrableFeeTokenAmount, remainingMakerTokenAmount,
|
||||||
remainingFeeTokenAmount, totalMakerTokenAmount, signedOrder.makerFee, signedOrder.makerTokenAddress,
|
remainingMakerFeeAmount, totalMakerTokenAmount, signedOrder.makerFee, signedOrder.makerTokenAddress,
|
||||||
zrxTokenAddress);
|
zrxTokenAddress);
|
||||||
|
|
||||||
const remainingFillableTakerTokenAmount = remainingFillableMakerTokenAmount
|
const remainingFillableTakerTokenAmount = remainingFillableMakerTokenAmount
|
||||||
@ -107,52 +107,63 @@ export class OrderStateUtils {
|
|||||||
transferrableMakerFeeTokenAmount: BigNumber,
|
transferrableMakerFeeTokenAmount: BigNumber,
|
||||||
remainingMakerAmount: BigNumber,
|
remainingMakerAmount: BigNumber,
|
||||||
remainingMakerFeeAmount: BigNumber,
|
remainingMakerFeeAmount: BigNumber,
|
||||||
totalMakerAmount: BigNumber, makerFeeAmount: BigNumber,
|
totalMakerAmount: BigNumber,
|
||||||
makerTokenAddress: string, zrxTokenAddress: string): BigNumber {
|
makerFeeAmount: BigNumber,
|
||||||
|
makerTokenAddress: string,
|
||||||
|
zrxTokenAddress: string): BigNumber {
|
||||||
if ((makerTokenAddress !== zrxTokenAddress || makerFeeAmount.isZero())) {
|
if ((makerTokenAddress !== zrxTokenAddress || makerFeeAmount.isZero())) {
|
||||||
return this.calculateFillableMakerTokenAmount(
|
return this.computeFillableMakerTokenAmountWhenMakerTokenIsNotZRX(
|
||||||
transferrableMakerTokenAmount, transferrableMakerFeeTokenAmount, remainingMakerAmount,
|
transferrableMakerTokenAmount, transferrableMakerFeeTokenAmount, remainingMakerAmount,
|
||||||
remainingMakerFeeAmount, totalMakerAmount, makerFeeAmount, makerTokenAddress,
|
remainingMakerFeeAmount, totalMakerAmount, makerFeeAmount, makerTokenAddress,
|
||||||
zrxTokenAddress);
|
zrxTokenAddress);
|
||||||
} else {
|
} else {
|
||||||
return this.calculatePooledFillableMakerTokenAmount(
|
return this.computeFillableMakerTokenAmountWhenMakerTokenIsZRX(
|
||||||
transferrableMakerTokenAmount, transferrableMakerFeeTokenAmount, remainingMakerAmount,
|
transferrableMakerTokenAmount, transferrableMakerFeeTokenAmount, remainingMakerAmount,
|
||||||
remainingMakerFeeAmount, totalMakerAmount, makerFeeAmount, makerTokenAddress,
|
remainingMakerFeeAmount, totalMakerAmount, makerFeeAmount, makerTokenAddress,
|
||||||
zrxTokenAddress);
|
zrxTokenAddress);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
private calculateFillableMakerTokenAmount(transferrableMakerTokenAmount: BigNumber,
|
private computeFillableMakerTokenAmountWhenMakerTokenIsNotZRX(transferrableMakerTokenAmount: BigNumber,
|
||||||
transferrableMakerFeeTokenAmount: BigNumber,
|
transferrableMakerFeeTokenAmount: BigNumber,
|
||||||
remainingMakerAmount: BigNumber,
|
remainingMakerAmount: BigNumber,
|
||||||
remainingMakerFeeAmount: BigNumber,
|
remainingMakerFeeAmount: BigNumber,
|
||||||
totalMakerAmount: BigNumber, makerFeeAmount: BigNumber,
|
totalMakerAmount: BigNumber,
|
||||||
makerTokenAddress: string, zrxTokenAddress: string): BigNumber {
|
makerFeeAmount: BigNumber,
|
||||||
|
makerTokenAddress: string,
|
||||||
|
zrxTokenAddress: string): BigNumber {
|
||||||
|
const hasSufficientFundsForTransferAmount = transferrableMakerTokenAmount.gte(remainingMakerAmount);
|
||||||
|
const hasSufficientFundsForFeeAmount = transferrableMakerFeeTokenAmount.gte(remainingMakerFeeAmount);
|
||||||
|
const hasSufficientFundsForFeeAndTransferAmount = (hasSufficientFundsForTransferAmount &&
|
||||||
|
hasSufficientFundsForFeeAmount);
|
||||||
|
|
||||||
if (makerFeeAmount.isZero()) {
|
if (makerFeeAmount.isZero()) {
|
||||||
return BigNumber.min(remainingMakerAmount, transferrableMakerTokenAmount);
|
return BigNumber.min(remainingMakerAmount, transferrableMakerTokenAmount);
|
||||||
} else if (transferrableMakerTokenAmount.gte(remainingMakerAmount) &&
|
} else if (hasSufficientFundsForFeeAndTransferAmount) {
|
||||||
transferrableMakerFeeTokenAmount.gte(remainingMakerFeeAmount)) {
|
|
||||||
return remainingMakerAmount;
|
return remainingMakerAmount;
|
||||||
} else {
|
} else {
|
||||||
return this.calculatePartiallyFillableMakerTokenAmount(
|
return this.calculatePartiallyFillableMakerTokenAmount(
|
||||||
transferrableMakerTokenAmount, transferrableMakerFeeTokenAmount, remainingMakerAmount,
|
transferrableMakerTokenAmount, transferrableMakerFeeTokenAmount, remainingMakerAmount,
|
||||||
remainingMakerFeeAmount, totalMakerAmount, makerFeeAmount, makerTokenAddress,
|
remainingMakerFeeAmount, totalMakerAmount, makerFeeAmount, makerTokenAddress,
|
||||||
zrxTokenAddress);
|
zrxTokenAddress);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
private calculatePooledFillableMakerTokenAmount(transferrableMakerTokenAmount: BigNumber,
|
private computeFillableMakerTokenAmountWhenMakerTokenIsZRX(transferrableMakerTokenAmount: BigNumber,
|
||||||
transferrableMakerFeeTokenAmount: BigNumber,
|
transferrableMakerFeeTokenAmount: BigNumber,
|
||||||
remainingMakerAmount: BigNumber,
|
remainingMakerAmount: BigNumber,
|
||||||
remainingMakerFeeAmount: BigNumber,
|
remainingMakerFeeAmount: BigNumber,
|
||||||
totalMakerAmount: BigNumber, makerFeeAmount: BigNumber,
|
totalMakerAmount: BigNumber,
|
||||||
makerTokenAddress: string, zrxTokenAddress: string): BigNumber {
|
makerFeeAmount: BigNumber,
|
||||||
if (transferrableMakerTokenAmount.plus(transferrableMakerFeeTokenAmount).gte(
|
makerTokenAddress: string,
|
||||||
remainingMakerAmount.plus(remainingMakerFeeAmount))) {
|
zrxTokenAddress: string): BigNumber {
|
||||||
|
const totalZRXTransferAmount = remainingMakerAmount.plus(remainingMakerFeeAmount);
|
||||||
|
const hasSufficientFundsForFeeAndTransferAmount = transferrableMakerTokenAmount.gte(totalZRXTransferAmount);
|
||||||
|
if (hasSufficientFundsForFeeAndTransferAmount) {
|
||||||
return remainingMakerAmount;
|
return remainingMakerAmount;
|
||||||
} else {
|
} else {
|
||||||
return this.calculatePartiallyFillableMakerTokenAmount(
|
return this.calculatePartiallyFillableMakerTokenAmount(
|
||||||
transferrableMakerTokenAmount, transferrableMakerFeeTokenAmount, remainingMakerAmount,
|
transferrableMakerTokenAmount, transferrableMakerFeeTokenAmount, remainingMakerAmount,
|
||||||
remainingMakerFeeAmount, totalMakerAmount, makerFeeAmount, makerTokenAddress,
|
remainingMakerFeeAmount, totalMakerAmount, makerFeeAmount, makerTokenAddress,
|
||||||
zrxTokenAddress);
|
zrxTokenAddress);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
private calculatePartiallyFillableMakerTokenAmount(transferrableMakerTokenAmount: BigNumber,
|
private calculatePartiallyFillableMakerTokenAmount(transferrableMakerTokenAmount: BigNumber,
|
||||||
@ -165,14 +176,15 @@ export class OrderStateUtils {
|
|||||||
const fillableTimesInFeeToken = BigNumber.min(transferrableMakerFeeTokenAmount, remainingMakerFeeAmount);
|
const fillableTimesInFeeToken = BigNumber.min(transferrableMakerFeeTokenAmount, remainingMakerFeeAmount);
|
||||||
let fillableTimesInMakerToken = transferrableMakerTokenAmount.dividedToIntegerBy(orderToFeeRatio);
|
let fillableTimesInMakerToken = transferrableMakerTokenAmount.dividedToIntegerBy(orderToFeeRatio);
|
||||||
if (makerTokenAddress === zrxTokenAddress) {
|
if (makerTokenAddress === zrxTokenAddress) {
|
||||||
const totalFeeTokenPool = transferrableMakerTokenAmount.plus(transferrableMakerFeeTokenAmount);
|
// when zrx == maker token transferrable maker == transfer
|
||||||
fillableTimesInMakerToken = totalFeeTokenPool.dividedToIntegerBy(
|
const totalZRXTokenPooled = transferrableMakerTokenAmount;
|
||||||
orderToFeeRatio.plus(
|
fillableTimesInMakerToken = totalZRXTokenPooled.dividedToIntegerBy(
|
||||||
ZeroEx.toBaseUnitAmount(new BigNumber(1), 18)));
|
orderToFeeRatio.plus(new BigNumber(1)));
|
||||||
|
|
||||||
}
|
}
|
||||||
return BigNumber.min(fillableTimesInMakerToken.times(orderToFeeRatio),
|
const partiallyFillableMakerTokenAmount = fillableTimesInMakerToken.times(orderToFeeRatio);
|
||||||
fillableTimesInFeeToken.times(orderToFeeRatio));
|
const partiallyFillableFeeTokenAmount = fillableTimesInFeeToken.times(orderToFeeRatio);
|
||||||
|
return BigNumber.min(partiallyFillableMakerTokenAmount, partiallyFillableFeeTokenAmount);
|
||||||
}
|
}
|
||||||
private validateIfOrderIsValid(signedOrder: SignedOrder, orderRelevantState: OrderRelevantState): void {
|
private validateIfOrderIsValid(signedOrder: SignedOrder, orderRelevantState: OrderRelevantState): void {
|
||||||
const unavailableTakerTokenAmount = orderRelevantState.cancelledTakerTokenAmount.add(
|
const unavailableTakerTokenAmount = orderRelevantState.cancelledTakerTokenAmount.add(
|
||||||
|
Loading…
x
Reference in New Issue
Block a user