@zoralabs/limit-orders 0.2.0 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (84) hide show
  1. package/.turbo/turbo-build$colon$js.log +47 -45
  2. package/CHANGELOG.md +61 -0
  3. package/abis/IWETH.json +118 -0
  4. package/abis/IZoraLimitOrderBook.json +5 -0
  5. package/abis/LimitOrderLiquidity.json +7 -0
  6. package/abis/LimitOrderViews.json +62 -0
  7. package/abis/SwapWithLimitOrders.json +18 -11
  8. package/abis/ZoraLimitOrderBook.json +28 -0
  9. package/cache/solidity-files-cache.json +1 -1
  10. package/dist/index.cjs +29 -8
  11. package/dist/index.cjs.map +1 -1
  12. package/dist/index.js +29 -8
  13. package/dist/index.js.map +1 -1
  14. package/dist/wagmiGenerated.d.ts +37 -9
  15. package/dist/wagmiGenerated.d.ts.map +1 -1
  16. package/out/BytesLib.sol/BytesLib.json +1 -1
  17. package/out/CoinCommon.sol/CoinCommon.json +1 -1
  18. package/out/CoinConfigurationVersions.sol/CoinConfigurationVersions.json +1 -1
  19. package/out/CoinConstants.sol/CoinConstants.json +1 -1
  20. package/out/DopplerMath.sol/DopplerMath.json +1 -1
  21. package/out/FixedPoint96.sol/FixedPoint96.json +1 -1
  22. package/out/ISwapRouter.sol/ISwapRouter.json +1 -1
  23. package/out/IUniswapV3SwapCallback.sol/IUniswapV3SwapCallback.json +1 -1
  24. package/out/IWETH.sol/IWETH.json +1 -0
  25. package/out/IZoraHookRegistry.sol/IZoraHookRegistry.json +1 -1
  26. package/out/IZoraLimitOrderBook.sol/IZoraLimitOrderBook.json +1 -1
  27. package/out/IZoraLimitOrderBookCoinsInterface.sol/IZoraLimitOrderBookCoinsInterface.json +1 -1
  28. package/out/IZoraV4CoinHook.sol/IZoraV4CoinHook.json +1 -1
  29. package/out/LimitOrderBitmap.sol/LimitOrderBitmap.json +1 -1
  30. package/out/LimitOrderCommon.sol/LimitOrderCommon.json +1 -1
  31. package/out/LimitOrderCreate.sol/LimitOrderCreate.json +1 -1
  32. package/out/LimitOrderFill.sol/LimitOrderFill.json +1 -1
  33. package/out/LimitOrderLiquidity.sol/LimitOrderLiquidity.json +1 -1
  34. package/out/LimitOrderQueues.sol/LimitOrderQueues.json +1 -1
  35. package/out/LimitOrderStorage.sol/LimitOrderStorage.json +1 -1
  36. package/out/LimitOrderTypes.sol/LimitOrderTypes.json +1 -1
  37. package/out/LimitOrderViews.sol/LimitOrderViews.json +1 -0
  38. package/out/LimitOrderWithdraw.sol/LimitOrderWithdraw.json +1 -1
  39. package/out/LiquidityAmounts.sol/LiquidityAmounts.json +1 -1
  40. package/out/Path.sol/Path.json +1 -1
  41. package/out/Permit2Payments.sol/Permit2Payments.json +1 -1
  42. package/out/SimpleAccessManaged.sol/SimpleAccessManaged.json +1 -1
  43. package/out/SimpleAccessManager.sol/SimpleAccessManager.json +1 -1
  44. package/out/SqrtPriceMath.sol/SqrtPriceMath.json +1 -1
  45. package/out/SwapLimitOrders.sol/SwapLimitOrders.json +1 -1
  46. package/out/SwapWithLimitOrders.sol/SwapWithLimitOrders.json +1 -1
  47. package/out/UniV4SwapToCurrency.sol/UniV4SwapToCurrency.json +1 -1
  48. package/out/UnsafeMath.sol/UnsafeMath.json +1 -1
  49. package/out/V3ToV4SwapLib.sol/V3ToV4SwapLib.json +1 -1
  50. package/out/ZoraLimitOrderBook.sol/ZoraLimitOrderBook.json +1 -1
  51. package/out/build-info/{69718f10d1dc37f0.json → 876cc09bc44cc8a7.json} +1 -1
  52. package/out/uniswap/BitMath.sol/BitMath.json +1 -1
  53. package/out/uniswap/CustomRevert.sol/CustomRevert.json +1 -1
  54. package/out/uniswap/FullMath.sol/FullMath.json +1 -1
  55. package/out/uniswap/SafeCast.sol/SafeCast.json +1 -1
  56. package/out/uniswap/TickMath.sol/TickMath.json +1 -1
  57. package/package/wagmiGenerated.ts +28 -7
  58. package/package.json +1 -1
  59. package/src/IZoraLimitOrderBook.sol +2 -0
  60. package/src/ZoraLimitOrderBook.sol +22 -8
  61. package/src/libs/LimitOrderBitmap.sol +0 -51
  62. package/src/libs/LimitOrderCommon.sol +48 -30
  63. package/src/libs/LimitOrderCreate.sol +5 -18
  64. package/src/libs/LimitOrderFill.sol +32 -161
  65. package/src/libs/LimitOrderLiquidity.sol +92 -71
  66. package/src/libs/LimitOrderViews.sol +168 -0
  67. package/src/libs/LimitOrderWithdraw.sol +13 -4
  68. package/src/libs/SwapLimitOrders.sol +14 -7
  69. package/src/router/SwapWithLimitOrders.sol +40 -26
  70. package/test/LimitOrderBitmap.t.sol +13 -7
  71. package/test/LimitOrderFill.t.sol +43 -0
  72. package/test/LimitOrderLibraries.t.sol +18 -10
  73. package/test/LimitOrderLiquidityPayouts.t.sol +280 -3
  74. package/test/LimitOrderWithdraw.t.sol +28 -1
  75. package/test/SwapWithLimitOrders.t.sol +3 -3
  76. package/test/SwapWithLimitOrdersRouter.t.sol +108 -11
  77. package/test/unit/LimitOrderBitmapUnit.t.sol +0 -134
  78. package/test/unit/LimitOrderCreateUnit.t.sol +32 -0
  79. package/test/unit/SwapLimitOrdersUnit.t.sol +231 -33
  80. package/test/unit/SwapLimitOrdersValidation.t.sol +20 -34
  81. package/test/unit/SwapWithLimitOrdersUnit.t.sol +21 -88
  82. package/test/utils/BaseTest.sol +29 -8
  83. package/test/utils/MockWETH.sol +39 -0
  84. package/test/utils/TestableZoraLimitOrderBook.sol +5 -7
@@ -1 +1 @@
1
- {"abi":[{"type":"function","name":"balanceOf","inputs":[{"name":"maker","type":"address","internalType":"address"},{"name":"coin","type":"address","internalType":"address"}],"outputs":[{"name":"balance","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"create","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"}]},{"name":"isCurrency0","type":"bool","internalType":"bool"},{"name":"orderSizes","type":"uint256[]","internalType":"uint256[]"},{"name":"orderTicks","type":"int24[]","internalType":"int24[]"},{"name":"maker","type":"address","internalType":"address"}],"outputs":[{"name":"orderIds","type":"bytes32[]","internalType":"bytes32[]"}],"stateMutability":"payable"},{"type":"function","name":"fill","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"}]},{"name":"isCurrency0","type":"bool","internalType":"bool"},{"name":"startTick","type":"int24","internalType":"int24"},{"name":"endTick","type":"int24","internalType":"int24"},{"name":"maxFillCount","type":"uint256","internalType":"uint256"},{"name":"fillReferral","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"fill","inputs":[{"name":"batches","type":"tuple[]","internalType":"struct IZoraLimitOrderBook.OrderBatch[]","components":[{"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"}]},{"name":"isCurrency0","type":"bool","internalType":"bool"},{"name":"orderIds","type":"bytes32[]","internalType":"bytes32[]"}]},{"name":"fillReferral","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"getMaxFillCount","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"setMaxFillCount","inputs":[{"name":"maxFillCount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"withdraw","inputs":[{"name":"orderIds","type":"bytes32[]","internalType":"bytes32[]"},{"name":"coin","type":"address","internalType":"address"},{"name":"minAmountOut","type":"uint256","internalType":"uint256"},{"name":"recipient","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"LimitOrderCreated","inputs":[{"name":"maker","type":"address","indexed":true,"internalType":"address"},{"name":"coin","type":"address","indexed":true,"internalType":"address"},{"name":"poolKeyHash","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"isCurrency0","type":"bool","indexed":false,"internalType":"bool"},{"name":"orderTick","type":"int24","indexed":false,"internalType":"int24"},{"name":"currentTick","type":"int24","indexed":false,"internalType":"int24"},{"name":"orderSize","type":"uint128","indexed":false,"internalType":"uint128"},{"name":"orderId","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"LimitOrderFilled","inputs":[{"name":"maker","type":"address","indexed":true,"internalType":"address"},{"name":"coinIn","type":"address","indexed":true,"internalType":"address"},{"name":"coinOut","type":"address","indexed":false,"internalType":"address"},{"name":"amountIn","type":"uint128","indexed":false,"internalType":"uint128"},{"name":"amountOut","type":"uint128","indexed":false,"internalType":"uint128"},{"name":"fillReferral","type":"address","indexed":false,"internalType":"address"},{"name":"fillReferralAmount","type":"uint128","indexed":false,"internalType":"uint128"},{"name":"poolKeyHash","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"tick","type":"int24","indexed":false,"internalType":"int24"},{"name":"orderId","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"LimitOrderUpdated","inputs":[{"name":"maker","type":"address","indexed":true,"internalType":"address"},{"name":"coin","type":"address","indexed":true,"internalType":"address"},{"name":"poolKeyHash","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"isCurrency0","type":"bool","indexed":false,"internalType":"bool"},{"name":"tick","type":"int24","indexed":false,"internalType":"int24"},{"name":"orderSize","type":"uint128","indexed":false,"internalType":"uint128"},{"name":"orderId","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"isCancelled","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"MakerBalanceUpdated","inputs":[{"name":"maker","type":"address","indexed":true,"internalType":"address"},{"name":"coin","type":"address","indexed":true,"internalType":"address"},{"name":"newBalance","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"AddressZero","inputs":[]},{"type":"error","name":"ArrayLengthMismatch","inputs":[]},{"type":"error","name":"CoinMismatch","inputs":[{"name":"orderId","type":"bytes32","internalType":"bytes32"},{"name":"expectedCoin","type":"address","internalType":"address"},{"name":"actualCoin","type":"address","internalType":"address"}]},{"type":"error","name":"InsufficientForwardedFunds","inputs":[]},{"type":"error","name":"InsufficientTransferFunds","inputs":[]},{"type":"error","name":"InvalidFillWindow","inputs":[{"name":"startTick","type":"int24","internalType":"int24"},{"name":"endTick","type":"int24","internalType":"int24"},{"name":"isCurrency0","type":"bool","internalType":"bool"}]},{"type":"error","name":"InvalidOrder","inputs":[]},{"type":"error","name":"InvalidPoolKey","inputs":[]},{"type":"error","name":"MaxFillCountCannotBeZero","inputs":[]},{"type":"error","name":"MinAmountNotReached","inputs":[{"name":"withdrawn","type":"uint256","internalType":"uint256"},{"name":"minAmountOut","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"NativeValueMismatch","inputs":[]},{"type":"error","name":"NotPoolManager","inputs":[]},{"type":"error","name":"OnlyZoraHook","inputs":[]},{"type":"error","name":"OrderClosed","inputs":[]},{"type":"error","name":"OrderNotMaker","inputs":[]},{"type":"error","name":"RouterMsgSenderInvalid","inputs":[]},{"type":"error","name":"UnknownCallback","inputs":[]},{"type":"error","name":"UnlockedFillNotAllowed","inputs":[]},{"type":"error","name":"ZeroMaker","inputs":[]},{"type":"error","name":"ZeroOrderSize","inputs":[]},{"type":"error","name":"ZeroRealizedOrder","inputs":[]}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"balanceOf(address,address)":"f7888aec","create((address,address,uint24,int24,address),bool,uint256[],int24[],address)":"eb07ed24","fill(((address,address,uint24,int24,address),bool,bytes32[])[],address)":"7a9cf273","fill((address,address,uint24,int24,address),bool,int24,int24,uint256,address)":"5f8fbad6","getMaxFillCount()":"d8c31772","setMaxFillCount(uint256)":"c96d060b","withdraw(bytes32[],address,uint256,address)":"c2ec68ea"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"AddressZero\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ArrayLengthMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"orderId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"expectedCoin\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"actualCoin\",\"type\":\"address\"}],\"name\":\"CoinMismatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientForwardedFunds\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientTransferFunds\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"int24\",\"name\":\"startTick\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"endTick\",\"type\":\"int24\"},{\"internalType\":\"bool\",\"name\":\"isCurrency0\",\"type\":\"bool\"}],\"name\":\"InvalidFillWindow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidOrder\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPoolKey\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxFillCountCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"withdrawn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minAmountOut\",\"type\":\"uint256\"}],\"name\":\"MinAmountNotReached\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NativeValueMismatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotPoolManager\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyZoraHook\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OrderClosed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OrderNotMaker\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RouterMsgSenderInvalid\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnknownCallback\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnlockedFillNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroMaker\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroOrderSize\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroRealizedOrder\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"maker\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"coin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"poolKeyHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"isCurrency0\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"int24\",\"name\":\"orderTick\",\"type\":\"int24\"},{\"indexed\":false,\"internalType\":\"int24\",\"name\":\"currentTick\",\"type\":\"int24\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"orderSize\",\"type\":\"uint128\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"orderId\",\"type\":\"bytes32\"}],\"name\":\"LimitOrderCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"maker\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"coinIn\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"coinOut\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"amountIn\",\"type\":\"uint128\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"amountOut\",\"type\":\"uint128\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"fillReferral\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"fillReferralAmount\",\"type\":\"uint128\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"poolKeyHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"int24\",\"name\":\"tick\",\"type\":\"int24\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"orderId\",\"type\":\"bytes32\"}],\"name\":\"LimitOrderFilled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"maker\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"coin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"poolKeyHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"isCurrency0\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"int24\",\"name\":\"tick\",\"type\":\"int24\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"orderSize\",\"type\":\"uint128\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"orderId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"isCancelled\",\"type\":\"bool\"}],\"name\":\"LimitOrderUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"maker\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"coin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newBalance\",\"type\":\"uint256\"}],\"name\":\"MakerBalanceUpdated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"maker\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"coin\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"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\"},{\"internalType\":\"bool\",\"name\":\"isCurrency0\",\"type\":\"bool\"},{\"internalType\":\"uint256[]\",\"name\":\"orderSizes\",\"type\":\"uint256[]\"},{\"internalType\":\"int24[]\",\"name\":\"orderTicks\",\"type\":\"int24[]\"},{\"internalType\":\"address\",\"name\":\"maker\",\"type\":\"address\"}],\"name\":\"create\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"orderIds\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"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\"},{\"internalType\":\"bool\",\"name\":\"isCurrency0\",\"type\":\"bool\"},{\"internalType\":\"int24\",\"name\":\"startTick\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"endTick\",\"type\":\"int24\"},{\"internalType\":\"uint256\",\"name\":\"maxFillCount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"fillReferral\",\"type\":\"address\"}],\"name\":\"fill\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"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\"},{\"internalType\":\"bool\",\"name\":\"isCurrency0\",\"type\":\"bool\"},{\"internalType\":\"bytes32[]\",\"name\":\"orderIds\",\"type\":\"bytes32[]\"}],\"internalType\":\"struct IZoraLimitOrderBook.OrderBatch[]\",\"name\":\"batches\",\"type\":\"tuple[]\"},{\"internalType\":\"address\",\"name\":\"fillReferral\",\"type\":\"address\"}],\"name\":\"fill\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMaxFillCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"maxFillCount\",\"type\":\"uint256\"}],\"name\":\"setMaxFillCount\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"orderIds\",\"type\":\"bytes32[]\"},{\"internalType\":\"address\",\"name\":\"coin\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"minAmountOut\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"balanceOf(address,address)\":{\"params\":{\"coin\":\"Address of the coin (use address(0) for native ETH).\",\"maker\":\"Address of the maker.\"},\"returns\":{\"balance\":\"Total value of open orders.\"}},\"create((address,address,uint24,int24,address),bool,uint256[],int24[],address)\":{\"details\":\"This function is access-controlled via OpenZeppelin's AccessManager. The caller must have the appropriate role as configured in the AccessManager contract. Initially, this can be set to PUBLIC_ROLE to allow anyone to create orders, or it can be restricted to specific addresses/roles for permissioned operation.\",\"params\":{\"isCurrency0\":\"Whether the orders are denominated in currency0.\",\"key\":\"Pool key specifying currency pair and tick spacing.\",\"maker\":\"Address of the maker who will own the orders.\",\"orderSizes\":\"Order liquidity sizes.\",\"orderTicks\":\"Corresponding ticks.\"},\"returns\":{\"orderIds\":\"Deterministic order identifiers.\"}},\"fill(((address,address,uint24,int24,address),bool,bytes32[])[],address)\":{\"params\":{\"batches\":\"Array of per-pool batches containing order ids to process.\",\"fillReferral\":\"Address to receive accrued LP fees; use address(0) to give fees to maker.\"}},\"fill((address,address,uint24,int24,address),bool,int24,int24,uint256,address)\":{\"params\":{\"endTick\":\"Inclusive ending tick. Use `type(int24).max` for the default upper bound.\",\"fillReferral\":\"Address to receive accrued LP fees; use address(0) to give fees to maker.\",\"isCurrency0\":\"Whether currency0 orders are targeted; otherwise currency1.\",\"key\":\"Pool key whose orders should be processed.\",\"maxFillCount\":\"Maximum orders to fill in this pass.\",\"startTick\":\"Inclusive starting tick. Use `-type(int24).max` for the default lower bound.\"}},\"setMaxFillCount(uint256)\":{\"details\":\"This function is access-controlled via OpenZeppelin's AccessManager. The caller must have the appropriate role as configured in the AccessManager contract.\",\"params\":{\"maxFillCount\":\"The new maximum fill count value.\"}},\"withdraw(bytes32[],address,uint256,address)\":{\"details\":\"Orders are cancelled sequentially until minAmountOut is reached. If minAmountOut is 0, all provided orders are cancelled. Reverts if total withdrawn is less than minAmountOut.\",\"params\":{\"coin\":\"The coin address that all orders must match (use address(0) for native ETH).\",\"minAmountOut\":\"Minimum amount to withdraw (0 = cancel all provided orders).\",\"orderIds\":\"Order identifiers to cancel.\",\"recipient\":\"Destination for returned assets.\"}}},\"version\":1},\"userdoc\":{\"errors\":{\"AddressZero()\":[{\"notice\":\"Address argument was zero.\"}],\"ArrayLengthMismatch()\":[{\"notice\":\"Input arrays must have equal length.\"}],\"CoinMismatch(bytes32,address,address)\":[{\"notice\":\"Order coin does not match expected coin for batch withdrawal.\"}],\"InsufficientForwardedFunds()\":[{\"notice\":\"Forwarded funds from hook were insufficient.\"}],\"InsufficientTransferFunds()\":[{\"notice\":\"Transfer in of funds failed or was insufficient.\"}],\"InvalidFillWindow(int24,int24,bool)\":[{\"notice\":\"Tick range inputs were invalid or misaligned.\"}],\"InvalidOrder()\":[{\"notice\":\"Order id was not found.\"}],\"InvalidPoolKey()\":[{\"notice\":\"Referenced pool key hash is unknown.\"}],\"MaxFillCountCannotBeZero()\":[{\"notice\":\"Fill requests must cap the number of orders processed.\"}],\"MinAmountNotReached(uint256,uint256)\":[{\"notice\":\"Withdrawal did not reach minimum amount threshold.\"}],\"NativeValueMismatch()\":[{\"notice\":\"Supplied ETH must match expected amount.\"}],\"NotPoolManager()\":[{\"notice\":\"Caller must be the configured pool manager.\"}],\"OnlyZoraHook()\":[{\"notice\":\"Caller must be a registered Zora hook.\"}],\"OrderClosed()\":[{\"notice\":\"Order is no longer open.\"}],\"OrderNotMaker()\":[{\"notice\":\"Operation attempted by non-maker.\"}],\"RouterMsgSenderInvalid()\":[{\"notice\":\"Router caller failed to expose the original message sender.\"}],\"UnknownCallback()\":[{\"notice\":\"Unlock callback id was not recognized.\"}],\"UnlockedFillNotAllowed()\":[{\"notice\":\"Non-hook caller attempted to fill orders while pool is unlocked.\"}],\"ZeroMaker()\":[{\"notice\":\"Maker address cannot be zero.\"}],\"ZeroOrderSize()\":[{\"notice\":\"Orders must specify a non-zero size.\"}],\"ZeroRealizedOrder()\":[{\"notice\":\"Callback realized zero fills when one was expected.\"}]},\"events\":{\"LimitOrderCreated(address,address,bytes32,bool,int24,int24,uint128,bytes32)\":{\"notice\":\"Emitted when a new order joins a tick queue.\"},\"LimitOrderFilled(address,address,address,uint128,uint128,address,uint128,bytes32,int24,bytes32)\":{\"notice\":\"Emitted when an order is filled and removed from the book.\"},\"LimitOrderUpdated(address,address,bytes32,bool,int24,uint128,bytes32,bool)\":{\"notice\":\"Emitted when an order is amended or marked inactive.\"},\"MakerBalanceUpdated(address,address,uint256)\":{\"notice\":\"Emitted when a maker's aggregate balance for a coin changes.\"}},\"kind\":\"user\",\"methods\":{\"balanceOf(address,address)\":{\"notice\":\"Returns the aggregate balance of open orders for a maker/coin pair.\"},\"create((address,address,uint24,int24,address),bool,uint256[],int24[],address)\":{\"notice\":\"Creates limit orders, pulling funds from msg.sender when pool manager is locked, or using funds already in manager when unlocked.\"},\"fill(((address,address,uint24,int24,address),bool,bytes32[])[],address)\":{\"notice\":\"Fills explicit order ids grouped by pool.\"},\"fill((address,address,uint24,int24,address),bool,int24,int24,uint256,address)\":{\"notice\":\"Fills limit orders within a tick window.\"},\"setMaxFillCount(uint256)\":{\"notice\":\"Sets the maximum number of orders that can be filled in a single fill operation.\"},\"withdraw(bytes32[],address,uint256,address)\":{\"notice\":\"Cancels orders and withdraws resulting funds to a recipient.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/IZoraLimitOrderBook.sol\":\"IZoraLimitOrderBook\"},\"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/interfaces/IHooks.sol\":{\"keccak256\":\"0xc131ffa2d04c10a012fe715fe2c115811526b7ea34285cf0a04ce7ce8320da8d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3b212358897db5d99c21244d88f97b2e788527552cb430629b472a8cc6289aec\",\"dweb:/ipfs/QmQtwV4dDe2RYk2ErLpaAX7U82jWh1L6Lw2HRuKDvBi84G\"]},\"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/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/@zoralabs/coins/src/interfaces/IZoraLimitOrderBookCoinsInterface.sol\":{\"keccak256\":\"0xcf41c76b6dcf12b79c26ba93040c0ec6b68614c00597203c9330f4b769dcd389\",\"license\":\"ZORA-DELAYED-OSL-v1\",\"urls\":[\"bzz-raw://f2c1b3b86b7f67c3de52e7886697fc02de9837ba724cbfde34031ecf832faf7a\",\"dweb:/ipfs/QmXStRKqsn9KC5WXQvTz57Qxqcr1WrB2Lrs1b28bZmL4Sy\"]},\"src/IZoraLimitOrderBook.sol\":{\"keccak256\":\"0x2b2ef15b8e9b1fdfd403fb771542fd90b00b1f9afa1359c1c707c67bdd1dde10\",\"license\":\"ZORA-DELAYED-OSL-v1\",\"urls\":[\"bzz-raw://a982830679c4f9a09ae38fcb261e70d0be58795f5e911187538312402042b470\",\"dweb:/ipfs/QmVMnET7gFkPEXbWZGB3WeaCw5jFbxiUFzbFsSLbNNSAaa\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.28+commit.7893614a"},"language":"Solidity","output":{"abi":[{"inputs":[],"type":"error","name":"AddressZero"},{"inputs":[],"type":"error","name":"ArrayLengthMismatch"},{"inputs":[{"internalType":"bytes32","name":"orderId","type":"bytes32"},{"internalType":"address","name":"expectedCoin","type":"address"},{"internalType":"address","name":"actualCoin","type":"address"}],"type":"error","name":"CoinMismatch"},{"inputs":[],"type":"error","name":"InsufficientForwardedFunds"},{"inputs":[],"type":"error","name":"InsufficientTransferFunds"},{"inputs":[{"internalType":"int24","name":"startTick","type":"int24"},{"internalType":"int24","name":"endTick","type":"int24"},{"internalType":"bool","name":"isCurrency0","type":"bool"}],"type":"error","name":"InvalidFillWindow"},{"inputs":[],"type":"error","name":"InvalidOrder"},{"inputs":[],"type":"error","name":"InvalidPoolKey"},{"inputs":[],"type":"error","name":"MaxFillCountCannotBeZero"},{"inputs":[{"internalType":"uint256","name":"withdrawn","type":"uint256"},{"internalType":"uint256","name":"minAmountOut","type":"uint256"}],"type":"error","name":"MinAmountNotReached"},{"inputs":[],"type":"error","name":"NativeValueMismatch"},{"inputs":[],"type":"error","name":"NotPoolManager"},{"inputs":[],"type":"error","name":"OnlyZoraHook"},{"inputs":[],"type":"error","name":"OrderClosed"},{"inputs":[],"type":"error","name":"OrderNotMaker"},{"inputs":[],"type":"error","name":"RouterMsgSenderInvalid"},{"inputs":[],"type":"error","name":"UnknownCallback"},{"inputs":[],"type":"error","name":"UnlockedFillNotAllowed"},{"inputs":[],"type":"error","name":"ZeroMaker"},{"inputs":[],"type":"error","name":"ZeroOrderSize"},{"inputs":[],"type":"error","name":"ZeroRealizedOrder"},{"inputs":[{"internalType":"address","name":"maker","type":"address","indexed":true},{"internalType":"address","name":"coin","type":"address","indexed":true},{"internalType":"bytes32","name":"poolKeyHash","type":"bytes32","indexed":false},{"internalType":"bool","name":"isCurrency0","type":"bool","indexed":false},{"internalType":"int24","name":"orderTick","type":"int24","indexed":false},{"internalType":"int24","name":"currentTick","type":"int24","indexed":false},{"internalType":"uint128","name":"orderSize","type":"uint128","indexed":false},{"internalType":"bytes32","name":"orderId","type":"bytes32","indexed":false}],"type":"event","name":"LimitOrderCreated","anonymous":false},{"inputs":[{"internalType":"address","name":"maker","type":"address","indexed":true},{"internalType":"address","name":"coinIn","type":"address","indexed":true},{"internalType":"address","name":"coinOut","type":"address","indexed":false},{"internalType":"uint128","name":"amountIn","type":"uint128","indexed":false},{"internalType":"uint128","name":"amountOut","type":"uint128","indexed":false},{"internalType":"address","name":"fillReferral","type":"address","indexed":false},{"internalType":"uint128","name":"fillReferralAmount","type":"uint128","indexed":false},{"internalType":"bytes32","name":"poolKeyHash","type":"bytes32","indexed":false},{"internalType":"int24","name":"tick","type":"int24","indexed":false},{"internalType":"bytes32","name":"orderId","type":"bytes32","indexed":false}],"type":"event","name":"LimitOrderFilled","anonymous":false},{"inputs":[{"internalType":"address","name":"maker","type":"address","indexed":true},{"internalType":"address","name":"coin","type":"address","indexed":true},{"internalType":"bytes32","name":"poolKeyHash","type":"bytes32","indexed":false},{"internalType":"bool","name":"isCurrency0","type":"bool","indexed":false},{"internalType":"int24","name":"tick","type":"int24","indexed":false},{"internalType":"uint128","name":"orderSize","type":"uint128","indexed":false},{"internalType":"bytes32","name":"orderId","type":"bytes32","indexed":false},{"internalType":"bool","name":"isCancelled","type":"bool","indexed":false}],"type":"event","name":"LimitOrderUpdated","anonymous":false},{"inputs":[{"internalType":"address","name":"maker","type":"address","indexed":true},{"internalType":"address","name":"coin","type":"address","indexed":true},{"internalType":"uint256","name":"newBalance","type":"uint256","indexed":false}],"type":"event","name":"MakerBalanceUpdated","anonymous":false},{"inputs":[{"internalType":"address","name":"maker","type":"address"},{"internalType":"address","name":"coin","type":"address"}],"stateMutability":"view","type":"function","name":"balanceOf","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}]},{"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"}]},{"internalType":"bool","name":"isCurrency0","type":"bool"},{"internalType":"uint256[]","name":"orderSizes","type":"uint256[]"},{"internalType":"int24[]","name":"orderTicks","type":"int24[]"},{"internalType":"address","name":"maker","type":"address"}],"stateMutability":"payable","type":"function","name":"create","outputs":[{"internalType":"bytes32[]","name":"orderIds","type":"bytes32[]"}]},{"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"}]},{"internalType":"bool","name":"isCurrency0","type":"bool"},{"internalType":"int24","name":"startTick","type":"int24"},{"internalType":"int24","name":"endTick","type":"int24"},{"internalType":"uint256","name":"maxFillCount","type":"uint256"},{"internalType":"address","name":"fillReferral","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"fill"},{"inputs":[{"internalType":"struct IZoraLimitOrderBook.OrderBatch[]","name":"batches","type":"tuple[]","components":[{"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"}]},{"internalType":"bool","name":"isCurrency0","type":"bool"},{"internalType":"bytes32[]","name":"orderIds","type":"bytes32[]"}]},{"internalType":"address","name":"fillReferral","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"fill"},{"inputs":[],"stateMutability":"view","type":"function","name":"getMaxFillCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"maxFillCount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setMaxFillCount"},{"inputs":[{"internalType":"bytes32[]","name":"orderIds","type":"bytes32[]"},{"internalType":"address","name":"coin","type":"address"},{"internalType":"uint256","name":"minAmountOut","type":"uint256"},{"internalType":"address","name":"recipient","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"withdraw"}],"devdoc":{"kind":"dev","methods":{"balanceOf(address,address)":{"params":{"coin":"Address of the coin (use address(0) for native ETH).","maker":"Address of the maker."},"returns":{"balance":"Total value of open orders."}},"create((address,address,uint24,int24,address),bool,uint256[],int24[],address)":{"details":"This function is access-controlled via OpenZeppelin's AccessManager. The caller must have the appropriate role as configured in the AccessManager contract. Initially, this can be set to PUBLIC_ROLE to allow anyone to create orders, or it can be restricted to specific addresses/roles for permissioned operation.","params":{"isCurrency0":"Whether the orders are denominated in currency0.","key":"Pool key specifying currency pair and tick spacing.","maker":"Address of the maker who will own the orders.","orderSizes":"Order liquidity sizes.","orderTicks":"Corresponding ticks."},"returns":{"orderIds":"Deterministic order identifiers."}},"fill(((address,address,uint24,int24,address),bool,bytes32[])[],address)":{"params":{"batches":"Array of per-pool batches containing order ids to process.","fillReferral":"Address to receive accrued LP fees; use address(0) to give fees to maker."}},"fill((address,address,uint24,int24,address),bool,int24,int24,uint256,address)":{"params":{"endTick":"Inclusive ending tick. Use `type(int24).max` for the default upper bound.","fillReferral":"Address to receive accrued LP fees; use address(0) to give fees to maker.","isCurrency0":"Whether currency0 orders are targeted; otherwise currency1.","key":"Pool key whose orders should be processed.","maxFillCount":"Maximum orders to fill in this pass.","startTick":"Inclusive starting tick. Use `-type(int24).max` for the default lower bound."}},"setMaxFillCount(uint256)":{"details":"This function is access-controlled via OpenZeppelin's AccessManager. The caller must have the appropriate role as configured in the AccessManager contract.","params":{"maxFillCount":"The new maximum fill count value."}},"withdraw(bytes32[],address,uint256,address)":{"details":"Orders are cancelled sequentially until minAmountOut is reached. If minAmountOut is 0, all provided orders are cancelled. Reverts if total withdrawn is less than minAmountOut.","params":{"coin":"The coin address that all orders must match (use address(0) for native ETH).","minAmountOut":"Minimum amount to withdraw (0 = cancel all provided orders).","orderIds":"Order identifiers to cancel.","recipient":"Destination for returned assets."}}},"version":1},"userdoc":{"kind":"user","methods":{"balanceOf(address,address)":{"notice":"Returns the aggregate balance of open orders for a maker/coin pair."},"create((address,address,uint24,int24,address),bool,uint256[],int24[],address)":{"notice":"Creates limit orders, pulling funds from msg.sender when pool manager is locked, or using funds already in manager when unlocked."},"fill(((address,address,uint24,int24,address),bool,bytes32[])[],address)":{"notice":"Fills explicit order ids grouped by pool."},"fill((address,address,uint24,int24,address),bool,int24,int24,uint256,address)":{"notice":"Fills limit orders within a tick window."},"setMaxFillCount(uint256)":{"notice":"Sets the maximum number of orders that can be filled in a single fill operation."},"withdraw(bytes32[],address,uint256,address)":{"notice":"Cancels orders and withdraws resulting funds to a recipient."}},"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/IZoraLimitOrderBook.sol":"IZoraLimitOrderBook"},"evmVersion":"prague","libraries":{},"viaIR":true},"sources":{"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/external/IERC20Minimal.sol":{"keccak256":"0xeccadf1bf69ba2eb51f2fe4fa511bc7bb05bbd6b9f9a3cb8e5d83d9582613e0f","urls":["bzz-raw://118757369892687b99ef46ce28d6861f62c098285bd7687a4f17f7e44e5f81de","dweb:/ipfs/QmUxqbYqQtcEwwFbb9e6BBMePEaSgN8C45v6RKubD4ib8d"],"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/@zoralabs/coins/src/interfaces/IZoraLimitOrderBookCoinsInterface.sol":{"keccak256":"0xcf41c76b6dcf12b79c26ba93040c0ec6b68614c00597203c9330f4b769dcd389","urls":["bzz-raw://f2c1b3b86b7f67c3de52e7886697fc02de9837ba724cbfde34031ecf832faf7a","dweb:/ipfs/QmXStRKqsn9KC5WXQvTz57Qxqcr1WrB2Lrs1b28bZmL4Sy"],"license":"ZORA-DELAYED-OSL-v1"},"src/IZoraLimitOrderBook.sol":{"keccak256":"0x2b2ef15b8e9b1fdfd403fb771542fd90b00b1f9afa1359c1c707c67bdd1dde10","urls":["bzz-raw://a982830679c4f9a09ae38fcb261e70d0be58795f5e911187538312402042b470","dweb:/ipfs/QmVMnET7gFkPEXbWZGB3WeaCw5jFbxiUFzbFsSLbNNSAaa"],"license":"ZORA-DELAYED-OSL-v1"}},"version":1},"id":74}
1
+ {"abi":[{"type":"function","name":"balanceOf","inputs":[{"name":"maker","type":"address","internalType":"address"},{"name":"coin","type":"address","internalType":"address"}],"outputs":[{"name":"balance","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"create","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"}]},{"name":"isCurrency0","type":"bool","internalType":"bool"},{"name":"orderSizes","type":"uint256[]","internalType":"uint256[]"},{"name":"orderTicks","type":"int24[]","internalType":"int24[]"},{"name":"maker","type":"address","internalType":"address"}],"outputs":[{"name":"orderIds","type":"bytes32[]","internalType":"bytes32[]"}],"stateMutability":"payable"},{"type":"function","name":"fill","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"}]},{"name":"isCurrency0","type":"bool","internalType":"bool"},{"name":"startTick","type":"int24","internalType":"int24"},{"name":"endTick","type":"int24","internalType":"int24"},{"name":"maxFillCount","type":"uint256","internalType":"uint256"},{"name":"fillReferral","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"fill","inputs":[{"name":"batches","type":"tuple[]","internalType":"struct IZoraLimitOrderBook.OrderBatch[]","components":[{"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"}]},{"name":"isCurrency0","type":"bool","internalType":"bool"},{"name":"orderIds","type":"bytes32[]","internalType":"bytes32[]"}]},{"name":"fillReferral","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"getMaxFillCount","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"setMaxFillCount","inputs":[{"name":"maxFillCount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"withdraw","inputs":[{"name":"orderIds","type":"bytes32[]","internalType":"bytes32[]"},{"name":"coin","type":"address","internalType":"address"},{"name":"minAmountOut","type":"uint256","internalType":"uint256"},{"name":"recipient","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"LimitOrderCreated","inputs":[{"name":"maker","type":"address","indexed":true,"internalType":"address"},{"name":"coin","type":"address","indexed":true,"internalType":"address"},{"name":"poolKeyHash","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"isCurrency0","type":"bool","indexed":false,"internalType":"bool"},{"name":"orderTick","type":"int24","indexed":false,"internalType":"int24"},{"name":"currentTick","type":"int24","indexed":false,"internalType":"int24"},{"name":"orderSize","type":"uint128","indexed":false,"internalType":"uint128"},{"name":"orderId","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"LimitOrderFilled","inputs":[{"name":"maker","type":"address","indexed":true,"internalType":"address"},{"name":"coinIn","type":"address","indexed":true,"internalType":"address"},{"name":"coinOut","type":"address","indexed":false,"internalType":"address"},{"name":"amountIn","type":"uint128","indexed":false,"internalType":"uint128"},{"name":"amountOut","type":"uint128","indexed":false,"internalType":"uint128"},{"name":"fillReferral","type":"address","indexed":false,"internalType":"address"},{"name":"fillReferralAmount","type":"uint128","indexed":false,"internalType":"uint128"},{"name":"poolKeyHash","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"tick","type":"int24","indexed":false,"internalType":"int24"},{"name":"orderId","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"LimitOrderUpdated","inputs":[{"name":"maker","type":"address","indexed":true,"internalType":"address"},{"name":"coin","type":"address","indexed":true,"internalType":"address"},{"name":"poolKeyHash","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"isCurrency0","type":"bool","indexed":false,"internalType":"bool"},{"name":"tick","type":"int24","indexed":false,"internalType":"int24"},{"name":"orderSize","type":"uint128","indexed":false,"internalType":"uint128"},{"name":"orderId","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"isCancelled","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"MakerBalanceUpdated","inputs":[{"name":"maker","type":"address","indexed":true,"internalType":"address"},{"name":"coin","type":"address","indexed":true,"internalType":"address"},{"name":"newBalance","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"AddressZero","inputs":[]},{"type":"error","name":"ArrayLengthMismatch","inputs":[]},{"type":"error","name":"CoinMismatch","inputs":[{"name":"orderId","type":"bytes32","internalType":"bytes32"},{"name":"expectedCoin","type":"address","internalType":"address"},{"name":"actualCoin","type":"address","internalType":"address"}]},{"type":"error","name":"InsufficientForwardedFunds","inputs":[]},{"type":"error","name":"InsufficientTransferFunds","inputs":[]},{"type":"error","name":"InvalidFillWindow","inputs":[{"name":"startTick","type":"int24","internalType":"int24"},{"name":"endTick","type":"int24","internalType":"int24"},{"name":"isCurrency0","type":"bool","internalType":"bool"}]},{"type":"error","name":"InvalidOrder","inputs":[]},{"type":"error","name":"InvalidPoolKey","inputs":[]},{"type":"error","name":"MaxFillCountCannotBeZero","inputs":[]},{"type":"error","name":"MinAmountNotReached","inputs":[{"name":"withdrawn","type":"uint256","internalType":"uint256"},{"name":"minAmountOut","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"NativeValueMismatch","inputs":[]},{"type":"error","name":"NotPoolManager","inputs":[]},{"type":"error","name":"OnlyZoraHook","inputs":[]},{"type":"error","name":"OrderClosed","inputs":[]},{"type":"error","name":"OrderFillable","inputs":[]},{"type":"error","name":"OrderNotMaker","inputs":[]},{"type":"error","name":"RouterMsgSenderInvalid","inputs":[]},{"type":"error","name":"UnknownCallback","inputs":[]},{"type":"error","name":"UnlockedFillNotAllowed","inputs":[]},{"type":"error","name":"ZeroMaker","inputs":[]},{"type":"error","name":"ZeroOrderSize","inputs":[]},{"type":"error","name":"ZeroRealizedOrder","inputs":[]}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"balanceOf(address,address)":"f7888aec","create((address,address,uint24,int24,address),bool,uint256[],int24[],address)":"eb07ed24","fill(((address,address,uint24,int24,address),bool,bytes32[])[],address)":"7a9cf273","fill((address,address,uint24,int24,address),bool,int24,int24,uint256,address)":"5f8fbad6","getMaxFillCount()":"d8c31772","setMaxFillCount(uint256)":"c96d060b","withdraw(bytes32[],address,uint256,address)":"c2ec68ea"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"AddressZero\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ArrayLengthMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"orderId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"expectedCoin\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"actualCoin\",\"type\":\"address\"}],\"name\":\"CoinMismatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientForwardedFunds\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientTransferFunds\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"int24\",\"name\":\"startTick\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"endTick\",\"type\":\"int24\"},{\"internalType\":\"bool\",\"name\":\"isCurrency0\",\"type\":\"bool\"}],\"name\":\"InvalidFillWindow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidOrder\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPoolKey\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxFillCountCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"withdrawn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minAmountOut\",\"type\":\"uint256\"}],\"name\":\"MinAmountNotReached\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NativeValueMismatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotPoolManager\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyZoraHook\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OrderClosed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OrderFillable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OrderNotMaker\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RouterMsgSenderInvalid\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnknownCallback\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnlockedFillNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroMaker\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroOrderSize\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroRealizedOrder\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"maker\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"coin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"poolKeyHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"isCurrency0\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"int24\",\"name\":\"orderTick\",\"type\":\"int24\"},{\"indexed\":false,\"internalType\":\"int24\",\"name\":\"currentTick\",\"type\":\"int24\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"orderSize\",\"type\":\"uint128\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"orderId\",\"type\":\"bytes32\"}],\"name\":\"LimitOrderCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"maker\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"coinIn\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"coinOut\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"amountIn\",\"type\":\"uint128\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"amountOut\",\"type\":\"uint128\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"fillReferral\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"fillReferralAmount\",\"type\":\"uint128\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"poolKeyHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"int24\",\"name\":\"tick\",\"type\":\"int24\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"orderId\",\"type\":\"bytes32\"}],\"name\":\"LimitOrderFilled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"maker\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"coin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"poolKeyHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"isCurrency0\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"int24\",\"name\":\"tick\",\"type\":\"int24\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"orderSize\",\"type\":\"uint128\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"orderId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"isCancelled\",\"type\":\"bool\"}],\"name\":\"LimitOrderUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"maker\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"coin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newBalance\",\"type\":\"uint256\"}],\"name\":\"MakerBalanceUpdated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"maker\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"coin\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"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\"},{\"internalType\":\"bool\",\"name\":\"isCurrency0\",\"type\":\"bool\"},{\"internalType\":\"uint256[]\",\"name\":\"orderSizes\",\"type\":\"uint256[]\"},{\"internalType\":\"int24[]\",\"name\":\"orderTicks\",\"type\":\"int24[]\"},{\"internalType\":\"address\",\"name\":\"maker\",\"type\":\"address\"}],\"name\":\"create\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"orderIds\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"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\"},{\"internalType\":\"bool\",\"name\":\"isCurrency0\",\"type\":\"bool\"},{\"internalType\":\"int24\",\"name\":\"startTick\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"endTick\",\"type\":\"int24\"},{\"internalType\":\"uint256\",\"name\":\"maxFillCount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"fillReferral\",\"type\":\"address\"}],\"name\":\"fill\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"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\"},{\"internalType\":\"bool\",\"name\":\"isCurrency0\",\"type\":\"bool\"},{\"internalType\":\"bytes32[]\",\"name\":\"orderIds\",\"type\":\"bytes32[]\"}],\"internalType\":\"struct IZoraLimitOrderBook.OrderBatch[]\",\"name\":\"batches\",\"type\":\"tuple[]\"},{\"internalType\":\"address\",\"name\":\"fillReferral\",\"type\":\"address\"}],\"name\":\"fill\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMaxFillCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"maxFillCount\",\"type\":\"uint256\"}],\"name\":\"setMaxFillCount\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"orderIds\",\"type\":\"bytes32[]\"},{\"internalType\":\"address\",\"name\":\"coin\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"minAmountOut\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"balanceOf(address,address)\":{\"params\":{\"coin\":\"Address of the coin (use address(0) for native ETH).\",\"maker\":\"Address of the maker.\"},\"returns\":{\"balance\":\"Total value of open orders.\"}},\"create((address,address,uint24,int24,address),bool,uint256[],int24[],address)\":{\"details\":\"This function is access-controlled via OpenZeppelin's AccessManager. The caller must have the appropriate role as configured in the AccessManager contract. Initially, this can be set to PUBLIC_ROLE to allow anyone to create orders, or it can be restricted to specific addresses/roles for permissioned operation.\",\"params\":{\"isCurrency0\":\"Whether the orders are denominated in currency0.\",\"key\":\"Pool key specifying currency pair and tick spacing.\",\"maker\":\"Address of the maker who will own the orders.\",\"orderSizes\":\"Order liquidity sizes.\",\"orderTicks\":\"Corresponding ticks.\"},\"returns\":{\"orderIds\":\"Deterministic order identifiers.\"}},\"fill(((address,address,uint24,int24,address),bool,bytes32[])[],address)\":{\"params\":{\"batches\":\"Array of per-pool batches containing order ids to process.\",\"fillReferral\":\"Address to receive accrued LP fees; use address(0) to give fees to maker.\"}},\"fill((address,address,uint24,int24,address),bool,int24,int24,uint256,address)\":{\"params\":{\"endTick\":\"Inclusive ending tick. Use `type(int24).max` for the default upper bound.\",\"fillReferral\":\"Address to receive accrued LP fees; use address(0) to give fees to maker.\",\"isCurrency0\":\"Whether currency0 orders are targeted; otherwise currency1.\",\"key\":\"Pool key whose orders should be processed.\",\"maxFillCount\":\"Maximum orders to fill in this pass.\",\"startTick\":\"Inclusive starting tick. Use `-type(int24).max` for the default lower bound.\"}},\"setMaxFillCount(uint256)\":{\"details\":\"This function is access-controlled via OpenZeppelin's AccessManager. The caller must have the appropriate role as configured in the AccessManager contract.\",\"params\":{\"maxFillCount\":\"The new maximum fill count value.\"}},\"withdraw(bytes32[],address,uint256,address)\":{\"details\":\"Orders are cancelled sequentially until minAmountOut is reached. If minAmountOut is 0, all provided orders are cancelled. Reverts if total withdrawn is less than minAmountOut.\",\"params\":{\"coin\":\"The coin address that all orders must match (use address(0) for native ETH).\",\"minAmountOut\":\"Minimum amount to withdraw (0 = cancel all provided orders).\",\"orderIds\":\"Order identifiers to cancel.\",\"recipient\":\"Destination for returned assets.\"}}},\"version\":1},\"userdoc\":{\"errors\":{\"AddressZero()\":[{\"notice\":\"Address argument was zero.\"}],\"ArrayLengthMismatch()\":[{\"notice\":\"Input arrays must have equal length.\"}],\"CoinMismatch(bytes32,address,address)\":[{\"notice\":\"Order coin does not match expected coin for batch withdrawal.\"}],\"InsufficientForwardedFunds()\":[{\"notice\":\"Forwarded funds from hook were insufficient.\"}],\"InsufficientTransferFunds()\":[{\"notice\":\"Transfer in of funds failed or was insufficient.\"}],\"InvalidFillWindow(int24,int24,bool)\":[{\"notice\":\"Tick range inputs were invalid or misaligned.\"}],\"InvalidOrder()\":[{\"notice\":\"Order id was not found.\"}],\"InvalidPoolKey()\":[{\"notice\":\"Referenced pool key hash is unknown.\"}],\"MaxFillCountCannotBeZero()\":[{\"notice\":\"Fill requests must cap the number of orders processed.\"}],\"MinAmountNotReached(uint256,uint256)\":[{\"notice\":\"Withdrawal did not reach minimum amount threshold.\"}],\"NativeValueMismatch()\":[{\"notice\":\"Supplied ETH must match expected amount.\"}],\"NotPoolManager()\":[{\"notice\":\"Caller must be the configured pool manager.\"}],\"OnlyZoraHook()\":[{\"notice\":\"Caller must be a registered Zora hook.\"}],\"OrderClosed()\":[{\"notice\":\"Order is no longer open.\"}],\"OrderFillable()\":[{\"notice\":\"Order is fillable and must be filled, not withdrawn.\"}],\"OrderNotMaker()\":[{\"notice\":\"Operation attempted by non-maker.\"}],\"RouterMsgSenderInvalid()\":[{\"notice\":\"Router caller failed to expose the original message sender.\"}],\"UnknownCallback()\":[{\"notice\":\"Unlock callback id was not recognized.\"}],\"UnlockedFillNotAllowed()\":[{\"notice\":\"Non-hook caller attempted to fill orders while pool is unlocked.\"}],\"ZeroMaker()\":[{\"notice\":\"Maker address cannot be zero.\"}],\"ZeroOrderSize()\":[{\"notice\":\"Orders must specify a non-zero size.\"}],\"ZeroRealizedOrder()\":[{\"notice\":\"Callback realized zero fills when one was expected.\"}]},\"events\":{\"LimitOrderCreated(address,address,bytes32,bool,int24,int24,uint128,bytes32)\":{\"notice\":\"Emitted when a new order joins a tick queue.\"},\"LimitOrderFilled(address,address,address,uint128,uint128,address,uint128,bytes32,int24,bytes32)\":{\"notice\":\"Emitted when an order is filled and removed from the book.\"},\"LimitOrderUpdated(address,address,bytes32,bool,int24,uint128,bytes32,bool)\":{\"notice\":\"Emitted when an order is amended or marked inactive.\"},\"MakerBalanceUpdated(address,address,uint256)\":{\"notice\":\"Emitted when a maker's aggregate balance for a coin changes.\"}},\"kind\":\"user\",\"methods\":{\"balanceOf(address,address)\":{\"notice\":\"Returns the aggregate balance of open orders for a maker/coin pair.\"},\"create((address,address,uint24,int24,address),bool,uint256[],int24[],address)\":{\"notice\":\"Creates limit orders, pulling funds from msg.sender when pool manager is locked, or using funds already in manager when unlocked.\"},\"fill(((address,address,uint24,int24,address),bool,bytes32[])[],address)\":{\"notice\":\"Fills explicit order ids grouped by pool.\"},\"fill((address,address,uint24,int24,address),bool,int24,int24,uint256,address)\":{\"notice\":\"Fills limit orders within a tick window.\"},\"setMaxFillCount(uint256)\":{\"notice\":\"Sets the maximum number of orders that can be filled in a single fill operation.\"},\"withdraw(bytes32[],address,uint256,address)\":{\"notice\":\"Cancels orders and withdraws resulting funds to a recipient.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/IZoraLimitOrderBook.sol\":\"IZoraLimitOrderBook\"},\"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/interfaces/IHooks.sol\":{\"keccak256\":\"0xc131ffa2d04c10a012fe715fe2c115811526b7ea34285cf0a04ce7ce8320da8d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3b212358897db5d99c21244d88f97b2e788527552cb430629b472a8cc6289aec\",\"dweb:/ipfs/QmQtwV4dDe2RYk2ErLpaAX7U82jWh1L6Lw2HRuKDvBi84G\"]},\"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/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/@zoralabs/coins/src/interfaces/IZoraLimitOrderBookCoinsInterface.sol\":{\"keccak256\":\"0xcf41c76b6dcf12b79c26ba93040c0ec6b68614c00597203c9330f4b769dcd389\",\"license\":\"ZORA-DELAYED-OSL-v1\",\"urls\":[\"bzz-raw://f2c1b3b86b7f67c3de52e7886697fc02de9837ba724cbfde34031ecf832faf7a\",\"dweb:/ipfs/QmXStRKqsn9KC5WXQvTz57Qxqcr1WrB2Lrs1b28bZmL4Sy\"]},\"src/IZoraLimitOrderBook.sol\":{\"keccak256\":\"0xf9486590a998c8f1ad8c272cfeb372198a0ea4f2fc506f675564b9d1b2496726\",\"license\":\"ZORA-DELAYED-OSL-v1\",\"urls\":[\"bzz-raw://59fa8b6b59d1d28d81a8ac2250e17a8f22bb0d5a8409a4be1f38f5130cf1f857\",\"dweb:/ipfs/QmPPNcbtJMe3NpF5Nt98qTFj2XMuYvKkVeLezNKYoBiUgc\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.28+commit.7893614a"},"language":"Solidity","output":{"abi":[{"inputs":[],"type":"error","name":"AddressZero"},{"inputs":[],"type":"error","name":"ArrayLengthMismatch"},{"inputs":[{"internalType":"bytes32","name":"orderId","type":"bytes32"},{"internalType":"address","name":"expectedCoin","type":"address"},{"internalType":"address","name":"actualCoin","type":"address"}],"type":"error","name":"CoinMismatch"},{"inputs":[],"type":"error","name":"InsufficientForwardedFunds"},{"inputs":[],"type":"error","name":"InsufficientTransferFunds"},{"inputs":[{"internalType":"int24","name":"startTick","type":"int24"},{"internalType":"int24","name":"endTick","type":"int24"},{"internalType":"bool","name":"isCurrency0","type":"bool"}],"type":"error","name":"InvalidFillWindow"},{"inputs":[],"type":"error","name":"InvalidOrder"},{"inputs":[],"type":"error","name":"InvalidPoolKey"},{"inputs":[],"type":"error","name":"MaxFillCountCannotBeZero"},{"inputs":[{"internalType":"uint256","name":"withdrawn","type":"uint256"},{"internalType":"uint256","name":"minAmountOut","type":"uint256"}],"type":"error","name":"MinAmountNotReached"},{"inputs":[],"type":"error","name":"NativeValueMismatch"},{"inputs":[],"type":"error","name":"NotPoolManager"},{"inputs":[],"type":"error","name":"OnlyZoraHook"},{"inputs":[],"type":"error","name":"OrderClosed"},{"inputs":[],"type":"error","name":"OrderFillable"},{"inputs":[],"type":"error","name":"OrderNotMaker"},{"inputs":[],"type":"error","name":"RouterMsgSenderInvalid"},{"inputs":[],"type":"error","name":"UnknownCallback"},{"inputs":[],"type":"error","name":"UnlockedFillNotAllowed"},{"inputs":[],"type":"error","name":"ZeroMaker"},{"inputs":[],"type":"error","name":"ZeroOrderSize"},{"inputs":[],"type":"error","name":"ZeroRealizedOrder"},{"inputs":[{"internalType":"address","name":"maker","type":"address","indexed":true},{"internalType":"address","name":"coin","type":"address","indexed":true},{"internalType":"bytes32","name":"poolKeyHash","type":"bytes32","indexed":false},{"internalType":"bool","name":"isCurrency0","type":"bool","indexed":false},{"internalType":"int24","name":"orderTick","type":"int24","indexed":false},{"internalType":"int24","name":"currentTick","type":"int24","indexed":false},{"internalType":"uint128","name":"orderSize","type":"uint128","indexed":false},{"internalType":"bytes32","name":"orderId","type":"bytes32","indexed":false}],"type":"event","name":"LimitOrderCreated","anonymous":false},{"inputs":[{"internalType":"address","name":"maker","type":"address","indexed":true},{"internalType":"address","name":"coinIn","type":"address","indexed":true},{"internalType":"address","name":"coinOut","type":"address","indexed":false},{"internalType":"uint128","name":"amountIn","type":"uint128","indexed":false},{"internalType":"uint128","name":"amountOut","type":"uint128","indexed":false},{"internalType":"address","name":"fillReferral","type":"address","indexed":false},{"internalType":"uint128","name":"fillReferralAmount","type":"uint128","indexed":false},{"internalType":"bytes32","name":"poolKeyHash","type":"bytes32","indexed":false},{"internalType":"int24","name":"tick","type":"int24","indexed":false},{"internalType":"bytes32","name":"orderId","type":"bytes32","indexed":false}],"type":"event","name":"LimitOrderFilled","anonymous":false},{"inputs":[{"internalType":"address","name":"maker","type":"address","indexed":true},{"internalType":"address","name":"coin","type":"address","indexed":true},{"internalType":"bytes32","name":"poolKeyHash","type":"bytes32","indexed":false},{"internalType":"bool","name":"isCurrency0","type":"bool","indexed":false},{"internalType":"int24","name":"tick","type":"int24","indexed":false},{"internalType":"uint128","name":"orderSize","type":"uint128","indexed":false},{"internalType":"bytes32","name":"orderId","type":"bytes32","indexed":false},{"internalType":"bool","name":"isCancelled","type":"bool","indexed":false}],"type":"event","name":"LimitOrderUpdated","anonymous":false},{"inputs":[{"internalType":"address","name":"maker","type":"address","indexed":true},{"internalType":"address","name":"coin","type":"address","indexed":true},{"internalType":"uint256","name":"newBalance","type":"uint256","indexed":false}],"type":"event","name":"MakerBalanceUpdated","anonymous":false},{"inputs":[{"internalType":"address","name":"maker","type":"address"},{"internalType":"address","name":"coin","type":"address"}],"stateMutability":"view","type":"function","name":"balanceOf","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}]},{"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"}]},{"internalType":"bool","name":"isCurrency0","type":"bool"},{"internalType":"uint256[]","name":"orderSizes","type":"uint256[]"},{"internalType":"int24[]","name":"orderTicks","type":"int24[]"},{"internalType":"address","name":"maker","type":"address"}],"stateMutability":"payable","type":"function","name":"create","outputs":[{"internalType":"bytes32[]","name":"orderIds","type":"bytes32[]"}]},{"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"}]},{"internalType":"bool","name":"isCurrency0","type":"bool"},{"internalType":"int24","name":"startTick","type":"int24"},{"internalType":"int24","name":"endTick","type":"int24"},{"internalType":"uint256","name":"maxFillCount","type":"uint256"},{"internalType":"address","name":"fillReferral","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"fill"},{"inputs":[{"internalType":"struct IZoraLimitOrderBook.OrderBatch[]","name":"batches","type":"tuple[]","components":[{"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"}]},{"internalType":"bool","name":"isCurrency0","type":"bool"},{"internalType":"bytes32[]","name":"orderIds","type":"bytes32[]"}]},{"internalType":"address","name":"fillReferral","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"fill"},{"inputs":[],"stateMutability":"view","type":"function","name":"getMaxFillCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"maxFillCount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setMaxFillCount"},{"inputs":[{"internalType":"bytes32[]","name":"orderIds","type":"bytes32[]"},{"internalType":"address","name":"coin","type":"address"},{"internalType":"uint256","name":"minAmountOut","type":"uint256"},{"internalType":"address","name":"recipient","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"withdraw"}],"devdoc":{"kind":"dev","methods":{"balanceOf(address,address)":{"params":{"coin":"Address of the coin (use address(0) for native ETH).","maker":"Address of the maker."},"returns":{"balance":"Total value of open orders."}},"create((address,address,uint24,int24,address),bool,uint256[],int24[],address)":{"details":"This function is access-controlled via OpenZeppelin's AccessManager. The caller must have the appropriate role as configured in the AccessManager contract. Initially, this can be set to PUBLIC_ROLE to allow anyone to create orders, or it can be restricted to specific addresses/roles for permissioned operation.","params":{"isCurrency0":"Whether the orders are denominated in currency0.","key":"Pool key specifying currency pair and tick spacing.","maker":"Address of the maker who will own the orders.","orderSizes":"Order liquidity sizes.","orderTicks":"Corresponding ticks."},"returns":{"orderIds":"Deterministic order identifiers."}},"fill(((address,address,uint24,int24,address),bool,bytes32[])[],address)":{"params":{"batches":"Array of per-pool batches containing order ids to process.","fillReferral":"Address to receive accrued LP fees; use address(0) to give fees to maker."}},"fill((address,address,uint24,int24,address),bool,int24,int24,uint256,address)":{"params":{"endTick":"Inclusive ending tick. Use `type(int24).max` for the default upper bound.","fillReferral":"Address to receive accrued LP fees; use address(0) to give fees to maker.","isCurrency0":"Whether currency0 orders are targeted; otherwise currency1.","key":"Pool key whose orders should be processed.","maxFillCount":"Maximum orders to fill in this pass.","startTick":"Inclusive starting tick. Use `-type(int24).max` for the default lower bound."}},"setMaxFillCount(uint256)":{"details":"This function is access-controlled via OpenZeppelin's AccessManager. The caller must have the appropriate role as configured in the AccessManager contract.","params":{"maxFillCount":"The new maximum fill count value."}},"withdraw(bytes32[],address,uint256,address)":{"details":"Orders are cancelled sequentially until minAmountOut is reached. If minAmountOut is 0, all provided orders are cancelled. Reverts if total withdrawn is less than minAmountOut.","params":{"coin":"The coin address that all orders must match (use address(0) for native ETH).","minAmountOut":"Minimum amount to withdraw (0 = cancel all provided orders).","orderIds":"Order identifiers to cancel.","recipient":"Destination for returned assets."}}},"version":1},"userdoc":{"kind":"user","methods":{"balanceOf(address,address)":{"notice":"Returns the aggregate balance of open orders for a maker/coin pair."},"create((address,address,uint24,int24,address),bool,uint256[],int24[],address)":{"notice":"Creates limit orders, pulling funds from msg.sender when pool manager is locked, or using funds already in manager when unlocked."},"fill(((address,address,uint24,int24,address),bool,bytes32[])[],address)":{"notice":"Fills explicit order ids grouped by pool."},"fill((address,address,uint24,int24,address),bool,int24,int24,uint256,address)":{"notice":"Fills limit orders within a tick window."},"setMaxFillCount(uint256)":{"notice":"Sets the maximum number of orders that can be filled in a single fill operation."},"withdraw(bytes32[],address,uint256,address)":{"notice":"Cancels orders and withdraws resulting funds to a recipient."}},"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/IZoraLimitOrderBook.sol":"IZoraLimitOrderBook"},"evmVersion":"prague","libraries":{},"viaIR":true},"sources":{"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/external/IERC20Minimal.sol":{"keccak256":"0xeccadf1bf69ba2eb51f2fe4fa511bc7bb05bbd6b9f9a3cb8e5d83d9582613e0f","urls":["bzz-raw://118757369892687b99ef46ce28d6861f62c098285bd7687a4f17f7e44e5f81de","dweb:/ipfs/QmUxqbYqQtcEwwFbb9e6BBMePEaSgN8C45v6RKubD4ib8d"],"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/@zoralabs/coins/src/interfaces/IZoraLimitOrderBookCoinsInterface.sol":{"keccak256":"0xcf41c76b6dcf12b79c26ba93040c0ec6b68614c00597203c9330f4b769dcd389","urls":["bzz-raw://f2c1b3b86b7f67c3de52e7886697fc02de9837ba724cbfde34031ecf832faf7a","dweb:/ipfs/QmXStRKqsn9KC5WXQvTz57Qxqcr1WrB2Lrs1b28bZmL4Sy"],"license":"ZORA-DELAYED-OSL-v1"},"src/IZoraLimitOrderBook.sol":{"keccak256":"0xf9486590a998c8f1ad8c272cfeb372198a0ea4f2fc506f675564b9d1b2496726","urls":["bzz-raw://59fa8b6b59d1d28d81a8ac2250e17a8f22bb0d5a8409a4be1f38f5130cf1f857","dweb:/ipfs/QmPPNcbtJMe3NpF5Nt98qTFj2XMuYvKkVeLezNKYoBiUgc"],"license":"ZORA-DELAYED-OSL-v1"}},"version":1},"id":75}
@@ -1 +1 @@
1
- {"abi":[{"type":"function","name":"fill","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"}]},{"name":"isCurrency0","type":"bool","internalType":"bool"},{"name":"startTick","type":"int24","internalType":"int24"},{"name":"endTick","type":"int24","internalType":"int24"},{"name":"maxFillCount","type":"uint256","internalType":"uint256"},{"name":"fillReferral","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"fill((address,address,uint24,int24,address),bool,int24,int24,uint256,address)":"5f8fbad6"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"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\"},{\"internalType\":\"bool\",\"name\":\"isCurrency0\",\"type\":\"bool\"},{\"internalType\":\"int24\",\"name\":\"startTick\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"endTick\",\"type\":\"int24\"},{\"internalType\":\"uint256\",\"name\":\"maxFillCount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"fillReferral\",\"type\":\"address\"}],\"name\":\"fill\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"fill((address,address,uint24,int24,address),bool,int24,int24,uint256,address)\":{\"params\":{\"endTick\":\"Inclusive ending tick. Use `type(int24).max` for the default upper bound.\",\"fillReferral\":\"Address to receive accrued LP fees; use address(0) to give fees to maker.\",\"isCurrency0\":\"Whether currency0 orders are targeted; otherwise currency1.\",\"key\":\"Pool key whose orders should be processed.\",\"maxFillCount\":\"Maximum orders to fill in this pass.\",\"startTick\":\"Inclusive starting tick. Use `-type(int24).max` for the default lower bound.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"fill((address,address,uint24,int24,address),bool,int24,int24,uint256,address)\":{\"notice\":\"Fills limit orders within a tick window.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"node_modules/@zoralabs/coins/src/interfaces/IZoraLimitOrderBookCoinsInterface.sol\":\"IZoraLimitOrderBookCoinsInterface\"},\"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/interfaces/IHooks.sol\":{\"keccak256\":\"0xc131ffa2d04c10a012fe715fe2c115811526b7ea34285cf0a04ce7ce8320da8d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3b212358897db5d99c21244d88f97b2e788527552cb430629b472a8cc6289aec\",\"dweb:/ipfs/QmQtwV4dDe2RYk2ErLpaAX7U82jWh1L6Lw2HRuKDvBi84G\"]},\"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/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/@zoralabs/coins/src/interfaces/IZoraLimitOrderBookCoinsInterface.sol\":{\"keccak256\":\"0xcf41c76b6dcf12b79c26ba93040c0ec6b68614c00597203c9330f4b769dcd389\",\"license\":\"ZORA-DELAYED-OSL-v1\",\"urls\":[\"bzz-raw://f2c1b3b86b7f67c3de52e7886697fc02de9837ba724cbfde34031ecf832faf7a\",\"dweb:/ipfs/QmXStRKqsn9KC5WXQvTz57Qxqcr1WrB2Lrs1b28bZmL4Sy\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.28+commit.7893614a"},"language":"Solidity","output":{"abi":[{"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"}]},{"internalType":"bool","name":"isCurrency0","type":"bool"},{"internalType":"int24","name":"startTick","type":"int24"},{"internalType":"int24","name":"endTick","type":"int24"},{"internalType":"uint256","name":"maxFillCount","type":"uint256"},{"internalType":"address","name":"fillReferral","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"fill"}],"devdoc":{"kind":"dev","methods":{"fill((address,address,uint24,int24,address),bool,int24,int24,uint256,address)":{"params":{"endTick":"Inclusive ending tick. Use `type(int24).max` for the default upper bound.","fillReferral":"Address to receive accrued LP fees; use address(0) to give fees to maker.","isCurrency0":"Whether currency0 orders are targeted; otherwise currency1.","key":"Pool key whose orders should be processed.","maxFillCount":"Maximum orders to fill in this pass.","startTick":"Inclusive starting tick. Use `-type(int24).max` for the default lower bound."}}},"version":1},"userdoc":{"kind":"user","methods":{"fill((address,address,uint24,int24,address),bool,int24,int24,uint256,address)":{"notice":"Fills limit orders within a tick window."}},"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/IZoraLimitOrderBookCoinsInterface.sol":"IZoraLimitOrderBookCoinsInterface"},"evmVersion":"prague","libraries":{},"viaIR":true},"sources":{"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/external/IERC20Minimal.sol":{"keccak256":"0xeccadf1bf69ba2eb51f2fe4fa511bc7bb05bbd6b9f9a3cb8e5d83d9582613e0f","urls":["bzz-raw://118757369892687b99ef46ce28d6861f62c098285bd7687a4f17f7e44e5f81de","dweb:/ipfs/QmUxqbYqQtcEwwFbb9e6BBMePEaSgN8C45v6RKubD4ib8d"],"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/@zoralabs/coins/src/interfaces/IZoraLimitOrderBookCoinsInterface.sol":{"keccak256":"0xcf41c76b6dcf12b79c26ba93040c0ec6b68614c00597203c9330f4b769dcd389","urls":["bzz-raw://f2c1b3b86b7f67c3de52e7886697fc02de9837ba724cbfde34031ecf832faf7a","dweb:/ipfs/QmXStRKqsn9KC5WXQvTz57Qxqcr1WrB2Lrs1b28bZmL4Sy"],"license":"ZORA-DELAYED-OSL-v1"}},"version":1},"id":51}
1
+ {"abi":[{"type":"function","name":"fill","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"}]},{"name":"isCurrency0","type":"bool","internalType":"bool"},{"name":"startTick","type":"int24","internalType":"int24"},{"name":"endTick","type":"int24","internalType":"int24"},{"name":"maxFillCount","type":"uint256","internalType":"uint256"},{"name":"fillReferral","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"fill((address,address,uint24,int24,address),bool,int24,int24,uint256,address)":"5f8fbad6"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"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\"},{\"internalType\":\"bool\",\"name\":\"isCurrency0\",\"type\":\"bool\"},{\"internalType\":\"int24\",\"name\":\"startTick\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"endTick\",\"type\":\"int24\"},{\"internalType\":\"uint256\",\"name\":\"maxFillCount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"fillReferral\",\"type\":\"address\"}],\"name\":\"fill\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"fill((address,address,uint24,int24,address),bool,int24,int24,uint256,address)\":{\"params\":{\"endTick\":\"Inclusive ending tick. Use `type(int24).max` for the default upper bound.\",\"fillReferral\":\"Address to receive accrued LP fees; use address(0) to give fees to maker.\",\"isCurrency0\":\"Whether currency0 orders are targeted; otherwise currency1.\",\"key\":\"Pool key whose orders should be processed.\",\"maxFillCount\":\"Maximum orders to fill in this pass.\",\"startTick\":\"Inclusive starting tick. Use `-type(int24).max` for the default lower bound.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"fill((address,address,uint24,int24,address),bool,int24,int24,uint256,address)\":{\"notice\":\"Fills limit orders within a tick window.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"node_modules/@zoralabs/coins/src/interfaces/IZoraLimitOrderBookCoinsInterface.sol\":\"IZoraLimitOrderBookCoinsInterface\"},\"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/interfaces/IHooks.sol\":{\"keccak256\":\"0xc131ffa2d04c10a012fe715fe2c115811526b7ea34285cf0a04ce7ce8320da8d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3b212358897db5d99c21244d88f97b2e788527552cb430629b472a8cc6289aec\",\"dweb:/ipfs/QmQtwV4dDe2RYk2ErLpaAX7U82jWh1L6Lw2HRuKDvBi84G\"]},\"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/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/@zoralabs/coins/src/interfaces/IZoraLimitOrderBookCoinsInterface.sol\":{\"keccak256\":\"0xcf41c76b6dcf12b79c26ba93040c0ec6b68614c00597203c9330f4b769dcd389\",\"license\":\"ZORA-DELAYED-OSL-v1\",\"urls\":[\"bzz-raw://f2c1b3b86b7f67c3de52e7886697fc02de9837ba724cbfde34031ecf832faf7a\",\"dweb:/ipfs/QmXStRKqsn9KC5WXQvTz57Qxqcr1WrB2Lrs1b28bZmL4Sy\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.28+commit.7893614a"},"language":"Solidity","output":{"abi":[{"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"}]},{"internalType":"bool","name":"isCurrency0","type":"bool"},{"internalType":"int24","name":"startTick","type":"int24"},{"internalType":"int24","name":"endTick","type":"int24"},{"internalType":"uint256","name":"maxFillCount","type":"uint256"},{"internalType":"address","name":"fillReferral","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"fill"}],"devdoc":{"kind":"dev","methods":{"fill((address,address,uint24,int24,address),bool,int24,int24,uint256,address)":{"params":{"endTick":"Inclusive ending tick. Use `type(int24).max` for the default upper bound.","fillReferral":"Address to receive accrued LP fees; use address(0) to give fees to maker.","isCurrency0":"Whether currency0 orders are targeted; otherwise currency1.","key":"Pool key whose orders should be processed.","maxFillCount":"Maximum orders to fill in this pass.","startTick":"Inclusive starting tick. Use `-type(int24).max` for the default lower bound."}}},"version":1},"userdoc":{"kind":"user","methods":{"fill((address,address,uint24,int24,address),bool,int24,int24,uint256,address)":{"notice":"Fills limit orders within a tick window."}},"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/IZoraLimitOrderBookCoinsInterface.sol":"IZoraLimitOrderBookCoinsInterface"},"evmVersion":"prague","libraries":{},"viaIR":true},"sources":{"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/external/IERC20Minimal.sol":{"keccak256":"0xeccadf1bf69ba2eb51f2fe4fa511bc7bb05bbd6b9f9a3cb8e5d83d9582613e0f","urls":["bzz-raw://118757369892687b99ef46ce28d6861f62c098285bd7687a4f17f7e44e5f81de","dweb:/ipfs/QmUxqbYqQtcEwwFbb9e6BBMePEaSgN8C45v6RKubD4ib8d"],"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/@zoralabs/coins/src/interfaces/IZoraLimitOrderBookCoinsInterface.sol":{"keccak256":"0xcf41c76b6dcf12b79c26ba93040c0ec6b68614c00597203c9330f4b769dcd389","urls":["bzz-raw://f2c1b3b86b7f67c3de52e7886697fc02de9837ba724cbfde34031ecf832faf7a","dweb:/ipfs/QmXStRKqsn9KC5WXQvTz57Qxqcr1WrB2Lrs1b28bZmL4Sy"],"license":"ZORA-DELAYED-OSL-v1"}},"version":1},"id":52}