@zoralabs/coins 0.7.0 → 0.9.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 (104) hide show
  1. package/.env +1 -0
  2. package/.turbo/turbo-build.log +114 -109
  3. package/.turbo/turbo-update-contract-version.log +22 -0
  4. package/CHANGELOG.md +34 -0
  5. package/abis/BadImpl.json +15 -0
  6. package/abis/BalanceDeltaLibrary.json +15 -0
  7. package/abis/BaseCoin.json +1442 -0
  8. package/abis/BaseCoinDeployHook.json +78 -0
  9. package/abis/BaseHook.json +897 -0
  10. package/abis/BaseTest.json +13 -91
  11. package/abis/BeforeSwapDeltaLibrary.json +15 -0
  12. package/abis/BuySupplyWithSwapRouterHook.json +126 -0
  13. package/abis/Coin.json +48 -92
  14. package/abis/CoinConstants.json +65 -0
  15. package/abis/CoinTest.json +27 -91
  16. package/abis/CoinV4.json +1664 -0
  17. package/abis/CurrencyLibrary.json +25 -0
  18. package/abis/DeployHooks.json +9 -0
  19. package/abis/DopplerUniswapV3Test.json +20 -91
  20. package/abis/FactoryTest.json +13 -91
  21. package/abis/FakeHookNoInterface.json +21 -0
  22. package/abis/HookDeployer.json +68 -0
  23. package/abis/Hooks.json +28 -0
  24. package/abis/HooksTest.json +651 -0
  25. package/abis/IAllowanceTransfer.json +486 -0
  26. package/abis/ICoin.json +25 -1
  27. package/abis/ICoinDeployHook.json +31 -0
  28. package/abis/IContractMetadata.json +28 -0
  29. package/abis/IEIP712.json +15 -0
  30. package/abis/IEIP712_v4.json +15 -0
  31. package/abis/IERC20Minimal.json +172 -0
  32. package/abis/IERC6909Claims.json +288 -0
  33. package/abis/IERC721Permit_v4.json +88 -0
  34. package/abis/IExtsload.json +64 -0
  35. package/abis/IExttload.json +40 -0
  36. package/abis/IHasAfterCoinDeploy.json +31 -0
  37. package/abis/IHasContractName.json +15 -0
  38. package/abis/IHookDeployer.json +42 -0
  39. package/abis/IHooks.json +789 -0
  40. package/abis/IImmutableState.json +15 -0
  41. package/abis/IMulticall_v4.json +21 -0
  42. package/abis/INotifier.json +187 -0
  43. package/abis/IPermit2.json +865 -0
  44. package/abis/IPermit2Forwarder.json +138 -0
  45. package/abis/IPoolInitializer_v4.json +53 -0
  46. package/abis/IPoolManager.json +1286 -0
  47. package/abis/IPositionManager.json +712 -0
  48. package/abis/IProtocolFees.json +174 -0
  49. package/abis/ISignatureTransfer.json +394 -0
  50. package/abis/ISubscriber.json +89 -0
  51. package/abis/ISwapRouter.json +82 -0
  52. package/abis/IUnorderedNonce.json +44 -0
  53. package/abis/IV4Router.json +47 -0
  54. package/abis/IZoraFactory.json +144 -0
  55. package/abis/IZoraV4CoinHook.json +83 -0
  56. package/abis/ImmutableState.json +36 -0
  57. package/abis/LPFeeLibrary.json +65 -0
  58. package/abis/MultiOwnableTest.json +13 -91
  59. package/abis/Simulate.json +0 -91
  60. package/abis/UniV3BuySell.json +12 -0
  61. package/abis/UniV3Errors.json +32 -0
  62. package/abis/UpgradeFactoryImpl.json +9 -0
  63. package/abis/UpgradesTest.json +604 -0
  64. package/abis/ZoraFactoryImpl.json +111 -0
  65. package/abis/ZoraV4CoinHook.json +989 -0
  66. package/addresses/8453.json +2 -1
  67. package/addresses/84532.json +4 -3
  68. package/dist/index.cjs +125 -62
  69. package/dist/index.cjs.map +1 -1
  70. package/dist/index.js +120 -56
  71. package/dist/index.js.map +1 -1
  72. package/dist/wagmiGenerated.d.ts +212 -464
  73. package/dist/wagmiGenerated.d.ts.map +1 -1
  74. package/package/wagmiGenerated.ts +122 -66
  75. package/package.json +4 -4
  76. package/script/CoinsDeployerBase.sol +32 -0
  77. package/script/DeployHooks.s.sol +22 -0
  78. package/script/Simulate.s.sol +3 -2
  79. package/script/UpgradeCoinImpl.sol +2 -2
  80. package/script/UpgradeFactoryImpl.s.sol +23 -0
  81. package/src/Coin.sol +35 -342
  82. package/src/ZoraFactoryImpl.sol +73 -45
  83. package/src/hooks/BaseCoinDeployHook.sol +62 -0
  84. package/src/hooks/BuySupplyWithSwapRouterHook.sol +78 -0
  85. package/src/interfaces/ICoin.sol +5 -1
  86. package/src/interfaces/ICoinDeployHook.sol +8 -0
  87. package/src/interfaces/ISwapRouter.sol +1 -35
  88. package/src/interfaces/IZoraFactory.sol +52 -0
  89. package/src/{utils → libs}/CoinConstants.sol +6 -6
  90. package/src/libs/CoinLegacy.sol +4 -4
  91. package/src/libs/CoinLegacyMarket.sol +182 -0
  92. package/src/libs/CoinSetupV3.sol +111 -0
  93. package/src/libs/UniV3BuySell.sol +449 -0
  94. package/src/libs/UniV3Errors.sol +11 -0
  95. package/src/version/ContractVersionBase.sol +1 -1
  96. package/test/Coin.t.sol +35 -17
  97. package/test/CoinDopplerUniV3.t.sol +14 -17
  98. package/test/Factory.t.sol +4 -3
  99. package/test/Hooks.t.sol +274 -0
  100. package/test/Upgrades.t.sol +67 -0
  101. package/test/utils/BaseTest.sol +18 -3
  102. package/wagmi.config.ts +6 -9
  103. package/src/libs/CoinSetup.sol +0 -37
  104. /package/abis/{CoinSetup.json → CoinSetupV3.json} +0 -0
@@ -0,0 +1,989 @@
1
+ [
2
+ {
3
+ "type": "constructor",
4
+ "inputs": [
5
+ {
6
+ "name": "_poolManager",
7
+ "type": "address",
8
+ "internalType": "contract IPoolManager"
9
+ }
10
+ ],
11
+ "stateMutability": "nonpayable"
12
+ },
13
+ {
14
+ "type": "function",
15
+ "name": "afterAddLiquidity",
16
+ "inputs": [
17
+ {
18
+ "name": "sender",
19
+ "type": "address",
20
+ "internalType": "address"
21
+ },
22
+ {
23
+ "name": "key",
24
+ "type": "tuple",
25
+ "internalType": "struct PoolKey",
26
+ "components": [
27
+ {
28
+ "name": "currency0",
29
+ "type": "address",
30
+ "internalType": "Currency"
31
+ },
32
+ {
33
+ "name": "currency1",
34
+ "type": "address",
35
+ "internalType": "Currency"
36
+ },
37
+ {
38
+ "name": "fee",
39
+ "type": "uint24",
40
+ "internalType": "uint24"
41
+ },
42
+ {
43
+ "name": "tickSpacing",
44
+ "type": "int24",
45
+ "internalType": "int24"
46
+ },
47
+ {
48
+ "name": "hooks",
49
+ "type": "address",
50
+ "internalType": "contract IHooks"
51
+ }
52
+ ]
53
+ },
54
+ {
55
+ "name": "params",
56
+ "type": "tuple",
57
+ "internalType": "struct ModifyLiquidityParams",
58
+ "components": [
59
+ {
60
+ "name": "tickLower",
61
+ "type": "int24",
62
+ "internalType": "int24"
63
+ },
64
+ {
65
+ "name": "tickUpper",
66
+ "type": "int24",
67
+ "internalType": "int24"
68
+ },
69
+ {
70
+ "name": "liquidityDelta",
71
+ "type": "int256",
72
+ "internalType": "int256"
73
+ },
74
+ {
75
+ "name": "salt",
76
+ "type": "bytes32",
77
+ "internalType": "bytes32"
78
+ }
79
+ ]
80
+ },
81
+ {
82
+ "name": "delta",
83
+ "type": "int256",
84
+ "internalType": "BalanceDelta"
85
+ },
86
+ {
87
+ "name": "feesAccrued",
88
+ "type": "int256",
89
+ "internalType": "BalanceDelta"
90
+ },
91
+ {
92
+ "name": "hookData",
93
+ "type": "bytes",
94
+ "internalType": "bytes"
95
+ }
96
+ ],
97
+ "outputs": [
98
+ {
99
+ "name": "",
100
+ "type": "bytes4",
101
+ "internalType": "bytes4"
102
+ },
103
+ {
104
+ "name": "",
105
+ "type": "int256",
106
+ "internalType": "BalanceDelta"
107
+ }
108
+ ],
109
+ "stateMutability": "nonpayable"
110
+ },
111
+ {
112
+ "type": "function",
113
+ "name": "afterDonate",
114
+ "inputs": [
115
+ {
116
+ "name": "sender",
117
+ "type": "address",
118
+ "internalType": "address"
119
+ },
120
+ {
121
+ "name": "key",
122
+ "type": "tuple",
123
+ "internalType": "struct PoolKey",
124
+ "components": [
125
+ {
126
+ "name": "currency0",
127
+ "type": "address",
128
+ "internalType": "Currency"
129
+ },
130
+ {
131
+ "name": "currency1",
132
+ "type": "address",
133
+ "internalType": "Currency"
134
+ },
135
+ {
136
+ "name": "fee",
137
+ "type": "uint24",
138
+ "internalType": "uint24"
139
+ },
140
+ {
141
+ "name": "tickSpacing",
142
+ "type": "int24",
143
+ "internalType": "int24"
144
+ },
145
+ {
146
+ "name": "hooks",
147
+ "type": "address",
148
+ "internalType": "contract IHooks"
149
+ }
150
+ ]
151
+ },
152
+ {
153
+ "name": "amount0",
154
+ "type": "uint256",
155
+ "internalType": "uint256"
156
+ },
157
+ {
158
+ "name": "amount1",
159
+ "type": "uint256",
160
+ "internalType": "uint256"
161
+ },
162
+ {
163
+ "name": "hookData",
164
+ "type": "bytes",
165
+ "internalType": "bytes"
166
+ }
167
+ ],
168
+ "outputs": [
169
+ {
170
+ "name": "",
171
+ "type": "bytes4",
172
+ "internalType": "bytes4"
173
+ }
174
+ ],
175
+ "stateMutability": "nonpayable"
176
+ },
177
+ {
178
+ "type": "function",
179
+ "name": "afterInitialize",
180
+ "inputs": [
181
+ {
182
+ "name": "sender",
183
+ "type": "address",
184
+ "internalType": "address"
185
+ },
186
+ {
187
+ "name": "key",
188
+ "type": "tuple",
189
+ "internalType": "struct PoolKey",
190
+ "components": [
191
+ {
192
+ "name": "currency0",
193
+ "type": "address",
194
+ "internalType": "Currency"
195
+ },
196
+ {
197
+ "name": "currency1",
198
+ "type": "address",
199
+ "internalType": "Currency"
200
+ },
201
+ {
202
+ "name": "fee",
203
+ "type": "uint24",
204
+ "internalType": "uint24"
205
+ },
206
+ {
207
+ "name": "tickSpacing",
208
+ "type": "int24",
209
+ "internalType": "int24"
210
+ },
211
+ {
212
+ "name": "hooks",
213
+ "type": "address",
214
+ "internalType": "contract IHooks"
215
+ }
216
+ ]
217
+ },
218
+ {
219
+ "name": "sqrtPriceX96",
220
+ "type": "uint160",
221
+ "internalType": "uint160"
222
+ },
223
+ {
224
+ "name": "tick",
225
+ "type": "int24",
226
+ "internalType": "int24"
227
+ }
228
+ ],
229
+ "outputs": [
230
+ {
231
+ "name": "",
232
+ "type": "bytes4",
233
+ "internalType": "bytes4"
234
+ }
235
+ ],
236
+ "stateMutability": "nonpayable"
237
+ },
238
+ {
239
+ "type": "function",
240
+ "name": "afterRemoveLiquidity",
241
+ "inputs": [
242
+ {
243
+ "name": "sender",
244
+ "type": "address",
245
+ "internalType": "address"
246
+ },
247
+ {
248
+ "name": "key",
249
+ "type": "tuple",
250
+ "internalType": "struct PoolKey",
251
+ "components": [
252
+ {
253
+ "name": "currency0",
254
+ "type": "address",
255
+ "internalType": "Currency"
256
+ },
257
+ {
258
+ "name": "currency1",
259
+ "type": "address",
260
+ "internalType": "Currency"
261
+ },
262
+ {
263
+ "name": "fee",
264
+ "type": "uint24",
265
+ "internalType": "uint24"
266
+ },
267
+ {
268
+ "name": "tickSpacing",
269
+ "type": "int24",
270
+ "internalType": "int24"
271
+ },
272
+ {
273
+ "name": "hooks",
274
+ "type": "address",
275
+ "internalType": "contract IHooks"
276
+ }
277
+ ]
278
+ },
279
+ {
280
+ "name": "params",
281
+ "type": "tuple",
282
+ "internalType": "struct ModifyLiquidityParams",
283
+ "components": [
284
+ {
285
+ "name": "tickLower",
286
+ "type": "int24",
287
+ "internalType": "int24"
288
+ },
289
+ {
290
+ "name": "tickUpper",
291
+ "type": "int24",
292
+ "internalType": "int24"
293
+ },
294
+ {
295
+ "name": "liquidityDelta",
296
+ "type": "int256",
297
+ "internalType": "int256"
298
+ },
299
+ {
300
+ "name": "salt",
301
+ "type": "bytes32",
302
+ "internalType": "bytes32"
303
+ }
304
+ ]
305
+ },
306
+ {
307
+ "name": "delta",
308
+ "type": "int256",
309
+ "internalType": "BalanceDelta"
310
+ },
311
+ {
312
+ "name": "feesAccrued",
313
+ "type": "int256",
314
+ "internalType": "BalanceDelta"
315
+ },
316
+ {
317
+ "name": "hookData",
318
+ "type": "bytes",
319
+ "internalType": "bytes"
320
+ }
321
+ ],
322
+ "outputs": [
323
+ {
324
+ "name": "",
325
+ "type": "bytes4",
326
+ "internalType": "bytes4"
327
+ },
328
+ {
329
+ "name": "",
330
+ "type": "int256",
331
+ "internalType": "BalanceDelta"
332
+ }
333
+ ],
334
+ "stateMutability": "nonpayable"
335
+ },
336
+ {
337
+ "type": "function",
338
+ "name": "afterSwap",
339
+ "inputs": [
340
+ {
341
+ "name": "sender",
342
+ "type": "address",
343
+ "internalType": "address"
344
+ },
345
+ {
346
+ "name": "key",
347
+ "type": "tuple",
348
+ "internalType": "struct PoolKey",
349
+ "components": [
350
+ {
351
+ "name": "currency0",
352
+ "type": "address",
353
+ "internalType": "Currency"
354
+ },
355
+ {
356
+ "name": "currency1",
357
+ "type": "address",
358
+ "internalType": "Currency"
359
+ },
360
+ {
361
+ "name": "fee",
362
+ "type": "uint24",
363
+ "internalType": "uint24"
364
+ },
365
+ {
366
+ "name": "tickSpacing",
367
+ "type": "int24",
368
+ "internalType": "int24"
369
+ },
370
+ {
371
+ "name": "hooks",
372
+ "type": "address",
373
+ "internalType": "contract IHooks"
374
+ }
375
+ ]
376
+ },
377
+ {
378
+ "name": "params",
379
+ "type": "tuple",
380
+ "internalType": "struct SwapParams",
381
+ "components": [
382
+ {
383
+ "name": "zeroForOne",
384
+ "type": "bool",
385
+ "internalType": "bool"
386
+ },
387
+ {
388
+ "name": "amountSpecified",
389
+ "type": "int256",
390
+ "internalType": "int256"
391
+ },
392
+ {
393
+ "name": "sqrtPriceLimitX96",
394
+ "type": "uint160",
395
+ "internalType": "uint160"
396
+ }
397
+ ]
398
+ },
399
+ {
400
+ "name": "delta",
401
+ "type": "int256",
402
+ "internalType": "BalanceDelta"
403
+ },
404
+ {
405
+ "name": "hookData",
406
+ "type": "bytes",
407
+ "internalType": "bytes"
408
+ }
409
+ ],
410
+ "outputs": [
411
+ {
412
+ "name": "",
413
+ "type": "bytes4",
414
+ "internalType": "bytes4"
415
+ },
416
+ {
417
+ "name": "",
418
+ "type": "int128",
419
+ "internalType": "int128"
420
+ }
421
+ ],
422
+ "stateMutability": "nonpayable"
423
+ },
424
+ {
425
+ "type": "function",
426
+ "name": "beforeAddLiquidity",
427
+ "inputs": [
428
+ {
429
+ "name": "sender",
430
+ "type": "address",
431
+ "internalType": "address"
432
+ },
433
+ {
434
+ "name": "key",
435
+ "type": "tuple",
436
+ "internalType": "struct PoolKey",
437
+ "components": [
438
+ {
439
+ "name": "currency0",
440
+ "type": "address",
441
+ "internalType": "Currency"
442
+ },
443
+ {
444
+ "name": "currency1",
445
+ "type": "address",
446
+ "internalType": "Currency"
447
+ },
448
+ {
449
+ "name": "fee",
450
+ "type": "uint24",
451
+ "internalType": "uint24"
452
+ },
453
+ {
454
+ "name": "tickSpacing",
455
+ "type": "int24",
456
+ "internalType": "int24"
457
+ },
458
+ {
459
+ "name": "hooks",
460
+ "type": "address",
461
+ "internalType": "contract IHooks"
462
+ }
463
+ ]
464
+ },
465
+ {
466
+ "name": "params",
467
+ "type": "tuple",
468
+ "internalType": "struct ModifyLiquidityParams",
469
+ "components": [
470
+ {
471
+ "name": "tickLower",
472
+ "type": "int24",
473
+ "internalType": "int24"
474
+ },
475
+ {
476
+ "name": "tickUpper",
477
+ "type": "int24",
478
+ "internalType": "int24"
479
+ },
480
+ {
481
+ "name": "liquidityDelta",
482
+ "type": "int256",
483
+ "internalType": "int256"
484
+ },
485
+ {
486
+ "name": "salt",
487
+ "type": "bytes32",
488
+ "internalType": "bytes32"
489
+ }
490
+ ]
491
+ },
492
+ {
493
+ "name": "hookData",
494
+ "type": "bytes",
495
+ "internalType": "bytes"
496
+ }
497
+ ],
498
+ "outputs": [
499
+ {
500
+ "name": "",
501
+ "type": "bytes4",
502
+ "internalType": "bytes4"
503
+ }
504
+ ],
505
+ "stateMutability": "nonpayable"
506
+ },
507
+ {
508
+ "type": "function",
509
+ "name": "beforeDonate",
510
+ "inputs": [
511
+ {
512
+ "name": "sender",
513
+ "type": "address",
514
+ "internalType": "address"
515
+ },
516
+ {
517
+ "name": "key",
518
+ "type": "tuple",
519
+ "internalType": "struct PoolKey",
520
+ "components": [
521
+ {
522
+ "name": "currency0",
523
+ "type": "address",
524
+ "internalType": "Currency"
525
+ },
526
+ {
527
+ "name": "currency1",
528
+ "type": "address",
529
+ "internalType": "Currency"
530
+ },
531
+ {
532
+ "name": "fee",
533
+ "type": "uint24",
534
+ "internalType": "uint24"
535
+ },
536
+ {
537
+ "name": "tickSpacing",
538
+ "type": "int24",
539
+ "internalType": "int24"
540
+ },
541
+ {
542
+ "name": "hooks",
543
+ "type": "address",
544
+ "internalType": "contract IHooks"
545
+ }
546
+ ]
547
+ },
548
+ {
549
+ "name": "amount0",
550
+ "type": "uint256",
551
+ "internalType": "uint256"
552
+ },
553
+ {
554
+ "name": "amount1",
555
+ "type": "uint256",
556
+ "internalType": "uint256"
557
+ },
558
+ {
559
+ "name": "hookData",
560
+ "type": "bytes",
561
+ "internalType": "bytes"
562
+ }
563
+ ],
564
+ "outputs": [
565
+ {
566
+ "name": "",
567
+ "type": "bytes4",
568
+ "internalType": "bytes4"
569
+ }
570
+ ],
571
+ "stateMutability": "nonpayable"
572
+ },
573
+ {
574
+ "type": "function",
575
+ "name": "beforeInitialize",
576
+ "inputs": [
577
+ {
578
+ "name": "sender",
579
+ "type": "address",
580
+ "internalType": "address"
581
+ },
582
+ {
583
+ "name": "key",
584
+ "type": "tuple",
585
+ "internalType": "struct PoolKey",
586
+ "components": [
587
+ {
588
+ "name": "currency0",
589
+ "type": "address",
590
+ "internalType": "Currency"
591
+ },
592
+ {
593
+ "name": "currency1",
594
+ "type": "address",
595
+ "internalType": "Currency"
596
+ },
597
+ {
598
+ "name": "fee",
599
+ "type": "uint24",
600
+ "internalType": "uint24"
601
+ },
602
+ {
603
+ "name": "tickSpacing",
604
+ "type": "int24",
605
+ "internalType": "int24"
606
+ },
607
+ {
608
+ "name": "hooks",
609
+ "type": "address",
610
+ "internalType": "contract IHooks"
611
+ }
612
+ ]
613
+ },
614
+ {
615
+ "name": "sqrtPriceX96",
616
+ "type": "uint160",
617
+ "internalType": "uint160"
618
+ }
619
+ ],
620
+ "outputs": [
621
+ {
622
+ "name": "",
623
+ "type": "bytes4",
624
+ "internalType": "bytes4"
625
+ }
626
+ ],
627
+ "stateMutability": "nonpayable"
628
+ },
629
+ {
630
+ "type": "function",
631
+ "name": "beforeRemoveLiquidity",
632
+ "inputs": [
633
+ {
634
+ "name": "sender",
635
+ "type": "address",
636
+ "internalType": "address"
637
+ },
638
+ {
639
+ "name": "key",
640
+ "type": "tuple",
641
+ "internalType": "struct PoolKey",
642
+ "components": [
643
+ {
644
+ "name": "currency0",
645
+ "type": "address",
646
+ "internalType": "Currency"
647
+ },
648
+ {
649
+ "name": "currency1",
650
+ "type": "address",
651
+ "internalType": "Currency"
652
+ },
653
+ {
654
+ "name": "fee",
655
+ "type": "uint24",
656
+ "internalType": "uint24"
657
+ },
658
+ {
659
+ "name": "tickSpacing",
660
+ "type": "int24",
661
+ "internalType": "int24"
662
+ },
663
+ {
664
+ "name": "hooks",
665
+ "type": "address",
666
+ "internalType": "contract IHooks"
667
+ }
668
+ ]
669
+ },
670
+ {
671
+ "name": "params",
672
+ "type": "tuple",
673
+ "internalType": "struct ModifyLiquidityParams",
674
+ "components": [
675
+ {
676
+ "name": "tickLower",
677
+ "type": "int24",
678
+ "internalType": "int24"
679
+ },
680
+ {
681
+ "name": "tickUpper",
682
+ "type": "int24",
683
+ "internalType": "int24"
684
+ },
685
+ {
686
+ "name": "liquidityDelta",
687
+ "type": "int256",
688
+ "internalType": "int256"
689
+ },
690
+ {
691
+ "name": "salt",
692
+ "type": "bytes32",
693
+ "internalType": "bytes32"
694
+ }
695
+ ]
696
+ },
697
+ {
698
+ "name": "hookData",
699
+ "type": "bytes",
700
+ "internalType": "bytes"
701
+ }
702
+ ],
703
+ "outputs": [
704
+ {
705
+ "name": "",
706
+ "type": "bytes4",
707
+ "internalType": "bytes4"
708
+ }
709
+ ],
710
+ "stateMutability": "nonpayable"
711
+ },
712
+ {
713
+ "type": "function",
714
+ "name": "beforeSwap",
715
+ "inputs": [
716
+ {
717
+ "name": "sender",
718
+ "type": "address",
719
+ "internalType": "address"
720
+ },
721
+ {
722
+ "name": "key",
723
+ "type": "tuple",
724
+ "internalType": "struct PoolKey",
725
+ "components": [
726
+ {
727
+ "name": "currency0",
728
+ "type": "address",
729
+ "internalType": "Currency"
730
+ },
731
+ {
732
+ "name": "currency1",
733
+ "type": "address",
734
+ "internalType": "Currency"
735
+ },
736
+ {
737
+ "name": "fee",
738
+ "type": "uint24",
739
+ "internalType": "uint24"
740
+ },
741
+ {
742
+ "name": "tickSpacing",
743
+ "type": "int24",
744
+ "internalType": "int24"
745
+ },
746
+ {
747
+ "name": "hooks",
748
+ "type": "address",
749
+ "internalType": "contract IHooks"
750
+ }
751
+ ]
752
+ },
753
+ {
754
+ "name": "params",
755
+ "type": "tuple",
756
+ "internalType": "struct SwapParams",
757
+ "components": [
758
+ {
759
+ "name": "zeroForOne",
760
+ "type": "bool",
761
+ "internalType": "bool"
762
+ },
763
+ {
764
+ "name": "amountSpecified",
765
+ "type": "int256",
766
+ "internalType": "int256"
767
+ },
768
+ {
769
+ "name": "sqrtPriceLimitX96",
770
+ "type": "uint160",
771
+ "internalType": "uint160"
772
+ }
773
+ ]
774
+ },
775
+ {
776
+ "name": "hookData",
777
+ "type": "bytes",
778
+ "internalType": "bytes"
779
+ }
780
+ ],
781
+ "outputs": [
782
+ {
783
+ "name": "",
784
+ "type": "bytes4",
785
+ "internalType": "bytes4"
786
+ },
787
+ {
788
+ "name": "",
789
+ "type": "int256",
790
+ "internalType": "BeforeSwapDelta"
791
+ },
792
+ {
793
+ "name": "",
794
+ "type": "uint24",
795
+ "internalType": "uint24"
796
+ }
797
+ ],
798
+ "stateMutability": "nonpayable"
799
+ },
800
+ {
801
+ "type": "function",
802
+ "name": "getHookPermissions",
803
+ "inputs": [],
804
+ "outputs": [
805
+ {
806
+ "name": "",
807
+ "type": "tuple",
808
+ "internalType": "struct Hooks.Permissions",
809
+ "components": [
810
+ {
811
+ "name": "beforeInitialize",
812
+ "type": "bool",
813
+ "internalType": "bool"
814
+ },
815
+ {
816
+ "name": "afterInitialize",
817
+ "type": "bool",
818
+ "internalType": "bool"
819
+ },
820
+ {
821
+ "name": "beforeAddLiquidity",
822
+ "type": "bool",
823
+ "internalType": "bool"
824
+ },
825
+ {
826
+ "name": "afterAddLiquidity",
827
+ "type": "bool",
828
+ "internalType": "bool"
829
+ },
830
+ {
831
+ "name": "beforeRemoveLiquidity",
832
+ "type": "bool",
833
+ "internalType": "bool"
834
+ },
835
+ {
836
+ "name": "afterRemoveLiquidity",
837
+ "type": "bool",
838
+ "internalType": "bool"
839
+ },
840
+ {
841
+ "name": "beforeSwap",
842
+ "type": "bool",
843
+ "internalType": "bool"
844
+ },
845
+ {
846
+ "name": "afterSwap",
847
+ "type": "bool",
848
+ "internalType": "bool"
849
+ },
850
+ {
851
+ "name": "beforeDonate",
852
+ "type": "bool",
853
+ "internalType": "bool"
854
+ },
855
+ {
856
+ "name": "afterDonate",
857
+ "type": "bool",
858
+ "internalType": "bool"
859
+ },
860
+ {
861
+ "name": "beforeSwapReturnDelta",
862
+ "type": "bool",
863
+ "internalType": "bool"
864
+ },
865
+ {
866
+ "name": "afterSwapReturnDelta",
867
+ "type": "bool",
868
+ "internalType": "bool"
869
+ },
870
+ {
871
+ "name": "afterAddLiquidityReturnDelta",
872
+ "type": "bool",
873
+ "internalType": "bool"
874
+ },
875
+ {
876
+ "name": "afterRemoveLiquidityReturnDelta",
877
+ "type": "bool",
878
+ "internalType": "bool"
879
+ }
880
+ ]
881
+ }
882
+ ],
883
+ "stateMutability": "pure"
884
+ },
885
+ {
886
+ "type": "function",
887
+ "name": "poolManager",
888
+ "inputs": [],
889
+ "outputs": [
890
+ {
891
+ "name": "",
892
+ "type": "address",
893
+ "internalType": "contract IPoolManager"
894
+ }
895
+ ],
896
+ "stateMutability": "view"
897
+ },
898
+ {
899
+ "type": "event",
900
+ "name": "Swapped",
901
+ "inputs": [
902
+ {
903
+ "name": "sender",
904
+ "type": "address",
905
+ "indexed": false,
906
+ "internalType": "address"
907
+ },
908
+ {
909
+ "name": "key",
910
+ "type": "tuple",
911
+ "indexed": false,
912
+ "internalType": "struct PoolKey",
913
+ "components": [
914
+ {
915
+ "name": "currency0",
916
+ "type": "address",
917
+ "internalType": "Currency"
918
+ },
919
+ {
920
+ "name": "currency1",
921
+ "type": "address",
922
+ "internalType": "Currency"
923
+ },
924
+ {
925
+ "name": "fee",
926
+ "type": "uint24",
927
+ "internalType": "uint24"
928
+ },
929
+ {
930
+ "name": "tickSpacing",
931
+ "type": "int24",
932
+ "internalType": "int24"
933
+ },
934
+ {
935
+ "name": "hooks",
936
+ "type": "address",
937
+ "internalType": "contract IHooks"
938
+ }
939
+ ]
940
+ },
941
+ {
942
+ "name": "params",
943
+ "type": "tuple",
944
+ "indexed": false,
945
+ "internalType": "struct SwapParams",
946
+ "components": [
947
+ {
948
+ "name": "zeroForOne",
949
+ "type": "bool",
950
+ "internalType": "bool"
951
+ },
952
+ {
953
+ "name": "amountSpecified",
954
+ "type": "int256",
955
+ "internalType": "int256"
956
+ },
957
+ {
958
+ "name": "sqrtPriceLimitX96",
959
+ "type": "uint160",
960
+ "internalType": "uint160"
961
+ }
962
+ ]
963
+ },
964
+ {
965
+ "name": "delta",
966
+ "type": "int256",
967
+ "indexed": false,
968
+ "internalType": "BalanceDelta"
969
+ },
970
+ {
971
+ "name": "hookData",
972
+ "type": "bytes",
973
+ "indexed": false,
974
+ "internalType": "bytes"
975
+ }
976
+ ],
977
+ "anonymous": false
978
+ },
979
+ {
980
+ "type": "error",
981
+ "name": "HookNotImplemented",
982
+ "inputs": []
983
+ },
984
+ {
985
+ "type": "error",
986
+ "name": "NotPoolManager",
987
+ "inputs": []
988
+ }
989
+ ]