@dhedge/v2-sdk 1.1.0 → 1.2.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 (42) hide show
  1. package/README.md +60 -3
  2. package/dist/config.d.ts +2 -0
  3. package/dist/entities/pool.d.ts +37 -3
  4. package/dist/entities/utils.d.ts +4 -0
  5. package/dist/services/claim-balancer/claim.service.d.ts +17 -0
  6. package/dist/services/claim-balancer/claim.worker.d.ts +4 -0
  7. package/dist/services/claim-balancer/ipfs.service.d.ts +4 -0
  8. package/dist/services/claim-balancer/types.d.ts +54 -0
  9. package/dist/test/constants.d.ts +12 -0
  10. package/dist/types.d.ts +5 -2
  11. package/dist/utils/contract.d.ts +14 -0
  12. package/dist/utils/index.d.ts +7 -0
  13. package/dist/utils/merkle.d.ts +22 -0
  14. package/dist/v2-sdk.cjs.development.js +3497 -690
  15. package/dist/v2-sdk.cjs.development.js.map +1 -1
  16. package/dist/v2-sdk.cjs.production.min.js +1 -1
  17. package/dist/v2-sdk.cjs.production.min.js.map +1 -1
  18. package/dist/v2-sdk.esm.js +3497 -690
  19. package/dist/v2-sdk.esm.js.map +1 -1
  20. package/package.json +9 -2
  21. package/src/abi/IAaveIncentivesController.json +50 -0
  22. package/src/abi/IBalancerMerkleOrchard.json +353 -0
  23. package/src/abi/IBalancertV2Vault.json +938 -0
  24. package/src/config.ts +21 -4
  25. package/src/entities/pool.ts +148 -5
  26. package/src/entities/utils.ts +135 -0
  27. package/src/services/claim-balancer/MultiTokenClaim.json +115 -0
  28. package/src/services/claim-balancer/claim.service.ts +262 -0
  29. package/src/services/claim-balancer/claim.worker.ts +32 -0
  30. package/src/services/claim-balancer/ipfs.service.ts +12 -0
  31. package/src/services/claim-balancer/types.ts +66 -0
  32. package/src/test/aave.test.ts +73 -0
  33. package/src/test/balancer.test.ts +109 -0
  34. package/src/test/constants.ts +13 -0
  35. package/src/test/oneInch.test.ts +56 -0
  36. package/src/test/pool.test.ts +5 -244
  37. package/src/test/sushi.test.ts +173 -0
  38. package/src/test/utils.test.ts +41 -26
  39. package/src/types.ts +6 -3
  40. package/src/utils/contract.ts +95 -0
  41. package/src/utils/index.ts +38 -0
  42. package/src/utils/merkle.ts +172 -0
@@ -0,0 +1,938 @@
1
+ {
2
+ "abi": [
3
+ {
4
+ "inputs": [
5
+ {
6
+ "internalType": "contract IAuthorizer",
7
+ "name": "authorizer",
8
+ "type": "address"
9
+ },
10
+ { "internalType": "contract IWETH", "name": "weth", "type": "address" },
11
+ {
12
+ "internalType": "uint256",
13
+ "name": "pauseWindowDuration",
14
+ "type": "uint256"
15
+ },
16
+ {
17
+ "internalType": "uint256",
18
+ "name": "bufferPeriodDuration",
19
+ "type": "uint256"
20
+ }
21
+ ],
22
+ "stateMutability": "nonpayable",
23
+ "type": "constructor"
24
+ },
25
+ {
26
+ "anonymous": false,
27
+ "inputs": [
28
+ {
29
+ "indexed": true,
30
+ "internalType": "contract IAuthorizer",
31
+ "name": "newAuthorizer",
32
+ "type": "address"
33
+ }
34
+ ],
35
+ "name": "AuthorizerChanged",
36
+ "type": "event"
37
+ },
38
+ {
39
+ "anonymous": false,
40
+ "inputs": [
41
+ {
42
+ "indexed": true,
43
+ "internalType": "contract IERC20",
44
+ "name": "token",
45
+ "type": "address"
46
+ },
47
+ {
48
+ "indexed": true,
49
+ "internalType": "address",
50
+ "name": "sender",
51
+ "type": "address"
52
+ },
53
+ {
54
+ "indexed": false,
55
+ "internalType": "address",
56
+ "name": "recipient",
57
+ "type": "address"
58
+ },
59
+ {
60
+ "indexed": false,
61
+ "internalType": "uint256",
62
+ "name": "amount",
63
+ "type": "uint256"
64
+ }
65
+ ],
66
+ "name": "ExternalBalanceTransfer",
67
+ "type": "event"
68
+ },
69
+ {
70
+ "anonymous": false,
71
+ "inputs": [
72
+ {
73
+ "indexed": true,
74
+ "internalType": "contract IFlashLoanRecipient",
75
+ "name": "recipient",
76
+ "type": "address"
77
+ },
78
+ {
79
+ "indexed": true,
80
+ "internalType": "contract IERC20",
81
+ "name": "token",
82
+ "type": "address"
83
+ },
84
+ {
85
+ "indexed": false,
86
+ "internalType": "uint256",
87
+ "name": "amount",
88
+ "type": "uint256"
89
+ },
90
+ {
91
+ "indexed": false,
92
+ "internalType": "uint256",
93
+ "name": "feeAmount",
94
+ "type": "uint256"
95
+ }
96
+ ],
97
+ "name": "FlashLoan",
98
+ "type": "event"
99
+ },
100
+ {
101
+ "anonymous": false,
102
+ "inputs": [
103
+ {
104
+ "indexed": true,
105
+ "internalType": "address",
106
+ "name": "user",
107
+ "type": "address"
108
+ },
109
+ {
110
+ "indexed": true,
111
+ "internalType": "contract IERC20",
112
+ "name": "token",
113
+ "type": "address"
114
+ },
115
+ {
116
+ "indexed": false,
117
+ "internalType": "int256",
118
+ "name": "delta",
119
+ "type": "int256"
120
+ }
121
+ ],
122
+ "name": "InternalBalanceChanged",
123
+ "type": "event"
124
+ },
125
+ {
126
+ "anonymous": false,
127
+ "inputs": [
128
+ {
129
+ "indexed": false,
130
+ "internalType": "bool",
131
+ "name": "paused",
132
+ "type": "bool"
133
+ }
134
+ ],
135
+ "name": "PausedStateChanged",
136
+ "type": "event"
137
+ },
138
+ {
139
+ "anonymous": false,
140
+ "inputs": [
141
+ {
142
+ "indexed": true,
143
+ "internalType": "bytes32",
144
+ "name": "poolId",
145
+ "type": "bytes32"
146
+ },
147
+ {
148
+ "indexed": true,
149
+ "internalType": "address",
150
+ "name": "liquidityProvider",
151
+ "type": "address"
152
+ },
153
+ {
154
+ "indexed": false,
155
+ "internalType": "contract IERC20[]",
156
+ "name": "tokens",
157
+ "type": "address[]"
158
+ },
159
+ {
160
+ "indexed": false,
161
+ "internalType": "int256[]",
162
+ "name": "deltas",
163
+ "type": "int256[]"
164
+ },
165
+ {
166
+ "indexed": false,
167
+ "internalType": "uint256[]",
168
+ "name": "protocolFeeAmounts",
169
+ "type": "uint256[]"
170
+ }
171
+ ],
172
+ "name": "PoolBalanceChanged",
173
+ "type": "event"
174
+ },
175
+ {
176
+ "anonymous": false,
177
+ "inputs": [
178
+ {
179
+ "indexed": true,
180
+ "internalType": "bytes32",
181
+ "name": "poolId",
182
+ "type": "bytes32"
183
+ },
184
+ {
185
+ "indexed": true,
186
+ "internalType": "address",
187
+ "name": "assetManager",
188
+ "type": "address"
189
+ },
190
+ {
191
+ "indexed": true,
192
+ "internalType": "contract IERC20",
193
+ "name": "token",
194
+ "type": "address"
195
+ },
196
+ {
197
+ "indexed": false,
198
+ "internalType": "int256",
199
+ "name": "cashDelta",
200
+ "type": "int256"
201
+ },
202
+ {
203
+ "indexed": false,
204
+ "internalType": "int256",
205
+ "name": "managedDelta",
206
+ "type": "int256"
207
+ }
208
+ ],
209
+ "name": "PoolBalanceManaged",
210
+ "type": "event"
211
+ },
212
+ {
213
+ "anonymous": false,
214
+ "inputs": [
215
+ {
216
+ "indexed": true,
217
+ "internalType": "bytes32",
218
+ "name": "poolId",
219
+ "type": "bytes32"
220
+ },
221
+ {
222
+ "indexed": true,
223
+ "internalType": "address",
224
+ "name": "poolAddress",
225
+ "type": "address"
226
+ },
227
+ {
228
+ "indexed": false,
229
+ "internalType": "enum IVault.PoolSpecialization",
230
+ "name": "specialization",
231
+ "type": "uint8"
232
+ }
233
+ ],
234
+ "name": "PoolRegistered",
235
+ "type": "event"
236
+ },
237
+ {
238
+ "anonymous": false,
239
+ "inputs": [
240
+ {
241
+ "indexed": true,
242
+ "internalType": "address",
243
+ "name": "relayer",
244
+ "type": "address"
245
+ },
246
+ {
247
+ "indexed": true,
248
+ "internalType": "address",
249
+ "name": "sender",
250
+ "type": "address"
251
+ },
252
+ {
253
+ "indexed": false,
254
+ "internalType": "bool",
255
+ "name": "approved",
256
+ "type": "bool"
257
+ }
258
+ ],
259
+ "name": "RelayerApprovalChanged",
260
+ "type": "event"
261
+ },
262
+ {
263
+ "anonymous": false,
264
+ "inputs": [
265
+ {
266
+ "indexed": true,
267
+ "internalType": "bytes32",
268
+ "name": "poolId",
269
+ "type": "bytes32"
270
+ },
271
+ {
272
+ "indexed": true,
273
+ "internalType": "contract IERC20",
274
+ "name": "tokenIn",
275
+ "type": "address"
276
+ },
277
+ {
278
+ "indexed": true,
279
+ "internalType": "contract IERC20",
280
+ "name": "tokenOut",
281
+ "type": "address"
282
+ },
283
+ {
284
+ "indexed": false,
285
+ "internalType": "uint256",
286
+ "name": "amountIn",
287
+ "type": "uint256"
288
+ },
289
+ {
290
+ "indexed": false,
291
+ "internalType": "uint256",
292
+ "name": "amountOut",
293
+ "type": "uint256"
294
+ }
295
+ ],
296
+ "name": "Swap",
297
+ "type": "event"
298
+ },
299
+ {
300
+ "anonymous": false,
301
+ "inputs": [
302
+ {
303
+ "indexed": true,
304
+ "internalType": "bytes32",
305
+ "name": "poolId",
306
+ "type": "bytes32"
307
+ },
308
+ {
309
+ "indexed": false,
310
+ "internalType": "contract IERC20[]",
311
+ "name": "tokens",
312
+ "type": "address[]"
313
+ }
314
+ ],
315
+ "name": "TokensDeregistered",
316
+ "type": "event"
317
+ },
318
+ {
319
+ "anonymous": false,
320
+ "inputs": [
321
+ {
322
+ "indexed": true,
323
+ "internalType": "bytes32",
324
+ "name": "poolId",
325
+ "type": "bytes32"
326
+ },
327
+ {
328
+ "indexed": false,
329
+ "internalType": "contract IERC20[]",
330
+ "name": "tokens",
331
+ "type": "address[]"
332
+ },
333
+ {
334
+ "indexed": false,
335
+ "internalType": "address[]",
336
+ "name": "assetManagers",
337
+ "type": "address[]"
338
+ }
339
+ ],
340
+ "name": "TokensRegistered",
341
+ "type": "event"
342
+ },
343
+ {
344
+ "inputs": [],
345
+ "name": "WETH",
346
+ "outputs": [
347
+ { "internalType": "contract IWETH", "name": "", "type": "address" }
348
+ ],
349
+ "stateMutability": "view",
350
+ "type": "function"
351
+ },
352
+ {
353
+ "inputs": [
354
+ {
355
+ "internalType": "enum IVault.SwapKind",
356
+ "name": "kind",
357
+ "type": "uint8"
358
+ },
359
+ {
360
+ "components": [
361
+ { "internalType": "bytes32", "name": "poolId", "type": "bytes32" },
362
+ {
363
+ "internalType": "uint256",
364
+ "name": "assetInIndex",
365
+ "type": "uint256"
366
+ },
367
+ {
368
+ "internalType": "uint256",
369
+ "name": "assetOutIndex",
370
+ "type": "uint256"
371
+ },
372
+ { "internalType": "uint256", "name": "amount", "type": "uint256" },
373
+ { "internalType": "bytes", "name": "userData", "type": "bytes" }
374
+ ],
375
+ "internalType": "struct IVault.BatchSwapStep[]",
376
+ "name": "swaps",
377
+ "type": "tuple[]"
378
+ },
379
+ {
380
+ "internalType": "contract IAsset[]",
381
+ "name": "assets",
382
+ "type": "address[]"
383
+ },
384
+ {
385
+ "components": [
386
+ { "internalType": "address", "name": "sender", "type": "address" },
387
+ {
388
+ "internalType": "bool",
389
+ "name": "fromInternalBalance",
390
+ "type": "bool"
391
+ },
392
+ {
393
+ "internalType": "address payable",
394
+ "name": "recipient",
395
+ "type": "address"
396
+ },
397
+ {
398
+ "internalType": "bool",
399
+ "name": "toInternalBalance",
400
+ "type": "bool"
401
+ }
402
+ ],
403
+ "internalType": "struct IVault.FundManagement",
404
+ "name": "funds",
405
+ "type": "tuple"
406
+ },
407
+ { "internalType": "int256[]", "name": "limits", "type": "int256[]" },
408
+ { "internalType": "uint256", "name": "deadline", "type": "uint256" }
409
+ ],
410
+ "name": "batchSwap",
411
+ "outputs": [
412
+ {
413
+ "internalType": "int256[]",
414
+ "name": "assetDeltas",
415
+ "type": "int256[]"
416
+ }
417
+ ],
418
+ "stateMutability": "payable",
419
+ "type": "function"
420
+ },
421
+ {
422
+ "inputs": [
423
+ { "internalType": "bytes32", "name": "poolId", "type": "bytes32" },
424
+ {
425
+ "internalType": "contract IERC20[]",
426
+ "name": "tokens",
427
+ "type": "address[]"
428
+ }
429
+ ],
430
+ "name": "deregisterTokens",
431
+ "outputs": [],
432
+ "stateMutability": "nonpayable",
433
+ "type": "function"
434
+ },
435
+ {
436
+ "inputs": [
437
+ { "internalType": "bytes32", "name": "poolId", "type": "bytes32" },
438
+ { "internalType": "address", "name": "sender", "type": "address" },
439
+ {
440
+ "internalType": "address payable",
441
+ "name": "recipient",
442
+ "type": "address"
443
+ },
444
+ {
445
+ "components": [
446
+ {
447
+ "internalType": "contract IAsset[]",
448
+ "name": "assets",
449
+ "type": "address[]"
450
+ },
451
+ {
452
+ "internalType": "uint256[]",
453
+ "name": "minAmountsOut",
454
+ "type": "uint256[]"
455
+ },
456
+ { "internalType": "bytes", "name": "userData", "type": "bytes" },
457
+ {
458
+ "internalType": "bool",
459
+ "name": "toInternalBalance",
460
+ "type": "bool"
461
+ }
462
+ ],
463
+ "internalType": "struct IVault.ExitPoolRequest",
464
+ "name": "request",
465
+ "type": "tuple"
466
+ }
467
+ ],
468
+ "name": "exitPool",
469
+ "outputs": [],
470
+ "stateMutability": "nonpayable",
471
+ "type": "function"
472
+ },
473
+ {
474
+ "inputs": [
475
+ {
476
+ "internalType": "contract IFlashLoanRecipient",
477
+ "name": "recipient",
478
+ "type": "address"
479
+ },
480
+ {
481
+ "internalType": "contract IERC20[]",
482
+ "name": "tokens",
483
+ "type": "address[]"
484
+ },
485
+ { "internalType": "uint256[]", "name": "amounts", "type": "uint256[]" },
486
+ { "internalType": "bytes", "name": "userData", "type": "bytes" }
487
+ ],
488
+ "name": "flashLoan",
489
+ "outputs": [],
490
+ "stateMutability": "nonpayable",
491
+ "type": "function"
492
+ },
493
+ {
494
+ "inputs": [
495
+ { "internalType": "bytes4", "name": "selector", "type": "bytes4" }
496
+ ],
497
+ "name": "getActionId",
498
+ "outputs": [{ "internalType": "bytes32", "name": "", "type": "bytes32" }],
499
+ "stateMutability": "view",
500
+ "type": "function"
501
+ },
502
+ {
503
+ "inputs": [],
504
+ "name": "getAuthorizer",
505
+ "outputs": [
506
+ {
507
+ "internalType": "contract IAuthorizer",
508
+ "name": "",
509
+ "type": "address"
510
+ }
511
+ ],
512
+ "stateMutability": "view",
513
+ "type": "function"
514
+ },
515
+ {
516
+ "inputs": [],
517
+ "name": "getDomainSeparator",
518
+ "outputs": [{ "internalType": "bytes32", "name": "", "type": "bytes32" }],
519
+ "stateMutability": "view",
520
+ "type": "function"
521
+ },
522
+ {
523
+ "inputs": [
524
+ { "internalType": "address", "name": "user", "type": "address" },
525
+ {
526
+ "internalType": "contract IERC20[]",
527
+ "name": "tokens",
528
+ "type": "address[]"
529
+ }
530
+ ],
531
+ "name": "getInternalBalance",
532
+ "outputs": [
533
+ { "internalType": "uint256[]", "name": "balances", "type": "uint256[]" }
534
+ ],
535
+ "stateMutability": "view",
536
+ "type": "function"
537
+ },
538
+ {
539
+ "inputs": [
540
+ { "internalType": "address", "name": "user", "type": "address" }
541
+ ],
542
+ "name": "getNextNonce",
543
+ "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
544
+ "stateMutability": "view",
545
+ "type": "function"
546
+ },
547
+ {
548
+ "inputs": [],
549
+ "name": "getPausedState",
550
+ "outputs": [
551
+ { "internalType": "bool", "name": "paused", "type": "bool" },
552
+ {
553
+ "internalType": "uint256",
554
+ "name": "pauseWindowEndTime",
555
+ "type": "uint256"
556
+ },
557
+ {
558
+ "internalType": "uint256",
559
+ "name": "bufferPeriodEndTime",
560
+ "type": "uint256"
561
+ }
562
+ ],
563
+ "stateMutability": "view",
564
+ "type": "function"
565
+ },
566
+ {
567
+ "inputs": [
568
+ { "internalType": "bytes32", "name": "poolId", "type": "bytes32" }
569
+ ],
570
+ "name": "getPool",
571
+ "outputs": [
572
+ { "internalType": "address", "name": "", "type": "address" },
573
+ {
574
+ "internalType": "enum IVault.PoolSpecialization",
575
+ "name": "",
576
+ "type": "uint8"
577
+ }
578
+ ],
579
+ "stateMutability": "view",
580
+ "type": "function"
581
+ },
582
+ {
583
+ "inputs": [
584
+ { "internalType": "bytes32", "name": "poolId", "type": "bytes32" },
585
+ {
586
+ "internalType": "contract IERC20",
587
+ "name": "token",
588
+ "type": "address"
589
+ }
590
+ ],
591
+ "name": "getPoolTokenInfo",
592
+ "outputs": [
593
+ { "internalType": "uint256", "name": "cash", "type": "uint256" },
594
+ { "internalType": "uint256", "name": "managed", "type": "uint256" },
595
+ {
596
+ "internalType": "uint256",
597
+ "name": "lastChangeBlock",
598
+ "type": "uint256"
599
+ },
600
+ { "internalType": "address", "name": "assetManager", "type": "address" }
601
+ ],
602
+ "stateMutability": "view",
603
+ "type": "function"
604
+ },
605
+ {
606
+ "inputs": [
607
+ { "internalType": "bytes32", "name": "poolId", "type": "bytes32" }
608
+ ],
609
+ "name": "getPoolTokens",
610
+ "outputs": [
611
+ {
612
+ "internalType": "contract IERC20[]",
613
+ "name": "tokens",
614
+ "type": "address[]"
615
+ },
616
+ {
617
+ "internalType": "uint256[]",
618
+ "name": "balances",
619
+ "type": "uint256[]"
620
+ },
621
+ {
622
+ "internalType": "uint256",
623
+ "name": "lastChangeBlock",
624
+ "type": "uint256"
625
+ }
626
+ ],
627
+ "stateMutability": "view",
628
+ "type": "function"
629
+ },
630
+ {
631
+ "inputs": [],
632
+ "name": "getProtocolFeesCollector",
633
+ "outputs": [
634
+ {
635
+ "internalType": "contract ProtocolFeesCollector",
636
+ "name": "",
637
+ "type": "address"
638
+ }
639
+ ],
640
+ "stateMutability": "view",
641
+ "type": "function"
642
+ },
643
+ {
644
+ "inputs": [
645
+ { "internalType": "address", "name": "user", "type": "address" },
646
+ { "internalType": "address", "name": "relayer", "type": "address" }
647
+ ],
648
+ "name": "hasApprovedRelayer",
649
+ "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
650
+ "stateMutability": "view",
651
+ "type": "function"
652
+ },
653
+ {
654
+ "inputs": [
655
+ { "internalType": "bytes32", "name": "poolId", "type": "bytes32" },
656
+ { "internalType": "address", "name": "sender", "type": "address" },
657
+ { "internalType": "address", "name": "recipient", "type": "address" },
658
+ {
659
+ "components": [
660
+ {
661
+ "internalType": "contract IAsset[]",
662
+ "name": "assets",
663
+ "type": "address[]"
664
+ },
665
+ {
666
+ "internalType": "uint256[]",
667
+ "name": "maxAmountsIn",
668
+ "type": "uint256[]"
669
+ },
670
+ { "internalType": "bytes", "name": "userData", "type": "bytes" },
671
+ {
672
+ "internalType": "bool",
673
+ "name": "fromInternalBalance",
674
+ "type": "bool"
675
+ }
676
+ ],
677
+ "internalType": "struct IVault.JoinPoolRequest",
678
+ "name": "request",
679
+ "type": "tuple"
680
+ }
681
+ ],
682
+ "name": "joinPool",
683
+ "outputs": [],
684
+ "stateMutability": "payable",
685
+ "type": "function"
686
+ },
687
+ {
688
+ "inputs": [
689
+ {
690
+ "components": [
691
+ {
692
+ "internalType": "enum IVault.PoolBalanceOpKind",
693
+ "name": "kind",
694
+ "type": "uint8"
695
+ },
696
+ { "internalType": "bytes32", "name": "poolId", "type": "bytes32" },
697
+ {
698
+ "internalType": "contract IERC20",
699
+ "name": "token",
700
+ "type": "address"
701
+ },
702
+ { "internalType": "uint256", "name": "amount", "type": "uint256" }
703
+ ],
704
+ "internalType": "struct IVault.PoolBalanceOp[]",
705
+ "name": "ops",
706
+ "type": "tuple[]"
707
+ }
708
+ ],
709
+ "name": "managePoolBalance",
710
+ "outputs": [],
711
+ "stateMutability": "nonpayable",
712
+ "type": "function"
713
+ },
714
+ {
715
+ "inputs": [
716
+ {
717
+ "components": [
718
+ {
719
+ "internalType": "enum IVault.UserBalanceOpKind",
720
+ "name": "kind",
721
+ "type": "uint8"
722
+ },
723
+ {
724
+ "internalType": "contract IAsset",
725
+ "name": "asset",
726
+ "type": "address"
727
+ },
728
+ { "internalType": "uint256", "name": "amount", "type": "uint256" },
729
+ { "internalType": "address", "name": "sender", "type": "address" },
730
+ {
731
+ "internalType": "address payable",
732
+ "name": "recipient",
733
+ "type": "address"
734
+ }
735
+ ],
736
+ "internalType": "struct IVault.UserBalanceOp[]",
737
+ "name": "ops",
738
+ "type": "tuple[]"
739
+ }
740
+ ],
741
+ "name": "manageUserBalance",
742
+ "outputs": [],
743
+ "stateMutability": "payable",
744
+ "type": "function"
745
+ },
746
+ {
747
+ "inputs": [
748
+ {
749
+ "internalType": "enum IVault.SwapKind",
750
+ "name": "kind",
751
+ "type": "uint8"
752
+ },
753
+ {
754
+ "components": [
755
+ { "internalType": "bytes32", "name": "poolId", "type": "bytes32" },
756
+ {
757
+ "internalType": "uint256",
758
+ "name": "assetInIndex",
759
+ "type": "uint256"
760
+ },
761
+ {
762
+ "internalType": "uint256",
763
+ "name": "assetOutIndex",
764
+ "type": "uint256"
765
+ },
766
+ { "internalType": "uint256", "name": "amount", "type": "uint256" },
767
+ { "internalType": "bytes", "name": "userData", "type": "bytes" }
768
+ ],
769
+ "internalType": "struct IVault.BatchSwapStep[]",
770
+ "name": "swaps",
771
+ "type": "tuple[]"
772
+ },
773
+ {
774
+ "internalType": "contract IAsset[]",
775
+ "name": "assets",
776
+ "type": "address[]"
777
+ },
778
+ {
779
+ "components": [
780
+ { "internalType": "address", "name": "sender", "type": "address" },
781
+ {
782
+ "internalType": "bool",
783
+ "name": "fromInternalBalance",
784
+ "type": "bool"
785
+ },
786
+ {
787
+ "internalType": "address payable",
788
+ "name": "recipient",
789
+ "type": "address"
790
+ },
791
+ {
792
+ "internalType": "bool",
793
+ "name": "toInternalBalance",
794
+ "type": "bool"
795
+ }
796
+ ],
797
+ "internalType": "struct IVault.FundManagement",
798
+ "name": "funds",
799
+ "type": "tuple"
800
+ }
801
+ ],
802
+ "name": "queryBatchSwap",
803
+ "outputs": [
804
+ { "internalType": "int256[]", "name": "", "type": "int256[]" }
805
+ ],
806
+ "stateMutability": "nonpayable",
807
+ "type": "function"
808
+ },
809
+ {
810
+ "inputs": [
811
+ {
812
+ "internalType": "enum IVault.PoolSpecialization",
813
+ "name": "specialization",
814
+ "type": "uint8"
815
+ }
816
+ ],
817
+ "name": "registerPool",
818
+ "outputs": [{ "internalType": "bytes32", "name": "", "type": "bytes32" }],
819
+ "stateMutability": "nonpayable",
820
+ "type": "function"
821
+ },
822
+ {
823
+ "inputs": [
824
+ { "internalType": "bytes32", "name": "poolId", "type": "bytes32" },
825
+ {
826
+ "internalType": "contract IERC20[]",
827
+ "name": "tokens",
828
+ "type": "address[]"
829
+ },
830
+ {
831
+ "internalType": "address[]",
832
+ "name": "assetManagers",
833
+ "type": "address[]"
834
+ }
835
+ ],
836
+ "name": "registerTokens",
837
+ "outputs": [],
838
+ "stateMutability": "nonpayable",
839
+ "type": "function"
840
+ },
841
+ {
842
+ "inputs": [
843
+ {
844
+ "internalType": "contract IAuthorizer",
845
+ "name": "newAuthorizer",
846
+ "type": "address"
847
+ }
848
+ ],
849
+ "name": "setAuthorizer",
850
+ "outputs": [],
851
+ "stateMutability": "nonpayable",
852
+ "type": "function"
853
+ },
854
+ {
855
+ "inputs": [{ "internalType": "bool", "name": "paused", "type": "bool" }],
856
+ "name": "setPaused",
857
+ "outputs": [],
858
+ "stateMutability": "nonpayable",
859
+ "type": "function"
860
+ },
861
+ {
862
+ "inputs": [
863
+ { "internalType": "address", "name": "sender", "type": "address" },
864
+ { "internalType": "address", "name": "relayer", "type": "address" },
865
+ { "internalType": "bool", "name": "approved", "type": "bool" }
866
+ ],
867
+ "name": "setRelayerApproval",
868
+ "outputs": [],
869
+ "stateMutability": "nonpayable",
870
+ "type": "function"
871
+ },
872
+ {
873
+ "inputs": [
874
+ {
875
+ "components": [
876
+ { "internalType": "bytes32", "name": "poolId", "type": "bytes32" },
877
+ {
878
+ "internalType": "enum IVault.SwapKind",
879
+ "name": "kind",
880
+ "type": "uint8"
881
+ },
882
+ {
883
+ "internalType": "contract IAsset",
884
+ "name": "assetIn",
885
+ "type": "address"
886
+ },
887
+ {
888
+ "internalType": "contract IAsset",
889
+ "name": "assetOut",
890
+ "type": "address"
891
+ },
892
+ { "internalType": "uint256", "name": "amount", "type": "uint256" },
893
+ { "internalType": "bytes", "name": "userData", "type": "bytes" }
894
+ ],
895
+ "internalType": "struct IVault.SingleSwap",
896
+ "name": "singleSwap",
897
+ "type": "tuple"
898
+ },
899
+ {
900
+ "components": [
901
+ { "internalType": "address", "name": "sender", "type": "address" },
902
+ {
903
+ "internalType": "bool",
904
+ "name": "fromInternalBalance",
905
+ "type": "bool"
906
+ },
907
+ {
908
+ "internalType": "address payable",
909
+ "name": "recipient",
910
+ "type": "address"
911
+ },
912
+ {
913
+ "internalType": "bool",
914
+ "name": "toInternalBalance",
915
+ "type": "bool"
916
+ }
917
+ ],
918
+ "internalType": "struct IVault.FundManagement",
919
+ "name": "funds",
920
+ "type": "tuple"
921
+ },
922
+ { "internalType": "uint256", "name": "limit", "type": "uint256" },
923
+ { "internalType": "uint256", "name": "deadline", "type": "uint256" }
924
+ ],
925
+ "name": "swap",
926
+ "outputs": [
927
+ {
928
+ "internalType": "uint256",
929
+ "name": "amountCalculated",
930
+ "type": "uint256"
931
+ }
932
+ ],
933
+ "stateMutability": "payable",
934
+ "type": "function"
935
+ },
936
+ { "stateMutability": "payable", "type": "receive" }
937
+ ]
938
+ }