Removed unused reference functions
This commit is contained in:
		@@ -34,7 +34,11 @@
 | 
			
		||||
        "lint-contracts": "solhint -c ../.solhint.json contracts/**/**/**/**/*.sol"
 | 
			
		||||
    },
 | 
			
		||||
    "config": {
 | 
			
		||||
<<<<<<< HEAD
 | 
			
		||||
        "abis": "./generated-artifacts/@(Exchange|ExchangeWrapper|IAssetProxyDispatcher|IEIP1271Wallet|IExchange|IExchangeCore|IMatchOrders|ISignatureValidator|ITransactions|IWallet|IWrapperFunctions|IsolatedExchange|ReentrancyTester|TestAssetProxyDispatcher|TestExchangeInternals|TestLibExchangeRichErrorDecoder|TestMatchOrders|TestSignatureValidator|TestValidatorWallet|TestWrapperFunctions|Whitelist).json",
 | 
			
		||||
=======
 | 
			
		||||
        "abis": "./generated-artifacts/@(Exchange|ExchangeWrapper|IAssetProxyDispatcher|IEIP1271Wallet|IExchange|IExchangeCore|IMatchOrders|ISignatureValidator|ITransactions|IWallet|IWrapperFunctions|IsolatedExchange|ReentrantERC20Token|TestAssetProxyDispatcher|TestExchangeInternals|TestLibExchangeRichErrorDecoder|TestSignatureValidator|TestValidatorWallet|Whitelist).json",
 | 
			
		||||
>>>>>>> Removed unused reference functions
 | 
			
		||||
        "abis:comment": "This list is auto-generated by contracts-gen. Don't edit manually."
 | 
			
		||||
    },
 | 
			
		||||
    "repository": {
 | 
			
		||||
 
 | 
			
		||||
@@ -21,7 +21,6 @@ import * as ReentrancyTester from '../generated-artifacts/ReentrancyTester.json'
 | 
			
		||||
import * as TestAssetProxyDispatcher from '../generated-artifacts/TestAssetProxyDispatcher.json';
 | 
			
		||||
import * as TestExchangeInternals from '../generated-artifacts/TestExchangeInternals.json';
 | 
			
		||||
import * as TestLibExchangeRichErrorDecoder from '../generated-artifacts/TestLibExchangeRichErrorDecoder.json';
 | 
			
		||||
import * as TestMatchOrders from '../generated-artifacts/TestMatchOrders.json';
 | 
			
		||||
import * as TestSignatureValidator from '../generated-artifacts/TestSignatureValidator.json';
 | 
			
		||||
import * as TestValidatorWallet from '../generated-artifacts/TestValidatorWallet.json';
 | 
			
		||||
import * as TestWrapperFunctions from '../generated-artifacts/TestWrapperFunctions.json';
 | 
			
		||||
@@ -40,11 +39,14 @@ export const artifacts = {
 | 
			
		||||
    IWallet: IWallet as ContractArtifact,
 | 
			
		||||
    IWrapperFunctions: IWrapperFunctions as ContractArtifact,
 | 
			
		||||
    IsolatedExchange: IsolatedExchange as ContractArtifact,
 | 
			
		||||
<<<<<<< HEAD
 | 
			
		||||
    ReentrancyTester: ReentrancyTester as ContractArtifact,
 | 
			
		||||
=======
 | 
			
		||||
    ReentrantERC20Token: ReentrantERC20Token as ContractArtifact,
 | 
			
		||||
>>>>>>> Removed unused reference functions
 | 
			
		||||
    TestAssetProxyDispatcher: TestAssetProxyDispatcher as ContractArtifact,
 | 
			
		||||
    TestExchangeInternals: TestExchangeInternals as ContractArtifact,
 | 
			
		||||
    TestLibExchangeRichErrorDecoder: TestLibExchangeRichErrorDecoder as ContractArtifact,
 | 
			
		||||
    TestMatchOrders: TestMatchOrders as ContractArtifact,
 | 
			
		||||
    TestSignatureValidator: TestSignatureValidator as ContractArtifact,
 | 
			
		||||
    TestValidatorWallet: TestValidatorWallet as ContractArtifact,
 | 
			
		||||
    TestWrapperFunctions: TestWrapperFunctions as ContractArtifact,
 | 
			
		||||
 
 | 
			
		||||
@@ -1,26 +1,8 @@
 | 
			
		||||
import { ReferenceFunctions as ExchangeLibsReferenceFunctions } from '@0x/contracts-exchange-libs';
 | 
			
		||||
import { constants } from '@0x/contracts-test-utils';
 | 
			
		||||
import { ReferenceFunctions as UtilsReferenceFunctions } from '@0x/contracts-utils';
 | 
			
		||||
import { ExchangeRevertErrors, orderHashUtils } from '@0x/order-utils';
 | 
			
		||||
import { FillResults, MatchedFillResults, Order, OrderWithoutDomain } from '@0x/types';
 | 
			
		||||
import { FillResults, OrderWithoutDomain } from '@0x/types';
 | 
			
		||||
import { BigNumber } from '@0x/utils';
 | 
			
		||||
 | 
			
		||||
const { safeGetPartialAmountCeil, safeGetPartialAmountFloor } = ExchangeLibsReferenceFunctions;
 | 
			
		||||
const { safeMul, safeSub } = UtilsReferenceFunctions;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Ensure that there is a profitable spread.
 | 
			
		||||
 */
 | 
			
		||||
export function assertValidMatch(leftOrder: Order, rightOrder: Order): void {
 | 
			
		||||
    if (
 | 
			
		||||
        safeMul(leftOrder.makerAssetAmount, rightOrder.makerAssetAmount) <
 | 
			
		||||
        safeMul(leftOrder.takerAssetAmount, rightOrder.takerAssetAmount)
 | 
			
		||||
    ) {
 | 
			
		||||
        const orderHashHexLeft = orderHashUtils.getOrderHashHex(leftOrder);
 | 
			
		||||
        const orderHashHexRight = orderHashUtils.getOrderHashHex(rightOrder);
 | 
			
		||||
        throw new ExchangeRevertErrors.NegativeSpreadError(orderHashHexLeft, orderHashHexRight);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
const { safeGetPartialAmountFloor } = ExchangeLibsReferenceFunctions;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Calculates amounts filled and fees paid by maker and taker.
 | 
			
		||||
@@ -40,188 +22,3 @@ export function calculateFillResults(order: OrderWithoutDomain, takerAssetFilled
 | 
			
		||||
        takerFeePaid,
 | 
			
		||||
    };
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Calculates amounts filled and fees paid by maker and taker.
 | 
			
		||||
 */
 | 
			
		||||
export function calculateMatchedFillResults(
 | 
			
		||||
    leftOrder: OrderWithoutDomain,
 | 
			
		||||
    rightOrder: OrderWithoutDomain,
 | 
			
		||||
    leftOrderTakerAssetFilledAmount: BigNumber,
 | 
			
		||||
    rightOrderTakerAssetFilledAmount: BigNumber,
 | 
			
		||||
): MatchedFillResults {
 | 
			
		||||
    // Get an empty matched fill results object to fill with this data.
 | 
			
		||||
    const matchedFillResults = emptyMatchedFillResults();
 | 
			
		||||
 | 
			
		||||
    // Calculate the remaining amounts of maker and taker assets for both orders.
 | 
			
		||||
    const [
 | 
			
		||||
        leftMakerAssetAmountRemaining,
 | 
			
		||||
        leftTakerAssetAmountRemaining,
 | 
			
		||||
        rightMakerAssetAmountRemaining,
 | 
			
		||||
        rightTakerAssetAmountRemaining,
 | 
			
		||||
    ] = getRemainingFillAmounts(
 | 
			
		||||
        leftOrder,
 | 
			
		||||
        rightOrder,
 | 
			
		||||
        leftOrderTakerAssetFilledAmount,
 | 
			
		||||
        rightOrderTakerAssetFilledAmount,
 | 
			
		||||
    );
 | 
			
		||||
 | 
			
		||||
    if (leftTakerAssetAmountRemaining.isGreaterThan(rightMakerAssetAmountRemaining)) {
 | 
			
		||||
        // Case 1
 | 
			
		||||
        calculateCompleteRightFill(
 | 
			
		||||
            leftOrder,
 | 
			
		||||
            rightMakerAssetAmountRemaining,
 | 
			
		||||
            rightTakerAssetAmountRemaining,
 | 
			
		||||
            matchedFillResults,
 | 
			
		||||
        );
 | 
			
		||||
    } else if (leftTakerAssetAmountRemaining.isLessThan(rightMakerAssetAmountRemaining)) {
 | 
			
		||||
        // Case 2
 | 
			
		||||
        matchedFillResults.left.makerAssetFilledAmount = leftMakerAssetAmountRemaining;
 | 
			
		||||
        matchedFillResults.left.takerAssetFilledAmount = leftTakerAssetAmountRemaining;
 | 
			
		||||
        matchedFillResults.right.makerAssetFilledAmount = leftTakerAssetAmountRemaining;
 | 
			
		||||
        matchedFillResults.right.takerAssetFilledAmount = safeGetPartialAmountCeil(
 | 
			
		||||
            rightOrder.takerAssetAmount,
 | 
			
		||||
            rightOrder.makerAssetAmount,
 | 
			
		||||
            leftTakerAssetAmountRemaining,
 | 
			
		||||
        );
 | 
			
		||||
    } else {
 | 
			
		||||
        // Case 3
 | 
			
		||||
        calculateCompleteFillBoth(
 | 
			
		||||
            leftMakerAssetAmountRemaining,
 | 
			
		||||
            leftTakerAssetAmountRemaining,
 | 
			
		||||
            rightMakerAssetAmountRemaining,
 | 
			
		||||
            rightTakerAssetAmountRemaining,
 | 
			
		||||
            matchedFillResults,
 | 
			
		||||
        );
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // Compute the fees from the order matching
 | 
			
		||||
    calculateFees(leftOrder, rightOrder, matchedFillResults);
 | 
			
		||||
 | 
			
		||||
    // Calculate the profit from the matching
 | 
			
		||||
    matchedFillResults.profitInLeftMakerAsset = safeSub(
 | 
			
		||||
        matchedFillResults.left.makerAssetFilledAmount,
 | 
			
		||||
        matchedFillResults.right.takerAssetFilledAmount,
 | 
			
		||||
    );
 | 
			
		||||
 | 
			
		||||
    return matchedFillResults;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Calculates the complete fill of both orders and updates the provided MatchedFillResults object.
 | 
			
		||||
 */
 | 
			
		||||
export function calculateCompleteFillBoth(
 | 
			
		||||
    leftMakerAssetAmountRemaining: BigNumber,
 | 
			
		||||
    leftTakerAssetAmountRemaining: BigNumber,
 | 
			
		||||
    rightMakerAssetAmountRemaining: BigNumber,
 | 
			
		||||
    rightTakerAssetAmountRemaining: BigNumber,
 | 
			
		||||
    matchedFillResults?: MatchedFillResults,
 | 
			
		||||
): MatchedFillResults {
 | 
			
		||||
    if (matchedFillResults === undefined) {
 | 
			
		||||
        matchedFillResults = emptyMatchedFillResults(); // tslint:disable-line:no-parameter-reassignment
 | 
			
		||||
    }
 | 
			
		||||
    matchedFillResults.left.makerAssetFilledAmount = leftMakerAssetAmountRemaining;
 | 
			
		||||
    matchedFillResults.left.takerAssetFilledAmount = leftTakerAssetAmountRemaining;
 | 
			
		||||
    matchedFillResults.right.makerAssetFilledAmount = rightMakerAssetAmountRemaining;
 | 
			
		||||
    matchedFillResults.right.takerAssetFilledAmount = rightTakerAssetAmountRemaining;
 | 
			
		||||
    return matchedFillResults;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Calculates the complete fill of the right order and updates the provided MatchedFillResults object.
 | 
			
		||||
 */
 | 
			
		||||
export function calculateCompleteRightFill(
 | 
			
		||||
    leftOrder: OrderWithoutDomain,
 | 
			
		||||
    rightMakerAssetAmountRemaining: BigNumber,
 | 
			
		||||
    rightTakerAssetAmountRemaining: BigNumber,
 | 
			
		||||
    matchedFillResults?: MatchedFillResults,
 | 
			
		||||
): MatchedFillResults {
 | 
			
		||||
    if (matchedFillResults === undefined) {
 | 
			
		||||
        matchedFillResults = emptyMatchedFillResults(); // tslint:disable-line:no-parameter-reassignment
 | 
			
		||||
    }
 | 
			
		||||
    matchedFillResults.left.makerAssetFilledAmount = safeGetPartialAmountFloor(
 | 
			
		||||
        leftOrder.makerAssetAmount,
 | 
			
		||||
        leftOrder.takerAssetAmount,
 | 
			
		||||
        rightMakerAssetAmountRemaining,
 | 
			
		||||
    );
 | 
			
		||||
    matchedFillResults.left.takerAssetFilledAmount = rightMakerAssetAmountRemaining;
 | 
			
		||||
    matchedFillResults.right.makerAssetFilledAmount = rightMakerAssetAmountRemaining;
 | 
			
		||||
    matchedFillResults.right.takerAssetFilledAmount = rightTakerAssetAmountRemaining;
 | 
			
		||||
    return matchedFillResults;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Compute the fees for the left and right orders.
 | 
			
		||||
 */
 | 
			
		||||
function calculateFees(
 | 
			
		||||
    leftOrder: OrderWithoutDomain,
 | 
			
		||||
    rightOrder: OrderWithoutDomain,
 | 
			
		||||
    matchedFillResults: MatchedFillResults,
 | 
			
		||||
): void {
 | 
			
		||||
    // Compute fees for left order
 | 
			
		||||
    matchedFillResults.left.makerFeePaid = safeGetPartialAmountFloor(
 | 
			
		||||
        matchedFillResults.left.makerAssetFilledAmount,
 | 
			
		||||
        leftOrder.makerAssetAmount,
 | 
			
		||||
        leftOrder.makerFee,
 | 
			
		||||
    );
 | 
			
		||||
    matchedFillResults.left.takerFeePaid = safeGetPartialAmountFloor(
 | 
			
		||||
        matchedFillResults.left.takerAssetFilledAmount,
 | 
			
		||||
        leftOrder.takerAssetAmount,
 | 
			
		||||
        leftOrder.takerFee,
 | 
			
		||||
    );
 | 
			
		||||
 | 
			
		||||
    // Compute fees for right order
 | 
			
		||||
    matchedFillResults.right.makerFeePaid = safeGetPartialAmountFloor(
 | 
			
		||||
        matchedFillResults.right.makerAssetFilledAmount,
 | 
			
		||||
        rightOrder.makerAssetAmount,
 | 
			
		||||
        rightOrder.makerFee,
 | 
			
		||||
    );
 | 
			
		||||
    matchedFillResults.right.takerFeePaid = safeGetPartialAmountFloor(
 | 
			
		||||
        matchedFillResults.right.takerAssetFilledAmount,
 | 
			
		||||
        rightOrder.takerAssetAmount,
 | 
			
		||||
        rightOrder.takerFee,
 | 
			
		||||
    );
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Returns an empty fill results object.
 | 
			
		||||
 */
 | 
			
		||||
function emptyFillResults(): FillResults {
 | 
			
		||||
    return {
 | 
			
		||||
        makerAssetFilledAmount: constants.ZERO_AMOUNT,
 | 
			
		||||
        takerAssetFilledAmount: constants.ZERO_AMOUNT,
 | 
			
		||||
        makerFeePaid: constants.ZERO_AMOUNT,
 | 
			
		||||
        takerFeePaid: constants.ZERO_AMOUNT,
 | 
			
		||||
    };
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Returns an empty matched fill results object.
 | 
			
		||||
 */
 | 
			
		||||
function emptyMatchedFillResults(): MatchedFillResults {
 | 
			
		||||
    return {
 | 
			
		||||
        left: emptyFillResults(),
 | 
			
		||||
        right: emptyFillResults(),
 | 
			
		||||
        profitInLeftMakerAsset: constants.ZERO_AMOUNT,
 | 
			
		||||
        profitInRightMakerAsset: constants.ZERO_AMOUNT,
 | 
			
		||||
    };
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Returns the token amounts that are remaining to be filled.
 | 
			
		||||
 */
 | 
			
		||||
function getRemainingFillAmounts(
 | 
			
		||||
    leftOrder: OrderWithoutDomain,
 | 
			
		||||
    rightOrder: OrderWithoutDomain,
 | 
			
		||||
    leftOrderTakerAssetFilledAmount: BigNumber,
 | 
			
		||||
    rightOrderTakerAssetFilledAmount: BigNumber,
 | 
			
		||||
): [BigNumber, BigNumber, BigNumber, BigNumber] {
 | 
			
		||||
    const leftTakerAssetRemaining = safeSub(leftOrder.takerAssetAmount, leftOrderTakerAssetFilledAmount);
 | 
			
		||||
    const rightTakerAssetRemaining = safeSub(rightOrder.takerAssetAmount, rightOrderTakerAssetFilledAmount);
 | 
			
		||||
    return [
 | 
			
		||||
        safeGetPartialAmountFloor(leftOrder.makerAssetAmount, leftOrder.takerAssetAmount, leftTakerAssetRemaining),
 | 
			
		||||
        leftTakerAssetRemaining,
 | 
			
		||||
        safeGetPartialAmountFloor(rightOrder.makerAssetAmount, rightOrder.takerAssetAmount, rightTakerAssetRemaining),
 | 
			
		||||
        rightTakerAssetRemaining,
 | 
			
		||||
    ];
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -19,7 +19,6 @@ export * from '../generated-wrappers/reentrancy_tester';
 | 
			
		||||
export * from '../generated-wrappers/test_asset_proxy_dispatcher';
 | 
			
		||||
export * from '../generated-wrappers/test_exchange_internals';
 | 
			
		||||
export * from '../generated-wrappers/test_lib_exchange_rich_error_decoder';
 | 
			
		||||
export * from '../generated-wrappers/test_match_orders';
 | 
			
		||||
export * from '../generated-wrappers/test_signature_validator';
 | 
			
		||||
export * from '../generated-wrappers/test_validator_wallet';
 | 
			
		||||
export * from '../generated-wrappers/test_wrapper_functions';
 | 
			
		||||
 
 | 
			
		||||
@@ -19,7 +19,6 @@
 | 
			
		||||
        "generated-artifacts/TestAssetProxyDispatcher.json",
 | 
			
		||||
        "generated-artifacts/TestExchangeInternals.json",
 | 
			
		||||
        "generated-artifacts/TestLibExchangeRichErrorDecoder.json",
 | 
			
		||||
        "generated-artifacts/TestMatchOrders.json",
 | 
			
		||||
        "generated-artifacts/TestSignatureValidator.json",
 | 
			
		||||
        "generated-artifacts/TestValidatorWallet.json",
 | 
			
		||||
        "generated-artifacts/TestWrapperFunctions.json",
 | 
			
		||||
 
 | 
			
		||||
										
											Binary file not shown.
										
									
								
							
		Reference in New Issue
	
	Block a user