@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,976 @@
1
+ [
2
+ {
3
+ "inputs": [
4
+ {
5
+ "internalType": "contract IVault",
6
+ "name": "vault",
7
+ "type": "address"
8
+ },
9
+ {
10
+ "internalType": "uint256",
11
+ "name": "defaultMaxSurgeFeePercentage",
12
+ "type": "uint256"
13
+ },
14
+ {
15
+ "internalType": "uint256",
16
+ "name": "defaultSurgeThresholdPercentage",
17
+ "type": "uint256"
18
+ }
19
+ ],
20
+ "stateMutability": "nonpayable",
21
+ "type": "constructor"
22
+ },
23
+ {
24
+ "inputs": [],
25
+ "name": "InputLengthMismatch",
26
+ "type": "error"
27
+ },
28
+ {
29
+ "inputs": [],
30
+ "name": "InvalidPercentage",
31
+ "type": "error"
32
+ },
33
+ {
34
+ "inputs": [
35
+ {
36
+ "internalType": "uint8",
37
+ "name": "bits",
38
+ "type": "uint8"
39
+ },
40
+ {
41
+ "internalType": "uint256",
42
+ "name": "value",
43
+ "type": "uint256"
44
+ }
45
+ ],
46
+ "name": "SafeCastOverflowedUintDowncast",
47
+ "type": "error"
48
+ },
49
+ {
50
+ "inputs": [
51
+ {
52
+ "internalType": "address",
53
+ "name": "sender",
54
+ "type": "address"
55
+ }
56
+ ],
57
+ "name": "SenderIsNotVault",
58
+ "type": "error"
59
+ },
60
+ {
61
+ "inputs": [],
62
+ "name": "SenderNotAllowed",
63
+ "type": "error"
64
+ },
65
+ {
66
+ "anonymous": false,
67
+ "inputs": [
68
+ {
69
+ "indexed": true,
70
+ "internalType": "address",
71
+ "name": "pool",
72
+ "type": "address"
73
+ },
74
+ {
75
+ "indexed": false,
76
+ "internalType": "uint256",
77
+ "name": "newMaxSurgeFeePercentage",
78
+ "type": "uint256"
79
+ }
80
+ ],
81
+ "name": "MaxSurgeFeePercentageChanged",
82
+ "type": "event"
83
+ },
84
+ {
85
+ "anonymous": false,
86
+ "inputs": [
87
+ {
88
+ "indexed": true,
89
+ "internalType": "address",
90
+ "name": "pool",
91
+ "type": "address"
92
+ },
93
+ {
94
+ "indexed": true,
95
+ "internalType": "address",
96
+ "name": "factory",
97
+ "type": "address"
98
+ }
99
+ ],
100
+ "name": "StableSurgeHookRegistered",
101
+ "type": "event"
102
+ },
103
+ {
104
+ "anonymous": false,
105
+ "inputs": [
106
+ {
107
+ "indexed": true,
108
+ "internalType": "address",
109
+ "name": "pool",
110
+ "type": "address"
111
+ },
112
+ {
113
+ "indexed": false,
114
+ "internalType": "uint256",
115
+ "name": "newSurgeThresholdPercentage",
116
+ "type": "uint256"
117
+ }
118
+ ],
119
+ "name": "ThresholdSurgePercentageChanged",
120
+ "type": "event"
121
+ },
122
+ {
123
+ "inputs": [
124
+ {
125
+ "internalType": "bytes4",
126
+ "name": "selector",
127
+ "type": "bytes4"
128
+ }
129
+ ],
130
+ "name": "getActionId",
131
+ "outputs": [
132
+ {
133
+ "internalType": "bytes32",
134
+ "name": "",
135
+ "type": "bytes32"
136
+ }
137
+ ],
138
+ "stateMutability": "view",
139
+ "type": "function"
140
+ },
141
+ {
142
+ "inputs": [],
143
+ "name": "getAllowedPoolFactory",
144
+ "outputs": [
145
+ {
146
+ "internalType": "address",
147
+ "name": "",
148
+ "type": "address"
149
+ }
150
+ ],
151
+ "stateMutability": "view",
152
+ "type": "function"
153
+ },
154
+ {
155
+ "inputs": [],
156
+ "name": "getAuthorizer",
157
+ "outputs": [
158
+ {
159
+ "internalType": "contract IAuthorizer",
160
+ "name": "",
161
+ "type": "address"
162
+ }
163
+ ],
164
+ "stateMutability": "view",
165
+ "type": "function"
166
+ },
167
+ {
168
+ "inputs": [],
169
+ "name": "getDefaultMaxSurgeFeePercentage",
170
+ "outputs": [
171
+ {
172
+ "internalType": "uint256",
173
+ "name": "",
174
+ "type": "uint256"
175
+ }
176
+ ],
177
+ "stateMutability": "view",
178
+ "type": "function"
179
+ },
180
+ {
181
+ "inputs": [],
182
+ "name": "getDefaultSurgeThresholdPercentage",
183
+ "outputs": [
184
+ {
185
+ "internalType": "uint256",
186
+ "name": "",
187
+ "type": "uint256"
188
+ }
189
+ ],
190
+ "stateMutability": "view",
191
+ "type": "function"
192
+ },
193
+ {
194
+ "inputs": [],
195
+ "name": "getHookFlags",
196
+ "outputs": [
197
+ {
198
+ "components": [
199
+ {
200
+ "internalType": "bool",
201
+ "name": "enableHookAdjustedAmounts",
202
+ "type": "bool"
203
+ },
204
+ {
205
+ "internalType": "bool",
206
+ "name": "shouldCallBeforeInitialize",
207
+ "type": "bool"
208
+ },
209
+ {
210
+ "internalType": "bool",
211
+ "name": "shouldCallAfterInitialize",
212
+ "type": "bool"
213
+ },
214
+ {
215
+ "internalType": "bool",
216
+ "name": "shouldCallComputeDynamicSwapFee",
217
+ "type": "bool"
218
+ },
219
+ {
220
+ "internalType": "bool",
221
+ "name": "shouldCallBeforeSwap",
222
+ "type": "bool"
223
+ },
224
+ {
225
+ "internalType": "bool",
226
+ "name": "shouldCallAfterSwap",
227
+ "type": "bool"
228
+ },
229
+ {
230
+ "internalType": "bool",
231
+ "name": "shouldCallBeforeAddLiquidity",
232
+ "type": "bool"
233
+ },
234
+ {
235
+ "internalType": "bool",
236
+ "name": "shouldCallAfterAddLiquidity",
237
+ "type": "bool"
238
+ },
239
+ {
240
+ "internalType": "bool",
241
+ "name": "shouldCallBeforeRemoveLiquidity",
242
+ "type": "bool"
243
+ },
244
+ {
245
+ "internalType": "bool",
246
+ "name": "shouldCallAfterRemoveLiquidity",
247
+ "type": "bool"
248
+ }
249
+ ],
250
+ "internalType": "struct HookFlags",
251
+ "name": "hookFlags",
252
+ "type": "tuple"
253
+ }
254
+ ],
255
+ "stateMutability": "pure",
256
+ "type": "function"
257
+ },
258
+ {
259
+ "inputs": [
260
+ {
261
+ "internalType": "address",
262
+ "name": "pool",
263
+ "type": "address"
264
+ }
265
+ ],
266
+ "name": "getMaxSurgeFeePercentage",
267
+ "outputs": [
268
+ {
269
+ "internalType": "uint256",
270
+ "name": "",
271
+ "type": "uint256"
272
+ }
273
+ ],
274
+ "stateMutability": "view",
275
+ "type": "function"
276
+ },
277
+ {
278
+ "inputs": [
279
+ {
280
+ "components": [
281
+ {
282
+ "internalType": "enum SwapKind",
283
+ "name": "kind",
284
+ "type": "uint8"
285
+ },
286
+ {
287
+ "internalType": "uint256",
288
+ "name": "amountGivenScaled18",
289
+ "type": "uint256"
290
+ },
291
+ {
292
+ "internalType": "uint256[]",
293
+ "name": "balancesScaled18",
294
+ "type": "uint256[]"
295
+ },
296
+ {
297
+ "internalType": "uint256",
298
+ "name": "indexIn",
299
+ "type": "uint256"
300
+ },
301
+ {
302
+ "internalType": "uint256",
303
+ "name": "indexOut",
304
+ "type": "uint256"
305
+ },
306
+ {
307
+ "internalType": "address",
308
+ "name": "router",
309
+ "type": "address"
310
+ },
311
+ {
312
+ "internalType": "bytes",
313
+ "name": "userData",
314
+ "type": "bytes"
315
+ }
316
+ ],
317
+ "internalType": "struct PoolSwapParams",
318
+ "name": "params",
319
+ "type": "tuple"
320
+ },
321
+ {
322
+ "internalType": "address",
323
+ "name": "pool",
324
+ "type": "address"
325
+ },
326
+ {
327
+ "internalType": "uint256",
328
+ "name": "staticFeePercentage",
329
+ "type": "uint256"
330
+ }
331
+ ],
332
+ "name": "getSurgeFeePercentage",
333
+ "outputs": [
334
+ {
335
+ "internalType": "uint256",
336
+ "name": "",
337
+ "type": "uint256"
338
+ }
339
+ ],
340
+ "stateMutability": "view",
341
+ "type": "function"
342
+ },
343
+ {
344
+ "inputs": [
345
+ {
346
+ "internalType": "address",
347
+ "name": "pool",
348
+ "type": "address"
349
+ }
350
+ ],
351
+ "name": "getSurgeThresholdPercentage",
352
+ "outputs": [
353
+ {
354
+ "internalType": "uint256",
355
+ "name": "",
356
+ "type": "uint256"
357
+ }
358
+ ],
359
+ "stateMutability": "view",
360
+ "type": "function"
361
+ },
362
+ {
363
+ "inputs": [],
364
+ "name": "getVault",
365
+ "outputs": [
366
+ {
367
+ "internalType": "contract IVault",
368
+ "name": "",
369
+ "type": "address"
370
+ }
371
+ ],
372
+ "stateMutability": "view",
373
+ "type": "function"
374
+ },
375
+ {
376
+ "inputs": [
377
+ {
378
+ "internalType": "address",
379
+ "name": "",
380
+ "type": "address"
381
+ },
382
+ {
383
+ "internalType": "address",
384
+ "name": "",
385
+ "type": "address"
386
+ },
387
+ {
388
+ "internalType": "enum AddLiquidityKind",
389
+ "name": "",
390
+ "type": "uint8"
391
+ },
392
+ {
393
+ "internalType": "uint256[]",
394
+ "name": "",
395
+ "type": "uint256[]"
396
+ },
397
+ {
398
+ "internalType": "uint256[]",
399
+ "name": "amountsInRaw",
400
+ "type": "uint256[]"
401
+ },
402
+ {
403
+ "internalType": "uint256",
404
+ "name": "",
405
+ "type": "uint256"
406
+ },
407
+ {
408
+ "internalType": "uint256[]",
409
+ "name": "",
410
+ "type": "uint256[]"
411
+ },
412
+ {
413
+ "internalType": "bytes",
414
+ "name": "",
415
+ "type": "bytes"
416
+ }
417
+ ],
418
+ "name": "onAfterAddLiquidity",
419
+ "outputs": [
420
+ {
421
+ "internalType": "bool",
422
+ "name": "",
423
+ "type": "bool"
424
+ },
425
+ {
426
+ "internalType": "uint256[]",
427
+ "name": "",
428
+ "type": "uint256[]"
429
+ }
430
+ ],
431
+ "stateMutability": "nonpayable",
432
+ "type": "function"
433
+ },
434
+ {
435
+ "inputs": [
436
+ {
437
+ "internalType": "uint256[]",
438
+ "name": "",
439
+ "type": "uint256[]"
440
+ },
441
+ {
442
+ "internalType": "uint256",
443
+ "name": "",
444
+ "type": "uint256"
445
+ },
446
+ {
447
+ "internalType": "bytes",
448
+ "name": "",
449
+ "type": "bytes"
450
+ }
451
+ ],
452
+ "name": "onAfterInitialize",
453
+ "outputs": [
454
+ {
455
+ "internalType": "bool",
456
+ "name": "",
457
+ "type": "bool"
458
+ }
459
+ ],
460
+ "stateMutability": "nonpayable",
461
+ "type": "function"
462
+ },
463
+ {
464
+ "inputs": [
465
+ {
466
+ "internalType": "address",
467
+ "name": "",
468
+ "type": "address"
469
+ },
470
+ {
471
+ "internalType": "address",
472
+ "name": "",
473
+ "type": "address"
474
+ },
475
+ {
476
+ "internalType": "enum RemoveLiquidityKind",
477
+ "name": "",
478
+ "type": "uint8"
479
+ },
480
+ {
481
+ "internalType": "uint256",
482
+ "name": "",
483
+ "type": "uint256"
484
+ },
485
+ {
486
+ "internalType": "uint256[]",
487
+ "name": "",
488
+ "type": "uint256[]"
489
+ },
490
+ {
491
+ "internalType": "uint256[]",
492
+ "name": "amountsOutRaw",
493
+ "type": "uint256[]"
494
+ },
495
+ {
496
+ "internalType": "uint256[]",
497
+ "name": "",
498
+ "type": "uint256[]"
499
+ },
500
+ {
501
+ "internalType": "bytes",
502
+ "name": "",
503
+ "type": "bytes"
504
+ }
505
+ ],
506
+ "name": "onAfterRemoveLiquidity",
507
+ "outputs": [
508
+ {
509
+ "internalType": "bool",
510
+ "name": "",
511
+ "type": "bool"
512
+ },
513
+ {
514
+ "internalType": "uint256[]",
515
+ "name": "",
516
+ "type": "uint256[]"
517
+ }
518
+ ],
519
+ "stateMutability": "nonpayable",
520
+ "type": "function"
521
+ },
522
+ {
523
+ "inputs": [
524
+ {
525
+ "components": [
526
+ {
527
+ "internalType": "enum SwapKind",
528
+ "name": "kind",
529
+ "type": "uint8"
530
+ },
531
+ {
532
+ "internalType": "contract IERC20",
533
+ "name": "tokenIn",
534
+ "type": "address"
535
+ },
536
+ {
537
+ "internalType": "contract IERC20",
538
+ "name": "tokenOut",
539
+ "type": "address"
540
+ },
541
+ {
542
+ "internalType": "uint256",
543
+ "name": "amountInScaled18",
544
+ "type": "uint256"
545
+ },
546
+ {
547
+ "internalType": "uint256",
548
+ "name": "amountOutScaled18",
549
+ "type": "uint256"
550
+ },
551
+ {
552
+ "internalType": "uint256",
553
+ "name": "tokenInBalanceScaled18",
554
+ "type": "uint256"
555
+ },
556
+ {
557
+ "internalType": "uint256",
558
+ "name": "tokenOutBalanceScaled18",
559
+ "type": "uint256"
560
+ },
561
+ {
562
+ "internalType": "uint256",
563
+ "name": "amountCalculatedScaled18",
564
+ "type": "uint256"
565
+ },
566
+ {
567
+ "internalType": "uint256",
568
+ "name": "amountCalculatedRaw",
569
+ "type": "uint256"
570
+ },
571
+ {
572
+ "internalType": "address",
573
+ "name": "router",
574
+ "type": "address"
575
+ },
576
+ {
577
+ "internalType": "address",
578
+ "name": "pool",
579
+ "type": "address"
580
+ },
581
+ {
582
+ "internalType": "bytes",
583
+ "name": "userData",
584
+ "type": "bytes"
585
+ }
586
+ ],
587
+ "internalType": "struct AfterSwapParams",
588
+ "name": "",
589
+ "type": "tuple"
590
+ }
591
+ ],
592
+ "name": "onAfterSwap",
593
+ "outputs": [
594
+ {
595
+ "internalType": "bool",
596
+ "name": "",
597
+ "type": "bool"
598
+ },
599
+ {
600
+ "internalType": "uint256",
601
+ "name": "",
602
+ "type": "uint256"
603
+ }
604
+ ],
605
+ "stateMutability": "nonpayable",
606
+ "type": "function"
607
+ },
608
+ {
609
+ "inputs": [
610
+ {
611
+ "internalType": "address",
612
+ "name": "",
613
+ "type": "address"
614
+ },
615
+ {
616
+ "internalType": "address",
617
+ "name": "",
618
+ "type": "address"
619
+ },
620
+ {
621
+ "internalType": "enum AddLiquidityKind",
622
+ "name": "",
623
+ "type": "uint8"
624
+ },
625
+ {
626
+ "internalType": "uint256[]",
627
+ "name": "",
628
+ "type": "uint256[]"
629
+ },
630
+ {
631
+ "internalType": "uint256",
632
+ "name": "",
633
+ "type": "uint256"
634
+ },
635
+ {
636
+ "internalType": "uint256[]",
637
+ "name": "",
638
+ "type": "uint256[]"
639
+ },
640
+ {
641
+ "internalType": "bytes",
642
+ "name": "",
643
+ "type": "bytes"
644
+ }
645
+ ],
646
+ "name": "onBeforeAddLiquidity",
647
+ "outputs": [
648
+ {
649
+ "internalType": "bool",
650
+ "name": "",
651
+ "type": "bool"
652
+ }
653
+ ],
654
+ "stateMutability": "nonpayable",
655
+ "type": "function"
656
+ },
657
+ {
658
+ "inputs": [
659
+ {
660
+ "internalType": "uint256[]",
661
+ "name": "",
662
+ "type": "uint256[]"
663
+ },
664
+ {
665
+ "internalType": "bytes",
666
+ "name": "",
667
+ "type": "bytes"
668
+ }
669
+ ],
670
+ "name": "onBeforeInitialize",
671
+ "outputs": [
672
+ {
673
+ "internalType": "bool",
674
+ "name": "",
675
+ "type": "bool"
676
+ }
677
+ ],
678
+ "stateMutability": "nonpayable",
679
+ "type": "function"
680
+ },
681
+ {
682
+ "inputs": [
683
+ {
684
+ "internalType": "address",
685
+ "name": "",
686
+ "type": "address"
687
+ },
688
+ {
689
+ "internalType": "address",
690
+ "name": "",
691
+ "type": "address"
692
+ },
693
+ {
694
+ "internalType": "enum RemoveLiquidityKind",
695
+ "name": "",
696
+ "type": "uint8"
697
+ },
698
+ {
699
+ "internalType": "uint256",
700
+ "name": "",
701
+ "type": "uint256"
702
+ },
703
+ {
704
+ "internalType": "uint256[]",
705
+ "name": "",
706
+ "type": "uint256[]"
707
+ },
708
+ {
709
+ "internalType": "uint256[]",
710
+ "name": "",
711
+ "type": "uint256[]"
712
+ },
713
+ {
714
+ "internalType": "bytes",
715
+ "name": "",
716
+ "type": "bytes"
717
+ }
718
+ ],
719
+ "name": "onBeforeRemoveLiquidity",
720
+ "outputs": [
721
+ {
722
+ "internalType": "bool",
723
+ "name": "",
724
+ "type": "bool"
725
+ }
726
+ ],
727
+ "stateMutability": "nonpayable",
728
+ "type": "function"
729
+ },
730
+ {
731
+ "inputs": [
732
+ {
733
+ "components": [
734
+ {
735
+ "internalType": "enum SwapKind",
736
+ "name": "kind",
737
+ "type": "uint8"
738
+ },
739
+ {
740
+ "internalType": "uint256",
741
+ "name": "amountGivenScaled18",
742
+ "type": "uint256"
743
+ },
744
+ {
745
+ "internalType": "uint256[]",
746
+ "name": "balancesScaled18",
747
+ "type": "uint256[]"
748
+ },
749
+ {
750
+ "internalType": "uint256",
751
+ "name": "indexIn",
752
+ "type": "uint256"
753
+ },
754
+ {
755
+ "internalType": "uint256",
756
+ "name": "indexOut",
757
+ "type": "uint256"
758
+ },
759
+ {
760
+ "internalType": "address",
761
+ "name": "router",
762
+ "type": "address"
763
+ },
764
+ {
765
+ "internalType": "bytes",
766
+ "name": "userData",
767
+ "type": "bytes"
768
+ }
769
+ ],
770
+ "internalType": "struct PoolSwapParams",
771
+ "name": "",
772
+ "type": "tuple"
773
+ },
774
+ {
775
+ "internalType": "address",
776
+ "name": "",
777
+ "type": "address"
778
+ }
779
+ ],
780
+ "name": "onBeforeSwap",
781
+ "outputs": [
782
+ {
783
+ "internalType": "bool",
784
+ "name": "",
785
+ "type": "bool"
786
+ }
787
+ ],
788
+ "stateMutability": "nonpayable",
789
+ "type": "function"
790
+ },
791
+ {
792
+ "inputs": [
793
+ {
794
+ "components": [
795
+ {
796
+ "internalType": "enum SwapKind",
797
+ "name": "kind",
798
+ "type": "uint8"
799
+ },
800
+ {
801
+ "internalType": "uint256",
802
+ "name": "amountGivenScaled18",
803
+ "type": "uint256"
804
+ },
805
+ {
806
+ "internalType": "uint256[]",
807
+ "name": "balancesScaled18",
808
+ "type": "uint256[]"
809
+ },
810
+ {
811
+ "internalType": "uint256",
812
+ "name": "indexIn",
813
+ "type": "uint256"
814
+ },
815
+ {
816
+ "internalType": "uint256",
817
+ "name": "indexOut",
818
+ "type": "uint256"
819
+ },
820
+ {
821
+ "internalType": "address",
822
+ "name": "router",
823
+ "type": "address"
824
+ },
825
+ {
826
+ "internalType": "bytes",
827
+ "name": "userData",
828
+ "type": "bytes"
829
+ }
830
+ ],
831
+ "internalType": "struct PoolSwapParams",
832
+ "name": "params",
833
+ "type": "tuple"
834
+ },
835
+ {
836
+ "internalType": "address",
837
+ "name": "pool",
838
+ "type": "address"
839
+ },
840
+ {
841
+ "internalType": "uint256",
842
+ "name": "staticSwapFeePercentage",
843
+ "type": "uint256"
844
+ }
845
+ ],
846
+ "name": "onComputeDynamicSwapFeePercentage",
847
+ "outputs": [
848
+ {
849
+ "internalType": "bool",
850
+ "name": "",
851
+ "type": "bool"
852
+ },
853
+ {
854
+ "internalType": "uint256",
855
+ "name": "",
856
+ "type": "uint256"
857
+ }
858
+ ],
859
+ "stateMutability": "view",
860
+ "type": "function"
861
+ },
862
+ {
863
+ "inputs": [
864
+ {
865
+ "internalType": "address",
866
+ "name": "factory",
867
+ "type": "address"
868
+ },
869
+ {
870
+ "internalType": "address",
871
+ "name": "pool",
872
+ "type": "address"
873
+ },
874
+ {
875
+ "components": [
876
+ {
877
+ "internalType": "contract IERC20",
878
+ "name": "token",
879
+ "type": "address"
880
+ },
881
+ {
882
+ "internalType": "enum TokenType",
883
+ "name": "tokenType",
884
+ "type": "uint8"
885
+ },
886
+ {
887
+ "internalType": "contract IRateProvider",
888
+ "name": "rateProvider",
889
+ "type": "address"
890
+ },
891
+ {
892
+ "internalType": "bool",
893
+ "name": "paysYieldFees",
894
+ "type": "bool"
895
+ }
896
+ ],
897
+ "internalType": "struct TokenConfig[]",
898
+ "name": "",
899
+ "type": "tuple[]"
900
+ },
901
+ {
902
+ "components": [
903
+ {
904
+ "internalType": "bool",
905
+ "name": "disableUnbalancedLiquidity",
906
+ "type": "bool"
907
+ },
908
+ {
909
+ "internalType": "bool",
910
+ "name": "enableAddLiquidityCustom",
911
+ "type": "bool"
912
+ },
913
+ {
914
+ "internalType": "bool",
915
+ "name": "enableRemoveLiquidityCustom",
916
+ "type": "bool"
917
+ },
918
+ {
919
+ "internalType": "bool",
920
+ "name": "enableDonation",
921
+ "type": "bool"
922
+ }
923
+ ],
924
+ "internalType": "struct LiquidityManagement",
925
+ "name": "",
926
+ "type": "tuple"
927
+ }
928
+ ],
929
+ "name": "onRegister",
930
+ "outputs": [
931
+ {
932
+ "internalType": "bool",
933
+ "name": "",
934
+ "type": "bool"
935
+ }
936
+ ],
937
+ "stateMutability": "nonpayable",
938
+ "type": "function"
939
+ },
940
+ {
941
+ "inputs": [
942
+ {
943
+ "internalType": "address",
944
+ "name": "pool",
945
+ "type": "address"
946
+ },
947
+ {
948
+ "internalType": "uint256",
949
+ "name": "newMaxSurgeSurgeFeePercentage",
950
+ "type": "uint256"
951
+ }
952
+ ],
953
+ "name": "setMaxSurgeFeePercentage",
954
+ "outputs": [],
955
+ "stateMutability": "nonpayable",
956
+ "type": "function"
957
+ },
958
+ {
959
+ "inputs": [
960
+ {
961
+ "internalType": "address",
962
+ "name": "pool",
963
+ "type": "address"
964
+ },
965
+ {
966
+ "internalType": "uint256",
967
+ "name": "newSurgeThresholdPercentage",
968
+ "type": "uint256"
969
+ }
970
+ ],
971
+ "name": "setSurgeThresholdPercentage",
972
+ "outputs": [],
973
+ "stateMutability": "nonpayable",
974
+ "type": "function"
975
+ }
976
+ ]