* `@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
75 lines
2.7 KiB
TypeScript
75 lines
2.7 KiB
TypeScript
import { ContractFunctionObj } from '@0x/base-contract';
|
|
import { IERC20BridgeSamplerContract } from '@0x/contract-wrappers';
|
|
import { constants } from '@0x/contracts-test-utils';
|
|
import { Order } from '@0x/types';
|
|
import { BigNumber } from '@0x/utils';
|
|
|
|
export type QueryAndSampleResult = [BigNumber[], BigNumber[][]];
|
|
export type QueryAndSampleHandler = (
|
|
orders: Order[],
|
|
signatures: string[],
|
|
sources: string[],
|
|
fillAmounts: BigNumber[],
|
|
) => QueryAndSampleResult;
|
|
|
|
const DUMMY_PROVIDER = {
|
|
sendAsync: (...args: any[]): any => {
|
|
/* no-op */
|
|
},
|
|
};
|
|
|
|
export class MockSamplerContract extends IERC20BridgeSamplerContract {
|
|
public readonly queryOrdersAndSampleSellsHandler?: QueryAndSampleHandler;
|
|
public readonly queryOrdersAndSampleBuysHandler?: QueryAndSampleHandler;
|
|
|
|
public constructor(
|
|
handlers?: Partial<{
|
|
queryOrdersAndSampleSells: QueryAndSampleHandler;
|
|
queryOrdersAndSampleBuys: QueryAndSampleHandler;
|
|
}>,
|
|
) {
|
|
super(constants.NULL_ADDRESS, DUMMY_PROVIDER);
|
|
const _handlers = {
|
|
queryOrdersAndSampleSells: undefined,
|
|
queryOrdersAndSampleBuys: undefined,
|
|
...handlers,
|
|
};
|
|
this.queryOrdersAndSampleSellsHandler = _handlers.queryOrdersAndSampleSells;
|
|
this.queryOrdersAndSampleBuysHandler = _handlers.queryOrdersAndSampleBuys;
|
|
}
|
|
|
|
public queryOrdersAndSampleSells(
|
|
orders: Order[],
|
|
signatures: string[],
|
|
sources: string[],
|
|
fillAmounts: BigNumber[],
|
|
): ContractFunctionObj<QueryAndSampleResult> {
|
|
return {
|
|
...super.queryOrdersAndSampleSells(orders, signatures, sources, fillAmounts),
|
|
callAsync: async (...args: any[]): Promise<QueryAndSampleResult> => {
|
|
if (!this.queryOrdersAndSampleSellsHandler) {
|
|
throw new Error('queryOrdersAndSampleSells handler undefined');
|
|
}
|
|
return this.queryOrdersAndSampleSellsHandler(orders, signatures, sources, fillAmounts);
|
|
},
|
|
};
|
|
}
|
|
|
|
public queryOrdersAndSampleBuys(
|
|
orders: Order[],
|
|
signatures: string[],
|
|
sources: string[],
|
|
fillAmounts: BigNumber[],
|
|
): ContractFunctionObj<QueryAndSampleResult> {
|
|
return {
|
|
...super.queryOrdersAndSampleBuys(orders, signatures, sources, fillAmounts),
|
|
callAsync: async (...args: any[]): Promise<QueryAndSampleResult> => {
|
|
if (!this.queryOrdersAndSampleBuysHandler) {
|
|
throw new Error('queryOrdersAndSampleBuys handler undefined');
|
|
}
|
|
return this.queryOrdersAndSampleBuysHandler(orders, signatures, sources, fillAmounts);
|
|
},
|
|
};
|
|
}
|
|
}
|