@zoralabs/limit-orders 0.2.1 → 0.2.4
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.
- package/.abi-stability +70 -0
- package/.turbo/turbo-build$colon$js.log +50 -51
- package/CHANGELOG.md +35 -0
- package/abis/ISetLimitOrderConfig.json +27 -0
- package/abis/{SimpleAccessManaged.json → Ownable.json} +29 -10
- package/abis/Ownable2Step.json +115 -0
- package/abis/PermittedCallers.json +181 -0
- package/abis/SwapWithLimitOrders.json +116 -3
- package/abis/ZoraLimitOrderBook.json +159 -35
- package/cache/solidity-files-cache.json +1 -1
- package/dist/index.cjs +191 -27
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +191 -27
- package/dist/index.js.map +1 -1
- package/dist/wagmiGenerated.d.ts +217 -32
- package/dist/wagmiGenerated.d.ts.map +1 -1
- package/out/BalanceDelta.sol/BalanceDeltaLibrary.json +1 -1
- package/out/BeforeSwapDelta.sol/BeforeSwapDeltaLibrary.json +1 -1
- package/out/BitMath.sol/BitMath.json +1 -1
- package/out/BytesLib.sol/BytesLib.json +1 -1
- package/out/CoinCommon.sol/CoinCommon.json +1 -1
- package/out/CoinConfigurationVersions.sol/CoinConfigurationVersions.json +1 -1
- package/out/CoinConstants.sol/CoinConstants.json +1 -1
- package/out/Context.sol/Context.json +1 -1
- package/out/Currency.sol/CurrencyLibrary.json +1 -1
- package/out/CurrencyReserves.sol/CurrencyReserves.json +1 -1
- package/out/CustomRevert.sol/CustomRevert.json +1 -1
- package/out/DopplerMath.sol/DopplerMath.json +1 -1
- package/out/FixedPoint128.sol/FixedPoint128.json +1 -1
- package/out/FixedPoint96.sol/FixedPoint96.json +1 -1
- package/out/FullMath.sol/FullMath.json +1 -1
- package/out/IAllowanceTransfer.sol/IAllowanceTransfer.json +1 -1
- package/out/ICoin.sol/ICoin.json +1 -1
- package/out/ICoin.sol/IHasCoinType.json +1 -1
- package/out/ICoin.sol/IHasPoolKey.json +1 -1
- package/out/ICoin.sol/IHasSwapPath.json +1 -1
- package/out/ICoin.sol/IHasTotalSupplyForPositions.json +1 -1
- package/out/IDeployedCoinVersionLookup.sol/IDeployedCoinVersionLookup.json +1 -1
- package/out/IDopplerErrors.sol/IDopplerErrors.json +1 -1
- package/out/IEIP712.sol/IEIP712.json +1 -1
- package/out/IERC1363.sol/IERC1363.json +1 -1
- package/out/IERC165.sol/IERC165.json +1 -1
- package/out/IERC20.sol/IERC20.json +1 -1
- package/out/IERC20Minimal.sol/IERC20Minimal.json +1 -1
- package/out/IERC6909Claims.sol/IERC6909Claims.json +1 -1
- package/out/IERC7572.sol/IERC7572.json +1 -1
- package/out/IExtsload.sol/IExtsload.json +1 -1
- package/out/IExttload.sol/IExttload.json +1 -1
- package/out/IHasRewardsRecipients.sol/IHasRewardsRecipients.json +1 -1
- package/out/IHooks.sol/IHooks.json +1 -1
- package/out/IMsgSender.sol/IMsgSender.json +1 -1
- package/out/IPoolManager.sol/IPoolManager.json +1 -1
- package/out/IProtocolFees.sol/IProtocolFees.json +1 -1
- package/out/ISetLimitOrderConfig.sol/ISetLimitOrderConfig.json +1 -0
- package/out/ISupportsLimitOrderFill.sol/ISupportsLimitOrderFill.json +1 -1
- package/out/ISwapPathRouter.sol/ISwapPathRouter.json +1 -1
- package/out/ISwapRouter.sol/ISwapRouter.json +1 -1
- package/out/IUniswapV3SwapCallback.sol/IUniswapV3SwapCallback.json +1 -1
- package/out/IUpgradeableV4Hook.sol/IUpgradeableDestinationV4Hook.json +1 -1
- package/out/IUpgradeableV4Hook.sol/IUpgradeableDestinationV4HookWithUpdateableFee.json +1 -1
- package/out/IUpgradeableV4Hook.sol/IUpgradeableV4Hook.json +1 -1
- package/out/IWETH.sol/IWETH.json +1 -1
- package/out/IZoraHookRegistry.sol/IZoraHookRegistry.json +1 -1
- package/out/IZoraLimitOrderBook.sol/IZoraLimitOrderBook.json +1 -1
- package/out/IZoraLimitOrderBookCoinsInterface.sol/IZoraLimitOrderBookCoinsInterface.json +1 -1
- package/out/IZoraV4CoinHook.sol/IZoraV4CoinHook.json +1 -1
- package/out/LimitOrderBitmap.sol/LimitOrderBitmap.json +1 -1
- package/out/LimitOrderCommon.sol/LimitOrderCommon.json +1 -1
- package/out/LimitOrderCreate.sol/LimitOrderCreate.json +1 -1
- package/out/LimitOrderFill.sol/LimitOrderFill.json +1 -1
- package/out/LimitOrderLiquidity.sol/LimitOrderLiquidity.json +1 -1
- package/out/LimitOrderViews.sol/LimitOrderViews.json +1 -1
- package/out/LimitOrderWithdraw.sol/LimitOrderWithdraw.json +1 -1
- package/out/LiquidityAmounts.sol/LiquidityAmounts.json +1 -1
- package/out/LiquidityMath.sol/LiquidityMath.json +1 -1
- package/out/Lock.sol/Lock.json +1 -1
- package/out/NonzeroDeltaCount.sol/NonzeroDeltaCount.json +1 -1
- package/out/Ownable.sol/Ownable.json +1 -0
- package/out/Ownable2Step.sol/Ownable2Step.json +1 -0
- package/out/Path.sol/Path.json +1 -1
- package/out/PathKey.sol/PathKeyLibrary.json +1 -1
- package/out/PermittedCallers.sol/PermittedCallers.json +1 -0
- package/out/PoolId.sol/PoolIdLibrary.json +1 -1
- package/out/Position.sol/Position.json +1 -1
- package/out/SafeCast.sol/SafeCast.json +1 -1
- package/out/SafeCast160.sol/SafeCast160.json +1 -1
- package/out/SafeERC20.sol/SafeERC20.json +1 -1
- package/out/SqrtPriceMath.sol/SqrtPriceMath.json +1 -1
- package/out/StateLibrary.sol/StateLibrary.json +1 -1
- package/out/SwapLimitOrders.sol/SwapLimitOrders.json +1 -1
- package/out/SwapWithLimitOrders.sol/SwapWithLimitOrders.json +1 -1
- package/out/TickBitmap.sol/TickBitmap.json +1 -1
- package/out/TickMath.sol/TickMath.json +1 -1
- package/out/TransientSlot.sol/TransientSlot.json +1 -1
- package/out/TransientStateLibrary.sol/TransientStateLibrary.json +1 -1
- package/out/UniV4SwapToCurrency.sol/UniV4SwapToCurrency.json +1 -1
- package/out/UnsafeMath.sol/UnsafeMath.json +1 -1
- package/out/V3ToV4SwapLib.sol/V3ToV4SwapLib.json +1 -1
- package/out/ZoraLimitOrderBook.sol/ZoraLimitOrderBook.json +1 -1
- package/out/build-info/68b2e124c4a02a45.json +1 -0
- package/out/uniswap/BitMath.sol/BitMath.json +1 -1
- package/out/uniswap/CustomRevert.sol/CustomRevert.json +1 -1
- package/out/uniswap/FullMath.sol/FullMath.json +1 -1
- package/out/uniswap/SafeCast.sol/SafeCast.json +1 -1
- package/out/uniswap/TickMath.sol/TickMath.json +1 -1
- package/package/wagmiGenerated.ts +190 -26
- package/package.json +4 -2
- package/src/IZoraLimitOrderBook.sol +3 -5
- package/src/ZoraLimitOrderBook.sol +14 -45
- package/src/access/PermittedCallers.sol +45 -0
- package/src/libs/LimitOrderBitmap.sol +0 -1
- package/src/libs/LimitOrderCommon.sol +14 -0
- package/src/libs/LimitOrderCreate.sol +6 -0
- package/src/libs/LimitOrderFill.sol +3 -20
- package/src/libs/LimitOrderLiquidity.sol +61 -38
- package/src/libs/LimitOrderWithdraw.sol +2 -6
- package/src/libs/SwapLimitOrders.sol +13 -7
- package/src/router/ISetLimitOrderConfig.sol +12 -0
- package/src/router/SwapWithLimitOrders.sol +9 -9
- package/test/LimitOrderAccessControl.t.sol +173 -156
- package/test/LimitOrderFill.t.sol +0 -5
- package/test/LimitOrderLiquidityPayouts.t.sol +14 -14
- package/test/SwapWithLimitOrders.t.sol +0 -2
- package/test/SwapWithLimitOrdersRouter.t.sol +4 -2
- package/test/gas/LimitOrderFillGas.t.sol +0 -7
- package/test/gas/LimitOrderSwapGas.t.sol +0 -6
- package/test/unit/LimitOrderCreateUnit.t.sol +17 -17
- package/test/unit/SwapLimitOrdersUnit.t.sol +49 -88
- package/test/unit/SwapLimitOrdersValidation.t.sol +11 -19
- package/test/utils/BaseTest.sol +8 -17
- package/test/utils/TestableZoraLimitOrderBook.sol +2 -2
- package/abis/IAuthority.json +0 -31
- package/abis/SimpleAccessManager.json +0 -351
- package/out/IAuthority.sol/IAuthority.json +0 -1
- package/out/SimpleAccessManaged.sol/SimpleAccessManaged.json +0 -1
- package/out/SimpleAccessManager.sol/SimpleAccessManager.json +0 -1
- package/out/build-info/876cc09bc44cc8a7.json +0 -1
- package/src/access/SimpleAccessManaged.sol +0 -76
- package/src/access/SimpleAccessManager.sol +0 -268
- package/test/SimpleAccessManager.t.sol +0 -420
|
@@ -1 +1 @@
|
|
|
1
|
-
{"abi":[{"type":"function","name":"getPoolCoin","inputs":[{"name":"key","type":"tuple","internalType":"struct PoolKey","components":[{"name":"currency0","type":"address","internalType":"Currency"},{"name":"currency1","type":"address","internalType":"Currency"},{"name":"fee","type":"uint24","internalType":"uint24"},{"name":"tickSpacing","type":"int24","internalType":"int24"},{"name":"hooks","type":"address","internalType":"contract IHooks"}]}],"outputs":[{"name":"","type":"tuple","internalType":"struct IZoraV4CoinHook.PoolCoin","components":[{"name":"coin","type":"address","internalType":"address"},{"name":"positions","type":"tuple[]","internalType":"struct LpPosition[]","components":[{"name":"tickLower","type":"int24","internalType":"int24"},{"name":"tickUpper","type":"int24","internalType":"int24"},{"name":"liquidity","type":"uint128","internalType":"uint128"}]}]}],"stateMutability":"view"},{"type":"function","name":"getPoolCoinByHash","inputs":[{"name":"poolKeyHash","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"tuple","internalType":"struct IZoraV4CoinHook.PoolCoin","components":[{"name":"coin","type":"address","internalType":"address"},{"name":"positions","type":"tuple[]","internalType":"struct LpPosition[]","components":[{"name":"tickLower","type":"int24","internalType":"int24"},{"name":"tickUpper","type":"int24","internalType":"int24"},{"name":"liquidity","type":"uint128","internalType":"uint128"}]}]}],"stateMutability":"view"},{"type":"function","name":"isTrustedMessageSender","inputs":[{"name":"sender","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"migrateLiquidity","inputs":[{"name":"newHook","type":"address","internalType":"address"},{"name":"poolKey","type":"tuple","internalType":"struct PoolKey","components":[{"name":"currency0","type":"address","internalType":"Currency"},{"name":"currency1","type":"address","internalType":"Currency"},{"name":"fee","type":"uint24","internalType":"uint24"},{"name":"tickSpacing","type":"int24","internalType":"int24"},{"name":"hooks","type":"address","internalType":"contract IHooks"}]},{"name":"additionalData","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"newPoolKey","type":"tuple","internalType":"struct PoolKey","components":[{"name":"currency0","type":"address","internalType":"Currency"},{"name":"currency1","type":"address","internalType":"Currency"},{"name":"fee","type":"uint24","internalType":"uint24"},{"name":"tickSpacing","type":"int24","internalType":"int24"},{"name":"hooks","type":"address","internalType":"contract IHooks"}]}],"stateMutability":"nonpayable"},{"type":"event","name":"CoinMarketRewardsV4","inputs":[{"name":"coin","type":"address","indexed":false,"internalType":"address"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"payoutRecipient","type":"address","indexed":false,"internalType":"address"},{"name":"platformReferrer","type":"address","indexed":false,"internalType":"address"},{"name":"tradeReferrer","type":"address","indexed":false,"internalType":"address"},{"name":"protocolRewardRecipient","type":"address","indexed":false,"internalType":"address"},{"name":"dopplerRecipient","type":"address","indexed":false,"internalType":"address"},{"name":"marketRewards","type":"tuple","indexed":false,"internalType":"struct IZoraV4CoinHook.MarketRewardsV4","components":[{"name":"creatorPayoutAmountCurrency","type":"uint256","internalType":"uint256"},{"name":"creatorPayoutAmountCoin","type":"uint256","internalType":"uint256"},{"name":"platformReferrerAmountCurrency","type":"uint256","internalType":"uint256"},{"name":"platformReferrerAmountCoin","type":"uint256","internalType":"uint256"},{"name":"tradeReferrerAmountCurrency","type":"uint256","internalType":"uint256"},{"name":"tradeReferrerAmountCoin","type":"uint256","internalType":"uint256"},{"name":"protocolAmountCurrency","type":"uint256","internalType":"uint256"},{"name":"protocolAmountCoin","type":"uint256","internalType":"uint256"},{"name":"dopplerAmountCurrency","type":"uint256","internalType":"uint256"},{"name":"dopplerAmountCoin","type":"uint256","internalType":"uint256"}]}],"anonymous":false},{"type":"event","name":"LpReward","inputs":[{"name":"coin","type":"address","indexed":true,"internalType":"address"},{"name":"currency","type":"address","indexed":true,"internalType":"address"},{"name":"amountCurrency","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"tick","type":"int24","indexed":false,"internalType":"int24"},{"name":"liquidity","type":"uint128","indexed":false,"internalType":"uint128"}],"anonymous":false},{"type":"event","name":"Swapped","inputs":[{"name":"sender","type":"address","indexed":true,"internalType":"address"},{"name":"swapSender","type":"address","indexed":true,"internalType":"address"},{"name":"isTrustedSwapSenderAddress","type":"bool","indexed":false,"internalType":"bool"},{"name":"key","type":"tuple","indexed":false,"internalType":"struct PoolKey","components":[{"name":"currency0","type":"address","internalType":"Currency"},{"name":"currency1","type":"address","internalType":"Currency"},{"name":"fee","type":"uint24","internalType":"uint24"},{"name":"tickSpacing","type":"int24","internalType":"int24"},{"name":"hooks","type":"address","internalType":"contract IHooks"}]},{"name":"poolKeyHash","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"params","type":"tuple","indexed":false,"internalType":"struct SwapParams","components":[{"name":"zeroForOne","type":"bool","internalType":"bool"},{"name":"amountSpecified","type":"int256","internalType":"int256"},{"name":"sqrtPriceLimitX96","type":"uint160","internalType":"uint160"}]},{"name":"amount0","type":"int128","indexed":false,"internalType":"int128"},{"name":"amount1","type":"int128","indexed":false,"internalType":"int128"},{"name":"isCoinBuy","type":"bool","indexed":false,"internalType":"bool"},{"name":"hookData","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"sqrtPriceX96","type":"uint160","indexed":false,"internalType":"uint160"}],"anonymous":false},{"type":"error","name":"CoinVersionLookupCannotBeZeroAddress","inputs":[]},{"type":"error","name":"InvalidNewHook","inputs":[{"name":"newHook","type":"address","internalType":"address"}]},{"type":"error","name":"NoCoinForHook","inputs":[{"name":"key","type":"tuple","internalType":"struct PoolKey","components":[{"name":"currency0","type":"address","internalType":"Currency"},{"name":"currency1","type":"address","internalType":"Currency"},{"name":"fee","type":"uint24","internalType":"uint24"},{"name":"tickSpacing","type":"int24","internalType":"int24"},{"name":"hooks","type":"address","internalType":"contract IHooks"}]}]},{"type":"error","name":"NotACoin","inputs":[{"name":"coin","type":"address","internalType":"address"}]},{"type":"error","name":"OnlyCoin","inputs":[{"name":"caller","type":"address","internalType":"address"},{"name":"expectedCoin","type":"address","internalType":"address"}]},{"type":"error","name":"PathMustHaveAtLeastOneStep","inputs":[]},{"type":"error","name":"TrustedMsgSenderLookupCannotBeZeroAddress","inputs":[]},{"type":"error","name":"UpgradeGateCannotBeZeroAddress","inputs":[]},{"type":"error","name":"UpgradePathNotRegistered","inputs":[{"name":"oldHook","type":"address","internalType":"address"},{"name":"newHook","type":"address","internalType":"address"}]},{"type":"error","name":"ZoraHookRegistryCannotBeZeroAddress","inputs":[]},{"type":"error","name":"ZoraLimitOrderBookCannotBeZeroAddress","inputs":[]}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"getPoolCoin((address,address,uint24,int24,address))":"2c5fe5a9","getPoolCoinByHash(bytes32)":"247a4775","isTrustedMessageSender(address)":"bc9113b3","migrateLiquidity(address,(address,address,uint24,int24,address),bytes)":"4a862f63"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"CoinVersionLookupCannotBeZeroAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newHook\",\"type\":\"address\"}],\"name\":\"InvalidNewHook\",\"type\":\"error\"},{\"inputs\":[{\"components\":[{\"internalType\":\"Currency\",\"name\":\"currency0\",\"type\":\"address\"},{\"internalType\":\"Currency\",\"name\":\"currency1\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"},{\"internalType\":\"int24\",\"name\":\"tickSpacing\",\"type\":\"int24\"},{\"internalType\":\"contract IHooks\",\"name\":\"hooks\",\"type\":\"address\"}],\"internalType\":\"struct PoolKey\",\"name\":\"key\",\"type\":\"tuple\"}],\"name\":\"NoCoinForHook\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"coin\",\"type\":\"address\"}],\"name\":\"NotACoin\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"expectedCoin\",\"type\":\"address\"}],\"name\":\"OnlyCoin\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PathMustHaveAtLeastOneStep\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TrustedMsgSenderLookupCannotBeZeroAddress\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UpgradeGateCannotBeZeroAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"oldHook\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"newHook\",\"type\":\"address\"}],\"name\":\"UpgradePathNotRegistered\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZoraHookRegistryCannotBeZeroAddress\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZoraLimitOrderBookCannotBeZeroAddress\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"coin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"payoutRecipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"platformReferrer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"tradeReferrer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"protocolRewardRecipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"dopplerRecipient\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"creatorPayoutAmountCurrency\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"creatorPayoutAmountCoin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"platformReferrerAmountCurrency\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"platformReferrerAmountCoin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tradeReferrerAmountCurrency\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tradeReferrerAmountCoin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"protocolAmountCurrency\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"protocolAmountCoin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"dopplerAmountCurrency\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"dopplerAmountCoin\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"struct IZoraV4CoinHook.MarketRewardsV4\",\"name\":\"marketRewards\",\"type\":\"tuple\"}],\"name\":\"CoinMarketRewardsV4\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"coin\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountCurrency\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"int24\",\"name\":\"tick\",\"type\":\"int24\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"liquidity\",\"type\":\"uint128\"}],\"name\":\"LpReward\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"swapSender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"isTrustedSwapSenderAddress\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"Currency\",\"name\":\"currency0\",\"type\":\"address\"},{\"internalType\":\"Currency\",\"name\":\"currency1\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"},{\"internalType\":\"int24\",\"name\":\"tickSpacing\",\"type\":\"int24\"},{\"internalType\":\"contract IHooks\",\"name\":\"hooks\",\"type\":\"address\"}],\"indexed\":false,\"internalType\":\"struct PoolKey\",\"name\":\"key\",\"type\":\"tuple\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"poolKeyHash\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"zeroForOne\",\"type\":\"bool\"},{\"internalType\":\"int256\",\"name\":\"amountSpecified\",\"type\":\"int256\"},{\"internalType\":\"uint160\",\"name\":\"sqrtPriceLimitX96\",\"type\":\"uint160\"}],\"indexed\":false,\"internalType\":\"struct SwapParams\",\"name\":\"params\",\"type\":\"tuple\"},{\"indexed\":false,\"internalType\":\"int128\",\"name\":\"amount0\",\"type\":\"int128\"},{\"indexed\":false,\"internalType\":\"int128\",\"name\":\"amount1\",\"type\":\"int128\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"isCoinBuy\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"hookData\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint160\",\"name\":\"sqrtPriceX96\",\"type\":\"uint160\"}],\"name\":\"Swapped\",\"type\":\"event\"},{\"inputs\":[{\"components\":[{\"internalType\":\"Currency\",\"name\":\"currency0\",\"type\":\"address\"},{\"internalType\":\"Currency\",\"name\":\"currency1\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"},{\"internalType\":\"int24\",\"name\":\"tickSpacing\",\"type\":\"int24\"},{\"internalType\":\"contract IHooks\",\"name\":\"hooks\",\"type\":\"address\"}],\"internalType\":\"struct PoolKey\",\"name\":\"key\",\"type\":\"tuple\"}],\"name\":\"getPoolCoin\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"coin\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"},{\"internalType\":\"uint128\",\"name\":\"liquidity\",\"type\":\"uint128\"}],\"internalType\":\"struct LpPosition[]\",\"name\":\"positions\",\"type\":\"tuple[]\"}],\"internalType\":\"struct IZoraV4CoinHook.PoolCoin\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"poolKeyHash\",\"type\":\"bytes32\"}],\"name\":\"getPoolCoinByHash\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"coin\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"},{\"internalType\":\"uint128\",\"name\":\"liquidity\",\"type\":\"uint128\"}],\"internalType\":\"struct LpPosition[]\",\"name\":\"positions\",\"type\":\"tuple[]\"}],\"internalType\":\"struct IZoraV4CoinHook.PoolCoin\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"isTrustedMessageSender\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newHook\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"Currency\",\"name\":\"currency0\",\"type\":\"address\"},{\"internalType\":\"Currency\",\"name\":\"currency1\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"},{\"internalType\":\"int24\",\"name\":\"tickSpacing\",\"type\":\"int24\"},{\"internalType\":\"contract IHooks\",\"name\":\"hooks\",\"type\":\"address\"}],\"internalType\":\"struct PoolKey\",\"name\":\"poolKey\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"additionalData\",\"type\":\"bytes\"}],\"name\":\"migrateLiquidity\",\"outputs\":[{\"components\":[{\"internalType\":\"Currency\",\"name\":\"currency0\",\"type\":\"address\"},{\"internalType\":\"Currency\",\"name\":\"currency1\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"},{\"internalType\":\"int24\",\"name\":\"tickSpacing\",\"type\":\"int24\"},{\"internalType\":\"contract IHooks\",\"name\":\"hooks\",\"type\":\"address\"}],\"internalType\":\"struct PoolKey\",\"name\":\"newPoolKey\",\"type\":\"tuple\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"NoCoinForHook((address,address,uint24,int24,address))\":[{\"params\":{\"key\":\"The pool key struct to identify the pool.\"}}],\"NotACoin(address)\":[{\"params\":{\"coin\":\"The address of the coin.\"}}]},\"events\":{\"CoinMarketRewardsV4(address,address,address,address,address,address,address,(uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256))\":{\"params\":{\"coin\":\"The address of the coin\",\"currency\":\"The address of the currency\",\"dopplerRecipient\":\"The address of the doppler recipient\",\"marketRewards\":\"The rewards accrued from the market's liquidity position\",\"payoutRecipient\":\"The address of the creator rewards payout recipient\",\"platformReferrer\":\"The address of the platform referrer\",\"protocolRewardRecipient\":\"The address of the protocol reward recipient\",\"tradeReferrer\":\"The address of the trade referrer\"}},\"LpReward(address,address,uint256,int24,uint128)\":{\"params\":{\"amountCurrency\":\"The amount paid out\",\"coin\":\"The address of the coin\",\"currency\":\"The address of the currency\",\"liquidity\":\"The current liquidity\",\"tick\":\"The current tick\"}},\"Swapped(address,address,bool,(address,address,uint24,int24,address),bytes32,(bool,int256,uint160),int128,int128,bool,bytes,uint160)\":{\"params\":{\"amount0\":\"The amount of token0.\",\"amount1\":\"The amount of token1.\",\"hookData\":\"The data passed into the hook for the swap.\",\"isCoinBuy\":\"Whether the swap is a coin buy.\",\"isTrustedSwapSenderAddress\":\"Whether the swap sender is a trusted address. (Based on a registry of trusted addresses)\",\"key\":\"The pool key struct to identify the pool.\",\"params\":\"The swap parameters.\",\"poolKeyHash\":\"The hash of the pool key for indexing.\",\"sender\":\"The address of the sender.\",\"swapSender\":\"The address of the swap sender.\"}}},\"kind\":\"dev\",\"methods\":{\"getPoolCoin((address,address,uint24,int24,address))\":{\"params\":{\"key\":\"The pool key.\"},\"returns\":{\"_0\":\"poolCoin The pool coin confirmation data.\"}},\"getPoolCoinByHash(bytes32)\":{\"params\":{\"poolKeyHash\":\"The hash of the pool key for indexing.\"},\"returns\":{\"_0\":\"poolCoin The pool coin confirmation data.\"}},\"isTrustedMessageSender(address)\":{\"params\":{\"sender\":\"The address of the sender.\"},\"returns\":{\"_0\":\"isTrusted Whether the sender is a trusted message sender.\"}},\"migrateLiquidity(address,(address,address,uint24,int24,address),bytes)\":{\"params\":{\"additionalData\":\"Additional data to pass to the new hook during initialization\",\"newHook\":\"Address of the new hook implementation\",\"poolKey\":\"The pool key to migrate\"},\"returns\":{\"newPoolKey\":\"The new pool key returned from the destination hook\"}}},\"version\":1},\"userdoc\":{\"errors\":{\"CoinVersionLookupCannotBeZeroAddress()\":[{\"notice\":\"Coin version lookup cannot be the zero address.\"}],\"NoCoinForHook((address,address,uint24,int24,address))\":[{\"notice\":\"Thrown when a pool is not initialized for the hook.\"}],\"NotACoin(address)\":[{\"notice\":\"Thrown when a non-coin is used to initialize a pool with this hook.\"}],\"OnlyCoin(address,address)\":[{\"notice\":\"Thrown when a non-coin is used to access the functionality of a coin.\"}],\"PathMustHaveAtLeastOneStep()\":[{\"notice\":\"Thrown when a attempting to swap with a path that has no steps.\"}],\"TrustedMsgSenderLookupCannotBeZeroAddress()\":[{\"notice\":\"Trusted message sender lookup cannot be the zero address.\"}],\"UpgradeGateCannotBeZeroAddress()\":[{\"notice\":\"Upgrade gate cannot be the zero address.\"}],\"ZoraHookRegistryCannotBeZeroAddress()\":[{\"notice\":\"Thrown when the Zora hook registry is the zero address.\"}],\"ZoraLimitOrderBookCannotBeZeroAddress()\":[{\"notice\":\"Thrown when the Zora limit order book is the zero address.\"}]},\"events\":{\"CoinMarketRewardsV4(address,address,address,address,address,address,address,(uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256))\":{\"notice\":\"Emitted when market rewards are distributed\"},\"LpReward(address,address,uint256,int24,uint128)\":{\"notice\":\"Emitted when LP rewards are distributed\"},\"Swapped(address,address,bool,(address,address,uint24,int24,address),bytes32,(bool,int256,uint160),int128,int128,bool,bytes,uint160)\":{\"notice\":\"Emitted when a swap is executed.\"}},\"kind\":\"user\",\"methods\":{\"getPoolCoin((address,address,uint24,int24,address))\":{\"notice\":\"Returns the pool coin for a given pool key.\"},\"getPoolCoinByHash(bytes32)\":{\"notice\":\"Returns the pool coin for a given pool key hash.\"},\"isTrustedMessageSender(address)\":{\"notice\":\"Returns whether the sender is a trusted message sender.\"},\"migrateLiquidity(address,(address,address,uint24,int24,address),bytes)\":{\"notice\":\"Migrate liquidity from this hook to a new hook\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"node_modules/@zoralabs/coins/src/interfaces/IZoraV4CoinHook.sol\":\"IZoraV4CoinHook\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"appendCBOR\":false,\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":100},\"remappings\":[\":@openzeppelin/=node_modules/@openzeppelin/\",\":@uniswap/universal-router/contracts/=node_modules/@uniswap/universal-router/contracts/\",\":@uniswap/v4-core/=node_modules/@uniswap/v4-core/\",\":@uniswap/v4-periphery/=node_modules/@uniswap/v4-periphery/\",\":@zoralabs/coins/=node_modules/@zoralabs/coins/\",\":@zoralabs/shared-contracts/=node_modules/@zoralabs/shared-contracts/src/\",\":ds-test/=node_modules/ds-test/src/\",\":forge-std/=node_modules/forge-std/src/\",\":permit2/src/=node_modules/@uniswap/permit2/src/\",\":solady/=node_modules/solady/src/\",\":solmate/=node_modules/solmate/src/\"],\"viaIR\":true},\"sources\":{\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617\",\"dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u\"]},\"node_modules/@uniswap/v4-core/src/interfaces/IExtsload.sol\":{\"keccak256\":\"0x80b53ca4907d6f0088c3b931f2b72cad1dc4615a95094d96bd0fb8dff8d5ba43\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://375c69148622aab7a3537d5fd37d373a8e9731022c8d87bdaee46233b0a99fe1\",\"dweb:/ipfs/QmXFjdoYRxsA5B1kyuxEXgNf3FBoL1zPvy26Qy8EtpdFRN\"]},\"node_modules/@uniswap/v4-core/src/interfaces/IExttload.sol\":{\"keccak256\":\"0xc6b68283ebd8d1c789df536756726eed51c589134bb20821b236a0d22a135937\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://294394f72dfc219689209f4130d85601dfd0d63c8d47578050d312db70f9b6c8\",\"dweb:/ipfs/QmTDMQ3oxCGHgEBU48a3Lp4S1rRjc8vVCxkhE5ZNej1bsY\"]},\"node_modules/@uniswap/v4-core/src/interfaces/IHooks.sol\":{\"keccak256\":\"0xc131ffa2d04c10a012fe715fe2c115811526b7ea34285cf0a04ce7ce8320da8d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3b212358897db5d99c21244d88f97b2e788527552cb430629b472a8cc6289aec\",\"dweb:/ipfs/QmQtwV4dDe2RYk2ErLpaAX7U82jWh1L6Lw2HRuKDvBi84G\"]},\"node_modules/@uniswap/v4-core/src/interfaces/IPoolManager.sol\":{\"keccak256\":\"0xbdab3544da3d32dfdf7457baa94e17d5a3012952428559e013ffac45d067038e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ce95ff864468e37c76adf71df061d4f3d6f3a5ec1f9bc3aea090463bc72798f4\",\"dweb:/ipfs/QmSbWh1pLbz51yQF4HEu5NRhr8XVv9JYGEw1hq1HudAnCi\"]},\"node_modules/@uniswap/v4-core/src/interfaces/IProtocolFees.sol\":{\"keccak256\":\"0x32a666e588a2f66334430357bb1e2424fe7eebeb98a3364b1dd16eb6ccca9848\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://85751d302125881f72e5f8af051c2d5d9b1f606ebaea8ca7d04fccdd27cc252d\",\"dweb:/ipfs/QmeRwomeh9NWm6A6fgNA4KZPQZHPpdKsPQyYsHSFmvud7J\"]},\"node_modules/@uniswap/v4-core/src/interfaces/external/IERC20Minimal.sol\":{\"keccak256\":\"0xeccadf1bf69ba2eb51f2fe4fa511bc7bb05bbd6b9f9a3cb8e5d83d9582613e0f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://118757369892687b99ef46ce28d6861f62c098285bd7687a4f17f7e44e5f81de\",\"dweb:/ipfs/QmUxqbYqQtcEwwFbb9e6BBMePEaSgN8C45v6RKubD4ib8d\"]},\"node_modules/@uniswap/v4-core/src/interfaces/external/IERC6909Claims.sol\":{\"keccak256\":\"0xa586f345739e52b0488a0fe40b6e375cce67fdd25758408b0efcb5133ad96a48\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e8c557b7e52abdbbd82e415a1acc27921446a7fd090b7d4877e52be72619547f\",\"dweb:/ipfs/QmXE2KNPbXmGX8BQF3ei6zhzRTnhoTQg39XmqMnkhbr6QK\"]},\"node_modules/@uniswap/v4-core/src/libraries/CustomRevert.sol\":{\"keccak256\":\"0x111ed3031b6990c80a93ae35dde6b6ac0b7e6af471388fdd7461e91edda9b7de\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c9ea883c98d6ae1829160d0977bb5195761cfd5bc81692d0a941f45717f594cd\",\"dweb:/ipfs/QmZPwxzaeMNv536wzrAMrMswu7vMHuqPVpjcqL3YvCMoxt\"]},\"node_modules/@uniswap/v4-core/src/libraries/SafeCast.sol\":{\"keccak256\":\"0x42c4a24f996a14d358be397b71f7ec9d7daf666aaec78002c63315a6ee67aa86\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c3db86e2ba3679105fc32edec656c70282e1fede6cab11217702443f6c26fa59\",\"dweb:/ipfs/QmX4yaaSPdKQzYNRsezjTvZKsubzS8JRTEGFD3fPpTTCcj\"]},\"node_modules/@uniswap/v4-core/src/types/BalanceDelta.sol\":{\"keccak256\":\"0xa719c8fe51e0a9524280178f19f6851bcc3b3b60e73618f3d60905d35ae5569f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7436928dc9de35c6c7c5c636cb51adaf295cfd590da83b19a004ae33cbec9ef9\",\"dweb:/ipfs/QmRJ9yZkUpzk4433GX3LgVVL8jwpbSYSUwXcucKisf3v4H\"]},\"node_modules/@uniswap/v4-core/src/types/BeforeSwapDelta.sol\":{\"keccak256\":\"0x2a774312d91285313d569da1a718c909655da5432310417692097a1d4dc83a78\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2c7a0379955cff9c17ab9e61f95e42909aa5947c22740f86ce940d09856f782\",\"dweb:/ipfs/QmaAuo8UBYXsGrVuKh8iRoAAdqwtg1jDq515cW1ZRP5m9K\"]},\"node_modules/@uniswap/v4-core/src/types/Currency.sol\":{\"keccak256\":\"0x4a0b84b282577ff6f8acf13ec9f4d32dbb9348748b49611d00e68bee96609c93\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://45f9d62ab3d51b52957279e353853ba1547c3182c9a1e3d1846ada4a90263b01\",\"dweb:/ipfs/QmS8NG84ccQS1yXVD8cv3eKX7J1UKxuJhbUfHTQR2opKF5\"]},\"node_modules/@uniswap/v4-core/src/types/PoolId.sol\":{\"keccak256\":\"0x308311916ea0f5c2fd878b6a2751eb223d170a69e33f601fae56dfe3c5d392af\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://669c2cd7ac17690b5d8831e0bda72822376c3a04b36afed6d31df4d75fe60918\",\"dweb:/ipfs/QmT6EpkxqU8VF3WsgrZ66F3s1cCQRffR95z1HDYZz7ph6y\"]},\"node_modules/@uniswap/v4-core/src/types/PoolKey.sol\":{\"keccak256\":\"0xf89856e0580d7a4856d3187a76858377ccee9d59702d230c338d84388221b786\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6f3118fa189025695c37fdf0bdd1190f085ad097484d3c88cf4c56d1db65f639\",\"dweb:/ipfs/QmamXpgtB8GV1CaFLvqefPWSoikLDhMk1yU4heBnVzU8gi\"]},\"node_modules/@uniswap/v4-core/src/types/PoolOperation.sol\":{\"keccak256\":\"0x7a1a107fc1f2208abb2c9364c8c54e56e98dca27673e9441bed2b949b6382162\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ad2470383bc5595d5af17840c64971f457adac68895a4db41ba5c71a4478e07\",\"dweb:/ipfs/QmdwKhBHDZFuqXrR2BfDBD9r7rB2ULGQBznsajRTkTmL4c\"]},\"node_modules/@uniswap/v4-periphery/src/libraries/PathKey.sol\":{\"keccak256\":\"0xbbd79ffefe045f025263e389539021266fb4d371463aefba405e1ff1d3fcf9bc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2d1c47b81a01218be46ee79f0a8837095479b94dc5cfd18abbf2006709f0ea89\",\"dweb:/ipfs/QmRb6CQ13Zp7f3WF5jbZtsF2szhxpPgcuWs9mjwQXxzqtg\"]},\"node_modules/@zoralabs/coins/src/interfaces/ICoin.sol\":{\"keccak256\":\"0xff3bcd3254ea7e582b75eebbff7436f20a2d485d9999974e02e98cc94217790c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://898dd5381336d821fff4a637be1bb667b6f24006ebe8f2df56a530f3fbe01fc3\",\"dweb:/ipfs/QmayrLdYhSPvjDzDA7Mss1i1SjJ5uorndpDZkVn1LQ2YSU\"]},\"node_modules/@zoralabs/coins/src/interfaces/IDeployedCoinVersionLookup.sol\":{\"keccak256\":\"0x2d9efe898233cf17e24e266d8bd6d197b4dde07fae8b954f247b1c04262b96ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://550fbe232af1052e113c1e664f4adf0c514501c38669d82bb4debd57e5842baa\",\"dweb:/ipfs/QmRBzWwCvmWZEBh6uRHvdzZQCW7Q8pgGg8Sc9hD7p5UuLK\"]},\"node_modules/@zoralabs/coins/src/interfaces/IDopplerErrors.sol\":{\"keccak256\":\"0xf78efeb8a0d37914bae9be8c6ed70d54a1d48305b3f9e3f8b95d20f9685640ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1e51cc18a8367dc9363a958f179cf2e8af662cbe41474647aa78424be781120e\",\"dweb:/ipfs/QmNrxrY2P7FMRY7tJtV2n5eiPDyM5pRhBpn9wgDfgwdDCs\"]},\"node_modules/@zoralabs/coins/src/interfaces/IERC7572.sol\":{\"keccak256\":\"0xf42b7816c4ed223c89d93d71e64c2fd2222b37d1280bfd067f57ff3301b0a937\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9bff9cab44e297b6f01a044b44d0acf68319789d47634708c384a9c32962db9d\",\"dweb:/ipfs/QmTg4oAc7yoGJnk3cjMEYixboAjJLgL4ys3KNSsvvtX91u\"]},\"node_modules/@zoralabs/coins/src/interfaces/IHasRewardsRecipients.sol\":{\"keccak256\":\"0x88401512f4b4f197a0961b56e4f32f9660625dd238c7ed704bba8543a30087eb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e6ca303775da2421a341f23f73a5641fc159d57b37f091f9adb7d7f1da7f81b5\",\"dweb:/ipfs/QmPinYGLrFfZ5kZqRo7epqdybw5Bhc7Lzocw1nFvYpGqJR\"]},\"node_modules/@zoralabs/coins/src/interfaces/IUpgradeableV4Hook.sol\":{\"keccak256\":\"0x5a36e59307830bcddcb8ef0e19dd762625cf9c60b963b62e02b6563e053ba6d7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://161542fe80b54ebb967878953ecb94f65d36522d320c80f1b946ff5988ffcd9f\",\"dweb:/ipfs/QmZRoC2EiCsYwGAYxJBDpBYYnxjGumYfdMhTFPE89bHPVg\"]},\"node_modules/@zoralabs/coins/src/interfaces/IZoraV4CoinHook.sol\":{\"keccak256\":\"0x66b599b02c7b42b08c39d495350942053f0dcd845f3a931cf5d0e80db4262e37\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://028eab54390c4f05437e1e1bf8afc3cad71f1ea307d7b51b31d005b5381375f7\",\"dweb:/ipfs/QmQxRjsFrbH86P1sEuueAJQGSTi1UECKQEvVWbZkJbwHgM\"]},\"node_modules/@zoralabs/coins/src/types/LpPosition.sol\":{\"keccak256\":\"0x19dfc13b9f6a831ee7a624094c17a7c0b20bbc9ef62121dd98d85a8641d53aaf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fe77a4cb9ff9afbf7561ed647d15729b201259ef767d6c140a0b6e9254a97fe6\",\"dweb:/ipfs/QmaieKjUcT2SG2Spdg2sHzZso8zd5YTVsMRRoDzz6Kgn1t\"]},\"node_modules/@zoralabs/coins/src/types/PoolConfiguration.sol\":{\"keccak256\":\"0xaecffdbd5d6f33d9d3450a155d0a2efcdd8e0636cc473328dd852afef6a76b22\",\"license\":\"ZORA-DELAYED-OSL-v1\",\"urls\":[\"bzz-raw://20d8ed8f4a4f1b7657004faada7367b923c35f8f194fd853d5af7a8440bd7319\",\"dweb:/ipfs/QmUi9BT4rHdxUuycz3YBrowgpNdcKEoBfVDVYxsptQ8c8t\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.28+commit.7893614a"},"language":"Solidity","output":{"abi":[{"inputs":[],"type":"error","name":"CoinVersionLookupCannotBeZeroAddress"},{"inputs":[{"internalType":"address","name":"newHook","type":"address"}],"type":"error","name":"InvalidNewHook"},{"inputs":[{"internalType":"struct PoolKey","name":"key","type":"tuple","components":[{"internalType":"Currency","name":"currency0","type":"address"},{"internalType":"Currency","name":"currency1","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"int24","name":"tickSpacing","type":"int24"},{"internalType":"contract IHooks","name":"hooks","type":"address"}]}],"type":"error","name":"NoCoinForHook"},{"inputs":[{"internalType":"address","name":"coin","type":"address"}],"type":"error","name":"NotACoin"},{"inputs":[{"internalType":"address","name":"caller","type":"address"},{"internalType":"address","name":"expectedCoin","type":"address"}],"type":"error","name":"OnlyCoin"},{"inputs":[],"type":"error","name":"PathMustHaveAtLeastOneStep"},{"inputs":[],"type":"error","name":"TrustedMsgSenderLookupCannotBeZeroAddress"},{"inputs":[],"type":"error","name":"UpgradeGateCannotBeZeroAddress"},{"inputs":[{"internalType":"address","name":"oldHook","type":"address"},{"internalType":"address","name":"newHook","type":"address"}],"type":"error","name":"UpgradePathNotRegistered"},{"inputs":[],"type":"error","name":"ZoraHookRegistryCannotBeZeroAddress"},{"inputs":[],"type":"error","name":"ZoraLimitOrderBookCannotBeZeroAddress"},{"inputs":[{"internalType":"address","name":"coin","type":"address","indexed":false},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"address","name":"payoutRecipient","type":"address","indexed":false},{"internalType":"address","name":"platformReferrer","type":"address","indexed":false},{"internalType":"address","name":"tradeReferrer","type":"address","indexed":false},{"internalType":"address","name":"protocolRewardRecipient","type":"address","indexed":false},{"internalType":"address","name":"dopplerRecipient","type":"address","indexed":false},{"internalType":"struct IZoraV4CoinHook.MarketRewardsV4","name":"marketRewards","type":"tuple","components":[{"internalType":"uint256","name":"creatorPayoutAmountCurrency","type":"uint256"},{"internalType":"uint256","name":"creatorPayoutAmountCoin","type":"uint256"},{"internalType":"uint256","name":"platformReferrerAmountCurrency","type":"uint256"},{"internalType":"uint256","name":"platformReferrerAmountCoin","type":"uint256"},{"internalType":"uint256","name":"tradeReferrerAmountCurrency","type":"uint256"},{"internalType":"uint256","name":"tradeReferrerAmountCoin","type":"uint256"},{"internalType":"uint256","name":"protocolAmountCurrency","type":"uint256"},{"internalType":"uint256","name":"protocolAmountCoin","type":"uint256"},{"internalType":"uint256","name":"dopplerAmountCurrency","type":"uint256"},{"internalType":"uint256","name":"dopplerAmountCoin","type":"uint256"}],"indexed":false}],"type":"event","name":"CoinMarketRewardsV4","anonymous":false},{"inputs":[{"internalType":"address","name":"coin","type":"address","indexed":true},{"internalType":"address","name":"currency","type":"address","indexed":true},{"internalType":"uint256","name":"amountCurrency","type":"uint256","indexed":false},{"internalType":"int24","name":"tick","type":"int24","indexed":false},{"internalType":"uint128","name":"liquidity","type":"uint128","indexed":false}],"type":"event","name":"LpReward","anonymous":false},{"inputs":[{"internalType":"address","name":"sender","type":"address","indexed":true},{"internalType":"address","name":"swapSender","type":"address","indexed":true},{"internalType":"bool","name":"isTrustedSwapSenderAddress","type":"bool","indexed":false},{"internalType":"struct PoolKey","name":"key","type":"tuple","components":[{"internalType":"Currency","name":"currency0","type":"address"},{"internalType":"Currency","name":"currency1","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"int24","name":"tickSpacing","type":"int24"},{"internalType":"contract IHooks","name":"hooks","type":"address"}],"indexed":false},{"internalType":"bytes32","name":"poolKeyHash","type":"bytes32","indexed":true},{"internalType":"struct SwapParams","name":"params","type":"tuple","components":[{"internalType":"bool","name":"zeroForOne","type":"bool"},{"internalType":"int256","name":"amountSpecified","type":"int256"},{"internalType":"uint160","name":"sqrtPriceLimitX96","type":"uint160"}],"indexed":false},{"internalType":"int128","name":"amount0","type":"int128","indexed":false},{"internalType":"int128","name":"amount1","type":"int128","indexed":false},{"internalType":"bool","name":"isCoinBuy","type":"bool","indexed":false},{"internalType":"bytes","name":"hookData","type":"bytes","indexed":false},{"internalType":"uint160","name":"sqrtPriceX96","type":"uint160","indexed":false}],"type":"event","name":"Swapped","anonymous":false},{"inputs":[{"internalType":"struct PoolKey","name":"key","type":"tuple","components":[{"internalType":"Currency","name":"currency0","type":"address"},{"internalType":"Currency","name":"currency1","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"int24","name":"tickSpacing","type":"int24"},{"internalType":"contract IHooks","name":"hooks","type":"address"}]}],"stateMutability":"view","type":"function","name":"getPoolCoin","outputs":[{"internalType":"struct IZoraV4CoinHook.PoolCoin","name":"","type":"tuple","components":[{"internalType":"address","name":"coin","type":"address"},{"internalType":"struct LpPosition[]","name":"positions","type":"tuple[]","components":[{"internalType":"int24","name":"tickLower","type":"int24"},{"internalType":"int24","name":"tickUpper","type":"int24"},{"internalType":"uint128","name":"liquidity","type":"uint128"}]}]}]},{"inputs":[{"internalType":"bytes32","name":"poolKeyHash","type":"bytes32"}],"stateMutability":"view","type":"function","name":"getPoolCoinByHash","outputs":[{"internalType":"struct IZoraV4CoinHook.PoolCoin","name":"","type":"tuple","components":[{"internalType":"address","name":"coin","type":"address"},{"internalType":"struct LpPosition[]","name":"positions","type":"tuple[]","components":[{"internalType":"int24","name":"tickLower","type":"int24"},{"internalType":"int24","name":"tickUpper","type":"int24"},{"internalType":"uint128","name":"liquidity","type":"uint128"}]}]}]},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"stateMutability":"view","type":"function","name":"isTrustedMessageSender","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"newHook","type":"address"},{"internalType":"struct PoolKey","name":"poolKey","type":"tuple","components":[{"internalType":"Currency","name":"currency0","type":"address"},{"internalType":"Currency","name":"currency1","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"int24","name":"tickSpacing","type":"int24"},{"internalType":"contract IHooks","name":"hooks","type":"address"}]},{"internalType":"bytes","name":"additionalData","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"migrateLiquidity","outputs":[{"internalType":"struct PoolKey","name":"newPoolKey","type":"tuple","components":[{"internalType":"Currency","name":"currency0","type":"address"},{"internalType":"Currency","name":"currency1","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"int24","name":"tickSpacing","type":"int24"},{"internalType":"contract IHooks","name":"hooks","type":"address"}]}]}],"devdoc":{"kind":"dev","methods":{"getPoolCoin((address,address,uint24,int24,address))":{"params":{"key":"The pool key."},"returns":{"_0":"poolCoin The pool coin confirmation data."}},"getPoolCoinByHash(bytes32)":{"params":{"poolKeyHash":"The hash of the pool key for indexing."},"returns":{"_0":"poolCoin The pool coin confirmation data."}},"isTrustedMessageSender(address)":{"params":{"sender":"The address of the sender."},"returns":{"_0":"isTrusted Whether the sender is a trusted message sender."}},"migrateLiquidity(address,(address,address,uint24,int24,address),bytes)":{"params":{"additionalData":"Additional data to pass to the new hook during initialization","newHook":"Address of the new hook implementation","poolKey":"The pool key to migrate"},"returns":{"newPoolKey":"The new pool key returned from the destination hook"}}},"version":1},"userdoc":{"kind":"user","methods":{"getPoolCoin((address,address,uint24,int24,address))":{"notice":"Returns the pool coin for a given pool key."},"getPoolCoinByHash(bytes32)":{"notice":"Returns the pool coin for a given pool key hash."},"isTrustedMessageSender(address)":{"notice":"Returns whether the sender is a trusted message sender."},"migrateLiquidity(address,(address,address,uint24,int24,address),bytes)":{"notice":"Migrate liquidity from this hook to a new hook"}},"version":1}},"settings":{"remappings":["@openzeppelin/=node_modules/@openzeppelin/","@uniswap/universal-router/contracts/=node_modules/@uniswap/universal-router/contracts/","@uniswap/v4-core/=node_modules/@uniswap/v4-core/","@uniswap/v4-periphery/=node_modules/@uniswap/v4-periphery/","@zoralabs/coins/=node_modules/@zoralabs/coins/","@zoralabs/shared-contracts/=node_modules/@zoralabs/shared-contracts/src/","ds-test/=node_modules/ds-test/src/","forge-std/=node_modules/forge-std/src/","permit2/src/=node_modules/@uniswap/permit2/src/","solady/=node_modules/solady/src/","solmate/=node_modules/solmate/src/"],"optimizer":{"enabled":true,"runs":100},"metadata":{"bytecodeHash":"none","appendCBOR":false},"compilationTarget":{"node_modules/@zoralabs/coins/src/interfaces/IZoraV4CoinHook.sol":"IZoraV4CoinHook"},"evmVersion":"prague","libraries":{},"viaIR":true},"sources":{"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c","urls":["bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617","dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u"],"license":"MIT"},"node_modules/@uniswap/v4-core/src/interfaces/IExtsload.sol":{"keccak256":"0x80b53ca4907d6f0088c3b931f2b72cad1dc4615a95094d96bd0fb8dff8d5ba43","urls":["bzz-raw://375c69148622aab7a3537d5fd37d373a8e9731022c8d87bdaee46233b0a99fe1","dweb:/ipfs/QmXFjdoYRxsA5B1kyuxEXgNf3FBoL1zPvy26Qy8EtpdFRN"],"license":"MIT"},"node_modules/@uniswap/v4-core/src/interfaces/IExttload.sol":{"keccak256":"0xc6b68283ebd8d1c789df536756726eed51c589134bb20821b236a0d22a135937","urls":["bzz-raw://294394f72dfc219689209f4130d85601dfd0d63c8d47578050d312db70f9b6c8","dweb:/ipfs/QmTDMQ3oxCGHgEBU48a3Lp4S1rRjc8vVCxkhE5ZNej1bsY"],"license":"MIT"},"node_modules/@uniswap/v4-core/src/interfaces/IHooks.sol":{"keccak256":"0xc131ffa2d04c10a012fe715fe2c115811526b7ea34285cf0a04ce7ce8320da8d","urls":["bzz-raw://3b212358897db5d99c21244d88f97b2e788527552cb430629b472a8cc6289aec","dweb:/ipfs/QmQtwV4dDe2RYk2ErLpaAX7U82jWh1L6Lw2HRuKDvBi84G"],"license":"MIT"},"node_modules/@uniswap/v4-core/src/interfaces/IPoolManager.sol":{"keccak256":"0xbdab3544da3d32dfdf7457baa94e17d5a3012952428559e013ffac45d067038e","urls":["bzz-raw://ce95ff864468e37c76adf71df061d4f3d6f3a5ec1f9bc3aea090463bc72798f4","dweb:/ipfs/QmSbWh1pLbz51yQF4HEu5NRhr8XVv9JYGEw1hq1HudAnCi"],"license":"MIT"},"node_modules/@uniswap/v4-core/src/interfaces/IProtocolFees.sol":{"keccak256":"0x32a666e588a2f66334430357bb1e2424fe7eebeb98a3364b1dd16eb6ccca9848","urls":["bzz-raw://85751d302125881f72e5f8af051c2d5d9b1f606ebaea8ca7d04fccdd27cc252d","dweb:/ipfs/QmeRwomeh9NWm6A6fgNA4KZPQZHPpdKsPQyYsHSFmvud7J"],"license":"MIT"},"node_modules/@uniswap/v4-core/src/interfaces/external/IERC20Minimal.sol":{"keccak256":"0xeccadf1bf69ba2eb51f2fe4fa511bc7bb05bbd6b9f9a3cb8e5d83d9582613e0f","urls":["bzz-raw://118757369892687b99ef46ce28d6861f62c098285bd7687a4f17f7e44e5f81de","dweb:/ipfs/QmUxqbYqQtcEwwFbb9e6BBMePEaSgN8C45v6RKubD4ib8d"],"license":"MIT"},"node_modules/@uniswap/v4-core/src/interfaces/external/IERC6909Claims.sol":{"keccak256":"0xa586f345739e52b0488a0fe40b6e375cce67fdd25758408b0efcb5133ad96a48","urls":["bzz-raw://e8c557b7e52abdbbd82e415a1acc27921446a7fd090b7d4877e52be72619547f","dweb:/ipfs/QmXE2KNPbXmGX8BQF3ei6zhzRTnhoTQg39XmqMnkhbr6QK"],"license":"MIT"},"node_modules/@uniswap/v4-core/src/libraries/CustomRevert.sol":{"keccak256":"0x111ed3031b6990c80a93ae35dde6b6ac0b7e6af471388fdd7461e91edda9b7de","urls":["bzz-raw://c9ea883c98d6ae1829160d0977bb5195761cfd5bc81692d0a941f45717f594cd","dweb:/ipfs/QmZPwxzaeMNv536wzrAMrMswu7vMHuqPVpjcqL3YvCMoxt"],"license":"MIT"},"node_modules/@uniswap/v4-core/src/libraries/SafeCast.sol":{"keccak256":"0x42c4a24f996a14d358be397b71f7ec9d7daf666aaec78002c63315a6ee67aa86","urls":["bzz-raw://c3db86e2ba3679105fc32edec656c70282e1fede6cab11217702443f6c26fa59","dweb:/ipfs/QmX4yaaSPdKQzYNRsezjTvZKsubzS8JRTEGFD3fPpTTCcj"],"license":"MIT"},"node_modules/@uniswap/v4-core/src/types/BalanceDelta.sol":{"keccak256":"0xa719c8fe51e0a9524280178f19f6851bcc3b3b60e73618f3d60905d35ae5569f","urls":["bzz-raw://7436928dc9de35c6c7c5c636cb51adaf295cfd590da83b19a004ae33cbec9ef9","dweb:/ipfs/QmRJ9yZkUpzk4433GX3LgVVL8jwpbSYSUwXcucKisf3v4H"],"license":"MIT"},"node_modules/@uniswap/v4-core/src/types/BeforeSwapDelta.sol":{"keccak256":"0x2a774312d91285313d569da1a718c909655da5432310417692097a1d4dc83a78","urls":["bzz-raw://a2c7a0379955cff9c17ab9e61f95e42909aa5947c22740f86ce940d09856f782","dweb:/ipfs/QmaAuo8UBYXsGrVuKh8iRoAAdqwtg1jDq515cW1ZRP5m9K"],"license":"MIT"},"node_modules/@uniswap/v4-core/src/types/Currency.sol":{"keccak256":"0x4a0b84b282577ff6f8acf13ec9f4d32dbb9348748b49611d00e68bee96609c93","urls":["bzz-raw://45f9d62ab3d51b52957279e353853ba1547c3182c9a1e3d1846ada4a90263b01","dweb:/ipfs/QmS8NG84ccQS1yXVD8cv3eKX7J1UKxuJhbUfHTQR2opKF5"],"license":"MIT"},"node_modules/@uniswap/v4-core/src/types/PoolId.sol":{"keccak256":"0x308311916ea0f5c2fd878b6a2751eb223d170a69e33f601fae56dfe3c5d392af","urls":["bzz-raw://669c2cd7ac17690b5d8831e0bda72822376c3a04b36afed6d31df4d75fe60918","dweb:/ipfs/QmT6EpkxqU8VF3WsgrZ66F3s1cCQRffR95z1HDYZz7ph6y"],"license":"MIT"},"node_modules/@uniswap/v4-core/src/types/PoolKey.sol":{"keccak256":"0xf89856e0580d7a4856d3187a76858377ccee9d59702d230c338d84388221b786","urls":["bzz-raw://6f3118fa189025695c37fdf0bdd1190f085ad097484d3c88cf4c56d1db65f639","dweb:/ipfs/QmamXpgtB8GV1CaFLvqefPWSoikLDhMk1yU4heBnVzU8gi"],"license":"MIT"},"node_modules/@uniswap/v4-core/src/types/PoolOperation.sol":{"keccak256":"0x7a1a107fc1f2208abb2c9364c8c54e56e98dca27673e9441bed2b949b6382162","urls":["bzz-raw://4ad2470383bc5595d5af17840c64971f457adac68895a4db41ba5c71a4478e07","dweb:/ipfs/QmdwKhBHDZFuqXrR2BfDBD9r7rB2ULGQBznsajRTkTmL4c"],"license":"MIT"},"node_modules/@uniswap/v4-periphery/src/libraries/PathKey.sol":{"keccak256":"0xbbd79ffefe045f025263e389539021266fb4d371463aefba405e1ff1d3fcf9bc","urls":["bzz-raw://2d1c47b81a01218be46ee79f0a8837095479b94dc5cfd18abbf2006709f0ea89","dweb:/ipfs/QmRb6CQ13Zp7f3WF5jbZtsF2szhxpPgcuWs9mjwQXxzqtg"],"license":"MIT"},"node_modules/@zoralabs/coins/src/interfaces/ICoin.sol":{"keccak256":"0xff3bcd3254ea7e582b75eebbff7436f20a2d485d9999974e02e98cc94217790c","urls":["bzz-raw://898dd5381336d821fff4a637be1bb667b6f24006ebe8f2df56a530f3fbe01fc3","dweb:/ipfs/QmayrLdYhSPvjDzDA7Mss1i1SjJ5uorndpDZkVn1LQ2YSU"],"license":"MIT"},"node_modules/@zoralabs/coins/src/interfaces/IDeployedCoinVersionLookup.sol":{"keccak256":"0x2d9efe898233cf17e24e266d8bd6d197b4dde07fae8b954f247b1c04262b96ba","urls":["bzz-raw://550fbe232af1052e113c1e664f4adf0c514501c38669d82bb4debd57e5842baa","dweb:/ipfs/QmRBzWwCvmWZEBh6uRHvdzZQCW7Q8pgGg8Sc9hD7p5UuLK"],"license":"MIT"},"node_modules/@zoralabs/coins/src/interfaces/IDopplerErrors.sol":{"keccak256":"0xf78efeb8a0d37914bae9be8c6ed70d54a1d48305b3f9e3f8b95d20f9685640ea","urls":["bzz-raw://1e51cc18a8367dc9363a958f179cf2e8af662cbe41474647aa78424be781120e","dweb:/ipfs/QmNrxrY2P7FMRY7tJtV2n5eiPDyM5pRhBpn9wgDfgwdDCs"],"license":"MIT"},"node_modules/@zoralabs/coins/src/interfaces/IERC7572.sol":{"keccak256":"0xf42b7816c4ed223c89d93d71e64c2fd2222b37d1280bfd067f57ff3301b0a937","urls":["bzz-raw://9bff9cab44e297b6f01a044b44d0acf68319789d47634708c384a9c32962db9d","dweb:/ipfs/QmTg4oAc7yoGJnk3cjMEYixboAjJLgL4ys3KNSsvvtX91u"],"license":"MIT"},"node_modules/@zoralabs/coins/src/interfaces/IHasRewardsRecipients.sol":{"keccak256":"0x88401512f4b4f197a0961b56e4f32f9660625dd238c7ed704bba8543a30087eb","urls":["bzz-raw://e6ca303775da2421a341f23f73a5641fc159d57b37f091f9adb7d7f1da7f81b5","dweb:/ipfs/QmPinYGLrFfZ5kZqRo7epqdybw5Bhc7Lzocw1nFvYpGqJR"],"license":"MIT"},"node_modules/@zoralabs/coins/src/interfaces/IUpgradeableV4Hook.sol":{"keccak256":"0x5a36e59307830bcddcb8ef0e19dd762625cf9c60b963b62e02b6563e053ba6d7","urls":["bzz-raw://161542fe80b54ebb967878953ecb94f65d36522d320c80f1b946ff5988ffcd9f","dweb:/ipfs/QmZRoC2EiCsYwGAYxJBDpBYYnxjGumYfdMhTFPE89bHPVg"],"license":"MIT"},"node_modules/@zoralabs/coins/src/interfaces/IZoraV4CoinHook.sol":{"keccak256":"0x66b599b02c7b42b08c39d495350942053f0dcd845f3a931cf5d0e80db4262e37","urls":["bzz-raw://028eab54390c4f05437e1e1bf8afc3cad71f1ea307d7b51b31d005b5381375f7","dweb:/ipfs/QmQxRjsFrbH86P1sEuueAJQGSTi1UECKQEvVWbZkJbwHgM"],"license":"MIT"},"node_modules/@zoralabs/coins/src/types/LpPosition.sol":{"keccak256":"0x19dfc13b9f6a831ee7a624094c17a7c0b20bbc9ef62121dd98d85a8641d53aaf","urls":["bzz-raw://fe77a4cb9ff9afbf7561ed647d15729b201259ef767d6c140a0b6e9254a97fe6","dweb:/ipfs/QmaieKjUcT2SG2Spdg2sHzZso8zd5YTVsMRRoDzz6Kgn1t"],"license":"MIT"},"node_modules/@zoralabs/coins/src/types/PoolConfiguration.sol":{"keccak256":"0xaecffdbd5d6f33d9d3450a155d0a2efcdd8e0636cc473328dd852afef6a76b22","urls":["bzz-raw://20d8ed8f4a4f1b7657004faada7367b923c35f8f194fd853d5af7a8440bd7319","dweb:/ipfs/QmUi9BT4rHdxUuycz3YBrowgpNdcKEoBfVDVYxsptQ8c8t"],"license":"ZORA-DELAYED-OSL-v1"}},"version":1},"id":53}
|
|
1
|
+
{"abi":[{"type":"function","name":"getPoolCoin","inputs":[{"name":"key","type":"tuple","internalType":"struct PoolKey","components":[{"name":"currency0","type":"address","internalType":"Currency"},{"name":"currency1","type":"address","internalType":"Currency"},{"name":"fee","type":"uint24","internalType":"uint24"},{"name":"tickSpacing","type":"int24","internalType":"int24"},{"name":"hooks","type":"address","internalType":"contract IHooks"}]}],"outputs":[{"name":"","type":"tuple","internalType":"struct IZoraV4CoinHook.PoolCoin","components":[{"name":"coin","type":"address","internalType":"address"},{"name":"positions","type":"tuple[]","internalType":"struct LpPosition[]","components":[{"name":"tickLower","type":"int24","internalType":"int24"},{"name":"tickUpper","type":"int24","internalType":"int24"},{"name":"liquidity","type":"uint128","internalType":"uint128"}]}]}],"stateMutability":"view"},{"type":"function","name":"getPoolCoinByHash","inputs":[{"name":"poolKeyHash","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"tuple","internalType":"struct IZoraV4CoinHook.PoolCoin","components":[{"name":"coin","type":"address","internalType":"address"},{"name":"positions","type":"tuple[]","internalType":"struct LpPosition[]","components":[{"name":"tickLower","type":"int24","internalType":"int24"},{"name":"tickUpper","type":"int24","internalType":"int24"},{"name":"liquidity","type":"uint128","internalType":"uint128"}]}]}],"stateMutability":"view"},{"type":"function","name":"isTrustedMessageSender","inputs":[{"name":"sender","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"migrateLiquidity","inputs":[{"name":"newHook","type":"address","internalType":"address"},{"name":"poolKey","type":"tuple","internalType":"struct PoolKey","components":[{"name":"currency0","type":"address","internalType":"Currency"},{"name":"currency1","type":"address","internalType":"Currency"},{"name":"fee","type":"uint24","internalType":"uint24"},{"name":"tickSpacing","type":"int24","internalType":"int24"},{"name":"hooks","type":"address","internalType":"contract IHooks"}]},{"name":"additionalData","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"newPoolKey","type":"tuple","internalType":"struct PoolKey","components":[{"name":"currency0","type":"address","internalType":"Currency"},{"name":"currency1","type":"address","internalType":"Currency"},{"name":"fee","type":"uint24","internalType":"uint24"},{"name":"tickSpacing","type":"int24","internalType":"int24"},{"name":"hooks","type":"address","internalType":"contract IHooks"}]}],"stateMutability":"nonpayable"},{"type":"event","name":"CoinMarketRewardsV4","inputs":[{"name":"coin","type":"address","indexed":false,"internalType":"address"},{"name":"currency","type":"address","indexed":false,"internalType":"address"},{"name":"payoutRecipient","type":"address","indexed":false,"internalType":"address"},{"name":"platformReferrer","type":"address","indexed":false,"internalType":"address"},{"name":"tradeReferrer","type":"address","indexed":false,"internalType":"address"},{"name":"protocolRewardRecipient","type":"address","indexed":false,"internalType":"address"},{"name":"dopplerRecipient","type":"address","indexed":false,"internalType":"address"},{"name":"marketRewards","type":"tuple","indexed":false,"internalType":"struct IZoraV4CoinHook.MarketRewardsV4","components":[{"name":"creatorPayoutAmountCurrency","type":"uint256","internalType":"uint256"},{"name":"creatorPayoutAmountCoin","type":"uint256","internalType":"uint256"},{"name":"platformReferrerAmountCurrency","type":"uint256","internalType":"uint256"},{"name":"platformReferrerAmountCoin","type":"uint256","internalType":"uint256"},{"name":"tradeReferrerAmountCurrency","type":"uint256","internalType":"uint256"},{"name":"tradeReferrerAmountCoin","type":"uint256","internalType":"uint256"},{"name":"protocolAmountCurrency","type":"uint256","internalType":"uint256"},{"name":"protocolAmountCoin","type":"uint256","internalType":"uint256"},{"name":"dopplerAmountCurrency","type":"uint256","internalType":"uint256"},{"name":"dopplerAmountCoin","type":"uint256","internalType":"uint256"}]}],"anonymous":false},{"type":"event","name":"LpReward","inputs":[{"name":"coin","type":"address","indexed":true,"internalType":"address"},{"name":"currency","type":"address","indexed":true,"internalType":"address"},{"name":"amountCurrency","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"tick","type":"int24","indexed":false,"internalType":"int24"},{"name":"liquidity","type":"uint128","indexed":false,"internalType":"uint128"}],"anonymous":false},{"type":"event","name":"Swapped","inputs":[{"name":"sender","type":"address","indexed":true,"internalType":"address"},{"name":"swapSender","type":"address","indexed":true,"internalType":"address"},{"name":"isTrustedSwapSenderAddress","type":"bool","indexed":false,"internalType":"bool"},{"name":"key","type":"tuple","indexed":false,"internalType":"struct PoolKey","components":[{"name":"currency0","type":"address","internalType":"Currency"},{"name":"currency1","type":"address","internalType":"Currency"},{"name":"fee","type":"uint24","internalType":"uint24"},{"name":"tickSpacing","type":"int24","internalType":"int24"},{"name":"hooks","type":"address","internalType":"contract IHooks"}]},{"name":"poolKeyHash","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"params","type":"tuple","indexed":false,"internalType":"struct SwapParams","components":[{"name":"zeroForOne","type":"bool","internalType":"bool"},{"name":"amountSpecified","type":"int256","internalType":"int256"},{"name":"sqrtPriceLimitX96","type":"uint160","internalType":"uint160"}]},{"name":"amount0","type":"int128","indexed":false,"internalType":"int128"},{"name":"amount1","type":"int128","indexed":false,"internalType":"int128"},{"name":"isCoinBuy","type":"bool","indexed":false,"internalType":"bool"},{"name":"hookData","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"sqrtPriceX96","type":"uint160","indexed":false,"internalType":"uint160"}],"anonymous":false},{"type":"error","name":"CoinVersionLookupCannotBeZeroAddress","inputs":[]},{"type":"error","name":"InvalidNewHook","inputs":[{"name":"newHook","type":"address","internalType":"address"}]},{"type":"error","name":"NoCoinForHook","inputs":[{"name":"key","type":"tuple","internalType":"struct PoolKey","components":[{"name":"currency0","type":"address","internalType":"Currency"},{"name":"currency1","type":"address","internalType":"Currency"},{"name":"fee","type":"uint24","internalType":"uint24"},{"name":"tickSpacing","type":"int24","internalType":"int24"},{"name":"hooks","type":"address","internalType":"contract IHooks"}]}]},{"type":"error","name":"NotACoin","inputs":[{"name":"coin","type":"address","internalType":"address"}]},{"type":"error","name":"OnlyCoin","inputs":[{"name":"caller","type":"address","internalType":"address"},{"name":"expectedCoin","type":"address","internalType":"address"}]},{"type":"error","name":"PathMustHaveAtLeastOneStep","inputs":[]},{"type":"error","name":"TrustedMsgSenderLookupCannotBeZeroAddress","inputs":[]},{"type":"error","name":"UpgradeGateCannotBeZeroAddress","inputs":[]},{"type":"error","name":"UpgradePathNotRegistered","inputs":[{"name":"oldHook","type":"address","internalType":"address"},{"name":"newHook","type":"address","internalType":"address"}]},{"type":"error","name":"ZoraHookRegistryCannotBeZeroAddress","inputs":[]},{"type":"error","name":"ZoraLimitOrderBookCannotBeZeroAddress","inputs":[]}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"getPoolCoin((address,address,uint24,int24,address))":"2c5fe5a9","getPoolCoinByHash(bytes32)":"247a4775","isTrustedMessageSender(address)":"bc9113b3","migrateLiquidity(address,(address,address,uint24,int24,address),bytes)":"4a862f63"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"CoinVersionLookupCannotBeZeroAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newHook\",\"type\":\"address\"}],\"name\":\"InvalidNewHook\",\"type\":\"error\"},{\"inputs\":[{\"components\":[{\"internalType\":\"Currency\",\"name\":\"currency0\",\"type\":\"address\"},{\"internalType\":\"Currency\",\"name\":\"currency1\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"},{\"internalType\":\"int24\",\"name\":\"tickSpacing\",\"type\":\"int24\"},{\"internalType\":\"contract IHooks\",\"name\":\"hooks\",\"type\":\"address\"}],\"internalType\":\"struct PoolKey\",\"name\":\"key\",\"type\":\"tuple\"}],\"name\":\"NoCoinForHook\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"coin\",\"type\":\"address\"}],\"name\":\"NotACoin\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"expectedCoin\",\"type\":\"address\"}],\"name\":\"OnlyCoin\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PathMustHaveAtLeastOneStep\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TrustedMsgSenderLookupCannotBeZeroAddress\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UpgradeGateCannotBeZeroAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"oldHook\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"newHook\",\"type\":\"address\"}],\"name\":\"UpgradePathNotRegistered\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZoraHookRegistryCannotBeZeroAddress\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZoraLimitOrderBookCannotBeZeroAddress\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"coin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"payoutRecipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"platformReferrer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"tradeReferrer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"protocolRewardRecipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"dopplerRecipient\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"creatorPayoutAmountCurrency\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"creatorPayoutAmountCoin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"platformReferrerAmountCurrency\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"platformReferrerAmountCoin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tradeReferrerAmountCurrency\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tradeReferrerAmountCoin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"protocolAmountCurrency\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"protocolAmountCoin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"dopplerAmountCurrency\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"dopplerAmountCoin\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"struct IZoraV4CoinHook.MarketRewardsV4\",\"name\":\"marketRewards\",\"type\":\"tuple\"}],\"name\":\"CoinMarketRewardsV4\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"coin\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountCurrency\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"int24\",\"name\":\"tick\",\"type\":\"int24\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"liquidity\",\"type\":\"uint128\"}],\"name\":\"LpReward\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"swapSender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"isTrustedSwapSenderAddress\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"Currency\",\"name\":\"currency0\",\"type\":\"address\"},{\"internalType\":\"Currency\",\"name\":\"currency1\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"},{\"internalType\":\"int24\",\"name\":\"tickSpacing\",\"type\":\"int24\"},{\"internalType\":\"contract IHooks\",\"name\":\"hooks\",\"type\":\"address\"}],\"indexed\":false,\"internalType\":\"struct PoolKey\",\"name\":\"key\",\"type\":\"tuple\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"poolKeyHash\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"zeroForOne\",\"type\":\"bool\"},{\"internalType\":\"int256\",\"name\":\"amountSpecified\",\"type\":\"int256\"},{\"internalType\":\"uint160\",\"name\":\"sqrtPriceLimitX96\",\"type\":\"uint160\"}],\"indexed\":false,\"internalType\":\"struct SwapParams\",\"name\":\"params\",\"type\":\"tuple\"},{\"indexed\":false,\"internalType\":\"int128\",\"name\":\"amount0\",\"type\":\"int128\"},{\"indexed\":false,\"internalType\":\"int128\",\"name\":\"amount1\",\"type\":\"int128\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"isCoinBuy\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"hookData\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint160\",\"name\":\"sqrtPriceX96\",\"type\":\"uint160\"}],\"name\":\"Swapped\",\"type\":\"event\"},{\"inputs\":[{\"components\":[{\"internalType\":\"Currency\",\"name\":\"currency0\",\"type\":\"address\"},{\"internalType\":\"Currency\",\"name\":\"currency1\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"},{\"internalType\":\"int24\",\"name\":\"tickSpacing\",\"type\":\"int24\"},{\"internalType\":\"contract IHooks\",\"name\":\"hooks\",\"type\":\"address\"}],\"internalType\":\"struct PoolKey\",\"name\":\"key\",\"type\":\"tuple\"}],\"name\":\"getPoolCoin\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"coin\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"},{\"internalType\":\"uint128\",\"name\":\"liquidity\",\"type\":\"uint128\"}],\"internalType\":\"struct LpPosition[]\",\"name\":\"positions\",\"type\":\"tuple[]\"}],\"internalType\":\"struct IZoraV4CoinHook.PoolCoin\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"poolKeyHash\",\"type\":\"bytes32\"}],\"name\":\"getPoolCoinByHash\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"coin\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"},{\"internalType\":\"uint128\",\"name\":\"liquidity\",\"type\":\"uint128\"}],\"internalType\":\"struct LpPosition[]\",\"name\":\"positions\",\"type\":\"tuple[]\"}],\"internalType\":\"struct IZoraV4CoinHook.PoolCoin\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"isTrustedMessageSender\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newHook\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"Currency\",\"name\":\"currency0\",\"type\":\"address\"},{\"internalType\":\"Currency\",\"name\":\"currency1\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"},{\"internalType\":\"int24\",\"name\":\"tickSpacing\",\"type\":\"int24\"},{\"internalType\":\"contract IHooks\",\"name\":\"hooks\",\"type\":\"address\"}],\"internalType\":\"struct PoolKey\",\"name\":\"poolKey\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"additionalData\",\"type\":\"bytes\"}],\"name\":\"migrateLiquidity\",\"outputs\":[{\"components\":[{\"internalType\":\"Currency\",\"name\":\"currency0\",\"type\":\"address\"},{\"internalType\":\"Currency\",\"name\":\"currency1\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"},{\"internalType\":\"int24\",\"name\":\"tickSpacing\",\"type\":\"int24\"},{\"internalType\":\"contract IHooks\",\"name\":\"hooks\",\"type\":\"address\"}],\"internalType\":\"struct PoolKey\",\"name\":\"newPoolKey\",\"type\":\"tuple\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"NoCoinForHook((address,address,uint24,int24,address))\":[{\"params\":{\"key\":\"The pool key struct to identify the pool.\"}}],\"NotACoin(address)\":[{\"params\":{\"coin\":\"The address of the coin.\"}}]},\"events\":{\"CoinMarketRewardsV4(address,address,address,address,address,address,address,(uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256))\":{\"params\":{\"coin\":\"The address of the coin\",\"currency\":\"The address of the currency\",\"dopplerRecipient\":\"The address of the doppler recipient\",\"marketRewards\":\"The rewards accrued from the market's liquidity position\",\"payoutRecipient\":\"The address of the creator rewards payout recipient\",\"platformReferrer\":\"The address of the platform referrer\",\"protocolRewardRecipient\":\"The address of the protocol reward recipient\",\"tradeReferrer\":\"The address of the trade referrer\"}},\"LpReward(address,address,uint256,int24,uint128)\":{\"params\":{\"amountCurrency\":\"The amount paid out\",\"coin\":\"The address of the coin\",\"currency\":\"The address of the currency\",\"liquidity\":\"The current liquidity\",\"tick\":\"The current tick\"}},\"Swapped(address,address,bool,(address,address,uint24,int24,address),bytes32,(bool,int256,uint160),int128,int128,bool,bytes,uint160)\":{\"params\":{\"amount0\":\"The amount of token0.\",\"amount1\":\"The amount of token1.\",\"hookData\":\"The data passed into the hook for the swap.\",\"isCoinBuy\":\"Whether the swap is a coin buy.\",\"isTrustedSwapSenderAddress\":\"Whether the swap sender is a trusted address. (Based on a registry of trusted addresses)\",\"key\":\"The pool key struct to identify the pool.\",\"params\":\"The swap parameters.\",\"poolKeyHash\":\"The hash of the pool key for indexing.\",\"sender\":\"The address of the sender.\",\"swapSender\":\"The address of the swap sender.\"}}},\"kind\":\"dev\",\"methods\":{\"getPoolCoin((address,address,uint24,int24,address))\":{\"params\":{\"key\":\"The pool key.\"},\"returns\":{\"_0\":\"poolCoin The pool coin confirmation data.\"}},\"getPoolCoinByHash(bytes32)\":{\"params\":{\"poolKeyHash\":\"The hash of the pool key for indexing.\"},\"returns\":{\"_0\":\"poolCoin The pool coin confirmation data.\"}},\"isTrustedMessageSender(address)\":{\"params\":{\"sender\":\"The address of the sender.\"},\"returns\":{\"_0\":\"isTrusted Whether the sender is a trusted message sender.\"}},\"migrateLiquidity(address,(address,address,uint24,int24,address),bytes)\":{\"params\":{\"additionalData\":\"Additional data to pass to the new hook during initialization\",\"newHook\":\"Address of the new hook implementation\",\"poolKey\":\"The pool key to migrate\"},\"returns\":{\"newPoolKey\":\"The new pool key returned from the destination hook\"}}},\"version\":1},\"userdoc\":{\"errors\":{\"CoinVersionLookupCannotBeZeroAddress()\":[{\"notice\":\"Coin version lookup cannot be the zero address.\"}],\"NoCoinForHook((address,address,uint24,int24,address))\":[{\"notice\":\"Thrown when a pool is not initialized for the hook.\"}],\"NotACoin(address)\":[{\"notice\":\"Thrown when a non-coin is used to initialize a pool with this hook.\"}],\"OnlyCoin(address,address)\":[{\"notice\":\"Thrown when a non-coin is used to access the functionality of a coin.\"}],\"PathMustHaveAtLeastOneStep()\":[{\"notice\":\"Thrown when a attempting to swap with a path that has no steps.\"}],\"TrustedMsgSenderLookupCannotBeZeroAddress()\":[{\"notice\":\"Trusted message sender lookup cannot be the zero address.\"}],\"UpgradeGateCannotBeZeroAddress()\":[{\"notice\":\"Upgrade gate cannot be the zero address.\"}],\"ZoraHookRegistryCannotBeZeroAddress()\":[{\"notice\":\"Thrown when the Zora hook registry is the zero address.\"}],\"ZoraLimitOrderBookCannotBeZeroAddress()\":[{\"notice\":\"Thrown when the Zora limit order book is the zero address.\"}]},\"events\":{\"CoinMarketRewardsV4(address,address,address,address,address,address,address,(uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256))\":{\"notice\":\"Emitted when market rewards are distributed\"},\"LpReward(address,address,uint256,int24,uint128)\":{\"notice\":\"Emitted when LP rewards are distributed\"},\"Swapped(address,address,bool,(address,address,uint24,int24,address),bytes32,(bool,int256,uint160),int128,int128,bool,bytes,uint160)\":{\"notice\":\"Emitted when a swap is executed.\"}},\"kind\":\"user\",\"methods\":{\"getPoolCoin((address,address,uint24,int24,address))\":{\"notice\":\"Returns the pool coin for a given pool key.\"},\"getPoolCoinByHash(bytes32)\":{\"notice\":\"Returns the pool coin for a given pool key hash.\"},\"isTrustedMessageSender(address)\":{\"notice\":\"Returns whether the sender is a trusted message sender.\"},\"migrateLiquidity(address,(address,address,uint24,int24,address),bytes)\":{\"notice\":\"Migrate liquidity from this hook to a new hook\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"node_modules/@zoralabs/coins/src/interfaces/IZoraV4CoinHook.sol\":\"IZoraV4CoinHook\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"appendCBOR\":false,\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":100},\"remappings\":[\":@openzeppelin/=node_modules/@openzeppelin/\",\":@uniswap/universal-router/contracts/=node_modules/@uniswap/universal-router/contracts/\",\":@uniswap/v4-core/=node_modules/@uniswap/v4-core/\",\":@uniswap/v4-periphery/=node_modules/@uniswap/v4-periphery/\",\":@zoralabs/coins/=node_modules/@zoralabs/coins/\",\":@zoralabs/shared-contracts/=node_modules/@zoralabs/shared-contracts/src/\",\":ds-test/=node_modules/ds-test/src/\",\":forge-std/=node_modules/forge-std/src/\",\":permit2/src/=node_modules/@uniswap/permit2/src/\",\":solady/=node_modules/solady/src/\",\":solmate/=node_modules/solmate/src/\"],\"viaIR\":true},\"sources\":{\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617\",\"dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u\"]},\"node_modules/@uniswap/v4-core/src/interfaces/IExtsload.sol\":{\"keccak256\":\"0x80b53ca4907d6f0088c3b931f2b72cad1dc4615a95094d96bd0fb8dff8d5ba43\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://375c69148622aab7a3537d5fd37d373a8e9731022c8d87bdaee46233b0a99fe1\",\"dweb:/ipfs/QmXFjdoYRxsA5B1kyuxEXgNf3FBoL1zPvy26Qy8EtpdFRN\"]},\"node_modules/@uniswap/v4-core/src/interfaces/IExttload.sol\":{\"keccak256\":\"0xc6b68283ebd8d1c789df536756726eed51c589134bb20821b236a0d22a135937\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://294394f72dfc219689209f4130d85601dfd0d63c8d47578050d312db70f9b6c8\",\"dweb:/ipfs/QmTDMQ3oxCGHgEBU48a3Lp4S1rRjc8vVCxkhE5ZNej1bsY\"]},\"node_modules/@uniswap/v4-core/src/interfaces/IHooks.sol\":{\"keccak256\":\"0xc131ffa2d04c10a012fe715fe2c115811526b7ea34285cf0a04ce7ce8320da8d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3b212358897db5d99c21244d88f97b2e788527552cb430629b472a8cc6289aec\",\"dweb:/ipfs/QmQtwV4dDe2RYk2ErLpaAX7U82jWh1L6Lw2HRuKDvBi84G\"]},\"node_modules/@uniswap/v4-core/src/interfaces/IPoolManager.sol\":{\"keccak256\":\"0xbdab3544da3d32dfdf7457baa94e17d5a3012952428559e013ffac45d067038e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ce95ff864468e37c76adf71df061d4f3d6f3a5ec1f9bc3aea090463bc72798f4\",\"dweb:/ipfs/QmSbWh1pLbz51yQF4HEu5NRhr8XVv9JYGEw1hq1HudAnCi\"]},\"node_modules/@uniswap/v4-core/src/interfaces/IProtocolFees.sol\":{\"keccak256\":\"0x32a666e588a2f66334430357bb1e2424fe7eebeb98a3364b1dd16eb6ccca9848\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://85751d302125881f72e5f8af051c2d5d9b1f606ebaea8ca7d04fccdd27cc252d\",\"dweb:/ipfs/QmeRwomeh9NWm6A6fgNA4KZPQZHPpdKsPQyYsHSFmvud7J\"]},\"node_modules/@uniswap/v4-core/src/interfaces/external/IERC20Minimal.sol\":{\"keccak256\":\"0xeccadf1bf69ba2eb51f2fe4fa511bc7bb05bbd6b9f9a3cb8e5d83d9582613e0f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://118757369892687b99ef46ce28d6861f62c098285bd7687a4f17f7e44e5f81de\",\"dweb:/ipfs/QmUxqbYqQtcEwwFbb9e6BBMePEaSgN8C45v6RKubD4ib8d\"]},\"node_modules/@uniswap/v4-core/src/interfaces/external/IERC6909Claims.sol\":{\"keccak256\":\"0xa586f345739e52b0488a0fe40b6e375cce67fdd25758408b0efcb5133ad96a48\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e8c557b7e52abdbbd82e415a1acc27921446a7fd090b7d4877e52be72619547f\",\"dweb:/ipfs/QmXE2KNPbXmGX8BQF3ei6zhzRTnhoTQg39XmqMnkhbr6QK\"]},\"node_modules/@uniswap/v4-core/src/libraries/CustomRevert.sol\":{\"keccak256\":\"0x111ed3031b6990c80a93ae35dde6b6ac0b7e6af471388fdd7461e91edda9b7de\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c9ea883c98d6ae1829160d0977bb5195761cfd5bc81692d0a941f45717f594cd\",\"dweb:/ipfs/QmZPwxzaeMNv536wzrAMrMswu7vMHuqPVpjcqL3YvCMoxt\"]},\"node_modules/@uniswap/v4-core/src/libraries/SafeCast.sol\":{\"keccak256\":\"0x42c4a24f996a14d358be397b71f7ec9d7daf666aaec78002c63315a6ee67aa86\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c3db86e2ba3679105fc32edec656c70282e1fede6cab11217702443f6c26fa59\",\"dweb:/ipfs/QmX4yaaSPdKQzYNRsezjTvZKsubzS8JRTEGFD3fPpTTCcj\"]},\"node_modules/@uniswap/v4-core/src/types/BalanceDelta.sol\":{\"keccak256\":\"0xa719c8fe51e0a9524280178f19f6851bcc3b3b60e73618f3d60905d35ae5569f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7436928dc9de35c6c7c5c636cb51adaf295cfd590da83b19a004ae33cbec9ef9\",\"dweb:/ipfs/QmRJ9yZkUpzk4433GX3LgVVL8jwpbSYSUwXcucKisf3v4H\"]},\"node_modules/@uniswap/v4-core/src/types/BeforeSwapDelta.sol\":{\"keccak256\":\"0x2a774312d91285313d569da1a718c909655da5432310417692097a1d4dc83a78\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2c7a0379955cff9c17ab9e61f95e42909aa5947c22740f86ce940d09856f782\",\"dweb:/ipfs/QmaAuo8UBYXsGrVuKh8iRoAAdqwtg1jDq515cW1ZRP5m9K\"]},\"node_modules/@uniswap/v4-core/src/types/Currency.sol\":{\"keccak256\":\"0x4a0b84b282577ff6f8acf13ec9f4d32dbb9348748b49611d00e68bee96609c93\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://45f9d62ab3d51b52957279e353853ba1547c3182c9a1e3d1846ada4a90263b01\",\"dweb:/ipfs/QmS8NG84ccQS1yXVD8cv3eKX7J1UKxuJhbUfHTQR2opKF5\"]},\"node_modules/@uniswap/v4-core/src/types/PoolId.sol\":{\"keccak256\":\"0x308311916ea0f5c2fd878b6a2751eb223d170a69e33f601fae56dfe3c5d392af\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://669c2cd7ac17690b5d8831e0bda72822376c3a04b36afed6d31df4d75fe60918\",\"dweb:/ipfs/QmT6EpkxqU8VF3WsgrZ66F3s1cCQRffR95z1HDYZz7ph6y\"]},\"node_modules/@uniswap/v4-core/src/types/PoolKey.sol\":{\"keccak256\":\"0xf89856e0580d7a4856d3187a76858377ccee9d59702d230c338d84388221b786\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6f3118fa189025695c37fdf0bdd1190f085ad097484d3c88cf4c56d1db65f639\",\"dweb:/ipfs/QmamXpgtB8GV1CaFLvqefPWSoikLDhMk1yU4heBnVzU8gi\"]},\"node_modules/@uniswap/v4-core/src/types/PoolOperation.sol\":{\"keccak256\":\"0x7a1a107fc1f2208abb2c9364c8c54e56e98dca27673e9441bed2b949b6382162\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ad2470383bc5595d5af17840c64971f457adac68895a4db41ba5c71a4478e07\",\"dweb:/ipfs/QmdwKhBHDZFuqXrR2BfDBD9r7rB2ULGQBznsajRTkTmL4c\"]},\"node_modules/@uniswap/v4-periphery/src/libraries/PathKey.sol\":{\"keccak256\":\"0xbbd79ffefe045f025263e389539021266fb4d371463aefba405e1ff1d3fcf9bc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2d1c47b81a01218be46ee79f0a8837095479b94dc5cfd18abbf2006709f0ea89\",\"dweb:/ipfs/QmRb6CQ13Zp7f3WF5jbZtsF2szhxpPgcuWs9mjwQXxzqtg\"]},\"node_modules/@zoralabs/coins/src/interfaces/ICoin.sol\":{\"keccak256\":\"0xff3bcd3254ea7e582b75eebbff7436f20a2d485d9999974e02e98cc94217790c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://898dd5381336d821fff4a637be1bb667b6f24006ebe8f2df56a530f3fbe01fc3\",\"dweb:/ipfs/QmayrLdYhSPvjDzDA7Mss1i1SjJ5uorndpDZkVn1LQ2YSU\"]},\"node_modules/@zoralabs/coins/src/interfaces/IDeployedCoinVersionLookup.sol\":{\"keccak256\":\"0x2d9efe898233cf17e24e266d8bd6d197b4dde07fae8b954f247b1c04262b96ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://550fbe232af1052e113c1e664f4adf0c514501c38669d82bb4debd57e5842baa\",\"dweb:/ipfs/QmRBzWwCvmWZEBh6uRHvdzZQCW7Q8pgGg8Sc9hD7p5UuLK\"]},\"node_modules/@zoralabs/coins/src/interfaces/IDopplerErrors.sol\":{\"keccak256\":\"0xf78efeb8a0d37914bae9be8c6ed70d54a1d48305b3f9e3f8b95d20f9685640ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1e51cc18a8367dc9363a958f179cf2e8af662cbe41474647aa78424be781120e\",\"dweb:/ipfs/QmNrxrY2P7FMRY7tJtV2n5eiPDyM5pRhBpn9wgDfgwdDCs\"]},\"node_modules/@zoralabs/coins/src/interfaces/IERC7572.sol\":{\"keccak256\":\"0xf42b7816c4ed223c89d93d71e64c2fd2222b37d1280bfd067f57ff3301b0a937\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9bff9cab44e297b6f01a044b44d0acf68319789d47634708c384a9c32962db9d\",\"dweb:/ipfs/QmTg4oAc7yoGJnk3cjMEYixboAjJLgL4ys3KNSsvvtX91u\"]},\"node_modules/@zoralabs/coins/src/interfaces/IHasRewardsRecipients.sol\":{\"keccak256\":\"0x88401512f4b4f197a0961b56e4f32f9660625dd238c7ed704bba8543a30087eb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e6ca303775da2421a341f23f73a5641fc159d57b37f091f9adb7d7f1da7f81b5\",\"dweb:/ipfs/QmPinYGLrFfZ5kZqRo7epqdybw5Bhc7Lzocw1nFvYpGqJR\"]},\"node_modules/@zoralabs/coins/src/interfaces/IUpgradeableV4Hook.sol\":{\"keccak256\":\"0x5a36e59307830bcddcb8ef0e19dd762625cf9c60b963b62e02b6563e053ba6d7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://161542fe80b54ebb967878953ecb94f65d36522d320c80f1b946ff5988ffcd9f\",\"dweb:/ipfs/QmZRoC2EiCsYwGAYxJBDpBYYnxjGumYfdMhTFPE89bHPVg\"]},\"node_modules/@zoralabs/coins/src/interfaces/IZoraV4CoinHook.sol\":{\"keccak256\":\"0x66b599b02c7b42b08c39d495350942053f0dcd845f3a931cf5d0e80db4262e37\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://028eab54390c4f05437e1e1bf8afc3cad71f1ea307d7b51b31d005b5381375f7\",\"dweb:/ipfs/QmQxRjsFrbH86P1sEuueAJQGSTi1UECKQEvVWbZkJbwHgM\"]},\"node_modules/@zoralabs/coins/src/types/LpPosition.sol\":{\"keccak256\":\"0x19dfc13b9f6a831ee7a624094c17a7c0b20bbc9ef62121dd98d85a8641d53aaf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fe77a4cb9ff9afbf7561ed647d15729b201259ef767d6c140a0b6e9254a97fe6\",\"dweb:/ipfs/QmaieKjUcT2SG2Spdg2sHzZso8zd5YTVsMRRoDzz6Kgn1t\"]},\"node_modules/@zoralabs/coins/src/types/PoolConfiguration.sol\":{\"keccak256\":\"0xaecffdbd5d6f33d9d3450a155d0a2efcdd8e0636cc473328dd852afef6a76b22\",\"license\":\"ZORA-DELAYED-OSL-v1\",\"urls\":[\"bzz-raw://20d8ed8f4a4f1b7657004faada7367b923c35f8f194fd853d5af7a8440bd7319\",\"dweb:/ipfs/QmUi9BT4rHdxUuycz3YBrowgpNdcKEoBfVDVYxsptQ8c8t\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.28+commit.7893614a"},"language":"Solidity","output":{"abi":[{"inputs":[],"type":"error","name":"CoinVersionLookupCannotBeZeroAddress"},{"inputs":[{"internalType":"address","name":"newHook","type":"address"}],"type":"error","name":"InvalidNewHook"},{"inputs":[{"internalType":"struct PoolKey","name":"key","type":"tuple","components":[{"internalType":"Currency","name":"currency0","type":"address"},{"internalType":"Currency","name":"currency1","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"int24","name":"tickSpacing","type":"int24"},{"internalType":"contract IHooks","name":"hooks","type":"address"}]}],"type":"error","name":"NoCoinForHook"},{"inputs":[{"internalType":"address","name":"coin","type":"address"}],"type":"error","name":"NotACoin"},{"inputs":[{"internalType":"address","name":"caller","type":"address"},{"internalType":"address","name":"expectedCoin","type":"address"}],"type":"error","name":"OnlyCoin"},{"inputs":[],"type":"error","name":"PathMustHaveAtLeastOneStep"},{"inputs":[],"type":"error","name":"TrustedMsgSenderLookupCannotBeZeroAddress"},{"inputs":[],"type":"error","name":"UpgradeGateCannotBeZeroAddress"},{"inputs":[{"internalType":"address","name":"oldHook","type":"address"},{"internalType":"address","name":"newHook","type":"address"}],"type":"error","name":"UpgradePathNotRegistered"},{"inputs":[],"type":"error","name":"ZoraHookRegistryCannotBeZeroAddress"},{"inputs":[],"type":"error","name":"ZoraLimitOrderBookCannotBeZeroAddress"},{"inputs":[{"internalType":"address","name":"coin","type":"address","indexed":false},{"internalType":"address","name":"currency","type":"address","indexed":false},{"internalType":"address","name":"payoutRecipient","type":"address","indexed":false},{"internalType":"address","name":"platformReferrer","type":"address","indexed":false},{"internalType":"address","name":"tradeReferrer","type":"address","indexed":false},{"internalType":"address","name":"protocolRewardRecipient","type":"address","indexed":false},{"internalType":"address","name":"dopplerRecipient","type":"address","indexed":false},{"internalType":"struct IZoraV4CoinHook.MarketRewardsV4","name":"marketRewards","type":"tuple","components":[{"internalType":"uint256","name":"creatorPayoutAmountCurrency","type":"uint256"},{"internalType":"uint256","name":"creatorPayoutAmountCoin","type":"uint256"},{"internalType":"uint256","name":"platformReferrerAmountCurrency","type":"uint256"},{"internalType":"uint256","name":"platformReferrerAmountCoin","type":"uint256"},{"internalType":"uint256","name":"tradeReferrerAmountCurrency","type":"uint256"},{"internalType":"uint256","name":"tradeReferrerAmountCoin","type":"uint256"},{"internalType":"uint256","name":"protocolAmountCurrency","type":"uint256"},{"internalType":"uint256","name":"protocolAmountCoin","type":"uint256"},{"internalType":"uint256","name":"dopplerAmountCurrency","type":"uint256"},{"internalType":"uint256","name":"dopplerAmountCoin","type":"uint256"}],"indexed":false}],"type":"event","name":"CoinMarketRewardsV4","anonymous":false},{"inputs":[{"internalType":"address","name":"coin","type":"address","indexed":true},{"internalType":"address","name":"currency","type":"address","indexed":true},{"internalType":"uint256","name":"amountCurrency","type":"uint256","indexed":false},{"internalType":"int24","name":"tick","type":"int24","indexed":false},{"internalType":"uint128","name":"liquidity","type":"uint128","indexed":false}],"type":"event","name":"LpReward","anonymous":false},{"inputs":[{"internalType":"address","name":"sender","type":"address","indexed":true},{"internalType":"address","name":"swapSender","type":"address","indexed":true},{"internalType":"bool","name":"isTrustedSwapSenderAddress","type":"bool","indexed":false},{"internalType":"struct PoolKey","name":"key","type":"tuple","components":[{"internalType":"Currency","name":"currency0","type":"address"},{"internalType":"Currency","name":"currency1","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"int24","name":"tickSpacing","type":"int24"},{"internalType":"contract IHooks","name":"hooks","type":"address"}],"indexed":false},{"internalType":"bytes32","name":"poolKeyHash","type":"bytes32","indexed":true},{"internalType":"struct SwapParams","name":"params","type":"tuple","components":[{"internalType":"bool","name":"zeroForOne","type":"bool"},{"internalType":"int256","name":"amountSpecified","type":"int256"},{"internalType":"uint160","name":"sqrtPriceLimitX96","type":"uint160"}],"indexed":false},{"internalType":"int128","name":"amount0","type":"int128","indexed":false},{"internalType":"int128","name":"amount1","type":"int128","indexed":false},{"internalType":"bool","name":"isCoinBuy","type":"bool","indexed":false},{"internalType":"bytes","name":"hookData","type":"bytes","indexed":false},{"internalType":"uint160","name":"sqrtPriceX96","type":"uint160","indexed":false}],"type":"event","name":"Swapped","anonymous":false},{"inputs":[{"internalType":"struct PoolKey","name":"key","type":"tuple","components":[{"internalType":"Currency","name":"currency0","type":"address"},{"internalType":"Currency","name":"currency1","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"int24","name":"tickSpacing","type":"int24"},{"internalType":"contract IHooks","name":"hooks","type":"address"}]}],"stateMutability":"view","type":"function","name":"getPoolCoin","outputs":[{"internalType":"struct IZoraV4CoinHook.PoolCoin","name":"","type":"tuple","components":[{"internalType":"address","name":"coin","type":"address"},{"internalType":"struct LpPosition[]","name":"positions","type":"tuple[]","components":[{"internalType":"int24","name":"tickLower","type":"int24"},{"internalType":"int24","name":"tickUpper","type":"int24"},{"internalType":"uint128","name":"liquidity","type":"uint128"}]}]}]},{"inputs":[{"internalType":"bytes32","name":"poolKeyHash","type":"bytes32"}],"stateMutability":"view","type":"function","name":"getPoolCoinByHash","outputs":[{"internalType":"struct IZoraV4CoinHook.PoolCoin","name":"","type":"tuple","components":[{"internalType":"address","name":"coin","type":"address"},{"internalType":"struct LpPosition[]","name":"positions","type":"tuple[]","components":[{"internalType":"int24","name":"tickLower","type":"int24"},{"internalType":"int24","name":"tickUpper","type":"int24"},{"internalType":"uint128","name":"liquidity","type":"uint128"}]}]}]},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"stateMutability":"view","type":"function","name":"isTrustedMessageSender","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"newHook","type":"address"},{"internalType":"struct PoolKey","name":"poolKey","type":"tuple","components":[{"internalType":"Currency","name":"currency0","type":"address"},{"internalType":"Currency","name":"currency1","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"int24","name":"tickSpacing","type":"int24"},{"internalType":"contract IHooks","name":"hooks","type":"address"}]},{"internalType":"bytes","name":"additionalData","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"migrateLiquidity","outputs":[{"internalType":"struct PoolKey","name":"newPoolKey","type":"tuple","components":[{"internalType":"Currency","name":"currency0","type":"address"},{"internalType":"Currency","name":"currency1","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"int24","name":"tickSpacing","type":"int24"},{"internalType":"contract IHooks","name":"hooks","type":"address"}]}]}],"devdoc":{"kind":"dev","methods":{"getPoolCoin((address,address,uint24,int24,address))":{"params":{"key":"The pool key."},"returns":{"_0":"poolCoin The pool coin confirmation data."}},"getPoolCoinByHash(bytes32)":{"params":{"poolKeyHash":"The hash of the pool key for indexing."},"returns":{"_0":"poolCoin The pool coin confirmation data."}},"isTrustedMessageSender(address)":{"params":{"sender":"The address of the sender."},"returns":{"_0":"isTrusted Whether the sender is a trusted message sender."}},"migrateLiquidity(address,(address,address,uint24,int24,address),bytes)":{"params":{"additionalData":"Additional data to pass to the new hook during initialization","newHook":"Address of the new hook implementation","poolKey":"The pool key to migrate"},"returns":{"newPoolKey":"The new pool key returned from the destination hook"}}},"version":1},"userdoc":{"kind":"user","methods":{"getPoolCoin((address,address,uint24,int24,address))":{"notice":"Returns the pool coin for a given pool key."},"getPoolCoinByHash(bytes32)":{"notice":"Returns the pool coin for a given pool key hash."},"isTrustedMessageSender(address)":{"notice":"Returns whether the sender is a trusted message sender."},"migrateLiquidity(address,(address,address,uint24,int24,address),bytes)":{"notice":"Migrate liquidity from this hook to a new hook"}},"version":1}},"settings":{"remappings":["@openzeppelin/=node_modules/@openzeppelin/","@uniswap/universal-router/contracts/=node_modules/@uniswap/universal-router/contracts/","@uniswap/v4-core/=node_modules/@uniswap/v4-core/","@uniswap/v4-periphery/=node_modules/@uniswap/v4-periphery/","@zoralabs/coins/=node_modules/@zoralabs/coins/","@zoralabs/shared-contracts/=node_modules/@zoralabs/shared-contracts/src/","ds-test/=node_modules/ds-test/src/","forge-std/=node_modules/forge-std/src/","permit2/src/=node_modules/@uniswap/permit2/src/","solady/=node_modules/solady/src/","solmate/=node_modules/solmate/src/"],"optimizer":{"enabled":true,"runs":100},"metadata":{"bytecodeHash":"none","appendCBOR":false},"compilationTarget":{"node_modules/@zoralabs/coins/src/interfaces/IZoraV4CoinHook.sol":"IZoraV4CoinHook"},"evmVersion":"prague","libraries":{},"viaIR":true},"sources":{"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c","urls":["bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617","dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u"],"license":"MIT"},"node_modules/@uniswap/v4-core/src/interfaces/IExtsload.sol":{"keccak256":"0x80b53ca4907d6f0088c3b931f2b72cad1dc4615a95094d96bd0fb8dff8d5ba43","urls":["bzz-raw://375c69148622aab7a3537d5fd37d373a8e9731022c8d87bdaee46233b0a99fe1","dweb:/ipfs/QmXFjdoYRxsA5B1kyuxEXgNf3FBoL1zPvy26Qy8EtpdFRN"],"license":"MIT"},"node_modules/@uniswap/v4-core/src/interfaces/IExttload.sol":{"keccak256":"0xc6b68283ebd8d1c789df536756726eed51c589134bb20821b236a0d22a135937","urls":["bzz-raw://294394f72dfc219689209f4130d85601dfd0d63c8d47578050d312db70f9b6c8","dweb:/ipfs/QmTDMQ3oxCGHgEBU48a3Lp4S1rRjc8vVCxkhE5ZNej1bsY"],"license":"MIT"},"node_modules/@uniswap/v4-core/src/interfaces/IHooks.sol":{"keccak256":"0xc131ffa2d04c10a012fe715fe2c115811526b7ea34285cf0a04ce7ce8320da8d","urls":["bzz-raw://3b212358897db5d99c21244d88f97b2e788527552cb430629b472a8cc6289aec","dweb:/ipfs/QmQtwV4dDe2RYk2ErLpaAX7U82jWh1L6Lw2HRuKDvBi84G"],"license":"MIT"},"node_modules/@uniswap/v4-core/src/interfaces/IPoolManager.sol":{"keccak256":"0xbdab3544da3d32dfdf7457baa94e17d5a3012952428559e013ffac45d067038e","urls":["bzz-raw://ce95ff864468e37c76adf71df061d4f3d6f3a5ec1f9bc3aea090463bc72798f4","dweb:/ipfs/QmSbWh1pLbz51yQF4HEu5NRhr8XVv9JYGEw1hq1HudAnCi"],"license":"MIT"},"node_modules/@uniswap/v4-core/src/interfaces/IProtocolFees.sol":{"keccak256":"0x32a666e588a2f66334430357bb1e2424fe7eebeb98a3364b1dd16eb6ccca9848","urls":["bzz-raw://85751d302125881f72e5f8af051c2d5d9b1f606ebaea8ca7d04fccdd27cc252d","dweb:/ipfs/QmeRwomeh9NWm6A6fgNA4KZPQZHPpdKsPQyYsHSFmvud7J"],"license":"MIT"},"node_modules/@uniswap/v4-core/src/interfaces/external/IERC20Minimal.sol":{"keccak256":"0xeccadf1bf69ba2eb51f2fe4fa511bc7bb05bbd6b9f9a3cb8e5d83d9582613e0f","urls":["bzz-raw://118757369892687b99ef46ce28d6861f62c098285bd7687a4f17f7e44e5f81de","dweb:/ipfs/QmUxqbYqQtcEwwFbb9e6BBMePEaSgN8C45v6RKubD4ib8d"],"license":"MIT"},"node_modules/@uniswap/v4-core/src/interfaces/external/IERC6909Claims.sol":{"keccak256":"0xa586f345739e52b0488a0fe40b6e375cce67fdd25758408b0efcb5133ad96a48","urls":["bzz-raw://e8c557b7e52abdbbd82e415a1acc27921446a7fd090b7d4877e52be72619547f","dweb:/ipfs/QmXE2KNPbXmGX8BQF3ei6zhzRTnhoTQg39XmqMnkhbr6QK"],"license":"MIT"},"node_modules/@uniswap/v4-core/src/libraries/CustomRevert.sol":{"keccak256":"0x111ed3031b6990c80a93ae35dde6b6ac0b7e6af471388fdd7461e91edda9b7de","urls":["bzz-raw://c9ea883c98d6ae1829160d0977bb5195761cfd5bc81692d0a941f45717f594cd","dweb:/ipfs/QmZPwxzaeMNv536wzrAMrMswu7vMHuqPVpjcqL3YvCMoxt"],"license":"MIT"},"node_modules/@uniswap/v4-core/src/libraries/SafeCast.sol":{"keccak256":"0x42c4a24f996a14d358be397b71f7ec9d7daf666aaec78002c63315a6ee67aa86","urls":["bzz-raw://c3db86e2ba3679105fc32edec656c70282e1fede6cab11217702443f6c26fa59","dweb:/ipfs/QmX4yaaSPdKQzYNRsezjTvZKsubzS8JRTEGFD3fPpTTCcj"],"license":"MIT"},"node_modules/@uniswap/v4-core/src/types/BalanceDelta.sol":{"keccak256":"0xa719c8fe51e0a9524280178f19f6851bcc3b3b60e73618f3d60905d35ae5569f","urls":["bzz-raw://7436928dc9de35c6c7c5c636cb51adaf295cfd590da83b19a004ae33cbec9ef9","dweb:/ipfs/QmRJ9yZkUpzk4433GX3LgVVL8jwpbSYSUwXcucKisf3v4H"],"license":"MIT"},"node_modules/@uniswap/v4-core/src/types/BeforeSwapDelta.sol":{"keccak256":"0x2a774312d91285313d569da1a718c909655da5432310417692097a1d4dc83a78","urls":["bzz-raw://a2c7a0379955cff9c17ab9e61f95e42909aa5947c22740f86ce940d09856f782","dweb:/ipfs/QmaAuo8UBYXsGrVuKh8iRoAAdqwtg1jDq515cW1ZRP5m9K"],"license":"MIT"},"node_modules/@uniswap/v4-core/src/types/Currency.sol":{"keccak256":"0x4a0b84b282577ff6f8acf13ec9f4d32dbb9348748b49611d00e68bee96609c93","urls":["bzz-raw://45f9d62ab3d51b52957279e353853ba1547c3182c9a1e3d1846ada4a90263b01","dweb:/ipfs/QmS8NG84ccQS1yXVD8cv3eKX7J1UKxuJhbUfHTQR2opKF5"],"license":"MIT"},"node_modules/@uniswap/v4-core/src/types/PoolId.sol":{"keccak256":"0x308311916ea0f5c2fd878b6a2751eb223d170a69e33f601fae56dfe3c5d392af","urls":["bzz-raw://669c2cd7ac17690b5d8831e0bda72822376c3a04b36afed6d31df4d75fe60918","dweb:/ipfs/QmT6EpkxqU8VF3WsgrZ66F3s1cCQRffR95z1HDYZz7ph6y"],"license":"MIT"},"node_modules/@uniswap/v4-core/src/types/PoolKey.sol":{"keccak256":"0xf89856e0580d7a4856d3187a76858377ccee9d59702d230c338d84388221b786","urls":["bzz-raw://6f3118fa189025695c37fdf0bdd1190f085ad097484d3c88cf4c56d1db65f639","dweb:/ipfs/QmamXpgtB8GV1CaFLvqefPWSoikLDhMk1yU4heBnVzU8gi"],"license":"MIT"},"node_modules/@uniswap/v4-core/src/types/PoolOperation.sol":{"keccak256":"0x7a1a107fc1f2208abb2c9364c8c54e56e98dca27673e9441bed2b949b6382162","urls":["bzz-raw://4ad2470383bc5595d5af17840c64971f457adac68895a4db41ba5c71a4478e07","dweb:/ipfs/QmdwKhBHDZFuqXrR2BfDBD9r7rB2ULGQBznsajRTkTmL4c"],"license":"MIT"},"node_modules/@uniswap/v4-periphery/src/libraries/PathKey.sol":{"keccak256":"0xbbd79ffefe045f025263e389539021266fb4d371463aefba405e1ff1d3fcf9bc","urls":["bzz-raw://2d1c47b81a01218be46ee79f0a8837095479b94dc5cfd18abbf2006709f0ea89","dweb:/ipfs/QmRb6CQ13Zp7f3WF5jbZtsF2szhxpPgcuWs9mjwQXxzqtg"],"license":"MIT"},"node_modules/@zoralabs/coins/src/interfaces/ICoin.sol":{"keccak256":"0xff3bcd3254ea7e582b75eebbff7436f20a2d485d9999974e02e98cc94217790c","urls":["bzz-raw://898dd5381336d821fff4a637be1bb667b6f24006ebe8f2df56a530f3fbe01fc3","dweb:/ipfs/QmayrLdYhSPvjDzDA7Mss1i1SjJ5uorndpDZkVn1LQ2YSU"],"license":"MIT"},"node_modules/@zoralabs/coins/src/interfaces/IDeployedCoinVersionLookup.sol":{"keccak256":"0x2d9efe898233cf17e24e266d8bd6d197b4dde07fae8b954f247b1c04262b96ba","urls":["bzz-raw://550fbe232af1052e113c1e664f4adf0c514501c38669d82bb4debd57e5842baa","dweb:/ipfs/QmRBzWwCvmWZEBh6uRHvdzZQCW7Q8pgGg8Sc9hD7p5UuLK"],"license":"MIT"},"node_modules/@zoralabs/coins/src/interfaces/IDopplerErrors.sol":{"keccak256":"0xf78efeb8a0d37914bae9be8c6ed70d54a1d48305b3f9e3f8b95d20f9685640ea","urls":["bzz-raw://1e51cc18a8367dc9363a958f179cf2e8af662cbe41474647aa78424be781120e","dweb:/ipfs/QmNrxrY2P7FMRY7tJtV2n5eiPDyM5pRhBpn9wgDfgwdDCs"],"license":"MIT"},"node_modules/@zoralabs/coins/src/interfaces/IERC7572.sol":{"keccak256":"0xf42b7816c4ed223c89d93d71e64c2fd2222b37d1280bfd067f57ff3301b0a937","urls":["bzz-raw://9bff9cab44e297b6f01a044b44d0acf68319789d47634708c384a9c32962db9d","dweb:/ipfs/QmTg4oAc7yoGJnk3cjMEYixboAjJLgL4ys3KNSsvvtX91u"],"license":"MIT"},"node_modules/@zoralabs/coins/src/interfaces/IHasRewardsRecipients.sol":{"keccak256":"0x88401512f4b4f197a0961b56e4f32f9660625dd238c7ed704bba8543a30087eb","urls":["bzz-raw://e6ca303775da2421a341f23f73a5641fc159d57b37f091f9adb7d7f1da7f81b5","dweb:/ipfs/QmPinYGLrFfZ5kZqRo7epqdybw5Bhc7Lzocw1nFvYpGqJR"],"license":"MIT"},"node_modules/@zoralabs/coins/src/interfaces/IUpgradeableV4Hook.sol":{"keccak256":"0x5a36e59307830bcddcb8ef0e19dd762625cf9c60b963b62e02b6563e053ba6d7","urls":["bzz-raw://161542fe80b54ebb967878953ecb94f65d36522d320c80f1b946ff5988ffcd9f","dweb:/ipfs/QmZRoC2EiCsYwGAYxJBDpBYYnxjGumYfdMhTFPE89bHPVg"],"license":"MIT"},"node_modules/@zoralabs/coins/src/interfaces/IZoraV4CoinHook.sol":{"keccak256":"0x66b599b02c7b42b08c39d495350942053f0dcd845f3a931cf5d0e80db4262e37","urls":["bzz-raw://028eab54390c4f05437e1e1bf8afc3cad71f1ea307d7b51b31d005b5381375f7","dweb:/ipfs/QmQxRjsFrbH86P1sEuueAJQGSTi1UECKQEvVWbZkJbwHgM"],"license":"MIT"},"node_modules/@zoralabs/coins/src/types/LpPosition.sol":{"keccak256":"0x19dfc13b9f6a831ee7a624094c17a7c0b20bbc9ef62121dd98d85a8641d53aaf","urls":["bzz-raw://fe77a4cb9ff9afbf7561ed647d15729b201259ef767d6c140a0b6e9254a97fe6","dweb:/ipfs/QmaieKjUcT2SG2Spdg2sHzZso8zd5YTVsMRRoDzz6Kgn1t"],"license":"MIT"},"node_modules/@zoralabs/coins/src/types/PoolConfiguration.sol":{"keccak256":"0xaecffdbd5d6f33d9d3450a155d0a2efcdd8e0636cc473328dd852afef6a76b22","urls":["bzz-raw://20d8ed8f4a4f1b7657004faada7367b923c35f8f194fd853d5af7a8440bd7319","dweb:/ipfs/QmUi9BT4rHdxUuycz3YBrowgpNdcKEoBfVDVYxsptQ8c8t"],"license":"ZORA-DELAYED-OSL-v1"}},"version":1},"id":54}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"abi":[],"bytecode":{"object":"0x6080806040523460175760039081601c823930815050f35b5f80fdfe5f80fd","sourceMap":"
|
|
1
|
+
{"abi":[],"bytecode":{"object":"0x6080806040523460175760039081601c823930815050f35b5f80fdfe5f80fd","sourceMap":"650:832:79:-:0;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x5f80fd","sourceMap":"650:832:79:-:0;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/libs/LimitOrderBitmap.sol\":\"LimitOrderBitmap\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"appendCBOR\":false,\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":100},\"remappings\":[\":@openzeppelin/=node_modules/@openzeppelin/\",\":@uniswap/universal-router/contracts/=node_modules/@uniswap/universal-router/contracts/\",\":@uniswap/v4-core/=node_modules/@uniswap/v4-core/\",\":@uniswap/v4-periphery/=node_modules/@uniswap/v4-periphery/\",\":@zoralabs/coins/=node_modules/@zoralabs/coins/\",\":@zoralabs/shared-contracts/=node_modules/@zoralabs/shared-contracts/src/\",\":ds-test/=node_modules/ds-test/src/\",\":forge-std/=node_modules/forge-std/src/\",\":permit2/src/=node_modules/@uniswap/permit2/src/\",\":solady/=node_modules/solady/src/\",\":solmate/=node_modules/solmate/src/\"],\"viaIR\":true},\"sources\":{\"node_modules/@uniswap/v4-core/src/libraries/BitMath.sol\":{\"keccak256\":\"0x51b9be4f5c4fd3e80cbc9631a65244a2eb2be250b6b7f128a2035080e18aee8d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fe98bbd5498e912146b9319827fc63621eb66ff55d5baae0fa02a7a972ab8d1e\",\"dweb:/ipfs/QmY5hCuyrtgsJtk4AavrxcvBkRrChfr4N6ZnhdC8roPpNi\"]},\"node_modules/@uniswap/v4-core/src/libraries/TickBitmap.sol\":{\"keccak256\":\"0x6779f89e28a0b4af6e09d518caf014b7e8fc627400f5561f86fed11635b1458a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a64dee983106de3be3f968be94368c1e37592f5418aa2a39e8dd358d5a962b0d\",\"dweb:/ipfs/QmYuECZTiEeQVxDLYx6pBSSnVrg56Apw75bugQiM3FmGwy\"]},\"src/libs/LimitOrderBitmap.sol\":{\"keccak256\":\"0xfc20115f2904be299412fa90b8a7573c429ed67d690a351168d6f495333e4471\",\"license\":\"ZORA-DELAYED-OSL-v1\",\"urls\":[\"bzz-raw://5e3acc0f3f7035bffa06d67f489dd345e0781098502ae25a3284eba7d2bbd8c5\",\"dweb:/ipfs/QmXN2DQn7VZ5aYc5xmX5uezJejVusWhhSgAXrvN8jmxM3Y\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.28+commit.7893614a"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=node_modules/@openzeppelin/","@uniswap/universal-router/contracts/=node_modules/@uniswap/universal-router/contracts/","@uniswap/v4-core/=node_modules/@uniswap/v4-core/","@uniswap/v4-periphery/=node_modules/@uniswap/v4-periphery/","@zoralabs/coins/=node_modules/@zoralabs/coins/","@zoralabs/shared-contracts/=node_modules/@zoralabs/shared-contracts/src/","ds-test/=node_modules/ds-test/src/","forge-std/=node_modules/forge-std/src/","permit2/src/=node_modules/@uniswap/permit2/src/","solady/=node_modules/solady/src/","solmate/=node_modules/solmate/src/"],"optimizer":{"enabled":true,"runs":100},"metadata":{"bytecodeHash":"none","appendCBOR":false},"compilationTarget":{"src/libs/LimitOrderBitmap.sol":"LimitOrderBitmap"},"evmVersion":"prague","libraries":{},"viaIR":true},"sources":{"node_modules/@uniswap/v4-core/src/libraries/BitMath.sol":{"keccak256":"0x51b9be4f5c4fd3e80cbc9631a65244a2eb2be250b6b7f128a2035080e18aee8d","urls":["bzz-raw://fe98bbd5498e912146b9319827fc63621eb66ff55d5baae0fa02a7a972ab8d1e","dweb:/ipfs/QmY5hCuyrtgsJtk4AavrxcvBkRrChfr4N6ZnhdC8roPpNi"],"license":"MIT"},"node_modules/@uniswap/v4-core/src/libraries/TickBitmap.sol":{"keccak256":"0x6779f89e28a0b4af6e09d518caf014b7e8fc627400f5561f86fed11635b1458a","urls":["bzz-raw://a64dee983106de3be3f968be94368c1e37592f5418aa2a39e8dd358d5a962b0d","dweb:/ipfs/QmYuECZTiEeQVxDLYx6pBSSnVrg56Apw75bugQiM3FmGwy"],"license":"MIT"},"src/libs/LimitOrderBitmap.sol":{"keccak256":"0xfc20115f2904be299412fa90b8a7573c429ed67d690a351168d6f495333e4471","urls":["bzz-raw://5e3acc0f3f7035bffa06d67f489dd345e0781098502ae25a3284eba7d2bbd8c5","dweb:/ipfs/QmXN2DQn7VZ5aYc5xmX5uezJejVusWhhSgAXrvN8jmxM3Y"],"license":"ZORA-DELAYED-OSL-v1"}},"version":1},"id":79}
|