* `@0x/asset-swapper`: Add ERC20Bridge aggregator library. * `@0x/asset-swapper`: Finish off `aggregate.ts`. * `@0x/types`: Add `OrderWithoutDomain` type. * `@0x/asset-swapper`: Add testing infra for sampler/aggregator. * `@0x/types`: Add `SignedOrderWithoutDomain` type. * `@0x/asset-swapper`: Update aggregator to take and return orders with signatures. * `@0x/asset-swapper`: Fix broken aggregator tests. * `@0x/asset-swapper`: Pass the sampler contract into aggregator entry points. * `@0x/contract-artifacts`: Add `IERC20BridgeSampler` artifact. * `@0x/contract-wrappers`: Add `IERC20BridgeSampler` wrapper. * `@0x/asset-swapper`: Address review comments. * fixed testing * refactored aggregate.ts and embeded into asset-swapper * added adjusted rates for taker and maker fees * remove PrunedSignedOrders * updated contract-addresses and addressed some other todos * streamlined logic * patched in lawrences changes * renamed aggregator utils and removed market_utils.ts * added ack heartbeats * fixed bug * patches * added dummy order things * Dummy with valid sig * Tweak gas price calculation to wei * added test coverage and fixed bugs * fixed migrations * Fix CHANGELOGs and types export * Deploy latest ERC20BridgeSampler on Mainnet * `@0x/types` Revert CHANGELOG. * `@0x/asset-swapper`: Address review comments. `@0x/contract-addresses`: Make kyber lowercase. * made protocol fee multiplier async * `@0x/asset-swapper: Fix build errors and do some code cleanup. * use assetDataUtils where possible
72 lines
2.8 KiB
TypeScript
72 lines
2.8 KiB
TypeScript
import { orderFactory } from '@0x/order-utils/lib/src/order_factory';
|
|
import { Order, SignedOrder } from '@0x/types';
|
|
import * as _ from 'lodash';
|
|
|
|
import { constants } from '../../src/constants';
|
|
import { SignedOrderWithFillableAmounts } from '../../src/types';
|
|
|
|
const CHAIN_ID = 1337;
|
|
const BASE_TEST_ORDER: Order = orderFactory.createOrder(
|
|
constants.NULL_ADDRESS,
|
|
constants.ZERO_AMOUNT,
|
|
constants.NULL_ERC20_ASSET_DATA,
|
|
constants.ZERO_AMOUNT,
|
|
constants.NULL_ERC20_ASSET_DATA,
|
|
constants.NULL_ADDRESS,
|
|
CHAIN_ID,
|
|
);
|
|
|
|
const BASE_TEST_SIGNED_ORDER: SignedOrder = {
|
|
...BASE_TEST_ORDER,
|
|
signature: constants.NULL_BYTES,
|
|
};
|
|
|
|
const BASE_TEST_PRUNED_SIGNED_ORDER: SignedOrderWithFillableAmounts = {
|
|
...BASE_TEST_SIGNED_ORDER,
|
|
fillableMakerAssetAmount: constants.ZERO_AMOUNT,
|
|
fillableTakerAssetAmount: constants.ZERO_AMOUNT,
|
|
fillableTakerFeeAmount: constants.ZERO_AMOUNT,
|
|
};
|
|
|
|
export const testOrderFactory = {
|
|
generateTestSignedOrder(partialOrder: Partial<SignedOrder>): SignedOrder {
|
|
return transformObject(BASE_TEST_SIGNED_ORDER, partialOrder);
|
|
},
|
|
generateIdenticalTestSignedOrders(partialOrder: Partial<SignedOrder>, numOrders: number): SignedOrder[] {
|
|
const baseTestOrders = _.map(_.range(numOrders), () => BASE_TEST_SIGNED_ORDER);
|
|
return _.map(baseTestOrders, order => transformObject(order, partialOrder));
|
|
},
|
|
generateTestSignedOrders(partialOrders: Array<Partial<SignedOrder>>): SignedOrder[] {
|
|
return _.map(partialOrders, partialOrder => transformObject(BASE_TEST_SIGNED_ORDER, partialOrder));
|
|
},
|
|
generateTestSignedOrderWithFillableAmounts(
|
|
partialOrder: Partial<SignedOrderWithFillableAmounts>,
|
|
): SignedOrderWithFillableAmounts {
|
|
return transformObject(BASE_TEST_PRUNED_SIGNED_ORDER, partialOrder);
|
|
},
|
|
generateIdenticalTestSignedOrdersWithFillableAmounts(
|
|
partialOrder: Partial<SignedOrderWithFillableAmounts>,
|
|
numOrders: number,
|
|
): SignedOrderWithFillableAmounts[] {
|
|
const baseTestOrders = _.map(_.range(numOrders), () => BASE_TEST_PRUNED_SIGNED_ORDER);
|
|
return _.map(
|
|
baseTestOrders,
|
|
(baseOrder): SignedOrderWithFillableAmounts => transformObject(baseOrder, partialOrder),
|
|
);
|
|
},
|
|
generateTestSignedOrdersWithFillableAmounts(
|
|
partialOrders: Array<Partial<SignedOrderWithFillableAmounts>>,
|
|
): SignedOrderWithFillableAmounts[] {
|
|
return _.map(
|
|
partialOrders,
|
|
(partialOrder): SignedOrderWithFillableAmounts =>
|
|
transformObject(BASE_TEST_PRUNED_SIGNED_ORDER, partialOrder),
|
|
);
|
|
},
|
|
};
|
|
|
|
function transformObject<T>(input: T, transformation: Partial<T>): T {
|
|
const copy = _.cloneDeep(input);
|
|
return _.assign(copy, transformation);
|
|
}
|