@paraswap/dex-lib 2.12.15-friendly-local-deadline.0 → 2.12.15

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 (79) hide show
  1. package/.idea/codeStyles/codeStyleConfig.xml +5 -0
  2. package/.idea/misc.xml +6 -0
  3. package/.idea/modules.xml +8 -0
  4. package/.idea/vcs.xml +6 -0
  5. package/.vscode/launch.json +21 -0
  6. package/build/dex/aave-v3/tokens/arbitrum.json +50 -0
  7. package/build/dex/aave-v3/tokens/avalanche.json +50 -0
  8. package/build/dex/aave-v3/tokens/fantom.json +62 -0
  9. package/build/dex/aave-v3/tokens/mainnet.json +44 -0
  10. package/build/dex/aave-v3/tokens/optimism.json +50 -0
  11. package/build/dex/aave-v3/tokens/polygon.json +98 -0
  12. package/build/dex/balancer-v2/VirtualBoostedPool.d.ts +79 -0
  13. package/build/dex/balancer-v2/VirtualBoostedPool.js +382 -0
  14. package/build/dex/balancer-v2/VirtualBoostedPool.js.map +1 -0
  15. package/build/dex/generic-rfq/e2e-test-config.d.ts +9 -0
  16. package/build/dex/generic-rfq/e2e-test-config.js +33 -0
  17. package/build/dex/generic-rfq/e2e-test-config.js.map +1 -0
  18. package/build/dex/generic-rfq/rate-fetcher.js +2 -0
  19. package/build/dex/generic-rfq/rate-fetcher.js.map +1 -1
  20. package/build/dex/generic-rfq/validators.d.ts +1 -1
  21. package/build/dex/generic-rfq/validators.js +36 -26
  22. package/build/dex/generic-rfq/validators.js.map +1 -1
  23. package/build/dex/maverick-v1/maverick-v1.js +4 -4
  24. package/build/dex/maverick-v1/maverick-v1.js.map +1 -1
  25. package/build/dex/maverick-v1/types.d.ts +3 -2
  26. package/build/dex/maverick-v1/types.js.map +1 -1
  27. package/build/dex/platypus/platypus.js +3 -3
  28. package/build/dex/platypus/platypus.js.map +1 -1
  29. package/build/dex/shell.d.ts +1 -1
  30. package/build/dex/shell.js +1 -1
  31. package/build/dex/shell.js.map +1 -1
  32. package/build/dex/simple-exchange.d.ts +1 -1
  33. package/build/dex/simple-exchange.js +3 -9
  34. package/build/dex/simple-exchange.js.map +1 -1
  35. package/build/dex/test-aave-v3/config.d.ts +4 -0
  36. package/build/dex/test-aave-v3/config.js +15 -0
  37. package/build/dex/test-aave-v3/config.js.map +1 -0
  38. package/build/dex/test-aave-v3/test-aave-v3-pool.d.ts +39 -0
  39. package/build/dex/test-aave-v3/test-aave-v3-pool.js +63 -0
  40. package/build/dex/test-aave-v3/test-aave-v3-pool.js.map +1 -0
  41. package/build/dex/test-aave-v3/test-aave-v3.d.ts +37 -0
  42. package/build/dex/test-aave-v3/test-aave-v3.js +126 -0
  43. package/build/dex/test-aave-v3/test-aave-v3.js.map +1 -0
  44. package/build/dex/test-aave-v3/types.d.ts +6 -0
  45. package/build/dex/test-aave-v3/types.js +3 -0
  46. package/build/dex/test-aave-v3/types.js.map +1 -0
  47. package/build/dex/trader-joe-v2.d.ts +2 -1
  48. package/build/dex/trader-joe-v2.js +3 -3
  49. package/build/dex/trader-joe-v2.js.map +1 -1
  50. package/build/dex/uniswap-v3/types.d.ts +2 -2
  51. package/build/dex/uniswap-v3/uniswap-v3.js +3 -3
  52. package/build/dex/uniswap-v3/uniswap-v3.js.map +1 -1
  53. package/build/dex/uniswap-v3.d.ts +3 -2
  54. package/build/dex/uniswap-v3.js +5 -5
  55. package/build/dex/uniswap-v3.js.map +1 -1
  56. package/build/lib/fetcher/fetcher.js +3 -0
  57. package/build/lib/fetcher/fetcher.js.map +1 -1
  58. package/package.json +1 -1
  59. package/src/dex/generic-rfq/e2e-test-config.ts +37 -0
  60. package/src/dex/generic-rfq/generic-rfq-e2e-arbitrum.test.ts +360 -0
  61. package/src/dex/generic-rfq/generic-rfq-e2e-bsc.test.ts +346 -0
  62. package/src/dex/generic-rfq/generic-rfq-e2e-polygon.test.ts +360 -0
  63. package/src/dex/generic-rfq/generic-rfq-e2e.test.ts +63 -258
  64. package/src/dex/generic-rfq/generic-rfq-local-e2e.test.ts +121 -0
  65. package/src/dex/generic-rfq/rate-fetcher.ts +2 -0
  66. package/src/dex/generic-rfq/validators.test.ts +6 -32
  67. package/src/dex/generic-rfq/validators.ts +57 -32
  68. package/src/dex/maverick-v1/maverick-v1.ts +4 -4
  69. package/src/dex/maverick-v1/types.ts +3 -2
  70. package/src/dex/platypus/platypus.ts +3 -3
  71. package/src/dex/shell.ts +3 -2
  72. package/src/dex/simple-exchange.ts +3 -10
  73. package/src/dex/trader-joe-v2.ts +5 -4
  74. package/src/dex/uniswap-v3/types.ts +2 -2
  75. package/src/dex/uniswap-v3/uniswap-v3.ts +3 -3
  76. package/src/dex/uniswap-v3.ts +8 -7
  77. package/src/lib/fetcher/fetcher.ts +6 -0
  78. package/tests/constants-e2e.ts +2 -0
  79. package/tests/utils-e2e.ts +59 -48
@@ -0,0 +1,360 @@
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, getEnv } from '../../../tests/utils-e2e';
8
+ import { SmartTokens, GENERIC_ADDR1 } from '../../../tests/constants-e2e';
9
+ import { startTestServer } from './example-api.test';
10
+ import { RFQConfig } from './types';
11
+
12
+ const PK_KEY = process.env.TEST_PK_KEY;
13
+
14
+ if (!PK_KEY) {
15
+ throw new Error('Missing TEST_PK_KEY');
16
+ }
17
+
18
+ const testAccount = new ethers.Wallet(PK_KEY!);
19
+
20
+ jest.setTimeout(1000 * 60 * 30);
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.POLYGON;
30
+ // const smartTokens = SmartTokens[network];
31
+
32
+ // const srcToken = smartTokens.WMATIC;
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 WMATIC -> 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 -> WMATIC', 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 WMATIC -> 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 -> WMATIC', 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
+ const buildConfigForGenericRFQ = (): RFQConfig => {
125
+ const url = getEnv('GENERIC_RFQ_URL');
126
+
127
+ const secret = {
128
+ secretKey: Buffer.from(getEnv('GENERIC_RFQ_SECRET_KEY'), 'base64').toString('binary'),
129
+ accessKey: getEnv('GENERIC_RFQ_ACCESS_KEY'),
130
+ domain: 'paraswap',
131
+ };
132
+
133
+ const pathToRemove = getEnv('GENERIC_RFQ_PATH_TO_OVERRIDE');
134
+
135
+ return {
136
+ maker: getEnv('GENERIC_RFQ_MAKER_ADDRESS'),
137
+ tokensConfig: {
138
+ reqParams: {
139
+ url: `${url}/tokens`,
140
+ method: 'GET',
141
+ },
142
+ secret,
143
+ intervalMs: 1000 * 60 * 60 * 10, // every 10 minutes
144
+ dataTTLS: 1000 * 60 * 60 * 11, // ttl 11 minutes
145
+ },
146
+ pairsConfig: {
147
+ reqParams: {
148
+ url: `${url}/pairs`,
149
+ method: 'GET',
150
+ },
151
+ secret,
152
+ intervalMs: 1000 * 60 * 60 * 10, // every 10 minutes
153
+ dataTTLS: 1000 * 60 * 60 * 11, // ttl 11 minutes
154
+ },
155
+ rateConfig: {
156
+ reqParams: {
157
+ url: `${url}/prices`,
158
+ method: 'GET',
159
+ },
160
+ secret,
161
+ intervalMs: 1000 * 60 * 60 * 1, // every 1 minute
162
+ dataTTLS: 1000 * 60 * 60 * 1, // ttl 1 minute
163
+ },
164
+ firmRateConfig: {
165
+ url: `${url}/firm`,
166
+ method: 'POST',
167
+ secret,
168
+ },
169
+ blacklistConfig: {
170
+ reqParams: {
171
+ url: `${url}/blacklist`,
172
+ method: 'GET',
173
+ },
174
+ secret,
175
+ intervalMs: 1000 * 60 * 60 * 10,
176
+ dataTTLS: 1000 * 60 * 60 * 11,
177
+ },
178
+ pathToRemove,
179
+ };
180
+ };
181
+
182
+ jest.setTimeout(20000);
183
+
184
+ describe('GenericRFQ YOUR_NAME E2E Mainnet', () => {
185
+ const dexKey = 'YOUR_NAME';
186
+
187
+ const network = Network.POLYGON;
188
+ const smartTokens = SmartTokens[network];
189
+ const config = generateConfig(network);
190
+
191
+ config.rfqConfigs[dexKey] = buildConfigForGenericRFQ();
192
+
193
+ describe('GenericRFQ B/Q BUY', () => {
194
+ const srcToken = smartTokens.USDC;
195
+ const destToken = smartTokens.WMATIC;
196
+
197
+ srcToken.addBalance(testAccount.address, MAX_UINT);
198
+ srcToken.addAllowance(
199
+ testAccount.address,
200
+ config.augustusRFQAddress,
201
+ MAX_UINT,
202
+ );
203
+
204
+ destToken.addBalance(testAccount.address, MAX_UINT);
205
+ destToken.addAllowance(
206
+ testAccount.address,
207
+ config.augustusRFQAddress,
208
+ MAX_UINT,
209
+ );
210
+
211
+ // srcToken.addBalance(GENERIC_ADDR1, MAX_UINT);
212
+ // srcToken.addAllowance(
213
+ // GENERIC_ADDR1,
214
+ // config.augustusRFQAddress,
215
+ // MAX_UINT,
216
+ // );
217
+
218
+ // destToken.addBalance(GENERIC_ADDR1, MAX_UINT);
219
+ // destToken.addAllowance(
220
+ // GENERIC_ADDR1,
221
+ // config.augustusRFQAddress,
222
+ // MAX_UINT,
223
+ // );
224
+
225
+ describe('Simpleswap', () => {
226
+ it('BUY USDC -> WMATIC', async () => {
227
+ await newTestE2E({
228
+ config,
229
+ srcToken,
230
+ destToken,
231
+ senderAddress: GENERIC_ADDR1,
232
+ thirdPartyAddress: testAccount.address,
233
+ _amount: '1000000000000000000',
234
+ swapSide: SwapSide.BUY,
235
+ dexKey: dexKey,
236
+ contractMethod: ContractMethod.simpleBuy,
237
+ network: network,
238
+ sleepMs: 5000,
239
+ });
240
+ });
241
+ });
242
+ });
243
+
244
+ describe('GenericRFQ Q/B BUY', () => {
245
+ const srcToken = smartTokens.WMATIC;
246
+ const destToken = smartTokens.USDC;
247
+
248
+ srcToken.addBalance(testAccount.address, MAX_UINT);
249
+ srcToken.addAllowance(
250
+ testAccount.address,
251
+ config.augustusRFQAddress,
252
+ MAX_UINT,
253
+ );
254
+
255
+ destToken.addBalance(testAccount.address, MAX_UINT);
256
+ destToken.addAllowance(
257
+ testAccount.address,
258
+ config.augustusRFQAddress,
259
+ MAX_UINT,
260
+ );
261
+
262
+ describe('Simpleswap', () => {
263
+ it('BUY WMATIC -> USDC', async () => {
264
+ await newTestE2E({
265
+ config,
266
+ srcToken,
267
+ destToken,
268
+ senderAddress: GENERIC_ADDR1,
269
+ thirdPartyAddress: testAccount.address,
270
+ _amount: '1000000',
271
+ swapSide: SwapSide.BUY,
272
+ dexKey: dexKey,
273
+ contractMethod: ContractMethod.simpleBuy,
274
+ network: network,
275
+ sleepMs: 5000,
276
+ });
277
+ });
278
+ });
279
+ });
280
+
281
+ describe('GenericRFQ B/Q SELL', () => {
282
+ const srcToken = smartTokens.USDC;
283
+ const destToken = smartTokens.WMATIC;
284
+
285
+ srcToken.addBalance(testAccount.address, MAX_UINT);
286
+ srcToken.addAllowance(
287
+ testAccount.address,
288
+ config.augustusRFQAddress,
289
+ MAX_UINT,
290
+ );
291
+
292
+ destToken.addBalance(testAccount.address, MAX_UINT);
293
+ destToken.addAllowance(
294
+ testAccount.address,
295
+ config.augustusRFQAddress,
296
+ MAX_UINT,
297
+ );
298
+
299
+ describe('Simpleswap', () => {
300
+ it('SELL USDC -> WMATIC', async () => {
301
+ await newTestE2E({
302
+ config,
303
+ srcToken,
304
+ destToken,
305
+ senderAddress: GENERIC_ADDR1,
306
+ thirdPartyAddress: testAccount.address,
307
+ _amount: '1000000',
308
+ swapSide: SwapSide.SELL,
309
+ dexKey: dexKey,
310
+ contractMethod: ContractMethod.simpleSwap,
311
+ network: network,
312
+ sleepMs: 5000,
313
+ });
314
+ });
315
+ });
316
+ });
317
+
318
+ describe('GenericRFQ Q/B SELL', () => {
319
+ const srcToken = smartTokens.WMATIC;
320
+ const destToken = smartTokens.USDC;
321
+
322
+ srcToken.addBalance(testAccount.address, MAX_UINT);
323
+ srcToken.addAllowance(
324
+ testAccount.address,
325
+ config.augustusRFQAddress,
326
+ MAX_UINT,
327
+ );
328
+
329
+ destToken.addBalance(testAccount.address, MAX_UINT);
330
+ destToken.addAllowance(
331
+ testAccount.address,
332
+ config.augustusRFQAddress,
333
+ MAX_UINT,
334
+ );
335
+
336
+ srcToken.addBalance(GENERIC_ADDR1, MAX_UINT);
337
+ srcToken.addAllowance(GENERIC_ADDR1, config.augustusRFQAddress, MAX_UINT);
338
+
339
+ destToken.addBalance(GENERIC_ADDR1, MAX_UINT);
340
+ destToken.addAllowance(GENERIC_ADDR1, config.augustusRFQAddress, MAX_UINT);
341
+
342
+ describe('Simpleswap', () => {
343
+ it('SELL WMATIC -> USDC', async () => {
344
+ await newTestE2E({
345
+ config,
346
+ srcToken,
347
+ destToken,
348
+ senderAddress: GENERIC_ADDR1,
349
+ thirdPartyAddress: testAccount.address,
350
+ _amount: '10000000000000000000',
351
+ swapSide: SwapSide.SELL,
352
+ dexKey: dexKey,
353
+ contractMethod: ContractMethod.simpleSwap,
354
+ network: network,
355
+ sleepMs: 15000,
356
+ });
357
+ }, 30000);
358
+ });
359
+ });
360
+ });
@@ -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
  });