@paraswap/dex-lib 4.1.3 → 4.1.4-bal-v3-hooks.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 (56) hide show
  1. package/build/abi/balancer-v3/directionalFeeHook.json +684 -0
  2. package/build/abi/balancer-v3/stableSurgeHook.json +976 -0
  3. package/build/dex/balancer-v3/balancer-test-helpers.d.ts +5 -0
  4. package/build/dex/balancer-v3/balancer-test-helpers.js +122 -0
  5. package/build/dex/balancer-v3/balancer-test-helpers.js.map +1 -0
  6. package/build/dex/balancer-v3/balancer-v3-pool.d.ts +4 -1
  7. package/build/dex/balancer-v3/balancer-v3-pool.js +20 -13
  8. package/build/dex/balancer-v3/balancer-v3-pool.js.map +1 -1
  9. package/build/dex/balancer-v3/balancer-v3.d.ts +4 -0
  10. package/build/dex/balancer-v3/balancer-v3.js +29 -3
  11. package/build/dex/balancer-v3/balancer-v3.js.map +1 -1
  12. package/build/dex/balancer-v3/config.js +39 -0
  13. package/build/dex/balancer-v3/config.js.map +1 -1
  14. package/build/dex/balancer-v3/getOnChainState.d.ts +1 -2
  15. package/build/dex/balancer-v3/getOnChainState.js +0 -2
  16. package/build/dex/balancer-v3/getOnChainState.js.map +1 -1
  17. package/build/dex/balancer-v3/getPoolsApi.d.ts +2 -1
  18. package/build/dex/balancer-v3/getPoolsApi.js +17 -10
  19. package/build/dex/balancer-v3/getPoolsApi.js.map +1 -1
  20. package/build/dex/balancer-v3/getTopPoolsApi.d.ts +5 -1
  21. package/build/dex/balancer-v3/getTopPoolsApi.js +6 -3
  22. package/build/dex/balancer-v3/getTopPoolsApi.js.map +1 -1
  23. package/build/dex/balancer-v3/hooks/balancer-hook-event-subscriber.d.ts +54 -0
  24. package/build/dex/balancer-v3/hooks/balancer-hook-event-subscriber.js +153 -0
  25. package/build/dex/balancer-v3/hooks/balancer-hook-event-subscriber.js.map +1 -0
  26. package/build/dex/balancer-v3/hooks/directionalFeeHook.d.ts +26 -0
  27. package/build/dex/balancer-v3/hooks/directionalFeeHook.js +41 -0
  28. package/build/dex/balancer-v3/hooks/directionalFeeHook.js.map +1 -0
  29. package/build/dex/balancer-v3/hooks/loadHooksConfig.d.ts +2 -0
  30. package/build/dex/balancer-v3/hooks/loadHooksConfig.js +11 -0
  31. package/build/dex/balancer-v3/hooks/loadHooksConfig.js.map +1 -0
  32. package/build/dex/balancer-v3/hooks/stableSurgeHook.d.ts +39 -0
  33. package/build/dex/balancer-v3/hooks/stableSurgeHook.js +99 -0
  34. package/build/dex/balancer-v3/hooks/stableSurgeHook.js.map +1 -0
  35. package/build/dex/balancer-v3/types.d.ts +4 -1
  36. package/package.json +2 -2
  37. package/scripts/run-dex-integration-v3.ts +4 -4
  38. package/src/abi/balancer-v3/directionalFeeHook.json +684 -0
  39. package/src/abi/balancer-v3/stableSurgeHook.json +976 -0
  40. package/src/dex/balancer-v3/balancer-hooks-events.test.ts +99 -0
  41. package/src/dex/balancer-v3/balancer-stableSurge.test.ts +110 -0
  42. package/src/dex/balancer-v3/balancer-test-helpers.ts +199 -0
  43. package/src/dex/balancer-v3/balancer-v3-e2e.test.ts +20 -0
  44. package/src/dex/balancer-v3/balancer-v3-integration.test.ts +2 -197
  45. package/src/dex/balancer-v3/balancer-v3-pool.ts +37 -13
  46. package/src/dex/balancer-v3/balancer-v3.ts +42 -1
  47. package/src/dex/balancer-v3/config.ts +39 -0
  48. package/src/dex/balancer-v3/getOnChainState.ts +1 -4
  49. package/src/dex/balancer-v3/getPoolsApi.ts +42 -23
  50. package/src/dex/balancer-v3/getTopPoolsApi.ts +13 -2
  51. package/src/dex/balancer-v3/hooks/balancer-hook-event-subscriber.ts +226 -0
  52. package/src/dex/balancer-v3/hooks/directionalFeeHook.ts +51 -0
  53. package/src/dex/balancer-v3/hooks/loadHooksConfig.ts +12 -0
  54. package/src/dex/balancer-v3/hooks/stableSurgeHook.ts +163 -0
  55. package/src/dex/balancer-v3/types.ts +4 -2
  56. package/tests/constants-e2e.ts +6 -1
@@ -0,0 +1,684 @@
1
+ [
2
+ {
3
+ "inputs": [
4
+ {
5
+ "internalType": "contract IVault",
6
+ "name": "vault",
7
+ "type": "address"
8
+ },
9
+ {
10
+ "internalType": "address",
11
+ "name": "allowedStablePoolFactory",
12
+ "type": "address"
13
+ }
14
+ ],
15
+ "stateMutability": "nonpayable",
16
+ "type": "constructor"
17
+ },
18
+ {
19
+ "inputs": [
20
+ {
21
+ "internalType": "address",
22
+ "name": "sender",
23
+ "type": "address"
24
+ }
25
+ ],
26
+ "name": "SenderIsNotVault",
27
+ "type": "error"
28
+ },
29
+ {
30
+ "anonymous": false,
31
+ "inputs": [
32
+ {
33
+ "indexed": true,
34
+ "internalType": "address",
35
+ "name": "hooksContract",
36
+ "type": "address"
37
+ },
38
+ {
39
+ "indexed": true,
40
+ "internalType": "address",
41
+ "name": "factory",
42
+ "type": "address"
43
+ },
44
+ {
45
+ "indexed": true,
46
+ "internalType": "address",
47
+ "name": "pool",
48
+ "type": "address"
49
+ }
50
+ ],
51
+ "name": "DirectionalFeeHookExampleRegistered",
52
+ "type": "event"
53
+ },
54
+ {
55
+ "inputs": [],
56
+ "name": "getHookFlags",
57
+ "outputs": [
58
+ {
59
+ "components": [
60
+ {
61
+ "internalType": "bool",
62
+ "name": "enableHookAdjustedAmounts",
63
+ "type": "bool"
64
+ },
65
+ {
66
+ "internalType": "bool",
67
+ "name": "shouldCallBeforeInitialize",
68
+ "type": "bool"
69
+ },
70
+ {
71
+ "internalType": "bool",
72
+ "name": "shouldCallAfterInitialize",
73
+ "type": "bool"
74
+ },
75
+ {
76
+ "internalType": "bool",
77
+ "name": "shouldCallComputeDynamicSwapFee",
78
+ "type": "bool"
79
+ },
80
+ {
81
+ "internalType": "bool",
82
+ "name": "shouldCallBeforeSwap",
83
+ "type": "bool"
84
+ },
85
+ {
86
+ "internalType": "bool",
87
+ "name": "shouldCallAfterSwap",
88
+ "type": "bool"
89
+ },
90
+ {
91
+ "internalType": "bool",
92
+ "name": "shouldCallBeforeAddLiquidity",
93
+ "type": "bool"
94
+ },
95
+ {
96
+ "internalType": "bool",
97
+ "name": "shouldCallAfterAddLiquidity",
98
+ "type": "bool"
99
+ },
100
+ {
101
+ "internalType": "bool",
102
+ "name": "shouldCallBeforeRemoveLiquidity",
103
+ "type": "bool"
104
+ },
105
+ {
106
+ "internalType": "bool",
107
+ "name": "shouldCallAfterRemoveLiquidity",
108
+ "type": "bool"
109
+ }
110
+ ],
111
+ "internalType": "struct HookFlags",
112
+ "name": "hookFlags",
113
+ "type": "tuple"
114
+ }
115
+ ],
116
+ "stateMutability": "pure",
117
+ "type": "function"
118
+ },
119
+ {
120
+ "inputs": [
121
+ {
122
+ "internalType": "address",
123
+ "name": "",
124
+ "type": "address"
125
+ },
126
+ {
127
+ "internalType": "address",
128
+ "name": "",
129
+ "type": "address"
130
+ },
131
+ {
132
+ "internalType": "enum AddLiquidityKind",
133
+ "name": "",
134
+ "type": "uint8"
135
+ },
136
+ {
137
+ "internalType": "uint256[]",
138
+ "name": "",
139
+ "type": "uint256[]"
140
+ },
141
+ {
142
+ "internalType": "uint256[]",
143
+ "name": "amountsInRaw",
144
+ "type": "uint256[]"
145
+ },
146
+ {
147
+ "internalType": "uint256",
148
+ "name": "",
149
+ "type": "uint256"
150
+ },
151
+ {
152
+ "internalType": "uint256[]",
153
+ "name": "",
154
+ "type": "uint256[]"
155
+ },
156
+ {
157
+ "internalType": "bytes",
158
+ "name": "",
159
+ "type": "bytes"
160
+ }
161
+ ],
162
+ "name": "onAfterAddLiquidity",
163
+ "outputs": [
164
+ {
165
+ "internalType": "bool",
166
+ "name": "",
167
+ "type": "bool"
168
+ },
169
+ {
170
+ "internalType": "uint256[]",
171
+ "name": "",
172
+ "type": "uint256[]"
173
+ }
174
+ ],
175
+ "stateMutability": "nonpayable",
176
+ "type": "function"
177
+ },
178
+ {
179
+ "inputs": [
180
+ {
181
+ "internalType": "uint256[]",
182
+ "name": "",
183
+ "type": "uint256[]"
184
+ },
185
+ {
186
+ "internalType": "uint256",
187
+ "name": "",
188
+ "type": "uint256"
189
+ },
190
+ {
191
+ "internalType": "bytes",
192
+ "name": "",
193
+ "type": "bytes"
194
+ }
195
+ ],
196
+ "name": "onAfterInitialize",
197
+ "outputs": [
198
+ {
199
+ "internalType": "bool",
200
+ "name": "",
201
+ "type": "bool"
202
+ }
203
+ ],
204
+ "stateMutability": "nonpayable",
205
+ "type": "function"
206
+ },
207
+ {
208
+ "inputs": [
209
+ {
210
+ "internalType": "address",
211
+ "name": "",
212
+ "type": "address"
213
+ },
214
+ {
215
+ "internalType": "address",
216
+ "name": "",
217
+ "type": "address"
218
+ },
219
+ {
220
+ "internalType": "enum RemoveLiquidityKind",
221
+ "name": "",
222
+ "type": "uint8"
223
+ },
224
+ {
225
+ "internalType": "uint256",
226
+ "name": "",
227
+ "type": "uint256"
228
+ },
229
+ {
230
+ "internalType": "uint256[]",
231
+ "name": "",
232
+ "type": "uint256[]"
233
+ },
234
+ {
235
+ "internalType": "uint256[]",
236
+ "name": "amountsOutRaw",
237
+ "type": "uint256[]"
238
+ },
239
+ {
240
+ "internalType": "uint256[]",
241
+ "name": "",
242
+ "type": "uint256[]"
243
+ },
244
+ {
245
+ "internalType": "bytes",
246
+ "name": "",
247
+ "type": "bytes"
248
+ }
249
+ ],
250
+ "name": "onAfterRemoveLiquidity",
251
+ "outputs": [
252
+ {
253
+ "internalType": "bool",
254
+ "name": "",
255
+ "type": "bool"
256
+ },
257
+ {
258
+ "internalType": "uint256[]",
259
+ "name": "",
260
+ "type": "uint256[]"
261
+ }
262
+ ],
263
+ "stateMutability": "nonpayable",
264
+ "type": "function"
265
+ },
266
+ {
267
+ "inputs": [
268
+ {
269
+ "components": [
270
+ {
271
+ "internalType": "enum SwapKind",
272
+ "name": "kind",
273
+ "type": "uint8"
274
+ },
275
+ {
276
+ "internalType": "contract IERC20",
277
+ "name": "tokenIn",
278
+ "type": "address"
279
+ },
280
+ {
281
+ "internalType": "contract IERC20",
282
+ "name": "tokenOut",
283
+ "type": "address"
284
+ },
285
+ {
286
+ "internalType": "uint256",
287
+ "name": "amountInScaled18",
288
+ "type": "uint256"
289
+ },
290
+ {
291
+ "internalType": "uint256",
292
+ "name": "amountOutScaled18",
293
+ "type": "uint256"
294
+ },
295
+ {
296
+ "internalType": "uint256",
297
+ "name": "tokenInBalanceScaled18",
298
+ "type": "uint256"
299
+ },
300
+ {
301
+ "internalType": "uint256",
302
+ "name": "tokenOutBalanceScaled18",
303
+ "type": "uint256"
304
+ },
305
+ {
306
+ "internalType": "uint256",
307
+ "name": "amountCalculatedScaled18",
308
+ "type": "uint256"
309
+ },
310
+ {
311
+ "internalType": "uint256",
312
+ "name": "amountCalculatedRaw",
313
+ "type": "uint256"
314
+ },
315
+ {
316
+ "internalType": "address",
317
+ "name": "router",
318
+ "type": "address"
319
+ },
320
+ {
321
+ "internalType": "address",
322
+ "name": "pool",
323
+ "type": "address"
324
+ },
325
+ {
326
+ "internalType": "bytes",
327
+ "name": "userData",
328
+ "type": "bytes"
329
+ }
330
+ ],
331
+ "internalType": "struct AfterSwapParams",
332
+ "name": "",
333
+ "type": "tuple"
334
+ }
335
+ ],
336
+ "name": "onAfterSwap",
337
+ "outputs": [
338
+ {
339
+ "internalType": "bool",
340
+ "name": "",
341
+ "type": "bool"
342
+ },
343
+ {
344
+ "internalType": "uint256",
345
+ "name": "",
346
+ "type": "uint256"
347
+ }
348
+ ],
349
+ "stateMutability": "nonpayable",
350
+ "type": "function"
351
+ },
352
+ {
353
+ "inputs": [
354
+ {
355
+ "internalType": "address",
356
+ "name": "",
357
+ "type": "address"
358
+ },
359
+ {
360
+ "internalType": "address",
361
+ "name": "",
362
+ "type": "address"
363
+ },
364
+ {
365
+ "internalType": "enum AddLiquidityKind",
366
+ "name": "",
367
+ "type": "uint8"
368
+ },
369
+ {
370
+ "internalType": "uint256[]",
371
+ "name": "",
372
+ "type": "uint256[]"
373
+ },
374
+ {
375
+ "internalType": "uint256",
376
+ "name": "",
377
+ "type": "uint256"
378
+ },
379
+ {
380
+ "internalType": "uint256[]",
381
+ "name": "",
382
+ "type": "uint256[]"
383
+ },
384
+ {
385
+ "internalType": "bytes",
386
+ "name": "",
387
+ "type": "bytes"
388
+ }
389
+ ],
390
+ "name": "onBeforeAddLiquidity",
391
+ "outputs": [
392
+ {
393
+ "internalType": "bool",
394
+ "name": "",
395
+ "type": "bool"
396
+ }
397
+ ],
398
+ "stateMutability": "nonpayable",
399
+ "type": "function"
400
+ },
401
+ {
402
+ "inputs": [
403
+ {
404
+ "internalType": "uint256[]",
405
+ "name": "",
406
+ "type": "uint256[]"
407
+ },
408
+ {
409
+ "internalType": "bytes",
410
+ "name": "",
411
+ "type": "bytes"
412
+ }
413
+ ],
414
+ "name": "onBeforeInitialize",
415
+ "outputs": [
416
+ {
417
+ "internalType": "bool",
418
+ "name": "",
419
+ "type": "bool"
420
+ }
421
+ ],
422
+ "stateMutability": "nonpayable",
423
+ "type": "function"
424
+ },
425
+ {
426
+ "inputs": [
427
+ {
428
+ "internalType": "address",
429
+ "name": "",
430
+ "type": "address"
431
+ },
432
+ {
433
+ "internalType": "address",
434
+ "name": "",
435
+ "type": "address"
436
+ },
437
+ {
438
+ "internalType": "enum RemoveLiquidityKind",
439
+ "name": "",
440
+ "type": "uint8"
441
+ },
442
+ {
443
+ "internalType": "uint256",
444
+ "name": "",
445
+ "type": "uint256"
446
+ },
447
+ {
448
+ "internalType": "uint256[]",
449
+ "name": "",
450
+ "type": "uint256[]"
451
+ },
452
+ {
453
+ "internalType": "uint256[]",
454
+ "name": "",
455
+ "type": "uint256[]"
456
+ },
457
+ {
458
+ "internalType": "bytes",
459
+ "name": "",
460
+ "type": "bytes"
461
+ }
462
+ ],
463
+ "name": "onBeforeRemoveLiquidity",
464
+ "outputs": [
465
+ {
466
+ "internalType": "bool",
467
+ "name": "",
468
+ "type": "bool"
469
+ }
470
+ ],
471
+ "stateMutability": "nonpayable",
472
+ "type": "function"
473
+ },
474
+ {
475
+ "inputs": [
476
+ {
477
+ "components": [
478
+ {
479
+ "internalType": "enum SwapKind",
480
+ "name": "kind",
481
+ "type": "uint8"
482
+ },
483
+ {
484
+ "internalType": "uint256",
485
+ "name": "amountGivenScaled18",
486
+ "type": "uint256"
487
+ },
488
+ {
489
+ "internalType": "uint256[]",
490
+ "name": "balancesScaled18",
491
+ "type": "uint256[]"
492
+ },
493
+ {
494
+ "internalType": "uint256",
495
+ "name": "indexIn",
496
+ "type": "uint256"
497
+ },
498
+ {
499
+ "internalType": "uint256",
500
+ "name": "indexOut",
501
+ "type": "uint256"
502
+ },
503
+ {
504
+ "internalType": "address",
505
+ "name": "router",
506
+ "type": "address"
507
+ },
508
+ {
509
+ "internalType": "bytes",
510
+ "name": "userData",
511
+ "type": "bytes"
512
+ }
513
+ ],
514
+ "internalType": "struct PoolSwapParams",
515
+ "name": "",
516
+ "type": "tuple"
517
+ },
518
+ {
519
+ "internalType": "address",
520
+ "name": "",
521
+ "type": "address"
522
+ }
523
+ ],
524
+ "name": "onBeforeSwap",
525
+ "outputs": [
526
+ {
527
+ "internalType": "bool",
528
+ "name": "",
529
+ "type": "bool"
530
+ }
531
+ ],
532
+ "stateMutability": "nonpayable",
533
+ "type": "function"
534
+ },
535
+ {
536
+ "inputs": [
537
+ {
538
+ "components": [
539
+ {
540
+ "internalType": "enum SwapKind",
541
+ "name": "kind",
542
+ "type": "uint8"
543
+ },
544
+ {
545
+ "internalType": "uint256",
546
+ "name": "amountGivenScaled18",
547
+ "type": "uint256"
548
+ },
549
+ {
550
+ "internalType": "uint256[]",
551
+ "name": "balancesScaled18",
552
+ "type": "uint256[]"
553
+ },
554
+ {
555
+ "internalType": "uint256",
556
+ "name": "indexIn",
557
+ "type": "uint256"
558
+ },
559
+ {
560
+ "internalType": "uint256",
561
+ "name": "indexOut",
562
+ "type": "uint256"
563
+ },
564
+ {
565
+ "internalType": "address",
566
+ "name": "router",
567
+ "type": "address"
568
+ },
569
+ {
570
+ "internalType": "bytes",
571
+ "name": "userData",
572
+ "type": "bytes"
573
+ }
574
+ ],
575
+ "internalType": "struct PoolSwapParams",
576
+ "name": "params",
577
+ "type": "tuple"
578
+ },
579
+ {
580
+ "internalType": "address",
581
+ "name": "pool",
582
+ "type": "address"
583
+ },
584
+ {
585
+ "internalType": "uint256",
586
+ "name": "staticSwapFeePercentage",
587
+ "type": "uint256"
588
+ }
589
+ ],
590
+ "name": "onComputeDynamicSwapFeePercentage",
591
+ "outputs": [
592
+ {
593
+ "internalType": "bool",
594
+ "name": "",
595
+ "type": "bool"
596
+ },
597
+ {
598
+ "internalType": "uint256",
599
+ "name": "",
600
+ "type": "uint256"
601
+ }
602
+ ],
603
+ "stateMutability": "view",
604
+ "type": "function"
605
+ },
606
+ {
607
+ "inputs": [
608
+ {
609
+ "internalType": "address",
610
+ "name": "factory",
611
+ "type": "address"
612
+ },
613
+ {
614
+ "internalType": "address",
615
+ "name": "pool",
616
+ "type": "address"
617
+ },
618
+ {
619
+ "components": [
620
+ {
621
+ "internalType": "contract IERC20",
622
+ "name": "token",
623
+ "type": "address"
624
+ },
625
+ {
626
+ "internalType": "enum TokenType",
627
+ "name": "tokenType",
628
+ "type": "uint8"
629
+ },
630
+ {
631
+ "internalType": "contract IRateProvider",
632
+ "name": "rateProvider",
633
+ "type": "address"
634
+ },
635
+ {
636
+ "internalType": "bool",
637
+ "name": "paysYieldFees",
638
+ "type": "bool"
639
+ }
640
+ ],
641
+ "internalType": "struct TokenConfig[]",
642
+ "name": "",
643
+ "type": "tuple[]"
644
+ },
645
+ {
646
+ "components": [
647
+ {
648
+ "internalType": "bool",
649
+ "name": "disableUnbalancedLiquidity",
650
+ "type": "bool"
651
+ },
652
+ {
653
+ "internalType": "bool",
654
+ "name": "enableAddLiquidityCustom",
655
+ "type": "bool"
656
+ },
657
+ {
658
+ "internalType": "bool",
659
+ "name": "enableRemoveLiquidityCustom",
660
+ "type": "bool"
661
+ },
662
+ {
663
+ "internalType": "bool",
664
+ "name": "enableDonation",
665
+ "type": "bool"
666
+ }
667
+ ],
668
+ "internalType": "struct LiquidityManagement",
669
+ "name": "",
670
+ "type": "tuple"
671
+ }
672
+ ],
673
+ "name": "onRegister",
674
+ "outputs": [
675
+ {
676
+ "internalType": "bool",
677
+ "name": "",
678
+ "type": "bool"
679
+ }
680
+ ],
681
+ "stateMutability": "nonpayable",
682
+ "type": "function"
683
+ }
684
+ ]