@zoralabs/coins 0.7.1 → 1.0.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 (167) hide show
  1. package/.turbo/turbo-build.log +106 -84
  2. package/CHANGELOG.md +68 -0
  3. package/abis/BadImpl.json +15 -0
  4. package/abis/BalanceDeltaLibrary.json +15 -0
  5. package/abis/BaseCoin.json +1350 -0
  6. package/abis/BaseCoinDeployHook.json +78 -0
  7. package/abis/BaseHook.json +897 -0
  8. package/abis/BaseTest.json +60 -91
  9. package/abis/BeforeSwapDeltaLibrary.json +15 -0
  10. package/abis/BuySupplyWithSwapRouterHook.json +126 -0
  11. package/abis/Coin.json +214 -150
  12. package/abis/CoinConstants.json +65 -0
  13. package/abis/CoinDopplerMultiCurve.json +38 -0
  14. package/abis/CoinRewardsV4.json +54 -0
  15. package/abis/CoinTest.json +66 -111
  16. package/abis/CoinUniV4Test.json +1053 -0
  17. package/abis/CoinV4.json +1687 -0
  18. package/abis/CurrencyLibrary.json +25 -0
  19. package/abis/DeployHooks.json +9 -0
  20. package/abis/DeployScript.json +47 -0
  21. package/abis/DeployedCoinVersionLookup.json +21 -0
  22. package/abis/DeployedCoinVersionLookupTest.json +716 -0
  23. package/abis/DifferentNamespaceVersionLookup.json +39 -0
  24. package/abis/DopplerUniswapV3Test.json +62 -184
  25. package/abis/ERC20.json +310 -0
  26. package/abis/FactoryTest.json +98 -98
  27. package/abis/FakeHookNoInterface.json +21 -0
  28. package/abis/FeeEstimatorHook.json +1528 -0
  29. package/abis/Hooks.json +28 -0
  30. package/abis/HooksDeployment.json +23 -0
  31. package/abis/HooksTest.json +698 -0
  32. package/abis/IAllowanceTransfer.json +486 -0
  33. package/abis/ICoin.json +62 -69
  34. package/abis/ICoinDeployHook.json +31 -0
  35. package/abis/ICoinV3.json +879 -0
  36. package/abis/ICoinV4.json +915 -0
  37. package/abis/IContractMetadata.json +28 -0
  38. package/abis/IDeployedCoinVersionLookup.json +21 -0
  39. package/abis/IEIP712.json +15 -0
  40. package/abis/IEIP712_v4.json +15 -0
  41. package/abis/IERC20Minimal.json +172 -0
  42. package/abis/IERC6909Claims.json +288 -0
  43. package/abis/IERC721.json +36 -36
  44. package/abis/IERC721Permit_v4.json +88 -0
  45. package/abis/IExtsload.json +64 -0
  46. package/abis/IExttload.json +40 -0
  47. package/abis/IHasAfterCoinDeploy.json +31 -0
  48. package/abis/IHasContractName.json +15 -0
  49. package/abis/IHasPoolKey.json +42 -0
  50. package/abis/IHasRewardsRecipients.json +54 -0
  51. package/abis/IHasSwapPath.json +60 -0
  52. package/abis/IHooks.json +789 -0
  53. package/abis/IImmutableState.json +15 -0
  54. package/abis/IMsgSender.json +15 -0
  55. package/abis/IMulticall_v4.json +21 -0
  56. package/abis/INotifier.json +187 -0
  57. package/abis/IPermit2.json +865 -0
  58. package/abis/IPermit2Forwarder.json +138 -0
  59. package/abis/IPoolConfigEncoding.json +46 -0
  60. package/abis/IPoolInitializer_v4.json +53 -0
  61. package/abis/IPoolManager.json +1286 -0
  62. package/abis/IPositionManager.json +712 -0
  63. package/abis/IProtocolFees.json +174 -0
  64. package/abis/ISignatureTransfer.json +394 -0
  65. package/abis/ISubscriber.json +89 -0
  66. package/abis/ISwapPathRouter.json +92 -0
  67. package/abis/ISwapRouter.json +82 -0
  68. package/abis/IUniversalRouter.json +61 -0
  69. package/abis/IUnlockCallback.json +21 -0
  70. package/abis/IUnorderedNonce.json +44 -0
  71. package/abis/IV4Quoter.json +310 -0
  72. package/abis/IV4Router.json +47 -0
  73. package/abis/IZoraFactory.json +328 -4
  74. package/abis/IZoraV4CoinHook.json +427 -0
  75. package/abis/ImmutableState.json +36 -0
  76. package/abis/LPFeeLibrary.json +65 -0
  77. package/abis/MockERC20.json +21 -0
  78. package/abis/MultiOwnableTest.json +60 -91
  79. package/abis/{CoinConfigurationVersions.json → Position.json} +1 -1
  80. package/abis/PrintUpgradeCommand.json +9 -0
  81. package/abis/ProxyShim.json +24 -0
  82. package/abis/Simulate.json +0 -91
  83. package/abis/StateLibrary.json +80 -0
  84. package/abis/TestDeployedCoinVersionLookupImplementation.json +39 -0
  85. package/abis/TestV4Swap.json +9 -0
  86. package/abis/{CoinSetup.json → UniV3BuySell.json} +5 -0
  87. package/abis/UniV3Errors.json +32 -0
  88. package/abis/UpgradeCoinImpl.json +47 -0
  89. package/abis/UpgradeFactoryImpl.json +9 -0
  90. package/abis/UpgradesTest.json +671 -0
  91. package/abis/Vm.json +1482 -111
  92. package/abis/VmSafe.json +856 -32
  93. package/abis/ZoraFactoryImpl.json +450 -1
  94. package/abis/ZoraV4CoinHook.json +1439 -0
  95. package/addresses/8453.json +8 -3
  96. package/addresses/84532.json +8 -3
  97. package/dist/index.cjs +1998 -184
  98. package/dist/index.cjs.map +1 -1
  99. package/dist/index.js +1989 -178
  100. package/dist/index.js.map +1 -1
  101. package/dist/wagmiGenerated.d.ts +2852 -688
  102. package/dist/wagmiGenerated.d.ts.map +1 -1
  103. package/package/wagmiGenerated.ts +1992 -173
  104. package/package.json +7 -2
  105. package/remappings.txt +6 -1
  106. package/script/CoinsDeployerBase.sol +105 -10
  107. package/script/DeployDevFactory.s.sol +21 -0
  108. package/script/DeployHooks.s.sol +22 -0
  109. package/script/PrintUpgradeCommand.s.sol +13 -0
  110. package/script/Simulate.s.sol +4 -12
  111. package/script/TestBackingCoinSwap.s.sol +146 -0
  112. package/script/TestV4Swap.s.sol +136 -0
  113. package/script/UpgradeCoinImpl.sol +2 -2
  114. package/script/UpgradeFactoryImpl.s.sol +23 -0
  115. package/src/BaseCoin.sol +176 -0
  116. package/src/Coin.sol +93 -515
  117. package/src/CoinV4.sol +121 -0
  118. package/src/ZoraFactoryImpl.sol +257 -57
  119. package/src/hooks/ZoraV4CoinHook.sol +195 -0
  120. package/src/hooks/deployment/BaseCoinDeployHook.sol +62 -0
  121. package/src/hooks/deployment/BuySupplyWithSwapRouterHook.sol +80 -0
  122. package/src/interfaces/ICoin.sol +35 -39
  123. package/src/interfaces/ICoinDeployHook.sol +8 -0
  124. package/src/interfaces/ICoinV3.sol +71 -0
  125. package/src/interfaces/ICoinV4.sol +69 -0
  126. package/src/interfaces/IDeployedCoinVersionLookup.sol +11 -0
  127. package/src/interfaces/IMsgSender.sol +9 -0
  128. package/src/interfaces/IPoolConfigEncoding.sol +14 -0
  129. package/src/interfaces/ISwapPathRouter.sol +14 -0
  130. package/src/interfaces/ISwapRouter.sol +1 -35
  131. package/src/interfaces/IZoraFactory.sol +97 -7
  132. package/src/interfaces/IZoraV4CoinHook.sol +116 -0
  133. package/src/libs/CoinCommon.sol +15 -0
  134. package/src/libs/CoinConfigurationVersions.sol +116 -1
  135. package/src/{utils → libs}/CoinConstants.sol +11 -6
  136. package/src/libs/CoinDopplerMultiCurve.sol +134 -0
  137. package/src/libs/CoinDopplerUniV3.sol +19 -171
  138. package/src/libs/CoinRewards.sol +195 -0
  139. package/src/libs/CoinRewardsV4.sol +180 -0
  140. package/src/libs/CoinSetup.sol +40 -20
  141. package/src/libs/CoinSetupV3.sol +50 -0
  142. package/src/libs/DopplerMath.sol +156 -0
  143. package/src/libs/HooksDeployment.sol +84 -0
  144. package/src/libs/MarketConstants.sol +4 -0
  145. package/src/libs/PoolStateReader.sol +22 -0
  146. package/src/libs/UniV3BuySell.sol +231 -0
  147. package/src/libs/UniV3Errors.sol +11 -0
  148. package/src/libs/UniV4SwapHelper.sol +65 -0
  149. package/src/libs/UniV4SwapToCurrency.sol +109 -0
  150. package/src/libs/V4Liquidity.sol +129 -0
  151. package/src/types/PoolConfiguration.sol +15 -0
  152. package/src/utils/DeployedCoinVersionLookup.sol +52 -0
  153. package/src/version/ContractVersionBase.sol +1 -1
  154. package/test/Coin.t.sol +94 -101
  155. package/test/CoinDopplerUniV3.t.sol +35 -184
  156. package/test/CoinUniV4.t.sol +752 -0
  157. package/test/DeploymentHooks.t.sol +270 -0
  158. package/test/Factory.t.sol +84 -50
  159. package/test/MultiOwnable.t.sol +6 -3
  160. package/test/Upgrades.t.sol +68 -0
  161. package/test/mocks/MockERC20.sol +12 -0
  162. package/test/utils/BaseTest.sol +124 -59
  163. package/test/utils/DeployedCoinVersionLookup.t.sol +127 -0
  164. package/test/utils/FeeEstimatorHook.sol +84 -0
  165. package/test/utils/ProxyShim.sol +17 -0
  166. package/wagmi.config.ts +10 -9
  167. package/src/libs/CoinLegacy.sol +0 -48
@@ -1,79 +1,91 @@
1
1
  //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
2
- // Coin
2
+ // BuySupplyWithSwapRouterHook
3
3
  //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
4
4
 
5
- export const coinABI = [
5
+ export const buySupplyWithSwapRouterHookABI = [
6
6
  {
7
7
  type: 'constructor',
8
8
  inputs: [
9
9
  {
10
- name: '_protocolRewardRecipient',
11
- internalType: 'address',
10
+ name: '_factory',
11
+ internalType: 'contract IZoraFactory',
12
12
  type: 'address',
13
13
  },
14
- { name: '_protocolRewards', internalType: 'address', type: 'address' },
15
- { name: '_weth', internalType: 'address', type: 'address' },
16
- { name: '_v3Factory', internalType: 'address', type: 'address' },
17
14
  { name: '_swapRouter', internalType: 'address', type: 'address' },
18
- { name: '_airlock', internalType: 'address', type: 'address' },
19
15
  ],
20
16
  stateMutability: 'nonpayable',
21
17
  },
22
- { type: 'receive', stateMutability: 'payable' },
23
- {
24
- type: 'function',
25
- inputs: [],
26
- name: 'DOMAIN_SEPARATOR',
27
- outputs: [{ name: '', internalType: 'bytes32', type: 'bytes32' }],
28
- stateMutability: 'view',
29
- },
30
18
  {
31
19
  type: 'function',
32
- inputs: [],
33
- name: 'MAX_TOTAL_SUPPLY',
34
- outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],
35
- stateMutability: 'view',
20
+ inputs: [
21
+ { name: 'sender', internalType: 'address', type: 'address' },
22
+ { name: 'coin', internalType: 'contract ICoin', type: 'address' },
23
+ { name: 'hookData', internalType: 'bytes', type: 'bytes' },
24
+ ],
25
+ name: 'afterCoinDeploy',
26
+ outputs: [{ name: '', internalType: 'bytes', type: 'bytes' }],
27
+ stateMutability: 'payable',
36
28
  },
37
29
  {
38
30
  type: 'function',
39
31
  inputs: [],
40
- name: 'MIN_ORDER_SIZE',
41
- outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],
32
+ name: 'factory',
33
+ outputs: [
34
+ { name: '', internalType: 'contract IZoraFactory', type: 'address' },
35
+ ],
42
36
  stateMutability: 'view',
43
37
  },
44
38
  {
45
39
  type: 'function',
46
- inputs: [],
47
- name: 'PLATFORM_REFERRER_FEE_BPS',
48
- outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],
49
- stateMutability: 'view',
40
+ inputs: [{ name: 'interfaceId', internalType: 'bytes4', type: 'bytes4' }],
41
+ name: 'supportsInterface',
42
+ outputs: [{ name: '', internalType: 'bool', type: 'bool' }],
43
+ stateMutability: 'pure',
50
44
  },
45
+ { type: 'error', inputs: [], name: 'AddressZero' },
51
46
  {
52
- type: 'function',
53
- inputs: [],
54
- name: 'PROTOCOL_FEE_BPS',
55
- outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],
56
- stateMutability: 'view',
47
+ type: 'error',
48
+ inputs: [{ name: 'balance', internalType: 'uint256', type: 'uint256' }],
49
+ name: 'CoinBalanceNot0',
57
50
  },
51
+ { type: 'error', inputs: [], name: 'Erc20NotReceived' },
52
+ { type: 'error', inputs: [], name: 'HookNotImplemented' },
53
+ { type: 'error', inputs: [], name: 'InvalidSwapRouterCall' },
54
+ { type: 'error', inputs: [], name: 'NotFactory' },
58
55
  {
59
- type: 'function',
60
- inputs: [],
61
- name: 'TOKEN_CREATOR_FEE_BPS',
62
- outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],
63
- stateMutability: 'view',
56
+ type: 'error',
57
+ inputs: [{ name: 'error', internalType: 'bytes', type: 'bytes' }],
58
+ name: 'SwapReverted',
64
59
  },
60
+ ] as const
61
+
62
+ //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
63
+ // Coin
64
+ //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
65
+
66
+ export const coinABI = [
65
67
  {
66
- type: 'function',
67
- inputs: [],
68
- name: 'TOTAL_FEE_BPS',
69
- outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],
70
- stateMutability: 'view',
68
+ type: 'constructor',
69
+ inputs: [
70
+ {
71
+ name: 'protocolRewardRecipient_',
72
+ internalType: 'address',
73
+ type: 'address',
74
+ },
75
+ { name: 'protocolRewards_', internalType: 'address', type: 'address' },
76
+ { name: 'weth_', internalType: 'address', type: 'address' },
77
+ { name: 'v3Factory_', internalType: 'address', type: 'address' },
78
+ { name: 'swapRouter_', internalType: 'address', type: 'address' },
79
+ { name: 'airlock_', internalType: 'address', type: 'address' },
80
+ ],
81
+ stateMutability: 'nonpayable',
71
82
  },
83
+ { type: 'receive', stateMutability: 'payable' },
72
84
  {
73
85
  type: 'function',
74
86
  inputs: [],
75
- name: 'TRADE_REFERRER_FEE_BPS',
76
- outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],
87
+ name: 'DOMAIN_SEPARATOR',
88
+ outputs: [{ name: '', internalType: 'bytes32', type: 'bytes32' }],
77
89
  stateMutability: 'view',
78
90
  },
79
91
  {
@@ -191,6 +203,13 @@ export const coinABI = [
191
203
  outputs: [{ name: '', internalType: 'uint8', type: 'uint8' }],
192
204
  stateMutability: 'view',
193
205
  },
206
+ {
207
+ type: 'function',
208
+ inputs: [],
209
+ name: 'dopplerFeeRecipient',
210
+ outputs: [{ name: '', internalType: 'address', type: 'address' }],
211
+ stateMutability: 'view',
212
+ },
194
213
  {
195
214
  type: 'function',
196
215
  inputs: [],
@@ -206,6 +225,37 @@ export const coinABI = [
206
225
  ],
207
226
  stateMutability: 'view',
208
227
  },
228
+ {
229
+ type: 'function',
230
+ inputs: [],
231
+ name: 'getPoolConfiguration',
232
+ outputs: [
233
+ {
234
+ name: '',
235
+ internalType: 'struct PoolConfiguration',
236
+ type: 'tuple',
237
+ components: [
238
+ { name: 'version', internalType: 'uint8', type: 'uint8' },
239
+ { name: 'numPositions', internalType: 'uint16', type: 'uint16' },
240
+ { name: 'fee', internalType: 'uint24', type: 'uint24' },
241
+ { name: 'tickSpacing', internalType: 'int24', type: 'int24' },
242
+ {
243
+ name: 'numDiscoveryPositions',
244
+ internalType: 'uint16[]',
245
+ type: 'uint16[]',
246
+ },
247
+ { name: 'tickLower', internalType: 'int24[]', type: 'int24[]' },
248
+ { name: 'tickUpper', internalType: 'int24[]', type: 'int24[]' },
249
+ {
250
+ name: 'maxDiscoverySupplyShare',
251
+ internalType: 'uint256[]',
252
+ type: 'uint256[]',
253
+ },
254
+ ],
255
+ },
256
+ ],
257
+ stateMutability: 'view',
258
+ },
209
259
  {
210
260
  type: 'function',
211
261
  inputs: [
@@ -214,8 +264,42 @@ export const coinABI = [
214
264
  { name: 'tokenURI_', internalType: 'string', type: 'string' },
215
265
  { name: 'name_', internalType: 'string', type: 'string' },
216
266
  { name: 'symbol_', internalType: 'string', type: 'string' },
217
- { name: 'poolConfig_', internalType: 'bytes', type: 'bytes' },
218
267
  { name: 'platformReferrer_', internalType: 'address', type: 'address' },
268
+ { name: 'currency_', internalType: 'address', type: 'address' },
269
+ { name: 'poolAddress_', internalType: 'address', type: 'address' },
270
+ {
271
+ name: 'poolConfiguration_',
272
+ internalType: 'struct PoolConfiguration',
273
+ type: 'tuple',
274
+ components: [
275
+ { name: 'version', internalType: 'uint8', type: 'uint8' },
276
+ { name: 'numPositions', internalType: 'uint16', type: 'uint16' },
277
+ { name: 'fee', internalType: 'uint24', type: 'uint24' },
278
+ { name: 'tickSpacing', internalType: 'int24', type: 'int24' },
279
+ {
280
+ name: 'numDiscoveryPositions',
281
+ internalType: 'uint16[]',
282
+ type: 'uint16[]',
283
+ },
284
+ { name: 'tickLower', internalType: 'int24[]', type: 'int24[]' },
285
+ { name: 'tickUpper', internalType: 'int24[]', type: 'int24[]' },
286
+ {
287
+ name: 'maxDiscoverySupplyShare',
288
+ internalType: 'uint256[]',
289
+ type: 'uint256[]',
290
+ },
291
+ ],
292
+ },
293
+ {
294
+ name: 'positions_',
295
+ internalType: 'struct LpPosition[]',
296
+ type: 'tuple[]',
297
+ components: [
298
+ { name: 'tickLower', internalType: 'int24', type: 'int24' },
299
+ { name: 'tickUpper', internalType: 'int24', type: 'int24' },
300
+ { name: 'liquidity', internalType: 'uint128', type: 'uint128' },
301
+ ],
302
+ },
219
303
  ],
220
304
  name: 'initialize',
221
305
  outputs: [],
@@ -228,6 +312,20 @@ export const coinABI = [
228
312
  outputs: [{ name: '', internalType: 'bool', type: 'bool' }],
229
313
  stateMutability: 'view',
230
314
  },
315
+ {
316
+ type: 'function',
317
+ inputs: [],
318
+ name: 'market',
319
+ outputs: [{ name: '', internalType: 'bytes', type: 'bytes' }],
320
+ stateMutability: 'view',
321
+ },
322
+ {
323
+ type: 'function',
324
+ inputs: [],
325
+ name: 'marketVersion',
326
+ outputs: [{ name: '', internalType: 'uint8', type: 'uint8' }],
327
+ stateMutability: 'view',
328
+ },
231
329
  {
232
330
  type: 'function',
233
331
  inputs: [],
@@ -291,35 +389,20 @@ export const coinABI = [
291
389
  name: 'poolConfiguration',
292
390
  outputs: [
293
391
  { name: 'version', internalType: 'uint8', type: 'uint8' },
294
- { name: 'tickLower', internalType: 'int24', type: 'int24' },
295
- { name: 'tickUpper', internalType: 'int24', type: 'int24' },
296
392
  { name: 'numPositions', internalType: 'uint16', type: 'uint16' },
297
- {
298
- name: 'maxDiscoverySupplyShare',
299
- internalType: 'uint256',
300
- type: 'uint256',
301
- },
393
+ { name: 'fee', internalType: 'uint24', type: 'uint24' },
394
+ { name: 'tickSpacing', internalType: 'int24', type: 'int24' },
302
395
  ],
303
396
  stateMutability: 'view',
304
397
  },
305
398
  {
306
399
  type: 'function',
307
- inputs: [],
308
- name: 'poolState',
400
+ inputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],
401
+ name: 'positions',
309
402
  outputs: [
310
- { name: 'asset', internalType: 'address', type: 'address' },
311
- { name: 'numeraire', internalType: 'address', type: 'address' },
312
403
  { name: 'tickLower', internalType: 'int24', type: 'int24' },
313
404
  { name: 'tickUpper', internalType: 'int24', type: 'int24' },
314
- { name: 'numPositions', internalType: 'uint16', type: 'uint16' },
315
- { name: 'isInitialized', internalType: 'bool', type: 'bool' },
316
- { name: 'isExited', internalType: 'bool', type: 'bool' },
317
- { name: 'maxShareToBeSold', internalType: 'uint256', type: 'uint256' },
318
- {
319
- name: 'totalTokensOnBondingCurve',
320
- internalType: 'uint256',
321
- type: 'uint256',
322
- },
405
+ { name: 'liquidity', internalType: 'uint128', type: 'uint128' },
323
406
  ],
324
407
  stateMutability: 'view',
325
408
  },
@@ -873,6 +956,7 @@ export const coinABI = [
873
956
  name: 'AddressInsufficientBalance',
874
957
  },
875
958
  { type: 'error', inputs: [], name: 'AddressZero' },
959
+ { type: 'error', inputs: [], name: 'AddressZero' },
876
960
  { type: 'error', inputs: [], name: 'AlreadyOwner' },
877
961
  { type: 'error', inputs: [], name: 'CannotMintZeroLiquidity' },
878
962
  {
@@ -988,7 +1072,14 @@ export const coinABI = [
988
1072
  { type: 'error', inputs: [], name: 'NumDiscoveryPositionsOutOfRange' },
989
1073
  { type: 'error', inputs: [], name: 'OneOwnerRequired' },
990
1074
  { type: 'error', inputs: [], name: 'OnlyOwner' },
991
- { type: 'error', inputs: [], name: 'OnlyPool' },
1075
+ {
1076
+ type: 'error',
1077
+ inputs: [
1078
+ { name: 'sender', internalType: 'address', type: 'address' },
1079
+ { name: 'pool', internalType: 'address', type: 'address' },
1080
+ ],
1081
+ name: 'OnlyPool',
1082
+ },
992
1083
  { type: 'error', inputs: [], name: 'OnlyWeth' },
993
1084
  { type: 'error', inputs: [], name: 'OwnerCannotBeAddressZero' },
994
1085
  { type: 'error', inputs: [], name: 'ReentrancyGuardReentrantCall' },
@@ -1002,131 +1093,1654 @@ export const coinABI = [
1002
1093
  ] as const
1003
1094
 
1004
1095
  //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
1005
- // IUniswapV3Pool
1096
+ // CoinV4
1006
1097
  //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
1007
1098
 
1008
- export const iUniswapV3PoolABI = [
1099
+ export const coinV4ABI = [
1009
1100
  {
1010
- type: 'function',
1101
+ type: 'constructor',
1011
1102
  inputs: [
1012
- { name: 'tickLower', internalType: 'int24', type: 'int24' },
1013
- { name: 'tickUpper', internalType: 'int24', type: 'int24' },
1014
- { name: 'amount', internalType: 'uint128', type: 'uint128' },
1015
- ],
1016
- name: 'burn',
1017
- outputs: [
1018
- { name: 'amount0', internalType: 'uint256', type: 'uint256' },
1019
- { name: 'amount1', internalType: 'uint256', type: 'uint256' },
1103
+ {
1104
+ name: 'protocolRewardRecipient_',
1105
+ internalType: 'address',
1106
+ type: 'address',
1107
+ },
1108
+ { name: 'protocolRewards_', internalType: 'address', type: 'address' },
1109
+ {
1110
+ name: 'poolManager_',
1111
+ internalType: 'contract IPoolManager',
1112
+ type: 'address',
1113
+ },
1114
+ { name: 'airlock_', internalType: 'address', type: 'address' },
1115
+ { name: 'hooks_', internalType: 'contract IHooks', type: 'address' },
1020
1116
  ],
1021
1117
  stateMutability: 'nonpayable',
1022
1118
  },
1023
1119
  {
1024
1120
  type: 'function',
1025
- inputs: [
1026
- { name: 'recipient', internalType: 'address', type: 'address' },
1027
- { name: 'tickLower', internalType: 'int24', type: 'int24' },
1028
- { name: 'tickUpper', internalType: 'int24', type: 'int24' },
1029
- { name: 'amount0Requested', internalType: 'uint128', type: 'uint128' },
1030
- { name: 'amount1Requested', internalType: 'uint128', type: 'uint128' },
1031
- ],
1032
- name: 'collect',
1033
- outputs: [
1034
- { name: 'amount0', internalType: 'uint128', type: 'uint128' },
1035
- { name: 'amount1', internalType: 'uint128', type: 'uint128' },
1036
- ],
1121
+ inputs: [],
1122
+ name: 'DOMAIN_SEPARATOR',
1123
+ outputs: [{ name: '', internalType: 'bytes32', type: 'bytes32' }],
1124
+ stateMutability: 'view',
1125
+ },
1126
+ {
1127
+ type: 'function',
1128
+ inputs: [{ name: 'account', internalType: 'address', type: 'address' }],
1129
+ name: 'addOwner',
1130
+ outputs: [],
1037
1131
  stateMutability: 'nonpayable',
1038
1132
  },
1039
1133
  {
1040
1134
  type: 'function',
1041
- inputs: [],
1042
- name: 'feeGrowthGlobal0X128',
1043
- outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],
1044
- stateMutability: 'view',
1135
+ inputs: [
1136
+ { name: 'accounts', internalType: 'address[]', type: 'address[]' },
1137
+ ],
1138
+ name: 'addOwners',
1139
+ outputs: [],
1140
+ stateMutability: 'nonpayable',
1045
1141
  },
1046
1142
  {
1047
1143
  type: 'function',
1048
1144
  inputs: [],
1049
- name: 'feeGrowthGlobal1X128',
1050
- outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],
1145
+ name: 'airlock',
1146
+ outputs: [{ name: '', internalType: 'address', type: 'address' }],
1051
1147
  stateMutability: 'view',
1052
1148
  },
1053
1149
  {
1054
1150
  type: 'function',
1055
1151
  inputs: [
1056
- { name: 'sqrtPriceX96', internalType: 'uint160', type: 'uint160' },
1152
+ { name: 'owner', internalType: 'address', type: 'address' },
1153
+ { name: 'spender', internalType: 'address', type: 'address' },
1057
1154
  ],
1058
- name: 'initialize',
1059
- outputs: [],
1060
- stateMutability: 'nonpayable',
1155
+ name: 'allowance',
1156
+ outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],
1157
+ stateMutability: 'view',
1061
1158
  },
1062
1159
  {
1063
1160
  type: 'function',
1064
1161
  inputs: [
1065
- { name: 'recipient', internalType: 'address', type: 'address' },
1066
- { name: 'tickLower', internalType: 'int24', type: 'int24' },
1067
- { name: 'tickUpper', internalType: 'int24', type: 'int24' },
1068
- { name: 'amount', internalType: 'uint128', type: 'uint128' },
1069
- { name: 'data', internalType: 'bytes', type: 'bytes' },
1070
- ],
1071
- name: 'mint',
1072
- outputs: [
1073
- { name: 'amount0', internalType: 'uint256', type: 'uint256' },
1074
- { name: 'amount1', internalType: 'uint256', type: 'uint256' },
1162
+ { name: 'spender', internalType: 'address', type: 'address' },
1163
+ { name: 'value', internalType: 'uint256', type: 'uint256' },
1075
1164
  ],
1165
+ name: 'approve',
1166
+ outputs: [{ name: '', internalType: 'bool', type: 'bool' }],
1076
1167
  stateMutability: 'nonpayable',
1077
1168
  },
1078
1169
  {
1079
1170
  type: 'function',
1080
- inputs: [],
1081
- name: 'slot0',
1082
- outputs: [
1083
- {
1084
- name: 'slot0',
1085
- internalType: 'struct IUniswapV3Pool.Slot0',
1086
- type: 'tuple',
1087
- components: [
1088
- { name: 'sqrtPriceX96', internalType: 'uint160', type: 'uint160' },
1089
- { name: 'tick', internalType: 'int24', type: 'int24' },
1090
- { name: 'observationIndex', internalType: 'uint16', type: 'uint16' },
1091
- {
1092
- name: 'observationCardinality',
1093
- internalType: 'uint16',
1094
- type: 'uint16',
1095
- },
1096
- {
1097
- name: 'observationCardinalityNext',
1098
- internalType: 'uint16',
1099
- type: 'uint16',
1100
- },
1101
- { name: 'feeProtocol', internalType: 'uint8', type: 'uint8' },
1102
- { name: 'unlocked', internalType: 'bool', type: 'bool' },
1103
- ],
1104
- },
1105
- ],
1171
+ inputs: [{ name: 'account', internalType: 'address', type: 'address' }],
1172
+ name: 'balanceOf',
1173
+ outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],
1106
1174
  stateMutability: 'view',
1107
1175
  },
1108
1176
  {
1109
1177
  type: 'function',
1110
- inputs: [
1111
- { name: 'recipient', internalType: 'address', type: 'address' },
1112
- { name: 'zeroForOne', internalType: 'bool', type: 'bool' },
1113
- { name: 'amountSpecified', internalType: 'int256', type: 'int256' },
1114
- { name: 'sqrtPriceLimitX96', internalType: 'uint160', type: 'uint160' },
1115
- { name: 'data', internalType: 'bytes', type: 'bytes' },
1116
- ],
1117
- name: 'swap',
1118
- outputs: [
1119
- { name: 'amount0', internalType: 'int256', type: 'int256' },
1120
- { name: 'amount1', internalType: 'int256', type: 'int256' },
1121
- ],
1178
+ inputs: [{ name: 'amount', internalType: 'uint256', type: 'uint256' }],
1179
+ name: 'burn',
1180
+ outputs: [],
1122
1181
  stateMutability: 'nonpayable',
1123
1182
  },
1124
1183
  {
1125
1184
  type: 'function',
1126
1185
  inputs: [],
1127
- name: 'token0',
1128
- outputs: [{ name: '', internalType: 'address', type: 'address' }],
1129
- stateMutability: 'nonpayable',
1186
+ name: 'contractURI',
1187
+ outputs: [{ name: '', internalType: 'string', type: 'string' }],
1188
+ stateMutability: 'view',
1189
+ },
1190
+ {
1191
+ type: 'function',
1192
+ inputs: [],
1193
+ name: 'contractVersion',
1194
+ outputs: [{ name: '', internalType: 'string', type: 'string' }],
1195
+ stateMutability: 'pure',
1196
+ },
1197
+ {
1198
+ type: 'function',
1199
+ inputs: [],
1200
+ name: 'currency',
1201
+ outputs: [{ name: '', internalType: 'address', type: 'address' }],
1202
+ stateMutability: 'view',
1203
+ },
1204
+ {
1205
+ type: 'function',
1206
+ inputs: [],
1207
+ name: 'decimals',
1208
+ outputs: [{ name: '', internalType: 'uint8', type: 'uint8' }],
1209
+ stateMutability: 'view',
1210
+ },
1211
+ {
1212
+ type: 'function',
1213
+ inputs: [],
1214
+ name: 'dopplerFeeRecipient',
1215
+ outputs: [{ name: '', internalType: 'address', type: 'address' }],
1216
+ stateMutability: 'view',
1217
+ },
1218
+ {
1219
+ type: 'function',
1220
+ inputs: [],
1221
+ name: 'eip712Domain',
1222
+ outputs: [
1223
+ { name: 'fields', internalType: 'bytes1', type: 'bytes1' },
1224
+ { name: 'name', internalType: 'string', type: 'string' },
1225
+ { name: 'version', internalType: 'string', type: 'string' },
1226
+ { name: 'chainId', internalType: 'uint256', type: 'uint256' },
1227
+ { name: 'verifyingContract', internalType: 'address', type: 'address' },
1228
+ { name: 'salt', internalType: 'bytes32', type: 'bytes32' },
1229
+ { name: 'extensions', internalType: 'uint256[]', type: 'uint256[]' },
1230
+ ],
1231
+ stateMutability: 'view',
1232
+ },
1233
+ {
1234
+ type: 'function',
1235
+ inputs: [
1236
+ {
1237
+ name: 'coinVersionLookup',
1238
+ internalType: 'contract IDeployedCoinVersionLookup',
1239
+ type: 'address',
1240
+ },
1241
+ ],
1242
+ name: 'getPayoutSwapPath',
1243
+ outputs: [
1244
+ {
1245
+ name: 'payoutSwapPath',
1246
+ internalType: 'struct IHasSwapPath.PayoutSwapPath',
1247
+ type: 'tuple',
1248
+ components: [
1249
+ {
1250
+ name: 'path',
1251
+ internalType: 'struct PathKey[]',
1252
+ type: 'tuple[]',
1253
+ components: [
1254
+ {
1255
+ name: 'intermediateCurrency',
1256
+ internalType: 'Currency',
1257
+ type: 'address',
1258
+ },
1259
+ { name: 'fee', internalType: 'uint24', type: 'uint24' },
1260
+ { name: 'tickSpacing', internalType: 'int24', type: 'int24' },
1261
+ {
1262
+ name: 'hooks',
1263
+ internalType: 'contract IHooks',
1264
+ type: 'address',
1265
+ },
1266
+ { name: 'hookData', internalType: 'bytes', type: 'bytes' },
1267
+ ],
1268
+ },
1269
+ { name: 'currencyIn', internalType: 'Currency', type: 'address' },
1270
+ ],
1271
+ },
1272
+ ],
1273
+ stateMutability: 'view',
1274
+ },
1275
+ {
1276
+ type: 'function',
1277
+ inputs: [],
1278
+ name: 'getPoolConfiguration',
1279
+ outputs: [
1280
+ {
1281
+ name: '',
1282
+ internalType: 'struct PoolConfiguration',
1283
+ type: 'tuple',
1284
+ components: [
1285
+ { name: 'version', internalType: 'uint8', type: 'uint8' },
1286
+ { name: 'numPositions', internalType: 'uint16', type: 'uint16' },
1287
+ { name: 'fee', internalType: 'uint24', type: 'uint24' },
1288
+ { name: 'tickSpacing', internalType: 'int24', type: 'int24' },
1289
+ {
1290
+ name: 'numDiscoveryPositions',
1291
+ internalType: 'uint16[]',
1292
+ type: 'uint16[]',
1293
+ },
1294
+ { name: 'tickLower', internalType: 'int24[]', type: 'int24[]' },
1295
+ { name: 'tickUpper', internalType: 'int24[]', type: 'int24[]' },
1296
+ {
1297
+ name: 'maxDiscoverySupplyShare',
1298
+ internalType: 'uint256[]',
1299
+ type: 'uint256[]',
1300
+ },
1301
+ ],
1302
+ },
1303
+ ],
1304
+ stateMutability: 'view',
1305
+ },
1306
+ {
1307
+ type: 'function',
1308
+ inputs: [],
1309
+ name: 'getPoolKey',
1310
+ outputs: [
1311
+ {
1312
+ name: '',
1313
+ internalType: 'struct PoolKey',
1314
+ type: 'tuple',
1315
+ components: [
1316
+ { name: 'currency0', internalType: 'Currency', type: 'address' },
1317
+ { name: 'currency1', internalType: 'Currency', type: 'address' },
1318
+ { name: 'fee', internalType: 'uint24', type: 'uint24' },
1319
+ { name: 'tickSpacing', internalType: 'int24', type: 'int24' },
1320
+ { name: 'hooks', internalType: 'contract IHooks', type: 'address' },
1321
+ ],
1322
+ },
1323
+ ],
1324
+ stateMutability: 'view',
1325
+ },
1326
+ {
1327
+ type: 'function',
1328
+ inputs: [],
1329
+ name: 'hooks',
1330
+ outputs: [{ name: '', internalType: 'contract IHooks', type: 'address' }],
1331
+ stateMutability: 'view',
1332
+ },
1333
+ {
1334
+ type: 'function',
1335
+ inputs: [
1336
+ { name: 'payoutRecipient_', internalType: 'address', type: 'address' },
1337
+ { name: 'owners_', internalType: 'address[]', type: 'address[]' },
1338
+ { name: 'tokenURI_', internalType: 'string', type: 'string' },
1339
+ { name: 'name_', internalType: 'string', type: 'string' },
1340
+ { name: 'symbol_', internalType: 'string', type: 'string' },
1341
+ { name: 'platformReferrer_', internalType: 'address', type: 'address' },
1342
+ { name: 'currency_', internalType: 'address', type: 'address' },
1343
+ {
1344
+ name: 'poolKey_',
1345
+ internalType: 'struct PoolKey',
1346
+ type: 'tuple',
1347
+ components: [
1348
+ { name: 'currency0', internalType: 'Currency', type: 'address' },
1349
+ { name: 'currency1', internalType: 'Currency', type: 'address' },
1350
+ { name: 'fee', internalType: 'uint24', type: 'uint24' },
1351
+ { name: 'tickSpacing', internalType: 'int24', type: 'int24' },
1352
+ { name: 'hooks', internalType: 'contract IHooks', type: 'address' },
1353
+ ],
1354
+ },
1355
+ { name: 'sqrtPriceX96', internalType: 'uint160', type: 'uint160' },
1356
+ {
1357
+ name: 'poolConfiguration_',
1358
+ internalType: 'struct PoolConfiguration',
1359
+ type: 'tuple',
1360
+ components: [
1361
+ { name: 'version', internalType: 'uint8', type: 'uint8' },
1362
+ { name: 'numPositions', internalType: 'uint16', type: 'uint16' },
1363
+ { name: 'fee', internalType: 'uint24', type: 'uint24' },
1364
+ { name: 'tickSpacing', internalType: 'int24', type: 'int24' },
1365
+ {
1366
+ name: 'numDiscoveryPositions',
1367
+ internalType: 'uint16[]',
1368
+ type: 'uint16[]',
1369
+ },
1370
+ { name: 'tickLower', internalType: 'int24[]', type: 'int24[]' },
1371
+ { name: 'tickUpper', internalType: 'int24[]', type: 'int24[]' },
1372
+ {
1373
+ name: 'maxDiscoverySupplyShare',
1374
+ internalType: 'uint256[]',
1375
+ type: 'uint256[]',
1376
+ },
1377
+ ],
1378
+ },
1379
+ ],
1380
+ name: 'initialize',
1381
+ outputs: [],
1382
+ stateMutability: 'nonpayable',
1383
+ },
1384
+ {
1385
+ type: 'function',
1386
+ inputs: [{ name: 'account', internalType: 'address', type: 'address' }],
1387
+ name: 'isOwner',
1388
+ outputs: [{ name: '', internalType: 'bool', type: 'bool' }],
1389
+ stateMutability: 'view',
1390
+ },
1391
+ {
1392
+ type: 'function',
1393
+ inputs: [],
1394
+ name: 'name',
1395
+ outputs: [{ name: '', internalType: 'string', type: 'string' }],
1396
+ stateMutability: 'view',
1397
+ },
1398
+ {
1399
+ type: 'function',
1400
+ inputs: [{ name: 'owner', internalType: 'address', type: 'address' }],
1401
+ name: 'nonces',
1402
+ outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],
1403
+ stateMutability: 'view',
1404
+ },
1405
+ {
1406
+ type: 'function',
1407
+ inputs: [],
1408
+ name: 'owners',
1409
+ outputs: [{ name: '', internalType: 'address[]', type: 'address[]' }],
1410
+ stateMutability: 'view',
1411
+ },
1412
+ {
1413
+ type: 'function',
1414
+ inputs: [],
1415
+ name: 'payoutRecipient',
1416
+ outputs: [{ name: '', internalType: 'address', type: 'address' }],
1417
+ stateMutability: 'view',
1418
+ },
1419
+ {
1420
+ type: 'function',
1421
+ inputs: [
1422
+ { name: 'owner', internalType: 'address', type: 'address' },
1423
+ { name: 'spender', internalType: 'address', type: 'address' },
1424
+ { name: 'value', internalType: 'uint256', type: 'uint256' },
1425
+ { name: 'deadline', internalType: 'uint256', type: 'uint256' },
1426
+ { name: 'v', internalType: 'uint8', type: 'uint8' },
1427
+ { name: 'r', internalType: 'bytes32', type: 'bytes32' },
1428
+ { name: 's', internalType: 'bytes32', type: 'bytes32' },
1429
+ ],
1430
+ name: 'permit',
1431
+ outputs: [],
1432
+ stateMutability: 'nonpayable',
1433
+ },
1434
+ {
1435
+ type: 'function',
1436
+ inputs: [],
1437
+ name: 'platformReferrer',
1438
+ outputs: [{ name: '', internalType: 'address', type: 'address' }],
1439
+ stateMutability: 'view',
1440
+ },
1441
+ {
1442
+ type: 'function',
1443
+ inputs: [],
1444
+ name: 'poolManager',
1445
+ outputs: [
1446
+ { name: '', internalType: 'contract IPoolManager', type: 'address' },
1447
+ ],
1448
+ stateMutability: 'view',
1449
+ },
1450
+ {
1451
+ type: 'function',
1452
+ inputs: [],
1453
+ name: 'protocolRewardRecipient',
1454
+ outputs: [{ name: '', internalType: 'address', type: 'address' }],
1455
+ stateMutability: 'view',
1456
+ },
1457
+ {
1458
+ type: 'function',
1459
+ inputs: [],
1460
+ name: 'protocolRewards',
1461
+ outputs: [{ name: '', internalType: 'address', type: 'address' }],
1462
+ stateMutability: 'view',
1463
+ },
1464
+ {
1465
+ type: 'function',
1466
+ inputs: [{ name: 'account', internalType: 'address', type: 'address' }],
1467
+ name: 'removeOwner',
1468
+ outputs: [],
1469
+ stateMutability: 'nonpayable',
1470
+ },
1471
+ {
1472
+ type: 'function',
1473
+ inputs: [
1474
+ { name: 'accounts', internalType: 'address[]', type: 'address[]' },
1475
+ ],
1476
+ name: 'removeOwners',
1477
+ outputs: [],
1478
+ stateMutability: 'nonpayable',
1479
+ },
1480
+ {
1481
+ type: 'function',
1482
+ inputs: [],
1483
+ name: 'revokeOwnership',
1484
+ outputs: [],
1485
+ stateMutability: 'nonpayable',
1486
+ },
1487
+ {
1488
+ type: 'function',
1489
+ inputs: [{ name: 'newURI', internalType: 'string', type: 'string' }],
1490
+ name: 'setContractURI',
1491
+ outputs: [],
1492
+ stateMutability: 'nonpayable',
1493
+ },
1494
+ {
1495
+ type: 'function',
1496
+ inputs: [
1497
+ { name: 'newPayoutRecipient', internalType: 'address', type: 'address' },
1498
+ ],
1499
+ name: 'setPayoutRecipient',
1500
+ outputs: [],
1501
+ stateMutability: 'nonpayable',
1502
+ },
1503
+ {
1504
+ type: 'function',
1505
+ inputs: [{ name: 'interfaceId', internalType: 'bytes4', type: 'bytes4' }],
1506
+ name: 'supportsInterface',
1507
+ outputs: [{ name: '', internalType: 'bool', type: 'bool' }],
1508
+ stateMutability: 'pure',
1509
+ },
1510
+ {
1511
+ type: 'function',
1512
+ inputs: [],
1513
+ name: 'symbol',
1514
+ outputs: [{ name: '', internalType: 'string', type: 'string' }],
1515
+ stateMutability: 'view',
1516
+ },
1517
+ {
1518
+ type: 'function',
1519
+ inputs: [],
1520
+ name: 'tokenURI',
1521
+ outputs: [{ name: '', internalType: 'string', type: 'string' }],
1522
+ stateMutability: 'view',
1523
+ },
1524
+ {
1525
+ type: 'function',
1526
+ inputs: [],
1527
+ name: 'totalSupply',
1528
+ outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],
1529
+ stateMutability: 'view',
1530
+ },
1531
+ {
1532
+ type: 'function',
1533
+ inputs: [
1534
+ { name: 'to', internalType: 'address', type: 'address' },
1535
+ { name: 'value', internalType: 'uint256', type: 'uint256' },
1536
+ ],
1537
+ name: 'transfer',
1538
+ outputs: [{ name: '', internalType: 'bool', type: 'bool' }],
1539
+ stateMutability: 'nonpayable',
1540
+ },
1541
+ {
1542
+ type: 'function',
1543
+ inputs: [
1544
+ { name: 'from', internalType: 'address', type: 'address' },
1545
+ { name: 'to', internalType: 'address', type: 'address' },
1546
+ { name: 'value', internalType: 'uint256', type: 'uint256' },
1547
+ ],
1548
+ name: 'transferFrom',
1549
+ outputs: [{ name: '', internalType: 'bool', type: 'bool' }],
1550
+ stateMutability: 'nonpayable',
1551
+ },
1552
+ {
1553
+ type: 'event',
1554
+ anonymous: false,
1555
+ inputs: [
1556
+ {
1557
+ name: 'owner',
1558
+ internalType: 'address',
1559
+ type: 'address',
1560
+ indexed: true,
1561
+ },
1562
+ {
1563
+ name: 'spender',
1564
+ internalType: 'address',
1565
+ type: 'address',
1566
+ indexed: true,
1567
+ },
1568
+ {
1569
+ name: 'value',
1570
+ internalType: 'uint256',
1571
+ type: 'uint256',
1572
+ indexed: false,
1573
+ },
1574
+ ],
1575
+ name: 'Approval',
1576
+ },
1577
+ {
1578
+ type: 'event',
1579
+ anonymous: false,
1580
+ inputs: [
1581
+ {
1582
+ name: 'buyer',
1583
+ internalType: 'address',
1584
+ type: 'address',
1585
+ indexed: true,
1586
+ },
1587
+ {
1588
+ name: 'recipient',
1589
+ internalType: 'address',
1590
+ type: 'address',
1591
+ indexed: true,
1592
+ },
1593
+ {
1594
+ name: 'tradeReferrer',
1595
+ internalType: 'address',
1596
+ type: 'address',
1597
+ indexed: true,
1598
+ },
1599
+ {
1600
+ name: 'coinsPurchased',
1601
+ internalType: 'uint256',
1602
+ type: 'uint256',
1603
+ indexed: false,
1604
+ },
1605
+ {
1606
+ name: 'currency',
1607
+ internalType: 'address',
1608
+ type: 'address',
1609
+ indexed: false,
1610
+ },
1611
+ {
1612
+ name: 'amountFee',
1613
+ internalType: 'uint256',
1614
+ type: 'uint256',
1615
+ indexed: false,
1616
+ },
1617
+ {
1618
+ name: 'amountSold',
1619
+ internalType: 'uint256',
1620
+ type: 'uint256',
1621
+ indexed: false,
1622
+ },
1623
+ ],
1624
+ name: 'CoinBuy',
1625
+ },
1626
+ {
1627
+ type: 'event',
1628
+ anonymous: false,
1629
+ inputs: [
1630
+ {
1631
+ name: 'payoutRecipient',
1632
+ internalType: 'address',
1633
+ type: 'address',
1634
+ indexed: true,
1635
+ },
1636
+ {
1637
+ name: 'platformReferrer',
1638
+ internalType: 'address',
1639
+ type: 'address',
1640
+ indexed: true,
1641
+ },
1642
+ {
1643
+ name: 'protocolRewardRecipient',
1644
+ internalType: 'address',
1645
+ type: 'address',
1646
+ indexed: false,
1647
+ },
1648
+ {
1649
+ name: 'currency',
1650
+ internalType: 'address',
1651
+ type: 'address',
1652
+ indexed: false,
1653
+ },
1654
+ {
1655
+ name: 'marketRewards',
1656
+ internalType: 'struct ICoin.MarketRewards',
1657
+ type: 'tuple',
1658
+ components: [
1659
+ {
1660
+ name: 'totalAmountCurrency',
1661
+ internalType: 'uint256',
1662
+ type: 'uint256',
1663
+ },
1664
+ { name: 'totalAmountCoin', internalType: 'uint256', type: 'uint256' },
1665
+ {
1666
+ name: 'creatorPayoutAmountCurrency',
1667
+ internalType: 'uint256',
1668
+ type: 'uint256',
1669
+ },
1670
+ {
1671
+ name: 'creatorPayoutAmountCoin',
1672
+ internalType: 'uint256',
1673
+ type: 'uint256',
1674
+ },
1675
+ {
1676
+ name: 'platformReferrerAmountCurrency',
1677
+ internalType: 'uint256',
1678
+ type: 'uint256',
1679
+ },
1680
+ {
1681
+ name: 'platformReferrerAmountCoin',
1682
+ internalType: 'uint256',
1683
+ type: 'uint256',
1684
+ },
1685
+ {
1686
+ name: 'protocolAmountCurrency',
1687
+ internalType: 'uint256',
1688
+ type: 'uint256',
1689
+ },
1690
+ {
1691
+ name: 'protocolAmountCoin',
1692
+ internalType: 'uint256',
1693
+ type: 'uint256',
1694
+ },
1695
+ ],
1696
+ indexed: false,
1697
+ },
1698
+ ],
1699
+ name: 'CoinMarketRewards',
1700
+ },
1701
+ {
1702
+ type: 'event',
1703
+ anonymous: false,
1704
+ inputs: [
1705
+ {
1706
+ name: 'caller',
1707
+ internalType: 'address',
1708
+ type: 'address',
1709
+ indexed: true,
1710
+ },
1711
+ {
1712
+ name: 'prevRecipient',
1713
+ internalType: 'address',
1714
+ type: 'address',
1715
+ indexed: true,
1716
+ },
1717
+ {
1718
+ name: 'newRecipient',
1719
+ internalType: 'address',
1720
+ type: 'address',
1721
+ indexed: true,
1722
+ },
1723
+ ],
1724
+ name: 'CoinPayoutRecipientUpdated',
1725
+ },
1726
+ {
1727
+ type: 'event',
1728
+ anonymous: false,
1729
+ inputs: [
1730
+ {
1731
+ name: 'seller',
1732
+ internalType: 'address',
1733
+ type: 'address',
1734
+ indexed: true,
1735
+ },
1736
+ {
1737
+ name: 'recipient',
1738
+ internalType: 'address',
1739
+ type: 'address',
1740
+ indexed: true,
1741
+ },
1742
+ {
1743
+ name: 'tradeReferrer',
1744
+ internalType: 'address',
1745
+ type: 'address',
1746
+ indexed: true,
1747
+ },
1748
+ {
1749
+ name: 'coinsSold',
1750
+ internalType: 'uint256',
1751
+ type: 'uint256',
1752
+ indexed: false,
1753
+ },
1754
+ {
1755
+ name: 'currency',
1756
+ internalType: 'address',
1757
+ type: 'address',
1758
+ indexed: false,
1759
+ },
1760
+ {
1761
+ name: 'amountFee',
1762
+ internalType: 'uint256',
1763
+ type: 'uint256',
1764
+ indexed: false,
1765
+ },
1766
+ {
1767
+ name: 'amountPurchased',
1768
+ internalType: 'uint256',
1769
+ type: 'uint256',
1770
+ indexed: false,
1771
+ },
1772
+ ],
1773
+ name: 'CoinSell',
1774
+ },
1775
+ {
1776
+ type: 'event',
1777
+ anonymous: false,
1778
+ inputs: [
1779
+ {
1780
+ name: 'payoutRecipient',
1781
+ internalType: 'address',
1782
+ type: 'address',
1783
+ indexed: true,
1784
+ },
1785
+ {
1786
+ name: 'platformReferrer',
1787
+ internalType: 'address',
1788
+ type: 'address',
1789
+ indexed: true,
1790
+ },
1791
+ {
1792
+ name: 'tradeReferrer',
1793
+ internalType: 'address',
1794
+ type: 'address',
1795
+ indexed: true,
1796
+ },
1797
+ {
1798
+ name: 'protocolRewardRecipient',
1799
+ internalType: 'address',
1800
+ type: 'address',
1801
+ indexed: false,
1802
+ },
1803
+ {
1804
+ name: 'creatorReward',
1805
+ internalType: 'uint256',
1806
+ type: 'uint256',
1807
+ indexed: false,
1808
+ },
1809
+ {
1810
+ name: 'platformReferrerReward',
1811
+ internalType: 'uint256',
1812
+ type: 'uint256',
1813
+ indexed: false,
1814
+ },
1815
+ {
1816
+ name: 'traderReferrerReward',
1817
+ internalType: 'uint256',
1818
+ type: 'uint256',
1819
+ indexed: false,
1820
+ },
1821
+ {
1822
+ name: 'protocolReward',
1823
+ internalType: 'uint256',
1824
+ type: 'uint256',
1825
+ indexed: false,
1826
+ },
1827
+ {
1828
+ name: 'currency',
1829
+ internalType: 'address',
1830
+ type: 'address',
1831
+ indexed: false,
1832
+ },
1833
+ ],
1834
+ name: 'CoinTradeRewards',
1835
+ },
1836
+ {
1837
+ type: 'event',
1838
+ anonymous: false,
1839
+ inputs: [
1840
+ {
1841
+ name: 'sender',
1842
+ internalType: 'address',
1843
+ type: 'address',
1844
+ indexed: true,
1845
+ },
1846
+ {
1847
+ name: 'recipient',
1848
+ internalType: 'address',
1849
+ type: 'address',
1850
+ indexed: true,
1851
+ },
1852
+ {
1853
+ name: 'amount',
1854
+ internalType: 'uint256',
1855
+ type: 'uint256',
1856
+ indexed: false,
1857
+ },
1858
+ {
1859
+ name: 'senderBalance',
1860
+ internalType: 'uint256',
1861
+ type: 'uint256',
1862
+ indexed: false,
1863
+ },
1864
+ {
1865
+ name: 'recipientBalance',
1866
+ internalType: 'uint256',
1867
+ type: 'uint256',
1868
+ indexed: false,
1869
+ },
1870
+ ],
1871
+ name: 'CoinTransfer',
1872
+ },
1873
+ {
1874
+ type: 'event',
1875
+ anonymous: false,
1876
+ inputs: [
1877
+ {
1878
+ name: 'caller',
1879
+ internalType: 'address',
1880
+ type: 'address',
1881
+ indexed: true,
1882
+ },
1883
+ {
1884
+ name: 'newURI',
1885
+ internalType: 'string',
1886
+ type: 'string',
1887
+ indexed: false,
1888
+ },
1889
+ { name: 'name', internalType: 'string', type: 'string', indexed: false },
1890
+ ],
1891
+ name: 'ContractMetadataUpdated',
1892
+ },
1893
+ { type: 'event', anonymous: false, inputs: [], name: 'ContractURIUpdated' },
1894
+ { type: 'event', anonymous: false, inputs: [], name: 'EIP712DomainChanged' },
1895
+ {
1896
+ type: 'event',
1897
+ anonymous: false,
1898
+ inputs: [
1899
+ {
1900
+ name: 'version',
1901
+ internalType: 'uint64',
1902
+ type: 'uint64',
1903
+ indexed: false,
1904
+ },
1905
+ ],
1906
+ name: 'Initialized',
1907
+ },
1908
+ {
1909
+ type: 'event',
1910
+ anonymous: false,
1911
+ inputs: [
1912
+ {
1913
+ name: 'caller',
1914
+ internalType: 'address',
1915
+ type: 'address',
1916
+ indexed: true,
1917
+ },
1918
+ {
1919
+ name: 'prevOwner',
1920
+ internalType: 'address',
1921
+ type: 'address',
1922
+ indexed: true,
1923
+ },
1924
+ {
1925
+ name: 'newOwner',
1926
+ internalType: 'address',
1927
+ type: 'address',
1928
+ indexed: true,
1929
+ },
1930
+ ],
1931
+ name: 'OwnerUpdated',
1932
+ },
1933
+ {
1934
+ type: 'event',
1935
+ anonymous: false,
1936
+ inputs: [
1937
+ { name: 'from', internalType: 'address', type: 'address', indexed: true },
1938
+ { name: 'to', internalType: 'address', type: 'address', indexed: true },
1939
+ {
1940
+ name: 'value',
1941
+ internalType: 'uint256',
1942
+ type: 'uint256',
1943
+ indexed: false,
1944
+ },
1945
+ ],
1946
+ name: 'Transfer',
1947
+ },
1948
+ { type: 'error', inputs: [], name: 'AddressZero' },
1949
+ { type: 'error', inputs: [], name: 'AlreadyOwner' },
1950
+ { type: 'error', inputs: [], name: 'CannotMintZeroLiquidity' },
1951
+ {
1952
+ type: 'error',
1953
+ inputs: [],
1954
+ name: 'DopplerPoolMustHaveMoreThan2DiscoveryPositions',
1955
+ },
1956
+ { type: 'error', inputs: [], name: 'ECDSAInvalidSignature' },
1957
+ {
1958
+ type: 'error',
1959
+ inputs: [{ name: 'length', internalType: 'uint256', type: 'uint256' }],
1960
+ name: 'ECDSAInvalidSignatureLength',
1961
+ },
1962
+ {
1963
+ type: 'error',
1964
+ inputs: [{ name: 's', internalType: 'bytes32', type: 'bytes32' }],
1965
+ name: 'ECDSAInvalidSignatureS',
1966
+ },
1967
+ {
1968
+ type: 'error',
1969
+ inputs: [
1970
+ { name: 'spender', internalType: 'address', type: 'address' },
1971
+ { name: 'allowance', internalType: 'uint256', type: 'uint256' },
1972
+ { name: 'needed', internalType: 'uint256', type: 'uint256' },
1973
+ ],
1974
+ name: 'ERC20InsufficientAllowance',
1975
+ },
1976
+ {
1977
+ type: 'error',
1978
+ inputs: [
1979
+ { name: 'sender', internalType: 'address', type: 'address' },
1980
+ { name: 'balance', internalType: 'uint256', type: 'uint256' },
1981
+ { name: 'needed', internalType: 'uint256', type: 'uint256' },
1982
+ ],
1983
+ name: 'ERC20InsufficientBalance',
1984
+ },
1985
+ {
1986
+ type: 'error',
1987
+ inputs: [{ name: 'approver', internalType: 'address', type: 'address' }],
1988
+ name: 'ERC20InvalidApprover',
1989
+ },
1990
+ {
1991
+ type: 'error',
1992
+ inputs: [{ name: 'receiver', internalType: 'address', type: 'address' }],
1993
+ name: 'ERC20InvalidReceiver',
1994
+ },
1995
+ {
1996
+ type: 'error',
1997
+ inputs: [{ name: 'sender', internalType: 'address', type: 'address' }],
1998
+ name: 'ERC20InvalidSender',
1999
+ },
2000
+ {
2001
+ type: 'error',
2002
+ inputs: [{ name: 'spender', internalType: 'address', type: 'address' }],
2003
+ name: 'ERC20InvalidSpender',
2004
+ },
2005
+ { type: 'error', inputs: [], name: 'ERC20TransferAmountMismatch' },
2006
+ {
2007
+ type: 'error',
2008
+ inputs: [{ name: 'deadline', internalType: 'uint256', type: 'uint256' }],
2009
+ name: 'ERC2612ExpiredSignature',
2010
+ },
2011
+ {
2012
+ type: 'error',
2013
+ inputs: [
2014
+ { name: 'signer', internalType: 'address', type: 'address' },
2015
+ { name: 'owner', internalType: 'address', type: 'address' },
2016
+ ],
2017
+ name: 'ERC2612InvalidSigner',
2018
+ },
2019
+ { type: 'error', inputs: [], name: 'EthAmountMismatch' },
2020
+ { type: 'error', inputs: [], name: 'EthAmountTooSmall' },
2021
+ { type: 'error', inputs: [], name: 'EthTransferFailed' },
2022
+ { type: 'error', inputs: [], name: 'EthTransferInvalid' },
2023
+ { type: 'error', inputs: [], name: 'InitialOrderSizeTooLarge' },
2024
+ { type: 'error', inputs: [], name: 'InsufficientFunds' },
2025
+ { type: 'error', inputs: [], name: 'InsufficientLiquidity' },
2026
+ {
2027
+ type: 'error',
2028
+ inputs: [
2029
+ { name: 'account', internalType: 'address', type: 'address' },
2030
+ { name: 'currentNonce', internalType: 'uint256', type: 'uint256' },
2031
+ ],
2032
+ name: 'InvalidAccountNonce',
2033
+ },
2034
+ { type: 'error', inputs: [], name: 'InvalidCurrencyLowerTick' },
2035
+ { type: 'error', inputs: [], name: 'InvalidInitialization' },
2036
+ { type: 'error', inputs: [], name: 'InvalidMarketType' },
2037
+ { type: 'error', inputs: [], name: 'InvalidPoolVersion' },
2038
+ {
2039
+ type: 'error',
2040
+ inputs: [
2041
+ { name: 'tickLower', internalType: 'int24', type: 'int24' },
2042
+ { name: 'tickUpper', internalType: 'int24', type: 'int24' },
2043
+ ],
2044
+ name: 'InvalidTickRangeMisordered',
2045
+ },
2046
+ { type: 'error', inputs: [], name: 'InvalidWethLowerTick' },
2047
+ { type: 'error', inputs: [], name: 'LegacyPoolMustHaveOneDiscoveryPosition' },
2048
+ { type: 'error', inputs: [], name: 'MarketAlreadyGraduated' },
2049
+ { type: 'error', inputs: [], name: 'MarketNotGraduated' },
2050
+ {
2051
+ type: 'error',
2052
+ inputs: [
2053
+ { name: 'value', internalType: 'uint256', type: 'uint256' },
2054
+ { name: 'limit', internalType: 'uint256', type: 'uint256' },
2055
+ ],
2056
+ name: 'MaxShareToBeSoldExceeded',
2057
+ },
2058
+ { type: 'error', inputs: [], name: 'NotInitializing' },
2059
+ { type: 'error', inputs: [], name: 'NotOwner' },
2060
+ { type: 'error', inputs: [], name: 'NumDiscoveryPositionsOutOfRange' },
2061
+ { type: 'error', inputs: [], name: 'OneOwnerRequired' },
2062
+ { type: 'error', inputs: [], name: 'OnlyOwner' },
2063
+ {
2064
+ type: 'error',
2065
+ inputs: [
2066
+ { name: 'sender', internalType: 'address', type: 'address' },
2067
+ { name: 'pool', internalType: 'address', type: 'address' },
2068
+ ],
2069
+ name: 'OnlyPool',
2070
+ },
2071
+ { type: 'error', inputs: [], name: 'OnlyWeth' },
2072
+ { type: 'error', inputs: [], name: 'OwnerCannotBeAddressZero' },
2073
+ { type: 'error', inputs: [], name: 'ReentrancyGuardReentrantCall' },
2074
+ { type: 'error', inputs: [], name: 'SlippageBoundsExceeded' },
2075
+ { type: 'error', inputs: [], name: 'UseRevokeOwnershipToRemoveSelf' },
2076
+ ] as const
2077
+
2078
+ //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
2079
+ // IPermit2
2080
+ //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
2081
+
2082
+ export const iPermit2ABI = [
2083
+ {
2084
+ type: 'function',
2085
+ inputs: [],
2086
+ name: 'DOMAIN_SEPARATOR',
2087
+ outputs: [{ name: '', internalType: 'bytes32', type: 'bytes32' }],
2088
+ stateMutability: 'view',
2089
+ },
2090
+ {
2091
+ type: 'function',
2092
+ inputs: [
2093
+ { name: 'user', internalType: 'address', type: 'address' },
2094
+ { name: 'token', internalType: 'address', type: 'address' },
2095
+ { name: 'spender', internalType: 'address', type: 'address' },
2096
+ ],
2097
+ name: 'allowance',
2098
+ outputs: [
2099
+ { name: 'amount', internalType: 'uint160', type: 'uint160' },
2100
+ { name: 'expiration', internalType: 'uint48', type: 'uint48' },
2101
+ { name: 'nonce', internalType: 'uint48', type: 'uint48' },
2102
+ ],
2103
+ stateMutability: 'view',
2104
+ },
2105
+ {
2106
+ type: 'function',
2107
+ inputs: [
2108
+ { name: 'token', internalType: 'address', type: 'address' },
2109
+ { name: 'spender', internalType: 'address', type: 'address' },
2110
+ { name: 'amount', internalType: 'uint160', type: 'uint160' },
2111
+ { name: 'expiration', internalType: 'uint48', type: 'uint48' },
2112
+ ],
2113
+ name: 'approve',
2114
+ outputs: [],
2115
+ stateMutability: 'nonpayable',
2116
+ },
2117
+ {
2118
+ type: 'function',
2119
+ inputs: [
2120
+ { name: 'token', internalType: 'address', type: 'address' },
2121
+ { name: 'spender', internalType: 'address', type: 'address' },
2122
+ { name: 'newNonce', internalType: 'uint48', type: 'uint48' },
2123
+ ],
2124
+ name: 'invalidateNonces',
2125
+ outputs: [],
2126
+ stateMutability: 'nonpayable',
2127
+ },
2128
+ {
2129
+ type: 'function',
2130
+ inputs: [
2131
+ { name: 'wordPos', internalType: 'uint256', type: 'uint256' },
2132
+ { name: 'mask', internalType: 'uint256', type: 'uint256' },
2133
+ ],
2134
+ name: 'invalidateUnorderedNonces',
2135
+ outputs: [],
2136
+ stateMutability: 'nonpayable',
2137
+ },
2138
+ {
2139
+ type: 'function',
2140
+ inputs: [
2141
+ {
2142
+ name: 'approvals',
2143
+ internalType: 'struct IAllowanceTransfer.TokenSpenderPair[]',
2144
+ type: 'tuple[]',
2145
+ components: [
2146
+ { name: 'token', internalType: 'address', type: 'address' },
2147
+ { name: 'spender', internalType: 'address', type: 'address' },
2148
+ ],
2149
+ },
2150
+ ],
2151
+ name: 'lockdown',
2152
+ outputs: [],
2153
+ stateMutability: 'nonpayable',
2154
+ },
2155
+ {
2156
+ type: 'function',
2157
+ inputs: [
2158
+ { name: '', internalType: 'address', type: 'address' },
2159
+ { name: '', internalType: 'uint256', type: 'uint256' },
2160
+ ],
2161
+ name: 'nonceBitmap',
2162
+ outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],
2163
+ stateMutability: 'view',
2164
+ },
2165
+ {
2166
+ type: 'function',
2167
+ inputs: [
2168
+ { name: 'owner', internalType: 'address', type: 'address' },
2169
+ {
2170
+ name: 'permitBatch',
2171
+ internalType: 'struct IAllowanceTransfer.PermitBatch',
2172
+ type: 'tuple',
2173
+ components: [
2174
+ {
2175
+ name: 'details',
2176
+ internalType: 'struct IAllowanceTransfer.PermitDetails[]',
2177
+ type: 'tuple[]',
2178
+ components: [
2179
+ { name: 'token', internalType: 'address', type: 'address' },
2180
+ { name: 'amount', internalType: 'uint160', type: 'uint160' },
2181
+ { name: 'expiration', internalType: 'uint48', type: 'uint48' },
2182
+ { name: 'nonce', internalType: 'uint48', type: 'uint48' },
2183
+ ],
2184
+ },
2185
+ { name: 'spender', internalType: 'address', type: 'address' },
2186
+ { name: 'sigDeadline', internalType: 'uint256', type: 'uint256' },
2187
+ ],
2188
+ },
2189
+ { name: 'signature', internalType: 'bytes', type: 'bytes' },
2190
+ ],
2191
+ name: 'permit',
2192
+ outputs: [],
2193
+ stateMutability: 'nonpayable',
2194
+ },
2195
+ {
2196
+ type: 'function',
2197
+ inputs: [
2198
+ { name: 'owner', internalType: 'address', type: 'address' },
2199
+ {
2200
+ name: 'permitSingle',
2201
+ internalType: 'struct IAllowanceTransfer.PermitSingle',
2202
+ type: 'tuple',
2203
+ components: [
2204
+ {
2205
+ name: 'details',
2206
+ internalType: 'struct IAllowanceTransfer.PermitDetails',
2207
+ type: 'tuple',
2208
+ components: [
2209
+ { name: 'token', internalType: 'address', type: 'address' },
2210
+ { name: 'amount', internalType: 'uint160', type: 'uint160' },
2211
+ { name: 'expiration', internalType: 'uint48', type: 'uint48' },
2212
+ { name: 'nonce', internalType: 'uint48', type: 'uint48' },
2213
+ ],
2214
+ },
2215
+ { name: 'spender', internalType: 'address', type: 'address' },
2216
+ { name: 'sigDeadline', internalType: 'uint256', type: 'uint256' },
2217
+ ],
2218
+ },
2219
+ { name: 'signature', internalType: 'bytes', type: 'bytes' },
2220
+ ],
2221
+ name: 'permit',
2222
+ outputs: [],
2223
+ stateMutability: 'nonpayable',
2224
+ },
2225
+ {
2226
+ type: 'function',
2227
+ inputs: [
2228
+ {
2229
+ name: 'permit',
2230
+ internalType: 'struct ISignatureTransfer.PermitTransferFrom',
2231
+ type: 'tuple',
2232
+ components: [
2233
+ {
2234
+ name: 'permitted',
2235
+ internalType: 'struct ISignatureTransfer.TokenPermissions',
2236
+ type: 'tuple',
2237
+ components: [
2238
+ { name: 'token', internalType: 'address', type: 'address' },
2239
+ { name: 'amount', internalType: 'uint256', type: 'uint256' },
2240
+ ],
2241
+ },
2242
+ { name: 'nonce', internalType: 'uint256', type: 'uint256' },
2243
+ { name: 'deadline', internalType: 'uint256', type: 'uint256' },
2244
+ ],
2245
+ },
2246
+ {
2247
+ name: 'transferDetails',
2248
+ internalType: 'struct ISignatureTransfer.SignatureTransferDetails',
2249
+ type: 'tuple',
2250
+ components: [
2251
+ { name: 'to', internalType: 'address', type: 'address' },
2252
+ { name: 'requestedAmount', internalType: 'uint256', type: 'uint256' },
2253
+ ],
2254
+ },
2255
+ { name: 'owner', internalType: 'address', type: 'address' },
2256
+ { name: 'signature', internalType: 'bytes', type: 'bytes' },
2257
+ ],
2258
+ name: 'permitTransferFrom',
2259
+ outputs: [],
2260
+ stateMutability: 'nonpayable',
2261
+ },
2262
+ {
2263
+ type: 'function',
2264
+ inputs: [
2265
+ {
2266
+ name: 'permit',
2267
+ internalType: 'struct ISignatureTransfer.PermitBatchTransferFrom',
2268
+ type: 'tuple',
2269
+ components: [
2270
+ {
2271
+ name: 'permitted',
2272
+ internalType: 'struct ISignatureTransfer.TokenPermissions[]',
2273
+ type: 'tuple[]',
2274
+ components: [
2275
+ { name: 'token', internalType: 'address', type: 'address' },
2276
+ { name: 'amount', internalType: 'uint256', type: 'uint256' },
2277
+ ],
2278
+ },
2279
+ { name: 'nonce', internalType: 'uint256', type: 'uint256' },
2280
+ { name: 'deadline', internalType: 'uint256', type: 'uint256' },
2281
+ ],
2282
+ },
2283
+ {
2284
+ name: 'transferDetails',
2285
+ internalType: 'struct ISignatureTransfer.SignatureTransferDetails[]',
2286
+ type: 'tuple[]',
2287
+ components: [
2288
+ { name: 'to', internalType: 'address', type: 'address' },
2289
+ { name: 'requestedAmount', internalType: 'uint256', type: 'uint256' },
2290
+ ],
2291
+ },
2292
+ { name: 'owner', internalType: 'address', type: 'address' },
2293
+ { name: 'signature', internalType: 'bytes', type: 'bytes' },
2294
+ ],
2295
+ name: 'permitTransferFrom',
2296
+ outputs: [],
2297
+ stateMutability: 'nonpayable',
2298
+ },
2299
+ {
2300
+ type: 'function',
2301
+ inputs: [
2302
+ {
2303
+ name: 'permit',
2304
+ internalType: 'struct ISignatureTransfer.PermitTransferFrom',
2305
+ type: 'tuple',
2306
+ components: [
2307
+ {
2308
+ name: 'permitted',
2309
+ internalType: 'struct ISignatureTransfer.TokenPermissions',
2310
+ type: 'tuple',
2311
+ components: [
2312
+ { name: 'token', internalType: 'address', type: 'address' },
2313
+ { name: 'amount', internalType: 'uint256', type: 'uint256' },
2314
+ ],
2315
+ },
2316
+ { name: 'nonce', internalType: 'uint256', type: 'uint256' },
2317
+ { name: 'deadline', internalType: 'uint256', type: 'uint256' },
2318
+ ],
2319
+ },
2320
+ {
2321
+ name: 'transferDetails',
2322
+ internalType: 'struct ISignatureTransfer.SignatureTransferDetails',
2323
+ type: 'tuple',
2324
+ components: [
2325
+ { name: 'to', internalType: 'address', type: 'address' },
2326
+ { name: 'requestedAmount', internalType: 'uint256', type: 'uint256' },
2327
+ ],
2328
+ },
2329
+ { name: 'owner', internalType: 'address', type: 'address' },
2330
+ { name: 'witness', internalType: 'bytes32', type: 'bytes32' },
2331
+ { name: 'witnessTypeString', internalType: 'string', type: 'string' },
2332
+ { name: 'signature', internalType: 'bytes', type: 'bytes' },
2333
+ ],
2334
+ name: 'permitWitnessTransferFrom',
2335
+ outputs: [],
2336
+ stateMutability: 'nonpayable',
2337
+ },
2338
+ {
2339
+ type: 'function',
2340
+ inputs: [
2341
+ {
2342
+ name: 'permit',
2343
+ internalType: 'struct ISignatureTransfer.PermitBatchTransferFrom',
2344
+ type: 'tuple',
2345
+ components: [
2346
+ {
2347
+ name: 'permitted',
2348
+ internalType: 'struct ISignatureTransfer.TokenPermissions[]',
2349
+ type: 'tuple[]',
2350
+ components: [
2351
+ { name: 'token', internalType: 'address', type: 'address' },
2352
+ { name: 'amount', internalType: 'uint256', type: 'uint256' },
2353
+ ],
2354
+ },
2355
+ { name: 'nonce', internalType: 'uint256', type: 'uint256' },
2356
+ { name: 'deadline', internalType: 'uint256', type: 'uint256' },
2357
+ ],
2358
+ },
2359
+ {
2360
+ name: 'transferDetails',
2361
+ internalType: 'struct ISignatureTransfer.SignatureTransferDetails[]',
2362
+ type: 'tuple[]',
2363
+ components: [
2364
+ { name: 'to', internalType: 'address', type: 'address' },
2365
+ { name: 'requestedAmount', internalType: 'uint256', type: 'uint256' },
2366
+ ],
2367
+ },
2368
+ { name: 'owner', internalType: 'address', type: 'address' },
2369
+ { name: 'witness', internalType: 'bytes32', type: 'bytes32' },
2370
+ { name: 'witnessTypeString', internalType: 'string', type: 'string' },
2371
+ { name: 'signature', internalType: 'bytes', type: 'bytes' },
2372
+ ],
2373
+ name: 'permitWitnessTransferFrom',
2374
+ outputs: [],
2375
+ stateMutability: 'nonpayable',
2376
+ },
2377
+ {
2378
+ type: 'function',
2379
+ inputs: [
2380
+ {
2381
+ name: 'transferDetails',
2382
+ internalType: 'struct IAllowanceTransfer.AllowanceTransferDetails[]',
2383
+ type: 'tuple[]',
2384
+ components: [
2385
+ { name: 'from', internalType: 'address', type: 'address' },
2386
+ { name: 'to', internalType: 'address', type: 'address' },
2387
+ { name: 'amount', internalType: 'uint160', type: 'uint160' },
2388
+ { name: 'token', internalType: 'address', type: 'address' },
2389
+ ],
2390
+ },
2391
+ ],
2392
+ name: 'transferFrom',
2393
+ outputs: [],
2394
+ stateMutability: 'nonpayable',
2395
+ },
2396
+ {
2397
+ type: 'function',
2398
+ inputs: [
2399
+ { name: 'from', internalType: 'address', type: 'address' },
2400
+ { name: 'to', internalType: 'address', type: 'address' },
2401
+ { name: 'amount', internalType: 'uint160', type: 'uint160' },
2402
+ { name: 'token', internalType: 'address', type: 'address' },
2403
+ ],
2404
+ name: 'transferFrom',
2405
+ outputs: [],
2406
+ stateMutability: 'nonpayable',
2407
+ },
2408
+ {
2409
+ type: 'event',
2410
+ anonymous: false,
2411
+ inputs: [
2412
+ {
2413
+ name: 'owner',
2414
+ internalType: 'address',
2415
+ type: 'address',
2416
+ indexed: true,
2417
+ },
2418
+ {
2419
+ name: 'token',
2420
+ internalType: 'address',
2421
+ type: 'address',
2422
+ indexed: true,
2423
+ },
2424
+ {
2425
+ name: 'spender',
2426
+ internalType: 'address',
2427
+ type: 'address',
2428
+ indexed: true,
2429
+ },
2430
+ {
2431
+ name: 'amount',
2432
+ internalType: 'uint160',
2433
+ type: 'uint160',
2434
+ indexed: false,
2435
+ },
2436
+ {
2437
+ name: 'expiration',
2438
+ internalType: 'uint48',
2439
+ type: 'uint48',
2440
+ indexed: false,
2441
+ },
2442
+ ],
2443
+ name: 'Approval',
2444
+ },
2445
+ {
2446
+ type: 'event',
2447
+ anonymous: false,
2448
+ inputs: [
2449
+ {
2450
+ name: 'owner',
2451
+ internalType: 'address',
2452
+ type: 'address',
2453
+ indexed: true,
2454
+ },
2455
+ {
2456
+ name: 'token',
2457
+ internalType: 'address',
2458
+ type: 'address',
2459
+ indexed: false,
2460
+ },
2461
+ {
2462
+ name: 'spender',
2463
+ internalType: 'address',
2464
+ type: 'address',
2465
+ indexed: false,
2466
+ },
2467
+ ],
2468
+ name: 'Lockdown',
2469
+ },
2470
+ {
2471
+ type: 'event',
2472
+ anonymous: false,
2473
+ inputs: [
2474
+ {
2475
+ name: 'owner',
2476
+ internalType: 'address',
2477
+ type: 'address',
2478
+ indexed: true,
2479
+ },
2480
+ {
2481
+ name: 'token',
2482
+ internalType: 'address',
2483
+ type: 'address',
2484
+ indexed: true,
2485
+ },
2486
+ {
2487
+ name: 'spender',
2488
+ internalType: 'address',
2489
+ type: 'address',
2490
+ indexed: true,
2491
+ },
2492
+ {
2493
+ name: 'newNonce',
2494
+ internalType: 'uint48',
2495
+ type: 'uint48',
2496
+ indexed: false,
2497
+ },
2498
+ {
2499
+ name: 'oldNonce',
2500
+ internalType: 'uint48',
2501
+ type: 'uint48',
2502
+ indexed: false,
2503
+ },
2504
+ ],
2505
+ name: 'NonceInvalidation',
2506
+ },
2507
+ {
2508
+ type: 'event',
2509
+ anonymous: false,
2510
+ inputs: [
2511
+ {
2512
+ name: 'owner',
2513
+ internalType: 'address',
2514
+ type: 'address',
2515
+ indexed: true,
2516
+ },
2517
+ {
2518
+ name: 'token',
2519
+ internalType: 'address',
2520
+ type: 'address',
2521
+ indexed: true,
2522
+ },
2523
+ {
2524
+ name: 'spender',
2525
+ internalType: 'address',
2526
+ type: 'address',
2527
+ indexed: true,
2528
+ },
2529
+ {
2530
+ name: 'amount',
2531
+ internalType: 'uint160',
2532
+ type: 'uint160',
2533
+ indexed: false,
2534
+ },
2535
+ {
2536
+ name: 'expiration',
2537
+ internalType: 'uint48',
2538
+ type: 'uint48',
2539
+ indexed: false,
2540
+ },
2541
+ { name: 'nonce', internalType: 'uint48', type: 'uint48', indexed: false },
2542
+ ],
2543
+ name: 'Permit',
2544
+ },
2545
+ {
2546
+ type: 'event',
2547
+ anonymous: false,
2548
+ inputs: [
2549
+ {
2550
+ name: 'owner',
2551
+ internalType: 'address',
2552
+ type: 'address',
2553
+ indexed: true,
2554
+ },
2555
+ {
2556
+ name: 'word',
2557
+ internalType: 'uint256',
2558
+ type: 'uint256',
2559
+ indexed: false,
2560
+ },
2561
+ {
2562
+ name: 'mask',
2563
+ internalType: 'uint256',
2564
+ type: 'uint256',
2565
+ indexed: false,
2566
+ },
2567
+ ],
2568
+ name: 'UnorderedNonceInvalidation',
2569
+ },
2570
+ {
2571
+ type: 'error',
2572
+ inputs: [{ name: 'deadline', internalType: 'uint256', type: 'uint256' }],
2573
+ name: 'AllowanceExpired',
2574
+ },
2575
+ { type: 'error', inputs: [], name: 'ExcessiveInvalidation' },
2576
+ {
2577
+ type: 'error',
2578
+ inputs: [{ name: 'amount', internalType: 'uint256', type: 'uint256' }],
2579
+ name: 'InsufficientAllowance',
2580
+ },
2581
+ {
2582
+ type: 'error',
2583
+ inputs: [{ name: 'maxAmount', internalType: 'uint256', type: 'uint256' }],
2584
+ name: 'InvalidAmount',
2585
+ },
2586
+ { type: 'error', inputs: [], name: 'LengthMismatch' },
2587
+ ] as const
2588
+
2589
+ //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
2590
+ // IPoolConfigEncoding
2591
+ //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
2592
+
2593
+ export const iPoolConfigEncodingABI = [
2594
+ {
2595
+ type: 'function',
2596
+ inputs: [
2597
+ { name: 'version', internalType: 'uint8', type: 'uint8' },
2598
+ { name: 'currency', internalType: 'address', type: 'address' },
2599
+ { name: 'tickLower', internalType: 'int24[]', type: 'int24[]' },
2600
+ { name: 'tickUpper', internalType: 'int24[]', type: 'int24[]' },
2601
+ {
2602
+ name: 'numDiscoveryPositions',
2603
+ internalType: 'uint16[]',
2604
+ type: 'uint16[]',
2605
+ },
2606
+ {
2607
+ name: 'maxDiscoverySupplyShare',
2608
+ internalType: 'uint256[]',
2609
+ type: 'uint256[]',
2610
+ },
2611
+ ],
2612
+ name: 'encodeMultiCurvePoolConfig',
2613
+ outputs: [{ name: '', internalType: 'bytes', type: 'bytes' }],
2614
+ stateMutability: 'pure',
2615
+ },
2616
+ ] as const
2617
+
2618
+ //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
2619
+ // IUniswapV3Pool
2620
+ //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
2621
+
2622
+ export const iUniswapV3PoolABI = [
2623
+ {
2624
+ type: 'function',
2625
+ inputs: [
2626
+ { name: 'tickLower', internalType: 'int24', type: 'int24' },
2627
+ { name: 'tickUpper', internalType: 'int24', type: 'int24' },
2628
+ { name: 'amount', internalType: 'uint128', type: 'uint128' },
2629
+ ],
2630
+ name: 'burn',
2631
+ outputs: [
2632
+ { name: 'amount0', internalType: 'uint256', type: 'uint256' },
2633
+ { name: 'amount1', internalType: 'uint256', type: 'uint256' },
2634
+ ],
2635
+ stateMutability: 'nonpayable',
2636
+ },
2637
+ {
2638
+ type: 'function',
2639
+ inputs: [
2640
+ { name: 'recipient', internalType: 'address', type: 'address' },
2641
+ { name: 'tickLower', internalType: 'int24', type: 'int24' },
2642
+ { name: 'tickUpper', internalType: 'int24', type: 'int24' },
2643
+ { name: 'amount0Requested', internalType: 'uint128', type: 'uint128' },
2644
+ { name: 'amount1Requested', internalType: 'uint128', type: 'uint128' },
2645
+ ],
2646
+ name: 'collect',
2647
+ outputs: [
2648
+ { name: 'amount0', internalType: 'uint128', type: 'uint128' },
2649
+ { name: 'amount1', internalType: 'uint128', type: 'uint128' },
2650
+ ],
2651
+ stateMutability: 'nonpayable',
2652
+ },
2653
+ {
2654
+ type: 'function',
2655
+ inputs: [],
2656
+ name: 'feeGrowthGlobal0X128',
2657
+ outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],
2658
+ stateMutability: 'view',
2659
+ },
2660
+ {
2661
+ type: 'function',
2662
+ inputs: [],
2663
+ name: 'feeGrowthGlobal1X128',
2664
+ outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],
2665
+ stateMutability: 'view',
2666
+ },
2667
+ {
2668
+ type: 'function',
2669
+ inputs: [
2670
+ { name: 'sqrtPriceX96', internalType: 'uint160', type: 'uint160' },
2671
+ ],
2672
+ name: 'initialize',
2673
+ outputs: [],
2674
+ stateMutability: 'nonpayable',
2675
+ },
2676
+ {
2677
+ type: 'function',
2678
+ inputs: [
2679
+ { name: 'recipient', internalType: 'address', type: 'address' },
2680
+ { name: 'tickLower', internalType: 'int24', type: 'int24' },
2681
+ { name: 'tickUpper', internalType: 'int24', type: 'int24' },
2682
+ { name: 'amount', internalType: 'uint128', type: 'uint128' },
2683
+ { name: 'data', internalType: 'bytes', type: 'bytes' },
2684
+ ],
2685
+ name: 'mint',
2686
+ outputs: [
2687
+ { name: 'amount0', internalType: 'uint256', type: 'uint256' },
2688
+ { name: 'amount1', internalType: 'uint256', type: 'uint256' },
2689
+ ],
2690
+ stateMutability: 'nonpayable',
2691
+ },
2692
+ {
2693
+ type: 'function',
2694
+ inputs: [],
2695
+ name: 'slot0',
2696
+ outputs: [
2697
+ {
2698
+ name: 'slot0',
2699
+ internalType: 'struct IUniswapV3Pool.Slot0',
2700
+ type: 'tuple',
2701
+ components: [
2702
+ { name: 'sqrtPriceX96', internalType: 'uint160', type: 'uint160' },
2703
+ { name: 'tick', internalType: 'int24', type: 'int24' },
2704
+ { name: 'observationIndex', internalType: 'uint16', type: 'uint16' },
2705
+ {
2706
+ name: 'observationCardinality',
2707
+ internalType: 'uint16',
2708
+ type: 'uint16',
2709
+ },
2710
+ {
2711
+ name: 'observationCardinalityNext',
2712
+ internalType: 'uint16',
2713
+ type: 'uint16',
2714
+ },
2715
+ { name: 'feeProtocol', internalType: 'uint8', type: 'uint8' },
2716
+ { name: 'unlocked', internalType: 'bool', type: 'bool' },
2717
+ ],
2718
+ },
2719
+ ],
2720
+ stateMutability: 'view',
2721
+ },
2722
+ {
2723
+ type: 'function',
2724
+ inputs: [
2725
+ { name: 'recipient', internalType: 'address', type: 'address' },
2726
+ { name: 'zeroForOne', internalType: 'bool', type: 'bool' },
2727
+ { name: 'amountSpecified', internalType: 'int256', type: 'int256' },
2728
+ { name: 'sqrtPriceLimitX96', internalType: 'uint160', type: 'uint160' },
2729
+ { name: 'data', internalType: 'bytes', type: 'bytes' },
2730
+ ],
2731
+ name: 'swap',
2732
+ outputs: [
2733
+ { name: 'amount0', internalType: 'int256', type: 'int256' },
2734
+ { name: 'amount1', internalType: 'int256', type: 'int256' },
2735
+ ],
2736
+ stateMutability: 'nonpayable',
2737
+ },
2738
+ {
2739
+ type: 'function',
2740
+ inputs: [],
2741
+ name: 'token0',
2742
+ outputs: [{ name: '', internalType: 'address', type: 'address' }],
2743
+ stateMutability: 'nonpayable',
1130
2744
  },
1131
2745
  {
1132
2746
  type: 'function',
@@ -1137,18 +2751,47 @@ export const iUniswapV3PoolABI = [
1137
2751
  },
1138
2752
  ] as const
1139
2753
 
2754
+ //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
2755
+ // IUniversalRouter
2756
+ //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
2757
+
2758
+ export const iUniversalRouterABI = [
2759
+ {
2760
+ type: 'function',
2761
+ inputs: [
2762
+ { name: 'commands', internalType: 'bytes', type: 'bytes' },
2763
+ { name: 'inputs', internalType: 'bytes[]', type: 'bytes[]' },
2764
+ { name: 'deadline', internalType: 'uint256', type: 'uint256' },
2765
+ ],
2766
+ name: 'execute',
2767
+ outputs: [],
2768
+ stateMutability: 'payable',
2769
+ },
2770
+ { type: 'error', inputs: [], name: 'ETHNotAccepted' },
2771
+ {
2772
+ type: 'error',
2773
+ inputs: [
2774
+ { name: 'commandIndex', internalType: 'uint256', type: 'uint256' },
2775
+ { name: 'message', internalType: 'bytes', type: 'bytes' },
2776
+ ],
2777
+ name: 'ExecutionFailed',
2778
+ },
2779
+ { type: 'error', inputs: [], name: 'InvalidEthSender' },
2780
+ { type: 'error', inputs: [], name: 'LengthMismatch' },
2781
+ { type: 'error', inputs: [], name: 'TransactionDeadlinePassed' },
2782
+ ] as const
2783
+
1140
2784
  //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
1141
2785
  // ZoraFactoryImpl
1142
2786
  //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
1143
2787
 
1144
- /**
1145
- * - [__View Contract on Base Basescan__](https://basescan.org/address/0x777777751622c0d3258f214F9DF38E35BF45baF3)
1146
- * - [__View Contract on Base Sepolia Basescan__](https://sepolia.basescan.org/address/0x777777751622c0d3258f214F9DF38E35BF45baF3)
1147
- */
1148
2788
  export const zoraFactoryImplABI = [
1149
2789
  {
1150
2790
  type: 'constructor',
1151
- inputs: [{ name: '_coinImpl', internalType: 'address', type: 'address' }],
2791
+ inputs: [
2792
+ { name: '_coinImpl', internalType: 'address', type: 'address' },
2793
+ { name: '_coinV4Impl', internalType: 'address', type: 'address' },
2794
+ ],
1152
2795
  stateMutability: 'nonpayable',
1153
2796
  },
1154
2797
  {
@@ -1158,6 +2801,20 @@ export const zoraFactoryImplABI = [
1158
2801
  outputs: [{ name: '', internalType: 'string', type: 'string' }],
1159
2802
  stateMutability: 'view',
1160
2803
  },
2804
+ {
2805
+ type: 'function',
2806
+ inputs: [
2807
+ { name: 'msgSender', internalType: 'address', type: 'address' },
2808
+ { name: 'name', internalType: 'string', type: 'string' },
2809
+ { name: 'symbol', internalType: 'string', type: 'string' },
2810
+ { name: 'poolConfig', internalType: 'bytes', type: 'bytes' },
2811
+ { name: 'platformReferrer', internalType: 'address', type: 'address' },
2812
+ { name: 'coinSalt', internalType: 'bytes32', type: 'bytes32' },
2813
+ ],
2814
+ name: 'coinAddress',
2815
+ outputs: [{ name: '', internalType: 'address', type: 'address' }],
2816
+ stateMutability: 'view',
2817
+ },
1161
2818
  {
1162
2819
  type: 'function',
1163
2820
  inputs: [],
@@ -1165,6 +2822,27 @@ export const zoraFactoryImplABI = [
1165
2822
  outputs: [{ name: '', internalType: 'address', type: 'address' }],
1166
2823
  stateMutability: 'view',
1167
2824
  },
2825
+ {
2826
+ type: 'function',
2827
+ inputs: [],
2828
+ name: 'coinV4Impl',
2829
+ outputs: [{ name: '', internalType: 'address', type: 'address' }],
2830
+ stateMutability: 'view',
2831
+ },
2832
+ {
2833
+ type: 'function',
2834
+ inputs: [],
2835
+ name: 'contractName',
2836
+ outputs: [{ name: '', internalType: 'string', type: 'string' }],
2837
+ stateMutability: 'pure',
2838
+ },
2839
+ {
2840
+ type: 'function',
2841
+ inputs: [],
2842
+ name: 'contractVersion',
2843
+ outputs: [{ name: '', internalType: 'string', type: 'string' }],
2844
+ stateMutability: 'pure',
2845
+ },
1168
2846
  {
1169
2847
  type: 'function',
1170
2848
  inputs: [
@@ -1175,7 +2853,7 @@ export const zoraFactoryImplABI = [
1175
2853
  { name: 'symbol', internalType: 'string', type: 'string' },
1176
2854
  { name: 'platformReferrer', internalType: 'address', type: 'address' },
1177
2855
  { name: 'currency', internalType: 'address', type: 'address' },
1178
- { name: 'tickLower', internalType: 'int24', type: 'int24' },
2856
+ { name: '', internalType: 'int24', type: 'int24' },
1179
2857
  { name: 'orderSize', internalType: 'uint256', type: 'uint256' },
1180
2858
  ],
1181
2859
  name: 'deploy',
@@ -1185,6 +2863,27 @@ export const zoraFactoryImplABI = [
1185
2863
  ],
1186
2864
  stateMutability: 'payable',
1187
2865
  },
2866
+ {
2867
+ type: 'function',
2868
+ inputs: [
2869
+ { name: 'payoutRecipient', internalType: 'address', type: 'address' },
2870
+ { name: 'owners', internalType: 'address[]', type: 'address[]' },
2871
+ { name: 'uri', internalType: 'string', type: 'string' },
2872
+ { name: 'name', internalType: 'string', type: 'string' },
2873
+ { name: 'symbol', internalType: 'string', type: 'string' },
2874
+ { name: 'poolConfig', internalType: 'bytes', type: 'bytes' },
2875
+ { name: 'platformReferrer', internalType: 'address', type: 'address' },
2876
+ { name: 'postDeployHook', internalType: 'address', type: 'address' },
2877
+ { name: 'postDeployHookData', internalType: 'bytes', type: 'bytes' },
2878
+ { name: 'coinSalt', internalType: 'bytes32', type: 'bytes32' },
2879
+ ],
2880
+ name: 'deploy',
2881
+ outputs: [
2882
+ { name: 'coin', internalType: 'address', type: 'address' },
2883
+ { name: 'postDeployHookDataOut', internalType: 'bytes', type: 'bytes' },
2884
+ ],
2885
+ stateMutability: 'payable',
2886
+ },
1188
2887
  {
1189
2888
  type: 'function',
1190
2889
  inputs: [
@@ -1204,6 +2903,33 @@ export const zoraFactoryImplABI = [
1204
2903
  ],
1205
2904
  stateMutability: 'payable',
1206
2905
  },
2906
+ {
2907
+ type: 'function',
2908
+ inputs: [
2909
+ { name: 'payoutRecipient', internalType: 'address', type: 'address' },
2910
+ { name: 'owners', internalType: 'address[]', type: 'address[]' },
2911
+ { name: 'uri', internalType: 'string', type: 'string' },
2912
+ { name: 'name', internalType: 'string', type: 'string' },
2913
+ { name: 'symbol', internalType: 'string', type: 'string' },
2914
+ { name: 'poolConfig', internalType: 'bytes', type: 'bytes' },
2915
+ { name: 'platformReferrer', internalType: 'address', type: 'address' },
2916
+ { name: 'hook', internalType: 'address', type: 'address' },
2917
+ { name: 'hookData', internalType: 'bytes', type: 'bytes' },
2918
+ ],
2919
+ name: 'deployWithHook',
2920
+ outputs: [
2921
+ { name: 'coin', internalType: 'address', type: 'address' },
2922
+ { name: 'hookDataOut', internalType: 'bytes', type: 'bytes' },
2923
+ ],
2924
+ stateMutability: 'payable',
2925
+ },
2926
+ {
2927
+ type: 'function',
2928
+ inputs: [{ name: 'coin', internalType: 'address', type: 'address' }],
2929
+ name: 'getVersionForDeployedCoin',
2930
+ outputs: [{ name: '', internalType: 'uint8', type: 'uint8' }],
2931
+ stateMutability: 'view',
2932
+ },
1207
2933
  {
1208
2934
  type: 'function',
1209
2935
  inputs: [],
@@ -1315,6 +3041,76 @@ export const zoraFactoryImplABI = [
1315
3041
  ],
1316
3042
  name: 'CoinCreated',
1317
3043
  },
3044
+ {
3045
+ type: 'event',
3046
+ anonymous: false,
3047
+ inputs: [
3048
+ {
3049
+ name: 'caller',
3050
+ internalType: 'address',
3051
+ type: 'address',
3052
+ indexed: true,
3053
+ },
3054
+ {
3055
+ name: 'payoutRecipient',
3056
+ internalType: 'address',
3057
+ type: 'address',
3058
+ indexed: true,
3059
+ },
3060
+ {
3061
+ name: 'platformReferrer',
3062
+ internalType: 'address',
3063
+ type: 'address',
3064
+ indexed: true,
3065
+ },
3066
+ {
3067
+ name: 'currency',
3068
+ internalType: 'address',
3069
+ type: 'address',
3070
+ indexed: false,
3071
+ },
3072
+ { name: 'uri', internalType: 'string', type: 'string', indexed: false },
3073
+ { name: 'name', internalType: 'string', type: 'string', indexed: false },
3074
+ {
3075
+ name: 'symbol',
3076
+ internalType: 'string',
3077
+ type: 'string',
3078
+ indexed: false,
3079
+ },
3080
+ {
3081
+ name: 'coin',
3082
+ internalType: 'address',
3083
+ type: 'address',
3084
+ indexed: false,
3085
+ },
3086
+ {
3087
+ name: 'poolKey',
3088
+ internalType: 'struct PoolKey',
3089
+ type: 'tuple',
3090
+ components: [
3091
+ { name: 'currency0', internalType: 'Currency', type: 'address' },
3092
+ { name: 'currency1', internalType: 'Currency', type: 'address' },
3093
+ { name: 'fee', internalType: 'uint24', type: 'uint24' },
3094
+ { name: 'tickSpacing', internalType: 'int24', type: 'int24' },
3095
+ { name: 'hooks', internalType: 'contract IHooks', type: 'address' },
3096
+ ],
3097
+ indexed: false,
3098
+ },
3099
+ {
3100
+ name: 'poolKeyHash',
3101
+ internalType: 'bytes32',
3102
+ type: 'bytes32',
3103
+ indexed: false,
3104
+ },
3105
+ {
3106
+ name: 'version',
3107
+ internalType: 'string',
3108
+ type: 'string',
3109
+ indexed: false,
3110
+ },
3111
+ ],
3112
+ name: 'CoinCreatedV4',
3113
+ },
1318
3114
  {
1319
3115
  type: 'event',
1320
3116
  anonymous: false,
@@ -1370,6 +3166,10 @@ export const zoraFactoryImplABI = [
1370
3166
  inputs: [{ name: 'account', internalType: 'address', type: 'address' }],
1371
3167
  name: 'AddressInsufficientBalance',
1372
3168
  },
3169
+ { type: 'error', inputs: [], name: 'ArrayLengthMismatch' },
3170
+ { type: 'error', inputs: [], name: 'CannotMintZeroLiquidity' },
3171
+ { type: 'error', inputs: [], name: 'ConfigTickLowerMustBeLessThanTickUpper' },
3172
+ { type: 'error', inputs: [], name: 'Deprecated' },
1373
3173
  { type: 'error', inputs: [], name: 'ERC1167FailedCreateClone' },
1374
3174
  {
1375
3175
  type: 'error',
@@ -1382,8 +3182,35 @@ export const zoraFactoryImplABI = [
1382
3182
  { type: 'error', inputs: [], name: 'ERC20TransferAmountMismatch' },
1383
3183
  { type: 'error', inputs: [], name: 'EthTransferInvalid' },
1384
3184
  { type: 'error', inputs: [], name: 'FailedInnerCall' },
3185
+ { type: 'error', inputs: [], name: 'InvalidHook' },
1385
3186
  { type: 'error', inputs: [], name: 'InvalidInitialization' },
3187
+ { type: 'error', inputs: [], name: 'InvalidPoolVersion' },
3188
+ {
3189
+ type: 'error',
3190
+ inputs: [
3191
+ { name: 'tickLower', internalType: 'int24', type: 'int24' },
3192
+ { name: 'tickUpper', internalType: 'int24', type: 'int24' },
3193
+ ],
3194
+ name: 'InvalidTickRangeMisordered',
3195
+ },
3196
+ {
3197
+ type: 'error',
3198
+ inputs: [
3199
+ { name: 'tickLower', internalType: 'int24', type: 'int24' },
3200
+ { name: 'tickUpper', internalType: 'int24', type: 'int24' },
3201
+ ],
3202
+ name: 'InvalidTickRangeMisordered',
3203
+ },
3204
+ {
3205
+ type: 'error',
3206
+ inputs: [
3207
+ { name: 'value', internalType: 'uint256', type: 'uint256' },
3208
+ { name: 'limit', internalType: 'uint256', type: 'uint256' },
3209
+ ],
3210
+ name: 'MaxShareToBeSoldExceeded',
3211
+ },
1386
3212
  { type: 'error', inputs: [], name: 'NotInitializing' },
3213
+ { type: 'error', inputs: [], name: 'NumDiscoveryPositionsOutOfRange' },
1387
3214
  {
1388
3215
  type: 'error',
1389
3216
  inputs: [{ name: 'owner', internalType: 'address', type: 'address' }],
@@ -1406,22 +3233,14 @@ export const zoraFactoryImplABI = [
1406
3233
  inputs: [{ name: 'slot', internalType: 'bytes32', type: 'bytes32' }],
1407
3234
  name: 'UUPSUnsupportedProxiableUUID',
1408
3235
  },
3236
+ {
3237
+ type: 'error',
3238
+ inputs: [
3239
+ { name: 'currentName', internalType: 'string', type: 'string' },
3240
+ { name: 'newName', internalType: 'string', type: 'string' },
3241
+ ],
3242
+ name: 'UpgradeToMismatchedContractName',
3243
+ },
3244
+ { type: 'error', inputs: [], name: 'ZeroDiscoveryPositions' },
3245
+ { type: 'error', inputs: [], name: 'ZeroDiscoverySupplyShare' },
1409
3246
  ] as const
1410
-
1411
- /**
1412
- * - [__View Contract on Base Basescan__](https://basescan.org/address/0x777777751622c0d3258f214F9DF38E35BF45baF3)
1413
- * - [__View Contract on Base Sepolia Basescan__](https://sepolia.basescan.org/address/0x777777751622c0d3258f214F9DF38E35BF45baF3)
1414
- */
1415
- export const zoraFactoryImplAddress = {
1416
- 8453: '0x777777751622c0d3258f214F9DF38E35BF45baF3',
1417
- 84532: '0x777777751622c0d3258f214F9DF38E35BF45baF3',
1418
- } as const
1419
-
1420
- /**
1421
- * - [__View Contract on Base Basescan__](https://basescan.org/address/0x777777751622c0d3258f214F9DF38E35BF45baF3)
1422
- * - [__View Contract on Base Sepolia Basescan__](https://sepolia.basescan.org/address/0x777777751622c0d3258f214F9DF38E35BF45baF3)
1423
- */
1424
- export const zoraFactoryImplConfig = {
1425
- address: zoraFactoryImplAddress,
1426
- abi: zoraFactoryImplABI,
1427
- } as const