@paraswap/dex-lib 2.14.1 → 2.14.3-3pool-enable.0

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 (50) hide show
  1. package/build/abi/maverick/pool.json +913 -0
  2. package/build/abi/maverick/router.json +703 -0
  3. package/build/dex/curve-v1/config.js +19 -19
  4. package/build/dex/curve-v1/config.js.map +1 -1
  5. package/build/dex/curve-v1-factory/config.js +2 -5
  6. package/build/dex/curve-v1-factory/config.js.map +1 -1
  7. package/build/dex/generic-rfq/e2e-test-config.d.ts +9 -0
  8. package/build/dex/generic-rfq/e2e-test-config.js +33 -0
  9. package/build/dex/generic-rfq/e2e-test-config.js.map +1 -0
  10. package/build/dex/generic-rfq/rate-fetcher.js +2 -0
  11. package/build/dex/generic-rfq/rate-fetcher.js.map +1 -1
  12. package/build/dex/generic-rfq/validators.d.ts +1 -1
  13. package/build/dex/generic-rfq/validators.js +36 -26
  14. package/build/dex/generic-rfq/validators.js.map +1 -1
  15. package/build/dex/maverick/config.d.ts +4 -0
  16. package/build/dex/maverick/config.js +20 -0
  17. package/build/dex/maverick/config.js.map +1 -0
  18. package/build/dex/maverick/maverick-math/maverick-pool-math.d.ts +67 -0
  19. package/build/dex/maverick/maverick-math/maverick-pool-math.js +406 -0
  20. package/build/dex/maverick/maverick-math/maverick-pool-math.js.map +1 -0
  21. package/build/dex/maverick/maverick-math/maverick-sol-math.d.ts +17 -0
  22. package/build/dex/maverick/maverick-math/maverick-sol-math.js +139 -0
  23. package/build/dex/maverick/maverick-math/maverick-sol-math.js.map +1 -0
  24. package/build/dex/maverick/maverick-pool.d.ts +41 -0
  25. package/build/dex/maverick/maverick-pool.js +130 -0
  26. package/build/dex/maverick/maverick-pool.js.map +1 -0
  27. package/build/dex/maverick/maverick.d.ts +42 -0
  28. package/build/dex/maverick/maverick.js +174 -0
  29. package/build/dex/maverick/maverick.js.map +1 -0
  30. package/build/dex/maverick/subgraph-queries.d.ts +4 -0
  31. package/build/dex/maverick/subgraph-queries.js +114 -0
  32. package/build/dex/maverick/subgraph-queries.js.map +1 -0
  33. package/build/dex/maverick/types.d.ts +46 -0
  34. package/build/dex/maverick/types.js +3 -0
  35. package/build/dex/maverick/types.js.map +1 -0
  36. package/build/lib/fetcher/fetcher.js +3 -0
  37. package/build/lib/fetcher/fetcher.js.map +1 -1
  38. package/package.json +1 -1
  39. package/src/dex/curve-v1/config.ts +19 -19
  40. package/src/dex/curve-v1/curve-v1-e2e.test.ts +89 -0
  41. package/src/dex/curve-v1-factory/config.ts +2 -5
  42. package/src/dex/generic-rfq/e2e-test-config.ts +37 -0
  43. package/src/dex/generic-rfq/generic-rfq-e2e.test.ts +63 -258
  44. package/src/dex/generic-rfq/generic-rfq-local-e2e.test.ts +121 -0
  45. package/src/dex/generic-rfq/rate-fetcher.ts +2 -0
  46. package/src/dex/generic-rfq/validators.test.ts +6 -32
  47. package/src/dex/generic-rfq/validators.ts +57 -32
  48. package/src/lib/fetcher/fetcher.ts +6 -0
  49. package/tests/constants-e2e.ts +12 -0
  50. package/tests/utils-e2e.ts +59 -48
@@ -132,6 +132,95 @@ describe('CurveV1 E2E', () => {
132
132
  });
133
133
  });
134
134
  });
135
+
136
+ describe('FANTOM', () => {
137
+ const network = Network.FANTOM;
138
+ const tokens = Tokens[network];
139
+ const holders = Holders[network];
140
+ const provider = new StaticJsonRpcProvider(
141
+ generateConfig(network).privateHttpProvider,
142
+ network,
143
+ );
144
+
145
+ const tokensToTest = [
146
+ [
147
+ {
148
+ symbol: 'DAI',
149
+ amount: (10 ** 18).toString(),
150
+ },
151
+ {
152
+ symbol: 'USDC',
153
+ amount: (10 ** 6).toString(),
154
+ },
155
+ ],
156
+ [
157
+ {
158
+ symbol: 'DAI',
159
+ amount: (10 ** 18).toString(),
160
+ },
161
+ {
162
+ symbol: 'FUSDT',
163
+ amount: (10 ** 6).toString(),
164
+ },
165
+ ],
166
+ [
167
+ {
168
+ symbol: 'GDAI',
169
+ amount: (10 ** 18).toString(),
170
+ },
171
+ {
172
+ symbol: 'GUSDC',
173
+ amount: (10 ** 6).toString(),
174
+ },
175
+ ],
176
+ ];
177
+
178
+ const sideToContractMethods = new Map([
179
+ [
180
+ SwapSide.SELL,
181
+ [
182
+ ContractMethod.simpleSwap,
183
+ ContractMethod.multiSwap,
184
+ ContractMethod.megaSwap,
185
+ ],
186
+ ],
187
+ ]);
188
+
189
+ sideToContractMethods.forEach((contractMethods, side) =>
190
+ contractMethods.forEach((contractMethod: ContractMethod) => {
191
+ tokensToTest.forEach(pair => {
192
+ describe(`${contractMethod}`, () => {
193
+ it(`${pair[0].symbol} -> ${pair[1].symbol}`, async () => {
194
+ await testE2E(
195
+ tokens[pair[0].symbol],
196
+ tokens[pair[1].symbol],
197
+ holders[pair[0].symbol],
198
+ side === SwapSide.SELL ? pair[0].amount : pair[1].amount,
199
+ side,
200
+ dexKey,
201
+ contractMethod,
202
+ network,
203
+ provider,
204
+ );
205
+ });
206
+ });
207
+ });
208
+ }),
209
+ );
210
+ it('simpleSwap DAI -> USDC', async () => {
211
+ await testE2E(
212
+ tokens['DAI'],
213
+ tokens['USDC'],
214
+ holders['DAI'],
215
+ '100000000000000000000',
216
+ SwapSide.SELL,
217
+ dexKey,
218
+ ContractMethod.simpleSwap,
219
+ network,
220
+ provider,
221
+ );
222
+ });
223
+ });
135
224
  });
136
225
 
137
226
  describe('Acryptos E2E', () => {
@@ -259,11 +259,8 @@ const CurveV1FactoryConfig: DexConfigMap<DexParams> = {
259
259
  [Network.FANTOM]: {
260
260
  factoryAddress: '0x686d67265703D1f124c45E33d47d794c566889Ba',
261
261
  stateUpdatePeriodMs: 2 * 1000,
262
- disabledPools: new Set(['0x0fa949783947Bf6c1b171DB13AEACBB488845B3f']),
263
- disabledImplementations: new Set([
264
- '0x210c806f6ae850279f7e298de749ec4b427d00dd',
265
- '0xf82162bb68ad5a168345bb7efb2faa0edcca5177',
266
- ]),
262
+ disabledPools: new Set([]),
263
+ disabledImplementations: new Set([]),
267
264
  factoryPoolImplementations: {
268
265
  '0x61E10659fe3aa93d036d099405224E4Ac24996d0': {
269
266
  name: ImplementationNames.FACTORY_PLAIN_2_BASIC,
@@ -0,0 +1,37 @@
1
+ import { Network, SwapSide } from '../../constants';
2
+
3
+ export const testConfig: {
4
+ [network: number]: Array<{
5
+ srcToken: string;
6
+ destToken: string;
7
+ swapSide: SwapSide;
8
+ amount: string;
9
+ }>;
10
+ } = {
11
+ [Network.MAINNET]: [
12
+ {
13
+ srcToken: 'USDT',
14
+ destToken: 'WETH',
15
+ swapSide: SwapSide.BUY,
16
+ amount: '10000000000000000',
17
+ },
18
+ {
19
+ srcToken: 'WETH',
20
+ destToken: 'USDT',
21
+ swapSide: SwapSide.BUY,
22
+ amount: '1000000',
23
+ },
24
+ {
25
+ srcToken: 'USDT',
26
+ destToken: 'WETH',
27
+ swapSide: SwapSide.SELL,
28
+ amount: '1000000',
29
+ },
30
+ {
31
+ srcToken: 'WETH',
32
+ destToken: 'USDT',
33
+ swapSide: SwapSide.SELL,
34
+ amount: '10000000000000000',
35
+ },
36
+ ],
37
+ };
@@ -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';
10
9
  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,113 +19,13 @@ 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
-
124
22
  const buildConfigForGenericRFQ = (): RFQConfig => {
125
23
  const url = getEnv('GENERIC_RFQ_URL');
126
24
 
127
25
  const secret = {
128
- secretKey: atob(getEnv('GENERIC_RFQ_SECRET_KEY')),
26
+ secretKey: Buffer.from(getEnv('GENERIC_RFQ_SECRET_KEY'), 'base64').toString(
27
+ 'binary',
28
+ ),
129
29
  accessKey: getEnv('GENERIC_RFQ_ACCESS_KEY'),
130
30
  domain: 'paraswap',
131
31
  };
@@ -179,160 +79,65 @@ const buildConfigForGenericRFQ = (): RFQConfig => {
179
79
  };
180
80
  };
181
81
 
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,
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
+ });
334
139
  });
335
- });
140
+ }
336
141
  });
337
- });
142
+ }
338
143
  });
@@ -0,0 +1,121 @@
1
+ import dotenv from 'dotenv';
2
+ dotenv.config();
3
+
4
+ import { ethers } from 'ethers';
5
+ import { Network, ContractMethod, SwapSide, MAX_UINT } from '../../constants';
6
+ import { generateConfig } from '../../config';
7
+ import { newTestE2E } from '../../../tests/utils-e2e';
8
+ import { SmartTokens, GENERIC_ADDR1 } from '../../../tests/constants-e2e';
9
+ import { startTestServer } from './example-api.test';
10
+
11
+ const PK_KEY = process.env.TEST_PK_KEY;
12
+
13
+ if (!PK_KEY) {
14
+ throw new Error('Missing TEST_PK_KEY');
15
+ }
16
+
17
+ const testAccount = new ethers.Wallet(PK_KEY!);
18
+
19
+ jest.setTimeout(1000 * 60 * 3);
20
+
21
+ describe('GenericRFQ E2E Mainnet', () => {
22
+ let stopServer: undefined | Function = undefined;
23
+
24
+ beforeAll(() => {
25
+ stopServer = startTestServer(testAccount);
26
+ });
27
+
28
+ const network = Network.MAINNET;
29
+ const smartTokens = SmartTokens[network];
30
+
31
+ const srcToken = smartTokens.WETH;
32
+ const destToken = smartTokens.DAI;
33
+
34
+ const config = generateConfig(network);
35
+
36
+ describe('GenericRFQ', () => {
37
+ const dexKey = 'DummyParaSwapPool';
38
+
39
+ srcToken.addBalance(testAccount.address, MAX_UINT);
40
+ srcToken.addAllowance(
41
+ testAccount.address,
42
+ config.augustusRFQAddress,
43
+ MAX_UINT,
44
+ );
45
+
46
+ destToken.addBalance(testAccount.address, MAX_UINT);
47
+ destToken.addAllowance(
48
+ testAccount.address,
49
+ config.augustusRFQAddress,
50
+ MAX_UINT,
51
+ );
52
+
53
+ describe('Simpleswap', () => {
54
+ it('SELL WETH -> DAI', async () => {
55
+ await newTestE2E({
56
+ config,
57
+ srcToken,
58
+ destToken,
59
+ senderAddress: GENERIC_ADDR1,
60
+ thirdPartyAddress: testAccount.address,
61
+ _amount: '1000000000000000000',
62
+ swapSide: SwapSide.SELL,
63
+ dexKey: dexKey,
64
+ contractMethod: ContractMethod.simpleSwap,
65
+ network: network,
66
+ });
67
+ });
68
+
69
+ it('SELL DAI -> WETH', async () => {
70
+ await newTestE2E({
71
+ config,
72
+ destToken,
73
+ srcToken,
74
+ senderAddress: GENERIC_ADDR1,
75
+ thirdPartyAddress: testAccount.address,
76
+ _amount: '1000000000000000000',
77
+ swapSide: SwapSide.SELL,
78
+ dexKey: dexKey,
79
+ contractMethod: ContractMethod.simpleSwap,
80
+ network: network,
81
+ });
82
+ });
83
+
84
+ it('BUY WETH -> DAI', async () => {
85
+ await newTestE2E({
86
+ config,
87
+ srcToken,
88
+ destToken,
89
+ senderAddress: GENERIC_ADDR1,
90
+ thirdPartyAddress: testAccount.address,
91
+ _amount: '1000000000000000000',
92
+ swapSide: SwapSide.BUY,
93
+ dexKey: dexKey,
94
+ contractMethod: ContractMethod.simpleBuy,
95
+ network: network,
96
+ });
97
+ });
98
+
99
+ it('BUY DAI -> WETH', async () => {
100
+ await newTestE2E({
101
+ config,
102
+ destToken,
103
+ srcToken,
104
+ senderAddress: GENERIC_ADDR1,
105
+ thirdPartyAddress: testAccount.address,
106
+ _amount: '1000000000000000000',
107
+ swapSide: SwapSide.BUY,
108
+ dexKey: dexKey,
109
+ contractMethod: ContractMethod.simpleBuy,
110
+ network: network,
111
+ });
112
+ });
113
+ });
114
+ });
115
+
116
+ afterAll(() => {
117
+ if (stopServer) {
118
+ stopServer();
119
+ }
120
+ });
121
+ });
@@ -403,9 +403,11 @@ export class RateFetcher {
403
403
  delete payload.secret;
404
404
  }
405
405
 
406
+ this.logger.info('FirmRate Request:', payload);
406
407
  const { data } = await this.dexHelper.httpRequest.request<unknown>(
407
408
  payload,
408
409
  );
410
+ this.logger.info('FirmRate Response: ', data);
409
411
 
410
412
  const firmRateResp = validateAndCast<RFQFirmRateResponse>(
411
413
  data,