@zoralabs/coins 0.9.0 → 1.0.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 (131) hide show
  1. package/.turbo/turbo-build.log +179 -114
  2. package/CHANGELOG.md +46 -0
  3. package/abis/BaseCoin.json +26 -118
  4. package/abis/BaseTest.json +47 -0
  5. package/abis/BuySupplyWithSwapRouterHook.json +40 -0
  6. package/abis/Coin.json +171 -63
  7. package/abis/CoinDopplerMultiCurve.json +38 -0
  8. package/abis/CoinRewardsV4.json +54 -0
  9. package/abis/CoinTest.json +53 -20
  10. package/abis/CoinUniV4Test.json +1091 -0
  11. package/abis/CoinV4.json +234 -211
  12. package/abis/DeployScript.json +47 -0
  13. package/abis/DeployedCoinVersionLookup.json +21 -0
  14. package/abis/DeployedCoinVersionLookupTest.json +716 -0
  15. package/abis/DifferentNamespaceVersionLookup.json +39 -0
  16. package/abis/DopplerUniswapV3Test.json +49 -93
  17. package/abis/ERC20.json +310 -0
  18. package/abis/FactoryTest.json +85 -7
  19. package/abis/FeeEstimatorHook.json +1515 -0
  20. package/abis/HooksDeployment.json +23 -0
  21. package/abis/HooksTest.json +60 -0
  22. package/abis/ICoin.json +40 -71
  23. package/abis/ICoinV3.json +879 -0
  24. package/abis/ICoinV4.json +915 -0
  25. package/abis/IDeployedCoinVersionLookup.json +21 -0
  26. package/abis/IERC721.json +36 -36
  27. package/abis/IHasPoolKey.json +42 -0
  28. package/abis/IHasRewardsRecipients.json +54 -0
  29. package/abis/IHasSwapPath.json +60 -0
  30. package/abis/IMsgSender.json +15 -0
  31. package/abis/IPoolConfigEncoding.json +46 -0
  32. package/abis/ISwapPathRouter.json +92 -0
  33. package/abis/IUniversalRouter.json +61 -0
  34. package/abis/IUnlockCallback.json +21 -0
  35. package/abis/IV4Quoter.json +310 -0
  36. package/abis/IZoraFactory.json +210 -11
  37. package/abis/IZoraV4CoinHook.json +348 -4
  38. package/abis/MockERC20.json +21 -0
  39. package/abis/MultiOwnableTest.json +47 -0
  40. package/abis/{CoinConfigurationVersions.json → Position.json} +1 -1
  41. package/abis/PrintUpgradeCommand.json +9 -0
  42. package/abis/ProxyShim.json +24 -0
  43. package/abis/StateLibrary.json +80 -0
  44. package/abis/TestDeployedCoinVersionLookupImplementation.json +39 -0
  45. package/abis/TestV4Swap.json +9 -0
  46. package/abis/UpgradeCoinImpl.json +47 -0
  47. package/abis/UpgradesTest.json +81 -0
  48. package/abis/Vm.json +1482 -111
  49. package/abis/VmSafe.json +856 -32
  50. package/abis/ZoraFactoryImpl.json +339 -1
  51. package/abis/ZoraV4CoinHook.json +442 -5
  52. package/addresses/8453.json +7 -4
  53. package/addresses/84532.json +8 -5
  54. package/addresses/dev/8453.json +10 -0
  55. package/dist/index.cjs +1932 -167
  56. package/dist/index.cjs.map +1 -1
  57. package/dist/index.js +1928 -167
  58. package/dist/index.js.map +1 -1
  59. package/dist/wagmiGenerated.d.ts +2606 -160
  60. package/dist/wagmiGenerated.d.ts.map +1 -1
  61. package/foundry.toml +1 -0
  62. package/package/wagmiGenerated.ts +1941 -164
  63. package/package.json +8 -3
  64. package/remappings.txt +6 -1
  65. package/script/Deploy.s.sol +1 -1
  66. package/script/DeployDevFactory.s.sol +21 -0
  67. package/script/DeployHooks.s.sol +1 -1
  68. package/script/PrintUpgradeCommand.s.sol +13 -0
  69. package/script/Simulate.s.sol +1 -10
  70. package/script/TestBackingCoinSwap.s.sol +147 -0
  71. package/script/TestV4Swap.s.sol +136 -0
  72. package/script/UpgradeCoinImpl.sol +2 -2
  73. package/script/UpgradeFactoryImpl.s.sol +2 -2
  74. package/src/BaseCoin.sol +190 -0
  75. package/src/Coin.sol +87 -202
  76. package/src/CoinV4.sol +121 -0
  77. package/src/ZoraFactoryImpl.sol +208 -36
  78. package/{script → src/deployment}/CoinsDeployerBase.sol +111 -17
  79. package/src/hooks/ZoraV4CoinHook.sol +212 -0
  80. package/src/hooks/{BaseCoinDeployHook.sol → deployment/BaseCoinDeployHook.sol} +3 -3
  81. package/src/hooks/deployment/BuySupplyWithSwapRouterHook.sol +140 -0
  82. package/src/interfaces/ICoin.sol +31 -39
  83. package/src/interfaces/ICoinV3.sol +71 -0
  84. package/src/interfaces/ICoinV4.sol +69 -0
  85. package/src/interfaces/IDeployedCoinVersionLookup.sol +11 -0
  86. package/src/interfaces/IMsgSender.sol +9 -0
  87. package/src/interfaces/IPoolConfigEncoding.sol +14 -0
  88. package/src/interfaces/ISwapPathRouter.sol +14 -0
  89. package/src/interfaces/IZoraFactory.sol +67 -28
  90. package/src/interfaces/IZoraV4CoinHook.sol +116 -0
  91. package/src/libs/CoinCommon.sol +15 -0
  92. package/src/libs/CoinConfigurationVersions.sol +116 -1
  93. package/src/libs/CoinConstants.sol +5 -0
  94. package/src/libs/CoinDopplerMultiCurve.sol +134 -0
  95. package/src/libs/CoinDopplerUniV3.sol +19 -171
  96. package/src/libs/CoinRewards.sol +195 -0
  97. package/src/libs/CoinRewardsV4.sol +179 -0
  98. package/src/libs/CoinSetup.sol +57 -0
  99. package/src/libs/CoinSetupV3.sol +6 -67
  100. package/src/libs/DopplerMath.sol +156 -0
  101. package/src/libs/HooksDeployment.sol +128 -0
  102. package/src/libs/MarketConstants.sol +4 -0
  103. package/src/libs/PoolStateReader.sol +22 -0
  104. package/src/libs/UniV3BuySell.sol +74 -292
  105. package/src/libs/UniV4SwapHelper.sol +65 -0
  106. package/src/libs/UniV4SwapToCurrency.sol +109 -0
  107. package/src/libs/V4Liquidity.sol +122 -0
  108. package/src/types/PoolConfiguration.sol +15 -0
  109. package/src/utils/DeployedCoinVersionLookup.sol +52 -0
  110. package/src/version/ContractVersionBase.sol +1 -1
  111. package/test/Coin.t.sol +78 -88
  112. package/test/CoinDopplerUniV3.t.sol +32 -171
  113. package/test/CoinUniV4.t.sol +777 -0
  114. package/test/{Hooks.t.sol → DeploymentHooks.t.sol} +53 -16
  115. package/test/Factory.t.sol +80 -47
  116. package/test/MultiOwnable.t.sol +6 -3
  117. package/test/Upgrades.t.sol +97 -5
  118. package/test/mocks/MockERC20.sol +12 -0
  119. package/test/utils/BaseTest.sol +162 -57
  120. package/test/utils/DeployedCoinVersionLookup.t.sol +127 -0
  121. package/test/utils/FeeEstimatorHook.sol +84 -0
  122. package/test/utils/ProxyShim.sol +17 -0
  123. package/wagmi.config.ts +4 -0
  124. package/.env +0 -1
  125. package/.turbo/turbo-update-contract-version.log +0 -22
  126. package/abis/CoinSetupV3.json +0 -7
  127. package/abis/HookDeployer.json +0 -68
  128. package/abis/IHookDeployer.json +0 -42
  129. package/src/hooks/BuySupplyWithSwapRouterHook.sol +0 -78
  130. package/src/libs/CoinLegacy.sol +0 -48
  131. package/src/libs/CoinLegacyMarket.sol +0 -182
@@ -0,0 +1,39 @@
1
+ [
2
+ {
3
+ "type": "function",
4
+ "name": "getVersionForDeployedCoin",
5
+ "inputs": [
6
+ {
7
+ "name": "coin",
8
+ "type": "address",
9
+ "internalType": "address"
10
+ }
11
+ ],
12
+ "outputs": [
13
+ {
14
+ "name": "",
15
+ "type": "uint8",
16
+ "internalType": "uint8"
17
+ }
18
+ ],
19
+ "stateMutability": "view"
20
+ },
21
+ {
22
+ "type": "function",
23
+ "name": "setVersionForTesting",
24
+ "inputs": [
25
+ {
26
+ "name": "coin",
27
+ "type": "address",
28
+ "internalType": "address"
29
+ },
30
+ {
31
+ "name": "version",
32
+ "type": "uint8",
33
+ "internalType": "uint8"
34
+ }
35
+ ],
36
+ "outputs": [],
37
+ "stateMutability": "nonpayable"
38
+ }
39
+ ]
@@ -307,13 +307,6 @@
307
307
  "outputs": [],
308
308
  "stateMutability": "pure"
309
309
  },
310
- {
311
- "type": "function",
312
- "name": "test_deploy_doppler_eth",
313
- "inputs": [],
314
- "outputs": [],
315
- "stateMutability": "nonpayable"
316
- },
317
310
  {
318
311
  "type": "function",
319
312
  "name": "test_deploy_doppler_eth_with_prebuy",
@@ -327,33 +320,6 @@
327
320
  "outputs": [],
328
321
  "stateMutability": "nonpayable"
329
322
  },
330
- {
331
- "type": "function",
332
- "name": "test_deploy_legacy_eth_config",
333
- "inputs": [],
334
- "outputs": [],
335
- "stateMutability": "nonpayable"
336
- },
337
- {
338
- "type": "function",
339
- "name": "test_deploy_legacy_eth_config_with_prebuy",
340
- "inputs": [
341
- {
342
- "name": "initialOrderSize",
343
- "type": "uint256",
344
- "internalType": "uint256"
345
- }
346
- ],
347
- "outputs": [],
348
- "stateMutability": "nonpayable"
349
- },
350
- {
351
- "type": "function",
352
- "name": "test_deploy_legacy_usdc_config_with_prebuy",
353
- "inputs": [],
354
- "outputs": [],
355
- "stateMutability": "nonpayable"
356
- },
357
323
  {
358
324
  "type": "function",
359
325
  "name": "test_invalid_pool_config",
@@ -363,75 +329,18 @@
363
329
  },
364
330
  {
365
331
  "type": "function",
366
- "name": "test_invalid_tick_range",
332
+ "name": "test_revert_deploy_invalid_discovery_supply_share",
367
333
  "inputs": [],
368
334
  "outputs": [],
369
335
  "stateMutability": "nonpayable"
370
336
  },
371
337
  {
372
338
  "type": "function",
373
- "name": "test_inverted_tick_range_revert",
339
+ "name": "test_supply_constants",
374
340
  "inputs": [],
375
341
  "outputs": [],
376
342
  "stateMutability": "nonpayable"
377
343
  },
378
- {
379
- "type": "function",
380
- "name": "test_revert_deploy_invalid_discovery_supply_share",
381
- "inputs": [],
382
- "outputs": [],
383
- "stateMutability": "nonpayable"
384
- },
385
- {
386
- "type": "event",
387
- "name": "SlotFound",
388
- "inputs": [
389
- {
390
- "name": "who",
391
- "type": "address",
392
- "indexed": false,
393
- "internalType": "address"
394
- },
395
- {
396
- "name": "fsig",
397
- "type": "bytes4",
398
- "indexed": false,
399
- "internalType": "bytes4"
400
- },
401
- {
402
- "name": "keysHash",
403
- "type": "bytes32",
404
- "indexed": false,
405
- "internalType": "bytes32"
406
- },
407
- {
408
- "name": "slot",
409
- "type": "uint256",
410
- "indexed": false,
411
- "internalType": "uint256"
412
- }
413
- ],
414
- "anonymous": false
415
- },
416
- {
417
- "type": "event",
418
- "name": "WARNING_UninitedSlot",
419
- "inputs": [
420
- {
421
- "name": "who",
422
- "type": "address",
423
- "indexed": false,
424
- "internalType": "address"
425
- },
426
- {
427
- "name": "slot",
428
- "type": "uint256",
429
- "indexed": false,
430
- "internalType": "uint256"
431
- }
432
- ],
433
- "anonymous": false
434
- },
435
344
  {
436
345
  "type": "event",
437
346
  "name": "log",
@@ -801,6 +710,53 @@
801
710
  "name": "CannotMintZeroLiquidity",
802
711
  "inputs": []
803
712
  },
713
+ {
714
+ "type": "error",
715
+ "name": "Create2EmptyBytecode",
716
+ "inputs": []
717
+ },
718
+ {
719
+ "type": "error",
720
+ "name": "Create2FailedDeployment",
721
+ "inputs": []
722
+ },
723
+ {
724
+ "type": "error",
725
+ "name": "Create2InsufficientBalance",
726
+ "inputs": [
727
+ {
728
+ "name": "balance",
729
+ "type": "uint256",
730
+ "internalType": "uint256"
731
+ },
732
+ {
733
+ "name": "needed",
734
+ "type": "uint256",
735
+ "internalType": "uint256"
736
+ }
737
+ ]
738
+ },
739
+ {
740
+ "type": "error",
741
+ "name": "HookNotDeployed",
742
+ "inputs": []
743
+ },
744
+ {
745
+ "type": "error",
746
+ "name": "InvalidHookAddress",
747
+ "inputs": [
748
+ {
749
+ "name": "expected",
750
+ "type": "address",
751
+ "internalType": "address"
752
+ },
753
+ {
754
+ "name": "actual",
755
+ "type": "address",
756
+ "internalType": "address"
757
+ }
758
+ ]
759
+ },
804
760
  {
805
761
  "type": "error",
806
762
  "name": "InvalidTickRangeMisordered",
@@ -0,0 +1,310 @@
1
+ [
2
+ {
3
+ "type": "function",
4
+ "name": "allowance",
5
+ "inputs": [
6
+ {
7
+ "name": "owner",
8
+ "type": "address",
9
+ "internalType": "address"
10
+ },
11
+ {
12
+ "name": "spender",
13
+ "type": "address",
14
+ "internalType": "address"
15
+ }
16
+ ],
17
+ "outputs": [
18
+ {
19
+ "name": "",
20
+ "type": "uint256",
21
+ "internalType": "uint256"
22
+ }
23
+ ],
24
+ "stateMutability": "view"
25
+ },
26
+ {
27
+ "type": "function",
28
+ "name": "approve",
29
+ "inputs": [
30
+ {
31
+ "name": "spender",
32
+ "type": "address",
33
+ "internalType": "address"
34
+ },
35
+ {
36
+ "name": "value",
37
+ "type": "uint256",
38
+ "internalType": "uint256"
39
+ }
40
+ ],
41
+ "outputs": [
42
+ {
43
+ "name": "",
44
+ "type": "bool",
45
+ "internalType": "bool"
46
+ }
47
+ ],
48
+ "stateMutability": "nonpayable"
49
+ },
50
+ {
51
+ "type": "function",
52
+ "name": "balanceOf",
53
+ "inputs": [
54
+ {
55
+ "name": "account",
56
+ "type": "address",
57
+ "internalType": "address"
58
+ }
59
+ ],
60
+ "outputs": [
61
+ {
62
+ "name": "",
63
+ "type": "uint256",
64
+ "internalType": "uint256"
65
+ }
66
+ ],
67
+ "stateMutability": "view"
68
+ },
69
+ {
70
+ "type": "function",
71
+ "name": "decimals",
72
+ "inputs": [],
73
+ "outputs": [
74
+ {
75
+ "name": "",
76
+ "type": "uint8",
77
+ "internalType": "uint8"
78
+ }
79
+ ],
80
+ "stateMutability": "view"
81
+ },
82
+ {
83
+ "type": "function",
84
+ "name": "name",
85
+ "inputs": [],
86
+ "outputs": [
87
+ {
88
+ "name": "",
89
+ "type": "string",
90
+ "internalType": "string"
91
+ }
92
+ ],
93
+ "stateMutability": "view"
94
+ },
95
+ {
96
+ "type": "function",
97
+ "name": "symbol",
98
+ "inputs": [],
99
+ "outputs": [
100
+ {
101
+ "name": "",
102
+ "type": "string",
103
+ "internalType": "string"
104
+ }
105
+ ],
106
+ "stateMutability": "view"
107
+ },
108
+ {
109
+ "type": "function",
110
+ "name": "totalSupply",
111
+ "inputs": [],
112
+ "outputs": [
113
+ {
114
+ "name": "",
115
+ "type": "uint256",
116
+ "internalType": "uint256"
117
+ }
118
+ ],
119
+ "stateMutability": "view"
120
+ },
121
+ {
122
+ "type": "function",
123
+ "name": "transfer",
124
+ "inputs": [
125
+ {
126
+ "name": "to",
127
+ "type": "address",
128
+ "internalType": "address"
129
+ },
130
+ {
131
+ "name": "value",
132
+ "type": "uint256",
133
+ "internalType": "uint256"
134
+ }
135
+ ],
136
+ "outputs": [
137
+ {
138
+ "name": "",
139
+ "type": "bool",
140
+ "internalType": "bool"
141
+ }
142
+ ],
143
+ "stateMutability": "nonpayable"
144
+ },
145
+ {
146
+ "type": "function",
147
+ "name": "transferFrom",
148
+ "inputs": [
149
+ {
150
+ "name": "from",
151
+ "type": "address",
152
+ "internalType": "address"
153
+ },
154
+ {
155
+ "name": "to",
156
+ "type": "address",
157
+ "internalType": "address"
158
+ },
159
+ {
160
+ "name": "value",
161
+ "type": "uint256",
162
+ "internalType": "uint256"
163
+ }
164
+ ],
165
+ "outputs": [
166
+ {
167
+ "name": "",
168
+ "type": "bool",
169
+ "internalType": "bool"
170
+ }
171
+ ],
172
+ "stateMutability": "nonpayable"
173
+ },
174
+ {
175
+ "type": "event",
176
+ "name": "Approval",
177
+ "inputs": [
178
+ {
179
+ "name": "owner",
180
+ "type": "address",
181
+ "indexed": true,
182
+ "internalType": "address"
183
+ },
184
+ {
185
+ "name": "spender",
186
+ "type": "address",
187
+ "indexed": true,
188
+ "internalType": "address"
189
+ },
190
+ {
191
+ "name": "value",
192
+ "type": "uint256",
193
+ "indexed": false,
194
+ "internalType": "uint256"
195
+ }
196
+ ],
197
+ "anonymous": false
198
+ },
199
+ {
200
+ "type": "event",
201
+ "name": "Transfer",
202
+ "inputs": [
203
+ {
204
+ "name": "from",
205
+ "type": "address",
206
+ "indexed": true,
207
+ "internalType": "address"
208
+ },
209
+ {
210
+ "name": "to",
211
+ "type": "address",
212
+ "indexed": true,
213
+ "internalType": "address"
214
+ },
215
+ {
216
+ "name": "value",
217
+ "type": "uint256",
218
+ "indexed": false,
219
+ "internalType": "uint256"
220
+ }
221
+ ],
222
+ "anonymous": false
223
+ },
224
+ {
225
+ "type": "error",
226
+ "name": "ERC20InsufficientAllowance",
227
+ "inputs": [
228
+ {
229
+ "name": "spender",
230
+ "type": "address",
231
+ "internalType": "address"
232
+ },
233
+ {
234
+ "name": "allowance",
235
+ "type": "uint256",
236
+ "internalType": "uint256"
237
+ },
238
+ {
239
+ "name": "needed",
240
+ "type": "uint256",
241
+ "internalType": "uint256"
242
+ }
243
+ ]
244
+ },
245
+ {
246
+ "type": "error",
247
+ "name": "ERC20InsufficientBalance",
248
+ "inputs": [
249
+ {
250
+ "name": "sender",
251
+ "type": "address",
252
+ "internalType": "address"
253
+ },
254
+ {
255
+ "name": "balance",
256
+ "type": "uint256",
257
+ "internalType": "uint256"
258
+ },
259
+ {
260
+ "name": "needed",
261
+ "type": "uint256",
262
+ "internalType": "uint256"
263
+ }
264
+ ]
265
+ },
266
+ {
267
+ "type": "error",
268
+ "name": "ERC20InvalidApprover",
269
+ "inputs": [
270
+ {
271
+ "name": "approver",
272
+ "type": "address",
273
+ "internalType": "address"
274
+ }
275
+ ]
276
+ },
277
+ {
278
+ "type": "error",
279
+ "name": "ERC20InvalidReceiver",
280
+ "inputs": [
281
+ {
282
+ "name": "receiver",
283
+ "type": "address",
284
+ "internalType": "address"
285
+ }
286
+ ]
287
+ },
288
+ {
289
+ "type": "error",
290
+ "name": "ERC20InvalidSender",
291
+ "inputs": [
292
+ {
293
+ "name": "sender",
294
+ "type": "address",
295
+ "internalType": "address"
296
+ }
297
+ ]
298
+ },
299
+ {
300
+ "type": "error",
301
+ "name": "ERC20InvalidSpender",
302
+ "inputs": [
303
+ {
304
+ "name": "spender",
305
+ "type": "address",
306
+ "internalType": "address"
307
+ }
308
+ ]
309
+ }
310
+ ]
@@ -223,6 +223,44 @@
223
223
  ],
224
224
  "stateMutability": "view"
225
225
  },
226
+ {
227
+ "type": "function",
228
+ "name": "test_coinAddress_canBePredicted",
229
+ "inputs": [
230
+ {
231
+ "name": "msgSenderChanged",
232
+ "type": "bool",
233
+ "internalType": "bool"
234
+ },
235
+ {
236
+ "name": "saltChanged",
237
+ "type": "bool",
238
+ "internalType": "bool"
239
+ },
240
+ {
241
+ "name": "poolConfigChanged",
242
+ "type": "bool",
243
+ "internalType": "bool"
244
+ },
245
+ {
246
+ "name": "platformReferrerChanged",
247
+ "type": "bool",
248
+ "internalType": "bool"
249
+ },
250
+ {
251
+ "name": "nameChanged",
252
+ "type": "bool",
253
+ "internalType": "bool"
254
+ },
255
+ {
256
+ "name": "symbolChanged",
257
+ "type": "bool",
258
+ "internalType": "bool"
259
+ }
260
+ ],
261
+ "outputs": [],
262
+ "stateMutability": "nonpayable"
263
+ },
226
264
  {
227
265
  "type": "function",
228
266
  "name": "test_constructor",
@@ -326,13 +364,6 @@
326
364
  "outputs": [],
327
365
  "stateMutability": "view"
328
366
  },
329
- {
330
- "type": "function",
331
- "name": "test_revert_deploy_with_invalid_currency_tick",
332
- "inputs": [],
333
- "outputs": [],
334
- "stateMutability": "nonpayable"
335
- },
336
367
  {
337
368
  "type": "function",
338
369
  "name": "test_revert_invalid_owner",
@@ -767,5 +798,52 @@
767
798
  }
768
799
  ],
769
800
  "anonymous": false
801
+ },
802
+ {
803
+ "type": "error",
804
+ "name": "Create2EmptyBytecode",
805
+ "inputs": []
806
+ },
807
+ {
808
+ "type": "error",
809
+ "name": "Create2FailedDeployment",
810
+ "inputs": []
811
+ },
812
+ {
813
+ "type": "error",
814
+ "name": "Create2InsufficientBalance",
815
+ "inputs": [
816
+ {
817
+ "name": "balance",
818
+ "type": "uint256",
819
+ "internalType": "uint256"
820
+ },
821
+ {
822
+ "name": "needed",
823
+ "type": "uint256",
824
+ "internalType": "uint256"
825
+ }
826
+ ]
827
+ },
828
+ {
829
+ "type": "error",
830
+ "name": "HookNotDeployed",
831
+ "inputs": []
832
+ },
833
+ {
834
+ "type": "error",
835
+ "name": "InvalidHookAddress",
836
+ "inputs": [
837
+ {
838
+ "name": "expected",
839
+ "type": "address",
840
+ "internalType": "address"
841
+ },
842
+ {
843
+ "name": "actual",
844
+ "type": "address",
845
+ "internalType": "address"
846
+ }
847
+ ]
770
848
  }
771
849
  ]