@paraswap/dex-lib 2.13.1 → 2.14.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (56) hide show
  1. package/build/dex/curve-v1/config.js +0 -2
  2. package/build/dex/curve-v1/config.js.map +1 -1
  3. package/build/dex/curve-v1/curve-v1.js +0 -2
  4. package/build/dex/curve-v1/curve-v1.js.map +1 -1
  5. package/build/dex/curve-v1/types.d.ts +0 -1
  6. package/build/dex/curve-v1/types.js.map +1 -1
  7. package/build/dex/generic-rfq/rate-fetcher.js +0 -2
  8. package/build/dex/generic-rfq/rate-fetcher.js.map +1 -1
  9. package/build/dex/generic-rfq/validators.d.ts +1 -1
  10. package/build/dex/generic-rfq/validators.js +26 -36
  11. package/build/dex/generic-rfq/validators.js.map +1 -1
  12. package/build/lib/fetcher/fetcher.js +0 -3
  13. package/build/lib/fetcher/fetcher.js.map +1 -1
  14. package/package.json +1 -1
  15. package/src/dex/curve-v1/config.ts +0 -2
  16. package/src/dex/curve-v1/curve-v1-e2e.test.ts +37 -18
  17. package/src/dex/curve-v1/curve-v1.ts +0 -2
  18. package/src/dex/curve-v1/types.ts +0 -1
  19. package/src/dex/generic-rfq/generic-rfq-e2e.test.ts +258 -63
  20. package/src/dex/generic-rfq/rate-fetcher.ts +0 -2
  21. package/src/dex/generic-rfq/validators.test.ts +32 -6
  22. package/src/dex/generic-rfq/validators.ts +32 -57
  23. package/src/lib/fetcher/fetcher.ts +0 -6
  24. package/tests/constants-e2e.ts +6 -3
  25. package/tests/utils-e2e.ts +48 -59
  26. package/.idea/codeStyles/codeStyleConfig.xml +0 -5
  27. package/.idea/misc.xml +0 -6
  28. package/.idea/modules.xml +0 -8
  29. package/.idea/vcs.xml +0 -6
  30. package/.vscode/launch.json +0 -21
  31. package/build/dex/aave-v3/tokens/arbitrum.json +0 -50
  32. package/build/dex/aave-v3/tokens/avalanche.json +0 -50
  33. package/build/dex/aave-v3/tokens/fantom.json +0 -62
  34. package/build/dex/aave-v3/tokens/mainnet.json +0 -44
  35. package/build/dex/aave-v3/tokens/optimism.json +0 -50
  36. package/build/dex/aave-v3/tokens/polygon.json +0 -98
  37. package/build/dex/balancer-v2/VirtualBoostedPool.d.ts +0 -79
  38. package/build/dex/balancer-v2/VirtualBoostedPool.js +0 -382
  39. package/build/dex/balancer-v2/VirtualBoostedPool.js.map +0 -1
  40. package/build/dex/generic-rfq/e2e-test-config.d.ts +0 -9
  41. package/build/dex/generic-rfq/e2e-test-config.js +0 -33
  42. package/build/dex/generic-rfq/e2e-test-config.js.map +0 -1
  43. package/build/dex/test-aave-v3/config.d.ts +0 -4
  44. package/build/dex/test-aave-v3/config.js +0 -15
  45. package/build/dex/test-aave-v3/config.js.map +0 -1
  46. package/build/dex/test-aave-v3/test-aave-v3-pool.d.ts +0 -39
  47. package/build/dex/test-aave-v3/test-aave-v3-pool.js +0 -63
  48. package/build/dex/test-aave-v3/test-aave-v3-pool.js.map +0 -1
  49. package/build/dex/test-aave-v3/test-aave-v3.d.ts +0 -37
  50. package/build/dex/test-aave-v3/test-aave-v3.js +0 -126
  51. package/build/dex/test-aave-v3/test-aave-v3.js.map +0 -1
  52. package/build/dex/test-aave-v3/types.d.ts +0 -6
  53. package/build/dex/test-aave-v3/types.js +0 -3
  54. package/build/dex/test-aave-v3/types.js.map +0 -1
  55. package/src/dex/generic-rfq/e2e-test-config.ts +0 -37
  56. package/src/dex/generic-rfq/generic-rfq-local-e2e.test.ts +0 -121
@@ -24,7 +24,6 @@ export type PoolConfig = {
24
24
  trackCoins?: boolean;
25
25
  useLending?: boolean[];
26
26
  isFeeOnTransferSupported?: boolean;
27
- isPaused?: boolean;
28
27
  };
29
28
 
30
29
  export type TokenWithReasonableVolume = Token & {
@@ -6,8 +6,8 @@ import { Network, ContractMethod, SwapSide, MAX_UINT } from '../../constants';
6
6
  import { generateConfig } from '../../config';
7
7
  import { newTestE2E, getEnv } from '../../../tests/utils-e2e';
8
8
  import { SmartTokens, GENERIC_ADDR1 } from '../../../tests/constants-e2e';
9
+ import { startTestServer } from './example-api.test';
9
10
  import { RFQConfig } from './types';
10
- import { testConfig } from './e2e-test-config';
11
11
 
12
12
  const PK_KEY = process.env.TEST_PK_KEY;
13
13
 
@@ -19,13 +19,113 @@ const testAccount = new ethers.Wallet(PK_KEY!);
19
19
 
20
20
  jest.setTimeout(1000 * 60 * 3);
21
21
 
22
+ describe('GenericRFQ E2E Mainnet', () => {
23
+ let stopServer: undefined | Function = undefined;
24
+
25
+ beforeAll(() => {
26
+ stopServer = startTestServer(testAccount);
27
+ });
28
+
29
+ const network = Network.MAINNET;
30
+ const smartTokens = SmartTokens[network];
31
+
32
+ const srcToken = smartTokens.WETH;
33
+ const destToken = smartTokens.DAI;
34
+
35
+ const config = generateConfig(network);
36
+
37
+ describe('GenericRFQ', () => {
38
+ const dexKey = 'DummyParaSwapPool';
39
+
40
+ srcToken.addBalance(testAccount.address, MAX_UINT);
41
+ srcToken.addAllowance(
42
+ testAccount.address,
43
+ config.augustusRFQAddress,
44
+ MAX_UINT,
45
+ );
46
+
47
+ destToken.addBalance(testAccount.address, MAX_UINT);
48
+ destToken.addAllowance(
49
+ testAccount.address,
50
+ config.augustusRFQAddress,
51
+ MAX_UINT,
52
+ );
53
+
54
+ describe('Simpleswap', () => {
55
+ it('SELL WETH -> DAI', async () => {
56
+ await newTestE2E({
57
+ config,
58
+ srcToken,
59
+ destToken,
60
+ senderAddress: GENERIC_ADDR1,
61
+ thirdPartyAddress: testAccount.address,
62
+ _amount: '1000000000000000000',
63
+ swapSide: SwapSide.SELL,
64
+ dexKey: dexKey,
65
+ contractMethod: ContractMethod.simpleSwap,
66
+ network: network,
67
+ });
68
+ });
69
+
70
+ it('SELL DAI -> WETH', async () => {
71
+ await newTestE2E({
72
+ config,
73
+ destToken,
74
+ srcToken,
75
+ senderAddress: GENERIC_ADDR1,
76
+ thirdPartyAddress: testAccount.address,
77
+ _amount: '1000000000000000000',
78
+ swapSide: SwapSide.SELL,
79
+ dexKey: dexKey,
80
+ contractMethod: ContractMethod.simpleSwap,
81
+ network: network,
82
+ });
83
+ });
84
+
85
+ it('BUY WETH -> DAI', async () => {
86
+ await newTestE2E({
87
+ config,
88
+ srcToken,
89
+ destToken,
90
+ senderAddress: GENERIC_ADDR1,
91
+ thirdPartyAddress: testAccount.address,
92
+ _amount: '1000000000000000000',
93
+ swapSide: SwapSide.BUY,
94
+ dexKey: dexKey,
95
+ contractMethod: ContractMethod.simpleBuy,
96
+ network: network,
97
+ });
98
+ });
99
+
100
+ it('BUY DAI -> WETH', async () => {
101
+ await newTestE2E({
102
+ config,
103
+ destToken,
104
+ srcToken,
105
+ senderAddress: GENERIC_ADDR1,
106
+ thirdPartyAddress: testAccount.address,
107
+ _amount: '1000000000000000000',
108
+ swapSide: SwapSide.BUY,
109
+ dexKey: dexKey,
110
+ contractMethod: ContractMethod.simpleBuy,
111
+ network: network,
112
+ });
113
+ });
114
+ });
115
+ });
116
+
117
+ afterAll(() => {
118
+ if (stopServer) {
119
+ stopServer();
120
+ }
121
+ });
122
+ });
123
+
22
124
  const buildConfigForGenericRFQ = (): RFQConfig => {
23
125
  const url = getEnv('GENERIC_RFQ_URL');
24
126
 
25
127
  const secret = {
26
- secretKey: Buffer.from(getEnv('GENERIC_RFQ_SECRET_KEY'), 'base64').toString(
27
- 'binary',
28
- ),
128
+ secretKey: atob(getEnv('GENERIC_RFQ_SECRET_KEY')),
29
129
  accessKey: getEnv('GENERIC_RFQ_ACCESS_KEY'),
30
130
  domain: 'paraswap',
31
131
  };
@@ -79,65 +179,160 @@ const buildConfigForGenericRFQ = (): RFQConfig => {
79
179
  };
80
180
  };
81
181
 
82
- const SKIP_TENDERLY = !!getEnv('GENERIC_RFQ_SKIP_TENDERLY', true);
83
- const dexKey = 'YOUR_NAME';
84
-
85
- describe(`GenericRFQ ${dexKey} E2E`, () => {
86
- for (const [_network, testCases] of Object.entries(testConfig)) {
87
- const network = parseInt(_network, 10);
88
- const smartTokens = SmartTokens[network];
89
- const config = generateConfig(network);
90
-
91
- config.rfqConfigs[dexKey] = buildConfigForGenericRFQ();
92
- describe(`${Network[network]}`, () => {
93
- for (const testCase of testCases) {
94
- if (!smartTokens.hasOwnProperty(testCase.srcToken)) {
95
- throw new Error(`Please add "addBalance" and "addAllowance" functions for ${testCase.srcToken} on ${Network[network]} (in constants-e2e.ts).`);
96
- }
97
- if (!smartTokens.hasOwnProperty(testCase.destToken)){
98
- throw new Error(`Please add "addBalance" and "addAllowance" functions for ${testCase.destToken} on ${Network[network]} (in constants-e2e.ts).`);
99
- }
100
- const srcToken = smartTokens[testCase.srcToken];
101
- const destToken = smartTokens[testCase.destToken];
102
-
103
- if (!SKIP_TENDERLY) {
104
- srcToken.addBalance(testAccount.address, MAX_UINT);
105
- srcToken.addAllowance(
106
- testAccount.address,
107
- config.augustusRFQAddress,
108
- MAX_UINT,
109
- );
110
-
111
- destToken.addBalance(testAccount.address, MAX_UINT);
112
- destToken.addAllowance(
113
- testAccount.address,
114
- config.augustusRFQAddress,
115
- MAX_UINT,
116
- );
117
- }
118
- const contractMethod =
119
- testCase.swapSide === SwapSide.BUY
120
- ? ContractMethod.simpleBuy
121
- : ContractMethod.simpleSwap;
122
- describe(`${contractMethod}`, () => {
123
- it(`${testCase.swapSide} ${testCase.srcToken} -> ${testCase.destToken}`, async () => {
124
- await newTestE2E({
125
- config,
126
- srcToken,
127
- destToken,
128
- senderAddress: GENERIC_ADDR1,
129
- thirdPartyAddress: testAccount.address,
130
- _amount: testCase.amount,
131
- swapSide: testCase.swapSide as SwapSide,
132
- dexKey: dexKey,
133
- contractMethod,
134
- network,
135
- sleepMs: 5000,
136
- skipTenderly: SKIP_TENDERLY,
137
- });
138
- });
182
+ describe('GenericRFQ YOUR_NAME E2E Mainnet', () => {
183
+ const dexKey = 'YOUR_NAME';
184
+
185
+ const network = Network.MAINNET;
186
+ const smartTokens = SmartTokens[network];
187
+ const config = generateConfig(network);
188
+
189
+ config.rfqConfigs[dexKey] = buildConfigForGenericRFQ();
190
+
191
+ describe('GenericRFQ B/Q BUY', () => {
192
+ const srcToken = smartTokens.USDC;
193
+ const destToken = smartTokens.WBTC;
194
+
195
+ srcToken.addBalance(testAccount.address, MAX_UINT);
196
+ srcToken.addAllowance(
197
+ testAccount.address,
198
+ config.augustusRFQAddress,
199
+ MAX_UINT,
200
+ );
201
+
202
+ destToken.addBalance(testAccount.address, MAX_UINT);
203
+ destToken.addAllowance(
204
+ testAccount.address,
205
+ config.augustusRFQAddress,
206
+ MAX_UINT,
207
+ );
208
+
209
+ describe('Simpleswap', () => {
210
+ it('BUY USDC -> WBTC', async () => {
211
+ await newTestE2E({
212
+ config,
213
+ srcToken,
214
+ destToken,
215
+ senderAddress: GENERIC_ADDR1,
216
+ thirdPartyAddress: testAccount.address,
217
+ _amount: '1000000',
218
+ swapSide: SwapSide.BUY,
219
+ dexKey: dexKey,
220
+ contractMethod: ContractMethod.simpleBuy,
221
+ network: network,
222
+ sleepMs: 5000,
223
+ });
224
+ });
225
+ });
226
+ });
227
+
228
+ describe('GenericRFQ Q/B BUY', () => {
229
+ const srcToken = smartTokens.WBTC;
230
+ const destToken = smartTokens.USDC;
231
+
232
+ srcToken.addBalance(testAccount.address, MAX_UINT);
233
+ srcToken.addAllowance(
234
+ testAccount.address,
235
+ config.augustusRFQAddress,
236
+ MAX_UINT,
237
+ );
238
+
239
+ destToken.addBalance(testAccount.address, MAX_UINT);
240
+ destToken.addAllowance(
241
+ testAccount.address,
242
+ config.augustusRFQAddress,
243
+ MAX_UINT,
244
+ );
245
+
246
+ describe('Simpleswap', () => {
247
+ it('BUY WBTC -> USDC', async () => {
248
+ await newTestE2E({
249
+ config,
250
+ srcToken,
251
+ destToken,
252
+ senderAddress: GENERIC_ADDR1,
253
+ thirdPartyAddress: testAccount.address,
254
+ _amount: '1000000',
255
+ swapSide: SwapSide.BUY,
256
+ dexKey: dexKey,
257
+ contractMethod: ContractMethod.simpleBuy,
258
+ network: network,
259
+ sleepMs: 5000,
260
+ });
261
+ });
262
+ });
263
+ });
264
+
265
+ describe('GenericRFQ B/Q SELL', () => {
266
+ const srcToken = smartTokens.USDC;
267
+ const destToken = smartTokens.WBTC;
268
+
269
+ srcToken.addBalance(testAccount.address, MAX_UINT);
270
+ srcToken.addAllowance(
271
+ testAccount.address,
272
+ config.augustusRFQAddress,
273
+ MAX_UINT,
274
+ );
275
+
276
+ destToken.addBalance(testAccount.address, MAX_UINT);
277
+ destToken.addAllowance(
278
+ testAccount.address,
279
+ config.augustusRFQAddress,
280
+ MAX_UINT,
281
+ );
282
+
283
+ describe('Simpleswap', () => {
284
+ it('SELL USDC -> WBTC', async () => {
285
+ await newTestE2E({
286
+ config,
287
+ srcToken,
288
+ destToken,
289
+ senderAddress: GENERIC_ADDR1,
290
+ thirdPartyAddress: testAccount.address,
291
+ _amount: '1000000',
292
+ swapSide: SwapSide.SELL,
293
+ dexKey: dexKey,
294
+ contractMethod: ContractMethod.simpleSwap,
295
+ network: network,
296
+ sleepMs: 5000,
297
+ });
298
+ });
299
+ });
300
+ });
301
+
302
+ describe('GenericRFQ Q/B SELL', () => {
303
+ const srcToken = smartTokens.WBTC;
304
+ const destToken = smartTokens.USDC;
305
+
306
+ srcToken.addBalance(testAccount.address, MAX_UINT);
307
+ srcToken.addAllowance(
308
+ testAccount.address,
309
+ config.augustusRFQAddress,
310
+ MAX_UINT,
311
+ );
312
+
313
+ destToken.addBalance(testAccount.address, MAX_UINT);
314
+ destToken.addAllowance(
315
+ testAccount.address,
316
+ config.augustusRFQAddress,
317
+ MAX_UINT,
318
+ );
319
+
320
+ describe('Simpleswap', () => {
321
+ it('SELL WBTC -> USDC', async () => {
322
+ await newTestE2E({
323
+ config,
324
+ srcToken,
325
+ destToken,
326
+ senderAddress: GENERIC_ADDR1,
327
+ thirdPartyAddress: testAccount.address,
328
+ _amount: '10000',
329
+ swapSide: SwapSide.SELL,
330
+ dexKey: dexKey,
331
+ contractMethod: ContractMethod.simpleSwap,
332
+ network: network,
333
+ sleepMs: 5000,
139
334
  });
140
- }
335
+ });
141
336
  });
142
- }
337
+ });
143
338
  });
@@ -403,11 +403,9 @@ export class RateFetcher {
403
403
  delete payload.secret;
404
404
  }
405
405
 
406
- this.logger.debug('FirmRate Request:', payload);
407
406
  const { data } = await this.dexHelper.httpRequest.request<unknown>(
408
407
  payload,
409
408
  );
410
- this.logger.debug('FirmRate Response: ', data);
411
409
 
412
410
  const firmRateResp = validateAndCast<RFQFirmRateResponse>(
413
411
  data,
@@ -112,11 +112,10 @@ describe('GenericRFQ Validator test', () => {
112
112
  },
113
113
  };
114
114
 
115
- const pricesNegativeSpread = {
115
+ const pricesInvalidBidsNotSortedDesc = {
116
116
  prices: {
117
117
  'WETH/DAI': {
118
118
  bids: [
119
- ['1337.425240000000000000', '1.166200000000000000'],
120
119
  ['1333.024812000000000000', '1.166200000000000000'],
121
120
  ['1333.425240000000000000', '1.166200000000000000'],
122
121
  ['1332.624384000000000000', '1.166200000000000000'],
@@ -136,6 +135,29 @@ describe('GenericRFQ Validator test', () => {
136
135
  },
137
136
  };
138
137
 
138
+ const pricesInvalidAskNotSortedAsc = {
139
+ prices: {
140
+ 'WETH/DAI': {
141
+ bids: [
142
+ ['1333.425240000000000000', '1.166200000000000000'],
143
+ ['1333.024812000000000000', '1.166200000000000000'],
144
+ ['1332.624384000000000000', '1.166200000000000000'],
145
+ ['1332.223956000000000000', '1.166200000000000000'],
146
+ ['1331.823528000000000000', '1.166200000000000000'],
147
+ ['1331.423100000000000000', '1.169000000000000000'],
148
+ ],
149
+ asks: [
150
+ ['1337.146033000000000000', '1.166200000000000000'],
151
+ ['1336.745410000000000000', '1.166200000000000000'],
152
+ ['1337.546656000000000000', '1.166200000000000000'],
153
+ ['1337.947279000000000000', '1.166200000000000000'],
154
+ ['1338.347902000000000000', '1.166200000000000000'],
155
+ ['1338.748525000000000000', '1.169000000000000000'],
156
+ ],
157
+ },
158
+ },
159
+ };
160
+
139
161
  const noPrices = {
140
162
  prices: {
141
163
  'WETH/DAI': {},
@@ -178,6 +200,12 @@ describe('GenericRFQ Validator test', () => {
178
200
 
179
201
  it('Price test', () => {
180
202
  expect(() => validateAndCast(prices, pricesResponse)).not.toThrowError();
203
+ expect(() =>
204
+ validateAndCast(pricesInvalidBidsNotSortedDesc, pricesResponse),
205
+ ).toThrowError();
206
+ expect(() =>
207
+ validateAndCast(pricesInvalidAskNotSortedAsc, pricesResponse),
208
+ ).toThrowError();
181
209
  expect(() =>
182
210
  validateAndCast(noPrices, pricesResponse),
183
211
  ).not.toThrowError();
@@ -190,9 +218,6 @@ describe('GenericRFQ Validator test', () => {
190
218
  expect(() =>
191
219
  validateAndCast(onlyAsks, pricesResponse),
192
220
  ).not.toThrowError();
193
- expect(() =>
194
- validateAndCast(pricesNegativeSpread, pricesResponse),
195
- ).toThrowError('the maximum bid is higher than minimum ask');
196
221
  });
197
222
  });
198
223
 
@@ -236,10 +261,11 @@ describe('GenericRFQ Validator test', () => {
236
261
  },
237
262
  };
238
263
 
239
- it('Order test', () => {
264
+ it('Blacklist test', () => {
240
265
  expect(() =>
241
266
  validateAndCast(order, firmRateResponseValidator),
242
267
  ).not.toThrowError();
268
+ // expect(() => validateAndCast(invalidBlacklist, blacklistResponseValidator)).toThrowError();
243
269
  });
244
270
  });
245
271
  });
@@ -56,7 +56,7 @@ const stringNumberValidator = (
56
56
  return value;
57
57
  };
58
58
 
59
- const pricesValidator = joi
59
+ const pricesValidatorWithoutSorting = joi
60
60
  .array()
61
61
  .items(
62
62
  joi
@@ -66,58 +66,47 @@ const pricesValidator = joi
66
66
  );
67
67
 
68
68
  const ext: joi.Extension = {
69
- type: 'validatedPrices',
70
- base: joi.object({
71
- bids: pricesValidator,
72
- asks: pricesValidator,
73
- }),
69
+ type: 'sortedArray',
70
+ base: pricesValidatorWithoutSorting,
74
71
  rules: {
75
- bidsLowerThanAsks: {
76
- validate: (
77
- values: { bids: string[]; asks: string[] },
78
- helpers: CustomHelpers,
79
- ) => {
80
- if (
81
- !values.bids ||
82
- !values.asks ||
83
- values.bids.length === 0 ||
84
- values.asks.length === 0
85
- ) {
86
- return values;
87
- }
88
- const maxBid = values.bids
89
- .map(numbers => new BigNumber(numbers[0]))
90
- .reduce(
91
- (previousValue, currentValue) =>
92
- currentValue.gte(previousValue) ? currentValue : previousValue,
93
- new BigNumber(0),
94
- );
95
- const minAsk = values.asks
96
- .map(numbers => new BigNumber(numbers[0]))
97
- .reduce(
98
- (previousValue, currentValue) =>
99
- currentValue.lte(previousValue) ? currentValue : previousValue,
100
- new BigNumber('123456789012345678901234567890'),
101
- );
102
- return maxBid < minAsk
72
+ asc: {
73
+ validate: (values: string[], helpers: CustomHelpers) => {
74
+ const prices = values.map(numbers => new BigNumber(numbers[0]));
75
+ const isAscOrder = prices.every(
76
+ (x, i) => i === 0 || x.gte(prices[i - 1]),
77
+ );
78
+ return isAscOrder
103
79
  ? values
104
80
  : helpers.message({
105
- custom: 'the maximum bid is higher than minimum ask',
81
+ custom: `array is not asc sorted ${JSON.stringify(values)}`,
82
+ });
83
+ },
84
+ },
85
+ desc: {
86
+ validate: (values: string[][], helpers: CustomHelpers) => {
87
+ const prices = values.map(numbers => new BigNumber(numbers[0]));
88
+ const isAscOrder = prices.every(
89
+ (x, i) => i === 0 || x.lte(prices[i - 1]),
90
+ );
91
+ return isAscOrder
92
+ ? values
93
+ : helpers.message({
94
+ custom: `array is not desc sorted ${JSON.stringify(values)}`,
106
95
  });
107
96
  },
108
97
  },
109
98
  },
110
99
  };
111
100
 
112
- export const priceValidator = joi.extend(ext);
101
+ const pricesArrayValidator = joi.extend(ext);
102
+
103
+ export const priceValidator = joi.object({
104
+ bids: pricesArrayValidator.sortedArray().desc(),
105
+ asks: pricesArrayValidator.sortedArray().asc(),
106
+ });
113
107
 
114
108
  export const pricesResponse = joi.object({
115
- prices: joi
116
- .object()
117
- .pattern(
118
- joi.string().min(1),
119
- priceValidator.validatedPrices().bidsLowerThanAsks(),
120
- ),
109
+ prices: joi.object().pattern(joi.string().min(1), priceValidator),
121
110
  });
122
111
 
123
112
  export const validateAndCast = <T>(
@@ -182,26 +171,12 @@ const stringStartWithHex0x = (
182
171
  return value;
183
172
  };
184
173
 
185
- const mustBeAugustusSwapper = (
186
- value: string,
187
- helpers: CustomHelpers,
188
- ): string | ErrorReport => {
189
- const allowedTakers = [
190
- '0xDEF171Fe48CF0115B1d80b88dc8eAB59176FEe57'.toLowerCase(),
191
- ];
192
- return allowedTakers.includes(value.toLowerCase())
193
- ? value
194
- : helpers.message({
195
- custom: `"order.taker" must be any of ${JSON.stringify(allowedTakers)}`,
196
- });
197
- };
198
-
199
174
  export const orderWithSignatureValidator = joi
200
175
  .object({
201
176
  nonceAndMeta: joi.string().custom(stringPositiveBigIntValidator),
202
177
  expiry: joi.number().min(0),
203
178
  maker: addressSchema.required(),
204
- taker: addressSchema.required().custom(mustBeAugustusSwapper),
179
+ taker: addressSchema.required(),
205
180
  makerAsset: addressSchema.required(),
206
181
  takerAsset: addressSchema.required(),
207
182
  makerAmount: joi
@@ -76,12 +76,6 @@ export default class Fetcher<T> {
76
76
  .map((_, i) => i)
77
77
  .filter(i => results[i] instanceof Error);
78
78
 
79
- results.map(result => {
80
- this.logger.debug(
81
- 'Results Data:',
82
- JSON.stringify((result as any).data, null, 4).substring(0, 500),
83
- );
84
- });
85
79
  failures.forEach(i => {
86
80
  this.logger.warn(
87
81
  `failed polling ${this.requests[i].info.requestOptions.url} ${results[i]}`,
@@ -33,6 +33,10 @@ export const Tokens: {
33
33
  addBalance: balancesFn,
34
34
  addAllowance: allowedFn,
35
35
  },
36
+ CUSDC: {
37
+ address: '0x39AA39c021dfbaE8faC545936693aC917d5E7563',
38
+ decimals: 8,
39
+ },
36
40
  WBTC: {
37
41
  address: '0x2260fac5e5542a773aa44fbcfedf7c193bc2c599',
38
42
  decimals: 8,
@@ -46,8 +50,6 @@ export const Tokens: {
46
50
  USDT: {
47
51
  address: '0xdac17f958d2ee523a2206206994597c13d831ec7',
48
52
  decimals: 6,
49
- addBalance: balancesFn,
50
- addAllowance: allowedFn,
51
53
  },
52
54
  STETH: {
53
55
  address: '0xae7ab96520de3a18e5e111b5eaab095312d7fe84',
@@ -807,7 +809,7 @@ export const Holders: {
807
809
  CVX: '0x0aCA67Fa70B142A3b9bF2eD89A81B40ff85dACdC',
808
810
  MIM: '0xa046a8660e66d178ee07ec97c585eeb6aa18c26c',
809
811
  AnkETH: '0xF7260D4ADc48fEefd5a19a9Eb23f9747CeE15C92',
810
- DAI: '0x4943b0c9959dcf58871a799dfb71bece0d97c9f4',
812
+ DAI: '0x60FaAe176336dAb62e284Fe19B885B095d29fB7F',
811
813
  oldFRAX: '0x183d0dc5867c01bfb1dbbc41d6a9d3de6e044626',
812
814
  newFRAX: '0x183d0dc5867c01bfb1dbbc41d6a9d3de6e044626',
813
815
  FEI: '0x19c549357034d10db8d75ed812b45be1dd8a7218',
@@ -829,6 +831,7 @@ export const Holders: {
829
831
  ADAIv1: '0x3021026e4ff227571a5a563ad19ea657c7027e59',
830
832
  CETH: '0x712d0f306956a6a4b4f9319ad9b9de48c5345996',
831
833
  CDAI: '0xab4ce310054a11328685ece1043211b68ba5d082',
834
+ CUSDC: '0xC2F61a6eEEC48d686901D325CDE9233b81c793F3',
832
835
  EURS: '0xC1056Adeb61a01964Ea265cA95EffB7016f9Ed78',
833
836
  EURT: '0x6914FC70fAC4caB20a8922E900C4BA57fEECf8E1',
834
837
  CRV: '0x7a16fF8270133F063aAb6C9977183D9e72835428',