Compare commits

...

11 Commits

Author SHA1 Message Date
Github Actions
7ef75101b4 Publish
- @0x/contracts-integrations@2.7.44
 - @0x/asset-swapper@6.14.0
2021-05-12 09:13:31 +00:00
Github Actions
6f8aace00d Updated CHANGELOGS & MD docs 2021-05-12 09:13:23 +00:00
Kim Persson
6c264b2f18 feat: add DAI and USDC as intermediate tokens on Ropsten [TKR-93] (#231)
* feat: add DAI and USDC as intermediate tokens on Ropsten

* chore: add changelog entry
2021-05-11 19:36:46 +02:00
Daniel Pyrathon
df055e1958 fix: Added fee parameter to Quote Requestor (#235)
* Added changes

* Fixes

* Applied PR feedback

* lint fix
2021-05-11 12:57:51 -04:00
Github Actions
70d2117470 Publish
- @0x/contracts-integrations@2.7.43
 - @0x/asset-swapper@6.13.0
2021-05-11 03:18:25 +00:00
Github Actions
2c173ccaf3 Updated CHANGELOGS & MD docs 2021-05-11 03:18:20 +00:00
mzhu25
d2f4a0c5f3 Updated config.yml 2021-05-10 19:51:12 -07:00
mzhu25
0d6021e5e3 Add LiquidityProvider to BSC sources (#234) 2021-05-10 18:27:52 -07:00
Github Actions
bb04726e7f Publish
- @0x/contracts-integrations@2.7.42
 - @0x/asset-swapper@6.12.0
2021-05-10 01:36:49 +00:00
Github Actions
220ca370c2 Updated CHANGELOGS & MD docs 2021-05-10 01:36:44 +00:00
Jacob Evans
63af4e3e98 fix: TwoHopSampler call (#233) 2021-05-10 11:05:30 +10:00
15 changed files with 158 additions and 51 deletions

View File

@@ -2,11 +2,11 @@ version: 2.1
jobs:
build:
resource_class: large
resource_class: xlarge
docker:
- image: node:12
environment:
NODE_OPTIONS: '--max-old-space-size=6442'
NODE_OPTIONS: '--max-old-space-size=16384'
working_directory: ~/repo
steps:
- checkout

View File

@@ -1,6 +1,6 @@
{
"name": "@0x/contracts-integrations",
"version": "2.7.41",
"version": "2.7.44",
"private": true,
"engines": {
"node": ">=6.12"
@@ -93,7 +93,7 @@
"typescript": "4.2.2"
},
"dependencies": {
"@0x/asset-swapper": "^6.11.0",
"@0x/asset-swapper": "^6.14.0",
"@0x/base-contract": "^6.4.0",
"@0x/contracts-asset-proxy": "^3.7.11",
"@0x/contracts-erc1155": "^2.1.29",

View File

@@ -1,4 +1,34 @@
[
{
"version": "6.14.0",
"changes": [
{
"note": "Add support for additional sources and intermediate tokens on Ropsten",
"pr": 231
}
],
"timestamp": 1620810800
},
{
"version": "6.13.0",
"changes": [
{
"note": "Add LiquidityProvider to BSC sources",
"pr": 234
}
],
"timestamp": 1620703098
},
{
"version": "6.12.0",
"changes": [
{
"note": "`TwoHopSampler` to use `call` over `staticcall` in order to support sources like `Uniswap_V3` and `Balancer_V2`",
"pr": 233
}
],
"timestamp": 1620610602
},
{
"version": "6.11.0",
"changes": [

View File

@@ -5,6 +5,18 @@ Edit the package's CHANGELOG.json file only.
CHANGELOG
## v6.14.0 - _May 12, 2021_
* Add support for additional sources and intermediate tokens on Ropsten (#231)
## v6.13.0 - _May 11, 2021_
* Add LiquidityProvider to BSC sources (#234)
## v6.12.0 - _May 10, 2021_
* `TwoHopSampler` to use `call` over `staticcall` in order to support sources like `Uniswap_V3` and `Balancer_V2` (#233)
## v6.11.0 - _May 7, 2021_
* Add price comparisons data separate from the quote report (#219)

View File

@@ -37,7 +37,6 @@ contract TwoHopSampler {
uint256 sellAmount
)
public
view
returns (
HopInfo memory firstHop,
HopInfo memory secondHop,
@@ -47,7 +46,7 @@ contract TwoHopSampler {
uint256 intermediateAssetAmount = 0;
for (uint256 i = 0; i != firstHopCalls.length; ++i) {
firstHopCalls[i].writeUint256(firstHopCalls[i].length - 32, sellAmount);
(bool didSucceed, bytes memory returnData) = address(this).staticcall(firstHopCalls[i]);
(bool didSucceed, bytes memory returnData) = address(this).call(firstHopCalls[i]);
if (didSucceed) {
uint256 amount = returnData.readUint256(returnData.length - 32);
if (amount > intermediateAssetAmount) {
@@ -62,7 +61,7 @@ contract TwoHopSampler {
}
for (uint256 j = 0; j != secondHopCalls.length; ++j) {
secondHopCalls[j].writeUint256(secondHopCalls[j].length - 32, intermediateAssetAmount);
(bool didSucceed, bytes memory returnData) = address(this).staticcall(secondHopCalls[j]);
(bool didSucceed, bytes memory returnData) = address(this).call(secondHopCalls[j]);
if (didSucceed) {
uint256 amount = returnData.readUint256(returnData.length - 32);
if (amount > buyAmount) {
@@ -80,7 +79,6 @@ contract TwoHopSampler {
uint256 buyAmount
)
public
view
returns (
HopInfo memory firstHop,
HopInfo memory secondHop,
@@ -91,7 +89,7 @@ contract TwoHopSampler {
uint256 intermediateAssetAmount = uint256(-1);
for (uint256 j = 0; j != secondHopCalls.length; ++j) {
secondHopCalls[j].writeUint256(secondHopCalls[j].length - 32, buyAmount);
(bool didSucceed, bytes memory returnData) = address(this).staticcall(secondHopCalls[j]);
(bool didSucceed, bytes memory returnData) = address(this).call(secondHopCalls[j]);
if (didSucceed) {
uint256 amount = returnData.readUint256(returnData.length - 32);
if (
@@ -109,7 +107,7 @@ contract TwoHopSampler {
}
for (uint256 i = 0; i != firstHopCalls.length; ++i) {
firstHopCalls[i].writeUint256(firstHopCalls[i].length - 32, intermediateAssetAmount);
(bool didSucceed, bytes memory returnData) = address(this).staticcall(firstHopCalls[i]);
(bool didSucceed, bytes memory returnData) = address(this).call(firstHopCalls[i]);
if (didSucceed) {
uint256 amount = returnData.readUint256(returnData.length - 32);
if (

View File

@@ -57,9 +57,9 @@ contract UniswapV3Sampler
/// @param quoter UniswapV3 Quoter contract.
/// @param path Token route. Should be takerToken -> makerToken
/// @param takerTokenAmounts Taker token sell amount for each sample.
/// @return uniswapPaths The encoded uniswap path for each sample.
/// @return makerTokenAmounts Maker amounts bought at each taker token
/// amount.
/// @return uniswapPaths The encoded uniswap path for each sample.
function sampleSellsFromUniswapV3(
IUniswapV3Quoter quoter,
IERC20TokenV06[] memory path,
@@ -67,8 +67,8 @@ contract UniswapV3Sampler
)
public
returns (
uint256[] memory makerTokenAmounts,
bytes[] memory uniswapPaths
bytes[] memory uniswapPaths,
uint256[] memory makerTokenAmounts
)
{
IUniswapV3Pool[][] memory poolPaths =
@@ -108,9 +108,9 @@ contract UniswapV3Sampler
/// @param quoter UniswapV3 Quoter contract.
/// @param path Token route. Should be takerToken -> makerToken.
/// @param makerTokenAmounts Maker token buy amount for each sample.
/// @return uniswapPaths The encoded uniswap path for each sample.
/// @return takerTokenAmounts Taker amounts sold at each maker token
/// amount.
/// @return uniswapPaths The encoded uniswap path for each sample.
function sampleBuysFromUniswapV3(
IUniswapV3Quoter quoter,
IERC20TokenV06[] memory path,
@@ -118,8 +118,8 @@ contract UniswapV3Sampler
)
public
returns (
uint256[] memory takerTokenAmounts,
bytes[] memory uniswapPaths
bytes[] memory uniswapPaths,
uint256[] memory takerTokenAmounts
)
{
IUniswapV3Pool[][] memory poolPaths =

View File

@@ -1,6 +1,6 @@
{
"name": "@0x/asset-swapper",
"version": "6.11.0",
"version": "6.14.0",
"engines": {
"node": ">=6.12"
},
@@ -67,7 +67,7 @@
"@0x/dev-utils": "^4.2.7",
"@0x/json-schemas": "^6.1.3",
"@0x/protocol-utils": "^1.6.0",
"@0x/quote-server": "^5.0.0",
"@0x/quote-server": "^6.0.2",
"@0x/types": "^3.3.3",
"@0x/typescript-typings": "^5.2.0",
"@0x/utils": "^6.4.3",

View File

@@ -5,7 +5,12 @@ export {
SendTransactionOpts,
} from '@0x/base-contract';
export { ContractAddresses } from '@0x/contract-addresses';
export { V4RFQFirmQuote, V4RFQIndicativeQuote, V4SignedRfqOrder, TakerRequestQueryParams } from '@0x/quote-server';
export {
V4RFQFirmQuote,
V4RFQIndicativeQuote,
V4SignedRfqOrder,
TakerRequestQueryParamsUnnested as TakerRequestQueryParams,
} from '@0x/quote-server';
export { Asset, AssetPairsItem, DecodedLogEvent, EventCallback, IndexedFilterValues } from '@0x/types';
export { BigNumber } from '@0x/utils';
export {

View File

@@ -7,7 +7,8 @@ import {
RfqOrderFields,
Signature,
} from '@0x/protocol-utils';
import { TakerRequestQueryParams, V4SignedRfqOrder } from '@0x/quote-server';
import { TakerRequestQueryParamsUnnested, V4SignedRfqOrder } from '@0x/quote-server';
import { Fee } from '@0x/quote-server/lib/src/types';
import { BigNumber } from '@0x/utils';
import { AxiosRequestConfig } from 'axios';
@@ -232,6 +233,12 @@ export type SwapQuoteOrdersBreakdown = Partial<
* If set to `true` and `ERC20BridgeSource.Native` is part of the `excludedSources`
* array in `SwapQuoteRequestOpts`, an Error will be raised.
*/
export interface RfqmRequestOptions extends RfqRequestOpts {
isLastLook: true;
fee: Fee;
}
export interface RfqRequestOpts {
takerAddress: string;
txOrigin: string;
@@ -242,6 +249,7 @@ export interface RfqRequestOpts {
nativeExclusivelyRFQ?: boolean;
altRfqAssetOfferings?: AltRfqMakerAssetOfferings;
isLastLook?: boolean;
fee?: Fee;
}
/**
@@ -366,7 +374,7 @@ export enum OrderPrunerPermittedFeeTypes {
export interface MockedRfqQuoteResponse {
endpoint: string;
requestApiKey: string;
requestParams: TakerRequestQueryParams;
requestParams: TakerRequestQueryParamsUnnested;
responseData: any;
responseCode: number;
callback?: (config: any) => Promise<any>;

View File

@@ -1,5 +1,5 @@
import { Web3Wrapper } from '@0x/dev-utils';
import { TakerRequestQueryParams, V4RFQFirmQuote, V4RFQIndicativeQuote } from '@0x/quote-server';
import { TakerRequestQueryParamsUnnested, V4RFQFirmQuote, V4RFQIndicativeQuote } from '@0x/quote-server';
import { BigNumber } from '@0x/utils';
import { AxiosInstance, CancelToken } from 'axios';
@@ -123,7 +123,7 @@ export async function returnQuoteFromAltMMAsync<ResponseT>(
takerToken: string,
maxResponseTimeMs: number,
altRfqAssetOfferings: AltRfqMakerAssetOfferings,
takerRequestQueryParams: TakerRequestQueryParams,
takerRequestQueryParams: TakerRequestQueryParamsUnnested,
axiosInstance: AxiosInstance,
warningLogger: LogFunction,
cancelToken: CancelToken,

View File

@@ -99,6 +99,8 @@ export const SELL_SOURCE_FILTER_BY_CHAIN_ID = valueByChainId<SourceFilters>(
ERC20BridgeSource.Uniswap,
ERC20BridgeSource.UniswapV2,
ERC20BridgeSource.UniswapV3,
ERC20BridgeSource.Curve,
ERC20BridgeSource.Mooniswap,
]),
[ChainId.Rinkeby]: new SourceFilters([ERC20BridgeSource.Native]),
[ChainId.Kovan]: new SourceFilters([ERC20BridgeSource.Native]),
@@ -120,6 +122,7 @@ export const SELL_SOURCE_FILTER_BY_CHAIN_ID = valueByChainId<SourceFilters>(
ERC20BridgeSource.CafeSwap,
ERC20BridgeSource.CheeseSwap,
ERC20BridgeSource.JulSwap,
ERC20BridgeSource.LiquidityProvider,
]),
},
@@ -169,6 +172,8 @@ export const BUY_SOURCE_FILTER_BY_CHAIN_ID = valueByChainId<SourceFilters>(
ERC20BridgeSource.Uniswap,
ERC20BridgeSource.UniswapV2,
ERC20BridgeSource.UniswapV3,
ERC20BridgeSource.Curve,
ERC20BridgeSource.Mooniswap,
]),
[ChainId.Rinkeby]: new SourceFilters([ERC20BridgeSource.Native]),
[ChainId.Kovan]: new SourceFilters([ERC20BridgeSource.Native]),
@@ -190,6 +195,7 @@ export const BUY_SOURCE_FILTER_BY_CHAIN_ID = valueByChainId<SourceFilters>(
ERC20BridgeSource.CafeSwap,
ERC20BridgeSource.CheeseSwap,
ERC20BridgeSource.JulSwap,
ERC20BridgeSource.LiquidityProvider,
]),
},
new SourceFilters([]),
@@ -414,7 +420,11 @@ export const DEFAULT_INTERMEDIATE_TOKENS_BY_CHAIN_ID = valueByChainId<string[]>(
'0x2170ed0880ac9a755fd29b2688956bd959f933f8', // ETH
'0x55d398326f99059ff775485246999027b3197955', // BUSD-T
],
[ChainId.Ropsten]: [getContractAddressesForChainOrThrow(ChainId.Ropsten).etherToken],
[ChainId.Ropsten]: [
getContractAddressesForChainOrThrow(ChainId.Ropsten).etherToken,
'0xad6d458402f60fd3bd25163575031acdce07538d', // DAI
'0x07865c6e87b9f70255377e024ace6630c1eaa37f', // USDC
],
},
[],
);
@@ -453,7 +463,10 @@ export const NATIVE_FEE_TOKEN_BY_CHAIN_ID = valueByChainId<string>(
NULL_ADDRESS,
);
export const NATIVE_FEE_TOKEN_AMOUNT_BY_CHAIN_ID = valueByChainId({}, ONE_ETHER);
export const NATIVE_FEE_TOKEN_AMOUNT_BY_CHAIN_ID = valueByChainId(
{ [ChainId.Mainnet]: ONE_ETHER.times(0.1) },
ONE_ETHER,
);
// Order dependent
const CURVE_TRI_POOL_MAINNET_TOKENS = [MAINNET_TOKENS.DAI, MAINNET_TOKENS.USDC, MAINNET_TOKENS.USDT];

View File

@@ -1,6 +1,6 @@
import { ChainId } from '@0x/contract-addresses';
import { LimitOrderFields } from '@0x/protocol-utils';
import { BigNumber } from '@0x/utils';
import { BigNumber, logUtils } from '@0x/utils';
import * as _ from 'lodash';
import { SamplerCallResult, SignedNativeOrder } from '../../types';
@@ -692,7 +692,7 @@ export class SamplerOperations {
function: this._samplerContract.sampleSellsFromUniswapV3,
params: [quoter, tokenAddressPath, takerFillAmounts],
callback: (callResults: string, fillData: UniswapV3FillData): BigNumber[] => {
const [samples, paths] = this._samplerContract.getABIDecodedReturnData<[BigNumber[], string[]]>(
const [paths, samples] = this._samplerContract.getABIDecodedReturnData<[string[], BigNumber[]]>(
'sampleSellsFromUniswapV3',
callResults,
);
@@ -720,7 +720,7 @@ export class SamplerOperations {
function: this._samplerContract.sampleBuysFromUniswapV3,
params: [quoter, tokenAddressPath, makerFillAmounts],
callback: (callResults: string, fillData: UniswapV3FillData): BigNumber[] => {
const [samples, paths] = this._samplerContract.getABIDecodedReturnData<[BigNumber[], string[]]>(
const [paths, samples] = this._samplerContract.getABIDecodedReturnData<[string[], BigNumber[]]>(
'sampleBuysFromUniswapV3',
callResults,
);
@@ -783,7 +783,10 @@ export class SamplerOperations {
};
});
},
() => [],
() => {
logUtils.warn('SamplerContractOperation: Two hop sampler reverted');
return [];
},
);
}
@@ -838,7 +841,10 @@ export class SamplerOperations {
};
});
},
() => [],
() => {
logUtils.warn('SamplerContractOperation: Two hop sampler reverted');
return [];
},
);
}

View File

@@ -1,6 +1,12 @@
import { schemas, SchemaValidator } from '@0x/json-schemas';
import { FillQuoteTransformerOrderType, Signature } from '@0x/protocol-utils';
import { TakerRequestQueryParams, V4RFQFirmQuote, V4RFQIndicativeQuote, V4SignedRfqOrder } from '@0x/quote-server';
import {
TakerRequestQueryParamsUnnested,
V4RFQFirmQuote,
V4RFQIndicativeQuote,
V4SignedRfqOrder,
} from '@0x/quote-server';
import { Fee } from '@0x/quote-server/lib/src/types';
import { BigNumber, NULL_ADDRESS } from '@0x/utils';
import axios, { AxiosInstance } from 'axios';
@@ -11,6 +17,7 @@ import {
LogFunction,
MarketOperation,
RfqMakerAssetOfferings,
RfqmRequestOptions,
RfqPairType,
RfqRequestOpts,
SignedNativeOrder,
@@ -84,7 +91,8 @@ export class QuoteRequestor {
assetFillAmount: BigNumber,
comparisonPrice?: BigNumber,
isLastLook?: boolean | undefined,
): TakerRequestQueryParams {
fee?: Fee | undefined,
): TakerRequestQueryParamsUnnested {
const { buyAmountBaseUnits, sellAmountBaseUnits } =
marketOperation === MarketOperation.Buy
? {
@@ -97,7 +105,7 @@ export class QuoteRequestor {
};
const requestParamsWithBigNumbers: Pick<
TakerRequestQueryParams,
TakerRequestQueryParamsUnnested,
| 'txOrigin'
| 'takerAddress'
| 'buyTokenAddress'
@@ -105,6 +113,9 @@ export class QuoteRequestor {
| 'comparisonPrice'
| 'isLastLook'
| 'protocolVersion'
| 'feeAmount'
| 'feeToken'
| 'feeType'
> = {
txOrigin,
takerAddress,
@@ -114,7 +125,13 @@ export class QuoteRequestor {
protocolVersion: '4',
};
if (isLastLook) {
if (fee === undefined) {
throw new Error(`isLastLook cannot be passed without a fee parameter`);
}
requestParamsWithBigNumbers.isLastLook = isLastLook.toString();
requestParamsWithBigNumbers.feeAmount = fee.amount.toString();
requestParamsWithBigNumbers.feeToken = fee.token;
requestParamsWithBigNumbers.feeType = fee.type;
}
// convert BigNumbers to strings
@@ -181,12 +198,11 @@ export class QuoteRequestor {
assetFillAmount: BigNumber,
marketOperation: MarketOperation,
comparisonPrice: BigNumber | undefined,
options: RfqRequestOpts,
options: RfqmRequestOptions,
): Promise<SignedNativeOrder[]> {
const _opts: RfqRequestOpts = {
...constants.DEFAULT_RFQT_REQUEST_OPTS,
...options,
isLastLook: true,
};
return this._fetchAndValidateFirmQuotesAsync(
@@ -230,12 +246,11 @@ export class QuoteRequestor {
assetFillAmount: BigNumber,
marketOperation: MarketOperation,
comparisonPrice: BigNumber | undefined,
options: RfqRequestOpts,
options: RfqmRequestOptions,
): Promise<V4RFQIndicativeQuote[]> {
const _opts: RfqRequestOpts = {
...constants.DEFAULT_RFQT_REQUEST_OPTS,
...options,
isLastLook: true,
};
return this._fetchAndValidateIndicativeQuotesAsync(
@@ -344,6 +359,7 @@ export class QuoteRequestor {
assetFillAmount,
comparisonPrice,
options.isLastLook,
options.fee,
);
const quotePath = (() => {

View File

@@ -1,6 +1,6 @@
import { tokenUtils } from '@0x/dev-utils';
import { FillQuoteTransformerOrderType, SignatureType } from '@0x/protocol-utils';
import { TakerRequestQueryParams, V4RFQIndicativeQuote } from '@0x/quote-server';
import { ETH_TOKEN_ADDRESS, FillQuoteTransformerOrderType, SignatureType } from '@0x/protocol-utils';
import { TakerRequestQueryParamsUnnested, V4RFQIndicativeQuote } from '@0x/quote-server';
import { StatusCodes } from '@0x/types';
import { BigNumber, logUtils } from '@0x/utils';
import Axios from 'axios';
@@ -75,7 +75,7 @@ describe('QuoteRequestor', async () => {
const mockedRequests: MockedRfqQuoteResponse[] = [];
const altMockedRequests: AltMockedRfqQuoteResponse[] = [];
const expectedParams: TakerRequestQueryParams = {
const expectedParams: TakerRequestQueryParamsUnnested = {
sellTokenAddress: takerToken,
buyTokenAddress: makerToken,
sellAmountBaseUnits: '10000',
@@ -84,6 +84,9 @@ describe('QuoteRequestor', async () => {
txOrigin,
isLastLook: 'true', // the major difference between RFQ-T and RFQ-M
protocolVersion: '4',
feeAmount: '1000000000',
feeToken: ETH_TOKEN_ADDRESS,
feeType: 'fixed',
};
const mockedDefaults = {
requestApiKey: apiKey,
@@ -242,6 +245,12 @@ describe('QuoteRequestor', async () => {
txOrigin: takerAddress,
intentOnFilling: true,
altRfqAssetOfferings,
isLastLook: true,
fee: {
amount: new BigNumber('1000000000'),
token: ETH_TOKEN_ADDRESS,
type: 'fixed',
},
},
);
expect(resp).to.deep.eq([
@@ -265,7 +274,7 @@ describe('QuoteRequestor', async () => {
const mockedRequests: MockedRfqQuoteResponse[] = [];
const altMockedRequests: AltMockedRfqQuoteResponse[] = [];
const expectedParams: TakerRequestQueryParams = {
const expectedParams: TakerRequestQueryParamsUnnested = {
sellTokenAddress: takerToken,
buyTokenAddress: makerToken,
sellAmountBaseUnits: '10000',
@@ -451,7 +460,7 @@ describe('QuoteRequestor', async () => {
// Set up RFQ responses
// tslint:disable-next-line:array-type
const mockedRequests: MockedRfqQuoteResponse[] = [];
const expectedParams: TakerRequestQueryParams = {
const expectedParams: TakerRequestQueryParamsUnnested = {
sellTokenAddress: takerToken,
buyTokenAddress: makerToken,
sellAmountBaseUnits: '10000',
@@ -460,6 +469,9 @@ describe('QuoteRequestor', async () => {
txOrigin: takerAddress,
isLastLook: 'true', // the major difference between RFQ-T and RFQ-M
protocolVersion: '4',
feeAmount: '1000000000',
feeToken: ETH_TOKEN_ADDRESS,
feeType: 'fixed',
};
const mockedDefaults = {
requestApiKey: apiKey,
@@ -543,6 +555,12 @@ describe('QuoteRequestor', async () => {
takerAddress,
txOrigin: takerAddress,
intentOnFilling: true,
isLastLook: true,
fee: {
type: 'fixed',
token: ETH_TOKEN_ADDRESS,
amount: new BigNumber('1000000000'),
},
},
);
expect(resp.sort()).to.eql([successfulQuote1, successfulQuote1].sort());
@@ -571,7 +589,7 @@ describe('QuoteRequestor', async () => {
// Set up RFQT responses
// tslint:disable-next-line:array-type
const mockedRequests: MockedRfqQuoteResponse[] = [];
const expectedParams: TakerRequestQueryParams = {
const expectedParams: TakerRequestQueryParamsUnnested = {
sellTokenAddress: takerToken,
buyTokenAddress: makerToken,
sellAmountBaseUnits: '10000',
@@ -678,7 +696,7 @@ describe('QuoteRequestor', async () => {
// Set up RFQT responses
// tslint:disable-next-line:array-type
const mockedRequests: MockedRfqQuoteResponse[] = [];
const expectedParams: TakerRequestQueryParams = {
const expectedParams: TakerRequestQueryParamsUnnested = {
sellTokenAddress: takerToken,
buyTokenAddress: makerToken,
sellAmountBaseUnits: '10000',
@@ -763,7 +781,7 @@ describe('QuoteRequestor', async () => {
// Set up RFQT responses
// tslint:disable-next-line:array-type
const mockedRequests: MockedRfqQuoteResponse[] = [];
const expectedParams: TakerRequestQueryParams = {
const expectedParams: TakerRequestQueryParamsUnnested = {
sellTokenAddress: takerToken,
buyTokenAddress: makerToken,
buyAmountBaseUnits: '10000',

View File

@@ -783,7 +783,7 @@
lodash "^4.17.11"
web3-provider-engine "14.0.6"
"@0x/json-schemas@^5.0.1", "@0x/json-schemas@^5.0.7", "@0x/json-schemas@^5.3.3":
"@0x/json-schemas@^5.0.1", "@0x/json-schemas@^5.3.3":
version "5.3.3"
resolved "https://registry.yarnpkg.com/@0x/json-schemas/-/json-schemas-5.3.3.tgz#4b9de100385ca23b0cd58a454165df2e9758e453"
dependencies:
@@ -801,7 +801,7 @@
jsonschema "^1.2.0"
lodash.values "^4.3.0"
"@0x/json-schemas@^6.1.3":
"@0x/json-schemas@^6.0.1", "@0x/json-schemas@^6.1.3":
version "6.1.3"
resolved "https://registry.yarnpkg.com/@0x/json-schemas/-/json-schemas-6.1.3.tgz#da71ed2e50ae6813a6d4d0fe5f8ad69b8e6a7435"
dependencies:
@@ -850,11 +850,12 @@
typedoc "~0.16.11"
yargs "^10.0.3"
"@0x/quote-server@^5.0.0":
version "5.0.0"
resolved "https://registry.yarnpkg.com/@0x/quote-server/-/quote-server-5.0.0.tgz#15554099bdfdf71e2910430860257d622f24f703"
"@0x/quote-server@^6.0.2":
version "6.0.2"
resolved "https://registry.yarnpkg.com/@0x/quote-server/-/quote-server-6.0.2.tgz#cb99e00c737e0f97a2a32bc7e7be6db65243c3af"
integrity sha512-SS5LfAgKSRjEszWVZl5UtRDBkrsqAvYn/lPB4hxtKky8XitClUYFQ2pSnrFuyQSVft3tFxH4p7eC65YQN5wkcA==
dependencies:
"@0x/json-schemas" "^5.0.7"
"@0x/json-schemas" "^6.0.1"
"@0x/order-utils" "^10.2.4"
"@0x/protocol-utils" "^1.0.1"
"@0x/utils" "^5.4.1"