@zoralabs/coins 2.3.1 → 2.4.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 (126) hide show
  1. package/.turbo/turbo-build$colon$js.log +119 -128
  2. package/CHANGELOG.md +30 -0
  3. package/abis/Address.json +0 -16
  4. package/abis/BuySupplyWithSwapRouterHook.json +0 -27
  5. package/abis/BuySupplyWithV4SwapHook.json +0 -32
  6. package/abis/Clones.json +1 -1
  7. package/abis/CoinDopplerMultiCurve.json +109 -0
  8. package/abis/Create2.json +0 -21
  9. package/abis/ERC1967Proxy.json +1 -1
  10. package/abis/ERC1967Utils.json +0 -45
  11. package/abis/{UpgradeCoinImpl.json → Errors.json} +14 -10
  12. package/abis/{MockERC20.json → IERC1363.json} +134 -104
  13. package/abis/IERC1967.json +47 -0
  14. package/abis/IERC20.json +0 -36
  15. package/abis/IProtocolRewards.json +0 -258
  16. package/abis/{Script.json → ISupportsLimitOrderFill.json} +2 -2
  17. package/abis/ITrustedMsgSenderProviderLookup.json +21 -0
  18. package/abis/IZoraLimitOrderBookCoinsInterface.json +67 -0
  19. package/abis/IZoraV4CoinHook.json +15 -0
  20. package/abis/ProxyShim.json +15 -16
  21. package/abis/SafeCast.json +51 -0
  22. package/abis/{AddressConstants.json → SafeCast160.json} +1 -1
  23. package/abis/Strings.json +10 -0
  24. package/abis/TrustedMsgSenderProviderLookup.json +215 -0
  25. package/abis/UUPSUpgradeable.json +1 -1
  26. package/abis/V3ToV4SwapLib.json +28 -0
  27. package/abis/ZoraFactory.json +1 -1
  28. package/abis/ZoraFactoryImpl.json +22 -6
  29. package/abis/ZoraV4CoinHook.json +41 -51
  30. package/dist/index.cjs +950 -43
  31. package/dist/index.cjs.map +1 -1
  32. package/dist/index.js +948 -41
  33. package/dist/index.js.map +1 -1
  34. package/dist/wagmiGenerated.d.ts +1459 -76
  35. package/dist/wagmiGenerated.d.ts.map +1 -1
  36. package/foundry.toml +5 -1
  37. package/package/wagmiGenerated.ts +951 -44
  38. package/package.json +7 -7
  39. package/remappings.txt +2 -1
  40. package/src/ZoraFactoryImpl.sol +8 -0
  41. package/src/deployment/ForkedCoinsAddresses.sol +54 -0
  42. package/src/hooks/ZoraV4CoinHook.sol +92 -74
  43. package/src/hooks/deployment/BuySupplyWithV4SwapHook.sol +20 -142
  44. package/src/interfaces/ISupportsLimitOrderFill.sol +11 -0
  45. package/src/interfaces/ITrustedMsgSenderProviderLookup.sol +18 -0
  46. package/src/interfaces/IZoraLimitOrderBookCoinsInterface.sol +21 -0
  47. package/src/interfaces/IZoraV4CoinHook.sol +9 -0
  48. package/src/libs/CoinConstants.sol +6 -0
  49. package/src/libs/CoinDopplerMultiCurve.sol +1 -1
  50. package/src/libs/CoinRewardsV4.sol +0 -1
  51. package/src/libs/HooksDeployment.sol +25 -12
  52. package/src/libs/UniV4SwapHelper.sol +35 -0
  53. package/src/libs/V3ToV4SwapLib.sol +261 -0
  54. package/src/libs/V4Liquidity.sol +50 -6
  55. package/src/utils/TrustedMsgSenderProviderLookup.sol +73 -0
  56. package/src/version/ContractVersionBase.sol +1 -1
  57. package/test/BuySupplyWithV4SwapHook.t.sol +4 -3
  58. package/test/Coin.t.sol +7 -1
  59. package/test/CoinUniV4.t.sol +2 -1
  60. package/test/ContentCoinRewards.t.sol +5 -1
  61. package/test/CreatorCoin.t.sol +3 -1
  62. package/test/CreatorCoinRewards.t.sol +7 -1
  63. package/test/Factory.t.sol +20 -7
  64. package/test/HooksDeployment.t.sol +73 -8
  65. package/test/LiquidityMigration.t.sol +55 -43
  66. package/test/MultiOwnable.t.sol +2 -1
  67. package/test/TrustedMsgSenderProviderLookup.t.sol +112 -0
  68. package/test/Upgrades.t.sol +112 -78
  69. package/test/V4Liquidity.t.sol +1 -1
  70. package/test/mocks/MockSwapRouter.sol +33 -0
  71. package/test/mocks/MockZoraLimitOrderBook.sol +14 -0
  72. package/test/utils/BaseTest.sol +17 -425
  73. package/test/utils/FeeEstimatorHook.sol +8 -2
  74. package/test/utils/TrustedSenderTestHelper.sol +18 -0
  75. package/test/utils/V4TestSetup.sol +595 -0
  76. package/wagmi.config.ts +1 -1
  77. package/abis/BaseTest.json +0 -718
  78. package/abis/DeterministicDeployerAndCaller.json +0 -315
  79. package/abis/DeterministicUUPSProxyDeployer.json +0 -167
  80. package/abis/EIP712.json +0 -67
  81. package/abis/ERC20.json +0 -310
  82. package/abis/FeeEstimatorHook.json +0 -1915
  83. package/abis/IERC721.json +0 -287
  84. package/abis/IERC721Enumerable.json +0 -343
  85. package/abis/IERC721Metadata.json +0 -332
  86. package/abis/IERC721TokenReceiver.json +0 -36
  87. package/abis/IImmutableCreate2Factory.json +0 -93
  88. package/abis/IMulticall3.json +0 -440
  89. package/abis/ISafe.json +0 -15
  90. package/abis/ISymbol.json +0 -15
  91. package/abis/IUniswapV4Router04.json +0 -484
  92. package/abis/IUniversalRouter.json +0 -61
  93. package/abis/IV4Quoter.json +0 -310
  94. package/abis/ImmutableCreate2FactoryUtils.json +0 -15
  95. package/abis/LibString.json +0 -7
  96. package/abis/Math.json +0 -7
  97. package/abis/MockAirlock.json +0 -39
  98. package/abis/MockERC721.json +0 -350
  99. package/abis/ProtocolRewards.json +0 -494
  100. package/abis/ShortStrings.json +0 -18
  101. package/abis/SimpleERC20.json +0 -326
  102. package/abis/StdAssertions.json +0 -379
  103. package/abis/StdInvariant.json +0 -180
  104. package/abis/Test.json +0 -570
  105. package/abis/VmContractHelper239.json +0 -233
  106. package/abis/stdError.json +0 -119
  107. package/abis/stdStorageSafe.json +0 -52
  108. package/addresses/8453.json +0 -13
  109. package/addresses/84532.json +0 -10
  110. package/deterministicConfig/deployerAndCaller.json +0 -5
  111. package/deterministicConfig/zoraFactory.json +0 -8
  112. package/script/Deploy.s.sol +0 -23
  113. package/script/DeployAutoSwapper.s.sol +0 -30
  114. package/script/DeployDevFactory.s.sol +0 -21
  115. package/script/DeployPostDeploymentHooks.s.sol +0 -20
  116. package/script/DeployUpgradeGate.s.sol +0 -21
  117. package/script/GenerateDeterministicParams.s.sol +0 -43
  118. package/script/PrintRegisterUpgradePath.s.sol +0 -28
  119. package/script/PrintUpgradeCommand.s.sol +0 -13
  120. package/script/TestBackingCoinSwap.s.sol +0 -144
  121. package/script/TestV4Swap.s.sol +0 -133
  122. package/script/UpgradeCoinImpl.sol +0 -23
  123. package/script/UpgradeFactoryImpl.s.sol +0 -28
  124. package/script/UpgradeHooks.s.sol +0 -23
  125. package/src/deployment/CoinsDeployerBase.sol +0 -276
  126. /package/{test → src}/utils/ProxyShim.sol +0 -0
@@ -1357,18 +1357,7 @@ export const buySupplyWithV4SwapHookABI = [
1357
1357
  ],
1358
1358
  name: 'BuyInitialSupply',
1359
1359
  },
1360
- {
1361
- type: 'error',
1362
- inputs: [{ name: 'target', internalType: 'address', type: 'address' }],
1363
- name: 'AddressEmptyCode',
1364
- },
1365
- {
1366
- type: 'error',
1367
- inputs: [{ name: 'account', internalType: 'address', type: 'address' }],
1368
- name: 'AddressInsufficientBalance',
1369
- },
1370
1360
  { type: 'error', inputs: [], name: 'AddressZero' },
1371
- { type: 'error', inputs: [], name: 'FailedInnerCall' },
1372
1361
  { type: 'error', inputs: [], name: 'HookNotImplemented' },
1373
1362
  {
1374
1363
  type: 'error',
@@ -1386,7 +1375,6 @@ export const buySupplyWithV4SwapHookABI = [
1386
1375
  inputs: [{ name: 'token', internalType: 'address', type: 'address' }],
1387
1376
  name: 'SafeERC20FailedOperation',
1388
1377
  },
1389
- { type: 'error', inputs: [], name: 'V3RouteCannotStartWithInputCurrency' },
1390
1378
  { type: 'error', inputs: [], name: 'V3RouteDoesNotConnectToV4RouteStart' },
1391
1379
  ] as const
1392
1380
 
@@ -4341,36 +4329,6 @@ export const iUniswapV3PoolABI = [
4341
4329
  },
4342
4330
  ] as const
4343
4331
 
4344
- //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
4345
- // IUniversalRouter
4346
- //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
4347
-
4348
- export const iUniversalRouterABI = [
4349
- {
4350
- type: 'function',
4351
- inputs: [
4352
- { name: 'commands', internalType: 'bytes', type: 'bytes' },
4353
- { name: 'inputs', internalType: 'bytes[]', type: 'bytes[]' },
4354
- { name: 'deadline', internalType: 'uint256', type: 'uint256' },
4355
- ],
4356
- name: 'execute',
4357
- outputs: [],
4358
- stateMutability: 'payable',
4359
- },
4360
- { type: 'error', inputs: [], name: 'ETHNotAccepted' },
4361
- {
4362
- type: 'error',
4363
- inputs: [
4364
- { name: 'commandIndex', internalType: 'uint256', type: 'uint256' },
4365
- { name: 'message', internalType: 'bytes', type: 'bytes' },
4366
- ],
4367
- name: 'ExecutionFailed',
4368
- },
4369
- { type: 'error', inputs: [], name: 'InvalidEthSender' },
4370
- { type: 'error', inputs: [], name: 'LengthMismatch' },
4371
- { type: 'error', inputs: [], name: 'TransactionDeadlinePassed' },
4372
- ] as const
4373
-
4374
4332
  //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
4375
4333
  // ZoraFactoryImpl
4376
4334
  //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
@@ -4924,7 +4882,6 @@ export const zoraFactoryImplABI = [
4924
4882
  { type: 'error', inputs: [], name: 'ArrayLengthMismatch' },
4925
4883
  { type: 'error', inputs: [], name: 'ConfigTickLowerMustBeLessThanTickUpper' },
4926
4884
  { type: 'error', inputs: [], name: 'Deprecated' },
4927
- { type: 'error', inputs: [], name: 'ERC1167FailedCreateClone' },
4928
4885
  {
4929
4886
  type: 'error',
4930
4887
  inputs: [
@@ -4934,7 +4891,16 @@ export const zoraFactoryImplABI = [
4934
4891
  },
4935
4892
  { type: 'error', inputs: [], name: 'ERC1967NonPayable' },
4936
4893
  { type: 'error', inputs: [], name: 'EthTransferInvalid' },
4937
- { type: 'error', inputs: [], name: 'FailedInnerCall' },
4894
+ { type: 'error', inputs: [], name: 'FailedCall' },
4895
+ { type: 'error', inputs: [], name: 'FailedDeployment' },
4896
+ {
4897
+ type: 'error',
4898
+ inputs: [
4899
+ { name: 'balance', internalType: 'uint256', type: 'uint256' },
4900
+ { name: 'needed', internalType: 'uint256', type: 'uint256' },
4901
+ ],
4902
+ name: 'InsufficientBalance',
4903
+ },
4938
4904
  { type: 'error', inputs: [], name: 'InvalidConfig' },
4939
4905
  { type: 'error', inputs: [], name: 'InvalidHook' },
4940
4906
  { type: 'error', inputs: [], name: 'InvalidInitialization' },
@@ -4985,3 +4951,944 @@ export const zoraFactoryImplABI = [
4985
4951
  { type: 'error', inputs: [], name: 'ZeroDiscoveryPositions' },
4986
4952
  { type: 'error', inputs: [], name: 'ZeroDiscoverySupplyShare' },
4987
4953
  ] as const
4954
+
4955
+ //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
4956
+ // ZoraV4CoinHook
4957
+ //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
4958
+
4959
+ export const zoraV4CoinHookABI = [
4960
+ {
4961
+ type: 'constructor',
4962
+ inputs: [
4963
+ {
4964
+ name: 'poolManager_',
4965
+ internalType: 'contract IPoolManager',
4966
+ type: 'address',
4967
+ },
4968
+ {
4969
+ name: 'coinVersionLookup_',
4970
+ internalType: 'contract IDeployedCoinVersionLookup',
4971
+ type: 'address',
4972
+ },
4973
+ {
4974
+ name: 'trustedMsgSenderLookup_',
4975
+ internalType: 'contract ITrustedMsgSenderProviderLookup',
4976
+ type: 'address',
4977
+ },
4978
+ {
4979
+ name: 'upgradeGate_',
4980
+ internalType: 'contract IHooksUpgradeGate',
4981
+ type: 'address',
4982
+ },
4983
+ {
4984
+ name: 'zoraLimitOrderBook_',
4985
+ internalType: 'contract IZoraLimitOrderBookCoinsInterface',
4986
+ type: 'address',
4987
+ },
4988
+ {
4989
+ name: 'zoraHookRegistry_',
4990
+ internalType: 'contract IZoraHookRegistry',
4991
+ type: 'address',
4992
+ },
4993
+ ],
4994
+ stateMutability: 'nonpayable',
4995
+ },
4996
+ { type: 'receive', stateMutability: 'payable' },
4997
+ {
4998
+ type: 'function',
4999
+ inputs: [
5000
+ { name: 'sender', internalType: 'address', type: 'address' },
5001
+ {
5002
+ name: 'key',
5003
+ internalType: 'struct PoolKey',
5004
+ type: 'tuple',
5005
+ components: [
5006
+ { name: 'currency0', internalType: 'Currency', type: 'address' },
5007
+ { name: 'currency1', internalType: 'Currency', type: 'address' },
5008
+ { name: 'fee', internalType: 'uint24', type: 'uint24' },
5009
+ { name: 'tickSpacing', internalType: 'int24', type: 'int24' },
5010
+ { name: 'hooks', internalType: 'contract IHooks', type: 'address' },
5011
+ ],
5012
+ },
5013
+ {
5014
+ name: 'params',
5015
+ internalType: 'struct ModifyLiquidityParams',
5016
+ type: 'tuple',
5017
+ components: [
5018
+ { name: 'tickLower', internalType: 'int24', type: 'int24' },
5019
+ { name: 'tickUpper', internalType: 'int24', type: 'int24' },
5020
+ { name: 'liquidityDelta', internalType: 'int256', type: 'int256' },
5021
+ { name: 'salt', internalType: 'bytes32', type: 'bytes32' },
5022
+ ],
5023
+ },
5024
+ { name: 'delta', internalType: 'BalanceDelta', type: 'int256' },
5025
+ { name: 'feesAccrued', internalType: 'BalanceDelta', type: 'int256' },
5026
+ { name: 'hookData', internalType: 'bytes', type: 'bytes' },
5027
+ ],
5028
+ name: 'afterAddLiquidity',
5029
+ outputs: [
5030
+ { name: '', internalType: 'bytes4', type: 'bytes4' },
5031
+ { name: '', internalType: 'BalanceDelta', type: 'int256' },
5032
+ ],
5033
+ stateMutability: 'nonpayable',
5034
+ },
5035
+ {
5036
+ type: 'function',
5037
+ inputs: [
5038
+ { name: 'sender', internalType: 'address', type: 'address' },
5039
+ {
5040
+ name: 'key',
5041
+ internalType: 'struct PoolKey',
5042
+ type: 'tuple',
5043
+ components: [
5044
+ { name: 'currency0', internalType: 'Currency', type: 'address' },
5045
+ { name: 'currency1', internalType: 'Currency', type: 'address' },
5046
+ { name: 'fee', internalType: 'uint24', type: 'uint24' },
5047
+ { name: 'tickSpacing', internalType: 'int24', type: 'int24' },
5048
+ { name: 'hooks', internalType: 'contract IHooks', type: 'address' },
5049
+ ],
5050
+ },
5051
+ { name: 'amount0', internalType: 'uint256', type: 'uint256' },
5052
+ { name: 'amount1', internalType: 'uint256', type: 'uint256' },
5053
+ { name: 'hookData', internalType: 'bytes', type: 'bytes' },
5054
+ ],
5055
+ name: 'afterDonate',
5056
+ outputs: [{ name: '', internalType: 'bytes4', type: 'bytes4' }],
5057
+ stateMutability: 'nonpayable',
5058
+ },
5059
+ {
5060
+ type: 'function',
5061
+ inputs: [
5062
+ { name: 'sender', internalType: 'address', type: 'address' },
5063
+ {
5064
+ name: 'key',
5065
+ internalType: 'struct PoolKey',
5066
+ type: 'tuple',
5067
+ components: [
5068
+ { name: 'currency0', internalType: 'Currency', type: 'address' },
5069
+ { name: 'currency1', internalType: 'Currency', type: 'address' },
5070
+ { name: 'fee', internalType: 'uint24', type: 'uint24' },
5071
+ { name: 'tickSpacing', internalType: 'int24', type: 'int24' },
5072
+ { name: 'hooks', internalType: 'contract IHooks', type: 'address' },
5073
+ ],
5074
+ },
5075
+ { name: 'sqrtPriceX96', internalType: 'uint160', type: 'uint160' },
5076
+ { name: 'tick', internalType: 'int24', type: 'int24' },
5077
+ ],
5078
+ name: 'afterInitialize',
5079
+ outputs: [{ name: '', internalType: 'bytes4', type: 'bytes4' }],
5080
+ stateMutability: 'nonpayable',
5081
+ },
5082
+ {
5083
+ type: 'function',
5084
+ inputs: [
5085
+ { name: 'sender', internalType: 'address', type: 'address' },
5086
+ {
5087
+ name: 'key',
5088
+ internalType: 'struct PoolKey',
5089
+ type: 'tuple',
5090
+ components: [
5091
+ { name: 'currency0', internalType: 'Currency', type: 'address' },
5092
+ { name: 'currency1', internalType: 'Currency', type: 'address' },
5093
+ { name: 'fee', internalType: 'uint24', type: 'uint24' },
5094
+ { name: 'tickSpacing', internalType: 'int24', type: 'int24' },
5095
+ { name: 'hooks', internalType: 'contract IHooks', type: 'address' },
5096
+ ],
5097
+ },
5098
+ {
5099
+ name: 'params',
5100
+ internalType: 'struct ModifyLiquidityParams',
5101
+ type: 'tuple',
5102
+ components: [
5103
+ { name: 'tickLower', internalType: 'int24', type: 'int24' },
5104
+ { name: 'tickUpper', internalType: 'int24', type: 'int24' },
5105
+ { name: 'liquidityDelta', internalType: 'int256', type: 'int256' },
5106
+ { name: 'salt', internalType: 'bytes32', type: 'bytes32' },
5107
+ ],
5108
+ },
5109
+ { name: 'delta', internalType: 'BalanceDelta', type: 'int256' },
5110
+ { name: 'feesAccrued', internalType: 'BalanceDelta', type: 'int256' },
5111
+ { name: 'hookData', internalType: 'bytes', type: 'bytes' },
5112
+ ],
5113
+ name: 'afterRemoveLiquidity',
5114
+ outputs: [
5115
+ { name: '', internalType: 'bytes4', type: 'bytes4' },
5116
+ { name: '', internalType: 'BalanceDelta', type: 'int256' },
5117
+ ],
5118
+ stateMutability: 'nonpayable',
5119
+ },
5120
+ {
5121
+ type: 'function',
5122
+ inputs: [
5123
+ { name: 'sender', internalType: 'address', type: 'address' },
5124
+ {
5125
+ name: 'key',
5126
+ internalType: 'struct PoolKey',
5127
+ type: 'tuple',
5128
+ components: [
5129
+ { name: 'currency0', internalType: 'Currency', type: 'address' },
5130
+ { name: 'currency1', internalType: 'Currency', type: 'address' },
5131
+ { name: 'fee', internalType: 'uint24', type: 'uint24' },
5132
+ { name: 'tickSpacing', internalType: 'int24', type: 'int24' },
5133
+ { name: 'hooks', internalType: 'contract IHooks', type: 'address' },
5134
+ ],
5135
+ },
5136
+ {
5137
+ name: 'params',
5138
+ internalType: 'struct SwapParams',
5139
+ type: 'tuple',
5140
+ components: [
5141
+ { name: 'zeroForOne', internalType: 'bool', type: 'bool' },
5142
+ { name: 'amountSpecified', internalType: 'int256', type: 'int256' },
5143
+ {
5144
+ name: 'sqrtPriceLimitX96',
5145
+ internalType: 'uint160',
5146
+ type: 'uint160',
5147
+ },
5148
+ ],
5149
+ },
5150
+ { name: 'delta', internalType: 'BalanceDelta', type: 'int256' },
5151
+ { name: 'hookData', internalType: 'bytes', type: 'bytes' },
5152
+ ],
5153
+ name: 'afterSwap',
5154
+ outputs: [
5155
+ { name: '', internalType: 'bytes4', type: 'bytes4' },
5156
+ { name: '', internalType: 'int128', type: 'int128' },
5157
+ ],
5158
+ stateMutability: 'nonpayable',
5159
+ },
5160
+ {
5161
+ type: 'function',
5162
+ inputs: [
5163
+ { name: 'sender', internalType: 'address', type: 'address' },
5164
+ {
5165
+ name: 'key',
5166
+ internalType: 'struct PoolKey',
5167
+ type: 'tuple',
5168
+ components: [
5169
+ { name: 'currency0', internalType: 'Currency', type: 'address' },
5170
+ { name: 'currency1', internalType: 'Currency', type: 'address' },
5171
+ { name: 'fee', internalType: 'uint24', type: 'uint24' },
5172
+ { name: 'tickSpacing', internalType: 'int24', type: 'int24' },
5173
+ { name: 'hooks', internalType: 'contract IHooks', type: 'address' },
5174
+ ],
5175
+ },
5176
+ {
5177
+ name: 'params',
5178
+ internalType: 'struct ModifyLiquidityParams',
5179
+ type: 'tuple',
5180
+ components: [
5181
+ { name: 'tickLower', internalType: 'int24', type: 'int24' },
5182
+ { name: 'tickUpper', internalType: 'int24', type: 'int24' },
5183
+ { name: 'liquidityDelta', internalType: 'int256', type: 'int256' },
5184
+ { name: 'salt', internalType: 'bytes32', type: 'bytes32' },
5185
+ ],
5186
+ },
5187
+ { name: 'hookData', internalType: 'bytes', type: 'bytes' },
5188
+ ],
5189
+ name: 'beforeAddLiquidity',
5190
+ outputs: [{ name: '', internalType: 'bytes4', type: 'bytes4' }],
5191
+ stateMutability: 'nonpayable',
5192
+ },
5193
+ {
5194
+ type: 'function',
5195
+ inputs: [
5196
+ { name: 'sender', internalType: 'address', type: 'address' },
5197
+ {
5198
+ name: 'key',
5199
+ internalType: 'struct PoolKey',
5200
+ type: 'tuple',
5201
+ components: [
5202
+ { name: 'currency0', internalType: 'Currency', type: 'address' },
5203
+ { name: 'currency1', internalType: 'Currency', type: 'address' },
5204
+ { name: 'fee', internalType: 'uint24', type: 'uint24' },
5205
+ { name: 'tickSpacing', internalType: 'int24', type: 'int24' },
5206
+ { name: 'hooks', internalType: 'contract IHooks', type: 'address' },
5207
+ ],
5208
+ },
5209
+ { name: 'amount0', internalType: 'uint256', type: 'uint256' },
5210
+ { name: 'amount1', internalType: 'uint256', type: 'uint256' },
5211
+ { name: 'hookData', internalType: 'bytes', type: 'bytes' },
5212
+ ],
5213
+ name: 'beforeDonate',
5214
+ outputs: [{ name: '', internalType: 'bytes4', type: 'bytes4' }],
5215
+ stateMutability: 'nonpayable',
5216
+ },
5217
+ {
5218
+ type: 'function',
5219
+ inputs: [
5220
+ { name: 'sender', internalType: 'address', type: 'address' },
5221
+ {
5222
+ name: 'key',
5223
+ internalType: 'struct PoolKey',
5224
+ type: 'tuple',
5225
+ components: [
5226
+ { name: 'currency0', internalType: 'Currency', type: 'address' },
5227
+ { name: 'currency1', internalType: 'Currency', type: 'address' },
5228
+ { name: 'fee', internalType: 'uint24', type: 'uint24' },
5229
+ { name: 'tickSpacing', internalType: 'int24', type: 'int24' },
5230
+ { name: 'hooks', internalType: 'contract IHooks', type: 'address' },
5231
+ ],
5232
+ },
5233
+ { name: 'sqrtPriceX96', internalType: 'uint160', type: 'uint160' },
5234
+ ],
5235
+ name: 'beforeInitialize',
5236
+ outputs: [{ name: '', internalType: 'bytes4', type: 'bytes4' }],
5237
+ stateMutability: 'nonpayable',
5238
+ },
5239
+ {
5240
+ type: 'function',
5241
+ inputs: [
5242
+ { name: 'sender', internalType: 'address', type: 'address' },
5243
+ {
5244
+ name: 'key',
5245
+ internalType: 'struct PoolKey',
5246
+ type: 'tuple',
5247
+ components: [
5248
+ { name: 'currency0', internalType: 'Currency', type: 'address' },
5249
+ { name: 'currency1', internalType: 'Currency', type: 'address' },
5250
+ { name: 'fee', internalType: 'uint24', type: 'uint24' },
5251
+ { name: 'tickSpacing', internalType: 'int24', type: 'int24' },
5252
+ { name: 'hooks', internalType: 'contract IHooks', type: 'address' },
5253
+ ],
5254
+ },
5255
+ {
5256
+ name: 'params',
5257
+ internalType: 'struct ModifyLiquidityParams',
5258
+ type: 'tuple',
5259
+ components: [
5260
+ { name: 'tickLower', internalType: 'int24', type: 'int24' },
5261
+ { name: 'tickUpper', internalType: 'int24', type: 'int24' },
5262
+ { name: 'liquidityDelta', internalType: 'int256', type: 'int256' },
5263
+ { name: 'salt', internalType: 'bytes32', type: 'bytes32' },
5264
+ ],
5265
+ },
5266
+ { name: 'hookData', internalType: 'bytes', type: 'bytes' },
5267
+ ],
5268
+ name: 'beforeRemoveLiquidity',
5269
+ outputs: [{ name: '', internalType: 'bytes4', type: 'bytes4' }],
5270
+ stateMutability: 'nonpayable',
5271
+ },
5272
+ {
5273
+ type: 'function',
5274
+ inputs: [
5275
+ { name: 'sender', internalType: 'address', type: 'address' },
5276
+ {
5277
+ name: 'key',
5278
+ internalType: 'struct PoolKey',
5279
+ type: 'tuple',
5280
+ components: [
5281
+ { name: 'currency0', internalType: 'Currency', type: 'address' },
5282
+ { name: 'currency1', internalType: 'Currency', type: 'address' },
5283
+ { name: 'fee', internalType: 'uint24', type: 'uint24' },
5284
+ { name: 'tickSpacing', internalType: 'int24', type: 'int24' },
5285
+ { name: 'hooks', internalType: 'contract IHooks', type: 'address' },
5286
+ ],
5287
+ },
5288
+ {
5289
+ name: 'params',
5290
+ internalType: 'struct SwapParams',
5291
+ type: 'tuple',
5292
+ components: [
5293
+ { name: 'zeroForOne', internalType: 'bool', type: 'bool' },
5294
+ { name: 'amountSpecified', internalType: 'int256', type: 'int256' },
5295
+ {
5296
+ name: 'sqrtPriceLimitX96',
5297
+ internalType: 'uint160',
5298
+ type: 'uint160',
5299
+ },
5300
+ ],
5301
+ },
5302
+ { name: 'hookData', internalType: 'bytes', type: 'bytes' },
5303
+ ],
5304
+ name: 'beforeSwap',
5305
+ outputs: [
5306
+ { name: '', internalType: 'bytes4', type: 'bytes4' },
5307
+ { name: '', internalType: 'BeforeSwapDelta', type: 'int256' },
5308
+ { name: '', internalType: 'uint24', type: 'uint24' },
5309
+ ],
5310
+ stateMutability: 'nonpayable',
5311
+ },
5312
+ {
5313
+ type: 'function',
5314
+ inputs: [],
5315
+ name: 'contractVersion',
5316
+ outputs: [{ name: '', internalType: 'string', type: 'string' }],
5317
+ stateMutability: 'pure',
5318
+ },
5319
+ {
5320
+ type: 'function',
5321
+ inputs: [],
5322
+ name: 'getHookPermissions',
5323
+ outputs: [
5324
+ {
5325
+ name: '',
5326
+ internalType: 'struct Hooks.Permissions',
5327
+ type: 'tuple',
5328
+ components: [
5329
+ { name: 'beforeInitialize', internalType: 'bool', type: 'bool' },
5330
+ { name: 'afterInitialize', internalType: 'bool', type: 'bool' },
5331
+ { name: 'beforeAddLiquidity', internalType: 'bool', type: 'bool' },
5332
+ { name: 'afterAddLiquidity', internalType: 'bool', type: 'bool' },
5333
+ { name: 'beforeRemoveLiquidity', internalType: 'bool', type: 'bool' },
5334
+ { name: 'afterRemoveLiquidity', internalType: 'bool', type: 'bool' },
5335
+ { name: 'beforeSwap', internalType: 'bool', type: 'bool' },
5336
+ { name: 'afterSwap', internalType: 'bool', type: 'bool' },
5337
+ { name: 'beforeDonate', internalType: 'bool', type: 'bool' },
5338
+ { name: 'afterDonate', internalType: 'bool', type: 'bool' },
5339
+ { name: 'beforeSwapReturnDelta', internalType: 'bool', type: 'bool' },
5340
+ { name: 'afterSwapReturnDelta', internalType: 'bool', type: 'bool' },
5341
+ {
5342
+ name: 'afterAddLiquidityReturnDelta',
5343
+ internalType: 'bool',
5344
+ type: 'bool',
5345
+ },
5346
+ {
5347
+ name: 'afterRemoveLiquidityReturnDelta',
5348
+ internalType: 'bool',
5349
+ type: 'bool',
5350
+ },
5351
+ ],
5352
+ },
5353
+ ],
5354
+ stateMutability: 'pure',
5355
+ },
5356
+ {
5357
+ type: 'function',
5358
+ inputs: [
5359
+ {
5360
+ name: 'key',
5361
+ internalType: 'struct PoolKey',
5362
+ type: 'tuple',
5363
+ components: [
5364
+ { name: 'currency0', internalType: 'Currency', type: 'address' },
5365
+ { name: 'currency1', internalType: 'Currency', type: 'address' },
5366
+ { name: 'fee', internalType: 'uint24', type: 'uint24' },
5367
+ { name: 'tickSpacing', internalType: 'int24', type: 'int24' },
5368
+ { name: 'hooks', internalType: 'contract IHooks', type: 'address' },
5369
+ ],
5370
+ },
5371
+ ],
5372
+ name: 'getPoolCoin',
5373
+ outputs: [
5374
+ {
5375
+ name: '',
5376
+ internalType: 'struct IZoraV4CoinHook.PoolCoin',
5377
+ type: 'tuple',
5378
+ components: [
5379
+ { name: 'coin', internalType: 'address', type: 'address' },
5380
+ {
5381
+ name: 'positions',
5382
+ internalType: 'struct LpPosition[]',
5383
+ type: 'tuple[]',
5384
+ components: [
5385
+ { name: 'tickLower', internalType: 'int24', type: 'int24' },
5386
+ { name: 'tickUpper', internalType: 'int24', type: 'int24' },
5387
+ { name: 'liquidity', internalType: 'uint128', type: 'uint128' },
5388
+ ],
5389
+ },
5390
+ ],
5391
+ },
5392
+ ],
5393
+ stateMutability: 'view',
5394
+ },
5395
+ {
5396
+ type: 'function',
5397
+ inputs: [{ name: 'poolKeyHash', internalType: 'bytes32', type: 'bytes32' }],
5398
+ name: 'getPoolCoinByHash',
5399
+ outputs: [
5400
+ {
5401
+ name: '',
5402
+ internalType: 'struct IZoraV4CoinHook.PoolCoin',
5403
+ type: 'tuple',
5404
+ components: [
5405
+ { name: 'coin', internalType: 'address', type: 'address' },
5406
+ {
5407
+ name: 'positions',
5408
+ internalType: 'struct LpPosition[]',
5409
+ type: 'tuple[]',
5410
+ components: [
5411
+ { name: 'tickLower', internalType: 'int24', type: 'int24' },
5412
+ { name: 'tickUpper', internalType: 'int24', type: 'int24' },
5413
+ { name: 'liquidity', internalType: 'uint128', type: 'uint128' },
5414
+ ],
5415
+ },
5416
+ ],
5417
+ },
5418
+ ],
5419
+ stateMutability: 'view',
5420
+ },
5421
+ {
5422
+ type: 'function',
5423
+ inputs: [],
5424
+ name: 'getTrustedMsgSenderLookup',
5425
+ outputs: [
5426
+ {
5427
+ name: '',
5428
+ internalType: 'contract ITrustedMsgSenderProviderLookup',
5429
+ type: 'address',
5430
+ },
5431
+ ],
5432
+ stateMutability: 'view',
5433
+ },
5434
+ {
5435
+ type: 'function',
5436
+ inputs: [
5437
+ {
5438
+ name: 'poolKey',
5439
+ internalType: 'struct PoolKey',
5440
+ type: 'tuple',
5441
+ components: [
5442
+ { name: 'currency0', internalType: 'Currency', type: 'address' },
5443
+ { name: 'currency1', internalType: 'Currency', type: 'address' },
5444
+ { name: 'fee', internalType: 'uint24', type: 'uint24' },
5445
+ { name: 'tickSpacing', internalType: 'int24', type: 'int24' },
5446
+ { name: 'hooks', internalType: 'contract IHooks', type: 'address' },
5447
+ ],
5448
+ },
5449
+ { name: 'coin', internalType: 'address', type: 'address' },
5450
+ { name: 'sqrtPriceX96', internalType: 'uint160', type: 'uint160' },
5451
+ {
5452
+ name: 'migratedLiquidity',
5453
+ internalType: 'struct BurnedPosition[]',
5454
+ type: 'tuple[]',
5455
+ components: [
5456
+ { name: 'tickLower', internalType: 'int24', type: 'int24' },
5457
+ { name: 'tickUpper', internalType: 'int24', type: 'int24' },
5458
+ { name: 'amount0Received', internalType: 'uint128', type: 'uint128' },
5459
+ { name: 'amount1Received', internalType: 'uint128', type: 'uint128' },
5460
+ ],
5461
+ },
5462
+ { name: 'additionalData', internalType: 'bytes', type: 'bytes' },
5463
+ ],
5464
+ name: 'initializeFromMigration',
5465
+ outputs: [],
5466
+ stateMutability: 'nonpayable',
5467
+ },
5468
+ {
5469
+ type: 'function',
5470
+ inputs: [
5471
+ {
5472
+ name: 'poolKey',
5473
+ internalType: 'struct PoolKey',
5474
+ type: 'tuple',
5475
+ components: [
5476
+ { name: 'currency0', internalType: 'Currency', type: 'address' },
5477
+ { name: 'currency1', internalType: 'Currency', type: 'address' },
5478
+ { name: 'fee', internalType: 'uint24', type: 'uint24' },
5479
+ { name: 'tickSpacing', internalType: 'int24', type: 'int24' },
5480
+ { name: 'hooks', internalType: 'contract IHooks', type: 'address' },
5481
+ ],
5482
+ },
5483
+ { name: 'coin', internalType: 'address', type: 'address' },
5484
+ { name: 'sqrtPriceX96', internalType: 'uint160', type: 'uint160' },
5485
+ {
5486
+ name: 'migratedLiquidity',
5487
+ internalType: 'struct BurnedPosition[]',
5488
+ type: 'tuple[]',
5489
+ components: [
5490
+ { name: 'tickLower', internalType: 'int24', type: 'int24' },
5491
+ { name: 'tickUpper', internalType: 'int24', type: 'int24' },
5492
+ { name: 'amount0Received', internalType: 'uint128', type: 'uint128' },
5493
+ { name: 'amount1Received', internalType: 'uint128', type: 'uint128' },
5494
+ ],
5495
+ },
5496
+ { name: 'additionalData', internalType: 'bytes', type: 'bytes' },
5497
+ ],
5498
+ name: 'initializeFromMigrationWithUpdateableFee',
5499
+ outputs: [
5500
+ { name: 'fee', internalType: 'uint24', type: 'uint24' },
5501
+ { name: 'tickSpacing', internalType: 'int24', type: 'int24' },
5502
+ ],
5503
+ stateMutability: 'nonpayable',
5504
+ },
5505
+ {
5506
+ type: 'function',
5507
+ inputs: [{ name: 'sender', internalType: 'address', type: 'address' }],
5508
+ name: 'isTrustedMessageSender',
5509
+ outputs: [{ name: '', internalType: 'bool', type: 'bool' }],
5510
+ stateMutability: 'view',
5511
+ },
5512
+ {
5513
+ type: 'function',
5514
+ inputs: [
5515
+ { name: 'newHook', internalType: 'address', type: 'address' },
5516
+ {
5517
+ name: 'poolKey',
5518
+ internalType: 'struct PoolKey',
5519
+ type: 'tuple',
5520
+ components: [
5521
+ { name: 'currency0', internalType: 'Currency', type: 'address' },
5522
+ { name: 'currency1', internalType: 'Currency', type: 'address' },
5523
+ { name: 'fee', internalType: 'uint24', type: 'uint24' },
5524
+ { name: 'tickSpacing', internalType: 'int24', type: 'int24' },
5525
+ { name: 'hooks', internalType: 'contract IHooks', type: 'address' },
5526
+ ],
5527
+ },
5528
+ { name: 'additionalData', internalType: 'bytes', type: 'bytes' },
5529
+ ],
5530
+ name: 'migrateLiquidity',
5531
+ outputs: [
5532
+ {
5533
+ name: 'newPoolKey',
5534
+ internalType: 'struct PoolKey',
5535
+ type: 'tuple',
5536
+ components: [
5537
+ { name: 'currency0', internalType: 'Currency', type: 'address' },
5538
+ { name: 'currency1', internalType: 'Currency', type: 'address' },
5539
+ { name: 'fee', internalType: 'uint24', type: 'uint24' },
5540
+ { name: 'tickSpacing', internalType: 'int24', type: 'int24' },
5541
+ { name: 'hooks', internalType: 'contract IHooks', type: 'address' },
5542
+ ],
5543
+ },
5544
+ ],
5545
+ stateMutability: 'nonpayable',
5546
+ },
5547
+ {
5548
+ type: 'function',
5549
+ inputs: [],
5550
+ name: 'poolManager',
5551
+ outputs: [
5552
+ { name: '', internalType: 'contract IPoolManager', type: 'address' },
5553
+ ],
5554
+ stateMutability: 'view',
5555
+ },
5556
+ {
5557
+ type: 'function',
5558
+ inputs: [{ name: 'interfaceId', internalType: 'bytes4', type: 'bytes4' }],
5559
+ name: 'supportsInterface',
5560
+ outputs: [{ name: '', internalType: 'bool', type: 'bool' }],
5561
+ stateMutability: 'view',
5562
+ },
5563
+ {
5564
+ type: 'function',
5565
+ inputs: [{ name: 'data', internalType: 'bytes', type: 'bytes' }],
5566
+ name: 'unlockCallback',
5567
+ outputs: [{ name: '', internalType: 'bytes', type: 'bytes' }],
5568
+ stateMutability: 'nonpayable',
5569
+ },
5570
+ {
5571
+ type: 'event',
5572
+ anonymous: false,
5573
+ inputs: [
5574
+ {
5575
+ name: 'coin',
5576
+ internalType: 'address',
5577
+ type: 'address',
5578
+ indexed: false,
5579
+ },
5580
+ {
5581
+ name: 'currency',
5582
+ internalType: 'address',
5583
+ type: 'address',
5584
+ indexed: false,
5585
+ },
5586
+ {
5587
+ name: 'payoutRecipient',
5588
+ internalType: 'address',
5589
+ type: 'address',
5590
+ indexed: false,
5591
+ },
5592
+ {
5593
+ name: 'platformReferrer',
5594
+ internalType: 'address',
5595
+ type: 'address',
5596
+ indexed: false,
5597
+ },
5598
+ {
5599
+ name: 'tradeReferrer',
5600
+ internalType: 'address',
5601
+ type: 'address',
5602
+ indexed: false,
5603
+ },
5604
+ {
5605
+ name: 'protocolRewardRecipient',
5606
+ internalType: 'address',
5607
+ type: 'address',
5608
+ indexed: false,
5609
+ },
5610
+ {
5611
+ name: 'dopplerRecipient',
5612
+ internalType: 'address',
5613
+ type: 'address',
5614
+ indexed: false,
5615
+ },
5616
+ {
5617
+ name: 'marketRewards',
5618
+ internalType: 'struct IZoraV4CoinHook.MarketRewardsV4',
5619
+ type: 'tuple',
5620
+ components: [
5621
+ {
5622
+ name: 'creatorPayoutAmountCurrency',
5623
+ internalType: 'uint256',
5624
+ type: 'uint256',
5625
+ },
5626
+ {
5627
+ name: 'creatorPayoutAmountCoin',
5628
+ internalType: 'uint256',
5629
+ type: 'uint256',
5630
+ },
5631
+ {
5632
+ name: 'platformReferrerAmountCurrency',
5633
+ internalType: 'uint256',
5634
+ type: 'uint256',
5635
+ },
5636
+ {
5637
+ name: 'platformReferrerAmountCoin',
5638
+ internalType: 'uint256',
5639
+ type: 'uint256',
5640
+ },
5641
+ {
5642
+ name: 'tradeReferrerAmountCurrency',
5643
+ internalType: 'uint256',
5644
+ type: 'uint256',
5645
+ },
5646
+ {
5647
+ name: 'tradeReferrerAmountCoin',
5648
+ internalType: 'uint256',
5649
+ type: 'uint256',
5650
+ },
5651
+ {
5652
+ name: 'protocolAmountCurrency',
5653
+ internalType: 'uint256',
5654
+ type: 'uint256',
5655
+ },
5656
+ {
5657
+ name: 'protocolAmountCoin',
5658
+ internalType: 'uint256',
5659
+ type: 'uint256',
5660
+ },
5661
+ {
5662
+ name: 'dopplerAmountCurrency',
5663
+ internalType: 'uint256',
5664
+ type: 'uint256',
5665
+ },
5666
+ {
5667
+ name: 'dopplerAmountCoin',
5668
+ internalType: 'uint256',
5669
+ type: 'uint256',
5670
+ },
5671
+ ],
5672
+ indexed: false,
5673
+ },
5674
+ ],
5675
+ name: 'CoinMarketRewardsV4',
5676
+ },
5677
+ {
5678
+ type: 'event',
5679
+ anonymous: false,
5680
+ inputs: [
5681
+ { name: 'coin', internalType: 'address', type: 'address', indexed: true },
5682
+ {
5683
+ name: 'currency',
5684
+ internalType: 'address',
5685
+ type: 'address',
5686
+ indexed: false,
5687
+ },
5688
+ {
5689
+ name: 'creator',
5690
+ internalType: 'address',
5691
+ type: 'address',
5692
+ indexed: false,
5693
+ },
5694
+ {
5695
+ name: 'protocol',
5696
+ internalType: 'address',
5697
+ type: 'address',
5698
+ indexed: false,
5699
+ },
5700
+ {
5701
+ name: 'creatorAmount',
5702
+ internalType: 'uint256',
5703
+ type: 'uint256',
5704
+ indexed: false,
5705
+ },
5706
+ {
5707
+ name: 'protocolAmount',
5708
+ internalType: 'uint256',
5709
+ type: 'uint256',
5710
+ indexed: false,
5711
+ },
5712
+ ],
5713
+ name: 'CreatorCoinRewards',
5714
+ },
5715
+ {
5716
+ type: 'event',
5717
+ anonymous: false,
5718
+ inputs: [
5719
+ { name: 'coin', internalType: 'address', type: 'address', indexed: true },
5720
+ {
5721
+ name: 'currency',
5722
+ internalType: 'address',
5723
+ type: 'address',
5724
+ indexed: true,
5725
+ },
5726
+ {
5727
+ name: 'amountCurrency',
5728
+ internalType: 'uint256',
5729
+ type: 'uint256',
5730
+ indexed: false,
5731
+ },
5732
+ { name: 'tick', internalType: 'int24', type: 'int24', indexed: false },
5733
+ {
5734
+ name: 'liquidity',
5735
+ internalType: 'uint128',
5736
+ type: 'uint128',
5737
+ indexed: false,
5738
+ },
5739
+ ],
5740
+ name: 'LpReward',
5741
+ },
5742
+ {
5743
+ type: 'event',
5744
+ anonymous: false,
5745
+ inputs: [
5746
+ {
5747
+ name: 'sender',
5748
+ internalType: 'address',
5749
+ type: 'address',
5750
+ indexed: true,
5751
+ },
5752
+ {
5753
+ name: 'swapSender',
5754
+ internalType: 'address',
5755
+ type: 'address',
5756
+ indexed: true,
5757
+ },
5758
+ {
5759
+ name: 'isTrustedSwapSenderAddress',
5760
+ internalType: 'bool',
5761
+ type: 'bool',
5762
+ indexed: false,
5763
+ },
5764
+ {
5765
+ name: 'key',
5766
+ internalType: 'struct PoolKey',
5767
+ type: 'tuple',
5768
+ components: [
5769
+ { name: 'currency0', internalType: 'Currency', type: 'address' },
5770
+ { name: 'currency1', internalType: 'Currency', type: 'address' },
5771
+ { name: 'fee', internalType: 'uint24', type: 'uint24' },
5772
+ { name: 'tickSpacing', internalType: 'int24', type: 'int24' },
5773
+ { name: 'hooks', internalType: 'contract IHooks', type: 'address' },
5774
+ ],
5775
+ indexed: false,
5776
+ },
5777
+ {
5778
+ name: 'poolKeyHash',
5779
+ internalType: 'bytes32',
5780
+ type: 'bytes32',
5781
+ indexed: true,
5782
+ },
5783
+ {
5784
+ name: 'params',
5785
+ internalType: 'struct SwapParams',
5786
+ type: 'tuple',
5787
+ components: [
5788
+ { name: 'zeroForOne', internalType: 'bool', type: 'bool' },
5789
+ { name: 'amountSpecified', internalType: 'int256', type: 'int256' },
5790
+ {
5791
+ name: 'sqrtPriceLimitX96',
5792
+ internalType: 'uint160',
5793
+ type: 'uint160',
5794
+ },
5795
+ ],
5796
+ indexed: false,
5797
+ },
5798
+ {
5799
+ name: 'amount0',
5800
+ internalType: 'int128',
5801
+ type: 'int128',
5802
+ indexed: false,
5803
+ },
5804
+ {
5805
+ name: 'amount1',
5806
+ internalType: 'int128',
5807
+ type: 'int128',
5808
+ indexed: false,
5809
+ },
5810
+ { name: 'isCoinBuy', internalType: 'bool', type: 'bool', indexed: false },
5811
+ {
5812
+ name: 'hookData',
5813
+ internalType: 'bytes',
5814
+ type: 'bytes',
5815
+ indexed: false,
5816
+ },
5817
+ {
5818
+ name: 'sqrtPriceX96',
5819
+ internalType: 'uint160',
5820
+ type: 'uint160',
5821
+ indexed: false,
5822
+ },
5823
+ ],
5824
+ name: 'Swapped',
5825
+ },
5826
+ { type: 'error', inputs: [], name: 'CoinVersionLookupCannotBeZeroAddress' },
5827
+ { type: 'error', inputs: [], name: 'EthTransferFailed' },
5828
+ { type: 'error', inputs: [], name: 'HookNotImplemented' },
5829
+ {
5830
+ type: 'error',
5831
+ inputs: [{ name: 'callbackId', internalType: 'uint8', type: 'uint8' }],
5832
+ name: 'InvalidCallbackId',
5833
+ },
5834
+ {
5835
+ type: 'error',
5836
+ inputs: [{ name: 'newHook', internalType: 'address', type: 'address' }],
5837
+ name: 'InvalidNewHook',
5838
+ },
5839
+ {
5840
+ type: 'error',
5841
+ inputs: [
5842
+ {
5843
+ name: 'key',
5844
+ internalType: 'struct PoolKey',
5845
+ type: 'tuple',
5846
+ components: [
5847
+ { name: 'currency0', internalType: 'Currency', type: 'address' },
5848
+ { name: 'currency1', internalType: 'Currency', type: 'address' },
5849
+ { name: 'fee', internalType: 'uint24', type: 'uint24' },
5850
+ { name: 'tickSpacing', internalType: 'int24', type: 'int24' },
5851
+ { name: 'hooks', internalType: 'contract IHooks', type: 'address' },
5852
+ ],
5853
+ },
5854
+ ],
5855
+ name: 'NoCoinForHook',
5856
+ },
5857
+ {
5858
+ type: 'error',
5859
+ inputs: [{ name: 'coin', internalType: 'address', type: 'address' }],
5860
+ name: 'NotACoin',
5861
+ },
5862
+ { type: 'error', inputs: [], name: 'NotPoolManager' },
5863
+ {
5864
+ type: 'error',
5865
+ inputs: [
5866
+ { name: 'caller', internalType: 'address', type: 'address' },
5867
+ { name: 'expectedCoin', internalType: 'address', type: 'address' },
5868
+ ],
5869
+ name: 'OnlyCoin',
5870
+ },
5871
+ { type: 'error', inputs: [], name: 'PathMustHaveAtLeastOneStep' },
5872
+ { type: 'error', inputs: [], name: 'SafeCastOverflow' },
5873
+ {
5874
+ type: 'error',
5875
+ inputs: [{ name: 'token', internalType: 'address', type: 'address' }],
5876
+ name: 'SafeERC20FailedOperation',
5877
+ },
5878
+ {
5879
+ type: 'error',
5880
+ inputs: [],
5881
+ name: 'TrustedMsgSenderLookupCannotBeZeroAddress',
5882
+ },
5883
+ { type: 'error', inputs: [], name: 'UpgradeGateCannotBeZeroAddress' },
5884
+ {
5885
+ type: 'error',
5886
+ inputs: [
5887
+ { name: 'oldHook', internalType: 'address', type: 'address' },
5888
+ { name: 'newHook', internalType: 'address', type: 'address' },
5889
+ ],
5890
+ name: 'UpgradePathNotRegistered',
5891
+ },
5892
+ { type: 'error', inputs: [], name: 'ZoraHookRegistryCannotBeZeroAddress' },
5893
+ { type: 'error', inputs: [], name: 'ZoraLimitOrderBookCannotBeZeroAddress' },
5894
+ ] as const