@zoralabs/limit-orders 0.2.5 → 0.2.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.abi-stability +0 -21
- package/.turbo/turbo-build$colon$js.log +52 -50
- package/CHANGELOG.md +21 -6
- package/abis/ContractVersionBase.json +15 -0
- package/abis/ICoin.json +5 -0
- package/abis/IVersionedContract.json +15 -0
- package/abis/SwapWithLimitOrders.json +13 -0
- package/abis/ZoraLimitOrderBook.json +13 -0
- package/cache/solidity-files-cache.json +1 -1
- package/dist/index.cjs +14 -0
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +14 -0
- package/dist/index.js.map +1 -1
- package/dist/wagmiGenerated.d.ts +20 -0
- package/dist/wagmiGenerated.d.ts.map +1 -1
- package/out/BytesLib.sol/BytesLib.json +1 -1
- package/out/CoinConfigurationVersions.sol/CoinConfigurationVersions.json +1 -1
- package/out/CoinConstants.sol/CoinConstants.json +1 -1
- package/out/ContractVersionBase.sol/ContractVersionBase.json +1 -0
- package/out/DopplerMath.sol/DopplerMath.json +1 -1
- package/out/ICoin.sol/ICoin.json +1 -1
- package/out/ICoin.sol/IHasCoinType.json +1 -1
- package/out/ICoin.sol/IHasPoolKey.json +1 -1
- package/out/ICoin.sol/IHasSwapPath.json +1 -1
- package/out/ICoin.sol/IHasTotalSupplyForPositions.json +1 -1
- package/out/ISwapRouter.sol/ISwapRouter.json +1 -1
- package/out/IUniswapV3SwapCallback.sol/IUniswapV3SwapCallback.json +1 -1
- package/out/IVersionedContract.sol/IVersionedContract.json +1 -0
- package/out/IZoraLimitOrderBook.sol/IZoraLimitOrderBook.json +1 -1
- package/out/IZoraV4CoinHook.sol/IZoraV4CoinHook.json +1 -1
- package/out/LimitOrderBitmap.sol/LimitOrderBitmap.json +1 -1
- package/out/LimitOrderCommon.sol/LimitOrderCommon.json +1 -1
- package/out/LimitOrderCreate.sol/LimitOrderCreate.json +1 -1
- package/out/LimitOrderFill.sol/LimitOrderFill.json +1 -1
- package/out/LimitOrderLiquidity.sol/LimitOrderLiquidity.json +1 -1
- package/out/LimitOrderQueues.sol/LimitOrderQueues.json +1 -1
- package/out/LimitOrderStorage.sol/LimitOrderStorage.json +1 -1
- package/out/LimitOrderTypes.sol/LimitOrderTypes.json +1 -1
- package/out/LimitOrderViews.sol/LimitOrderViews.json +1 -1
- package/out/LimitOrderWithdraw.sol/LimitOrderWithdraw.json +1 -1
- package/out/Path.sol/Path.json +1 -1
- package/out/Permit2Payments.sol/Permit2Payments.json +1 -1
- package/out/PermittedCallers.sol/PermittedCallers.json +1 -1
- package/out/SwapLimitOrders.sol/SwapLimitOrders.json +1 -1
- package/out/SwapWithLimitOrders.sol/SwapWithLimitOrders.json +1 -1
- package/out/UniV4SwapToCurrency.sol/UniV4SwapToCurrency.json +1 -1
- package/out/ZoraLimitOrderBook.sol/ZoraLimitOrderBook.json +1 -1
- package/out/build-info/{c9f7ee5726bfbd48.json → fcf3d601c2943dea.json} +1 -1
- package/package/wagmiGenerated.ts +14 -0
- package/package.json +3 -3
- package/src/ZoraLimitOrderBook.sol +4 -1
- package/src/libs/LimitOrderFill.sol +4 -5
- package/src/router/SwapWithLimitOrders.sol +2 -1
- package/src/version/ContractVersionBase.sol +14 -0
- package/test/DebugSwapWithLimitOrders.t.sol +196 -0
- package/test/LimitOrderAccessControl.t.sol +8 -2
- package/test/LimitOrderFill.t.sol +118 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"abi":[{"type":"function","name":"exactInput","inputs":[{"name":"params","type":"tuple","internalType":"struct ISwapRouter.ExactInputParams","components":[{"name":"path","type":"bytes","internalType":"bytes"},{"name":"recipient","type":"address","internalType":"address"},{"name":"amountIn","type":"uint256","internalType":"uint256"},{"name":"amountOutMinimum","type":"uint256","internalType":"uint256"}]}],"outputs":[{"name":"amountOut","type":"uint256","internalType":"uint256"}],"stateMutability":"payable"},{"type":"function","name":"exactInputSingle","inputs":[{"name":"params","type":"tuple","internalType":"struct ISwapRouter.ExactInputSingleParams","components":[{"name":"tokenIn","type":"address","internalType":"address"},{"name":"tokenOut","type":"address","internalType":"address"},{"name":"fee","type":"uint24","internalType":"uint24"},{"name":"recipient","type":"address","internalType":"address"},{"name":"amountIn","type":"uint256","internalType":"uint256"},{"name":"amountOutMinimum","type":"uint256","internalType":"uint256"},{"name":"sqrtPriceLimitX96","type":"uint160","internalType":"uint160"}]}],"outputs":[{"name":"amountOut","type":"uint256","internalType":"uint256"}],"stateMutability":"payable"},{"type":"function","name":"exactOutput","inputs":[{"name":"params","type":"tuple","internalType":"struct ISwapRouter.ExactOutputParams","components":[{"name":"path","type":"bytes","internalType":"bytes"},{"name":"recipient","type":"address","internalType":"address"},{"name":"amountOut","type":"uint256","internalType":"uint256"},{"name":"amountInMaximum","type":"uint256","internalType":"uint256"}]}],"outputs":[{"name":"amountIn","type":"uint256","internalType":"uint256"}],"stateMutability":"payable"},{"type":"function","name":"exactOutputSingle","inputs":[{"name":"params","type":"tuple","internalType":"struct ISwapRouter.ExactOutputSingleParams","components":[{"name":"tokenIn","type":"address","internalType":"address"},{"name":"tokenOut","type":"address","internalType":"address"},{"name":"fee","type":"uint24","internalType":"uint24"},{"name":"recipient","type":"address","internalType":"address"},{"name":"amountOut","type":"uint256","internalType":"uint256"},{"name":"amountInMaximum","type":"uint256","internalType":"uint256"},{"name":"sqrtPriceLimitX96","type":"uint160","internalType":"uint160"}]}],"outputs":[{"name":"amountIn","type":"uint256","internalType":"uint256"}],"stateMutability":"payable"},{"type":"function","name":"uniswapV3SwapCallback","inputs":[{"name":"amount0Delta","type":"int256","internalType":"int256"},{"name":"amount1Delta","type":"int256","internalType":"int256"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"exactInput((bytes,address,uint256,uint256))":"b858183f","exactInputSingle((address,address,uint24,address,uint256,uint256,uint160))":"04e45aaf","exactOutput((bytes,address,uint256,uint256))":"09b81346","exactOutputSingle((address,address,uint24,address,uint256,uint256,uint160))":"5023b4df","uniswapV3SwapCallback(int256,int256,bytes)":"fa461e33"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"path\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMinimum\",\"type\":\"uint256\"}],\"internalType\":\"struct ISwapRouter.ExactInputParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"exactInput\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMinimum\",\"type\":\"uint256\"},{\"internalType\":\"uint160\",\"name\":\"sqrtPriceLimitX96\",\"type\":\"uint160\"}],\"internalType\":\"struct ISwapRouter.ExactInputSingleParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"exactInputSingle\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"path\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountInMaximum\",\"type\":\"uint256\"}],\"internalType\":\"struct ISwapRouter.ExactOutputParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"exactOutput\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountInMaximum\",\"type\":\"uint256\"},{\"internalType\":\"uint160\",\"name\":\"sqrtPriceLimitX96\",\"type\":\"uint160\"}],\"internalType\":\"struct ISwapRouter.ExactOutputSingleParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"exactOutputSingle\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"amount0Delta\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"amount1Delta\",\"type\":\"int256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"uniswapV3SwapCallback\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"exactInput((bytes,address,uint256,uint256))\":{\"details\":\"Setting `amountIn` to 0 will cause the contract to look up its own balance, and swap the entire amount, enabling contracts to send tokens before calling this function.\",\"params\":{\"params\":\"The parameters necessary for the multi-hop swap, encoded as `ExactInputParams` in calldata\"},\"returns\":{\"amountOut\":\"The amount of the received token\"}},\"exactInputSingle((address,address,uint24,address,uint256,uint256,uint160))\":{\"details\":\"Setting `amountIn` to 0 will cause the contract to look up its own balance, and swap the entire amount, enabling contracts to send tokens before calling this function.\",\"params\":{\"params\":\"The parameters necessary for the swap, encoded as `ExactInputSingleParams` in calldata\"},\"returns\":{\"amountOut\":\"The amount of the received token\"}},\"exactOutput((bytes,address,uint256,uint256))\":{\"params\":{\"params\":\"The parameters necessary for the multi-hop swap, encoded as `ExactOutputParams` in calldata\"},\"returns\":{\"amountIn\":\"The amount of the input token\"}},\"exactOutputSingle((address,address,uint24,address,uint256,uint256,uint160))\":{\"params\":{\"params\":\"The parameters necessary for the swap, encoded as `ExactOutputSingleParams` in calldata\"},\"returns\":{\"amountIn\":\"The amount of the input token\"}},\"uniswapV3SwapCallback(int256,int256,bytes)\":{\"details\":\"In the implementation you must pay the pool tokens owed for the swap. The caller of this method must be checked to be a UniswapV3Pool deployed by the canonical UniswapV3Factory. amount0Delta and amount1Delta can both be 0 if no tokens were swapped.\",\"params\":{\"amount0Delta\":\"The amount of token0 that was sent (negative) or must be received (positive) by the pool by the end of the swap. If positive, the callback must send that amount of token0 to the pool.\",\"amount1Delta\":\"The amount of token1 that was sent (negative) or must be received (positive) by the pool by the end of the swap. If positive, the callback must send that amount of token1 to the pool.\",\"data\":\"Any data passed through by the caller via the IUniswapV3PoolActions#swap call\"}}},\"title\":\"Router token swapping functionality\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"exactInput((bytes,address,uint256,uint256))\":{\"notice\":\"Swaps `amountIn` of one token for as much as possible of another along the specified path\"},\"exactInputSingle((address,address,uint24,address,uint256,uint256,uint160))\":{\"notice\":\"Swaps `amountIn` of one token for as much as possible of another token\"},\"exactOutput((bytes,address,uint256,uint256))\":{\"notice\":\"Swaps as little as possible of one token for `amountOut` of another along the specified path (reversed) that may remain in the router after the swap.\"},\"exactOutputSingle((address,address,uint24,address,uint256,uint256,uint160))\":{\"notice\":\"Swaps as little as possible of one token for `amountOut` of another token that may remain in the router after the swap.\"},\"uniswapV3SwapCallback(int256,int256,bytes)\":{\"notice\":\"Called to `msg.sender` after executing a swap via IUniswapV3Pool#swap.\"}},\"notice\":\"Functions for swapping tokens via Uniswap V3\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"node_modules/@zoralabs/shared-contracts/src/interfaces/uniswap/ISwapRouter.sol\":\"ISwapRouter\"},\"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/@zoralabs/shared-contracts/src/interfaces/uniswap/ISwapRouter.sol\":{\"keccak256\":\"0xccaccab57b0d5a23ba1092ef049ece0352d276fbbf20baf22f5aa5ade46ffe64\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://51a3e5c723fa25de65bc0a01778fa25eae3f6309afe239bdd2baeab5e995c485\",\"dweb:/ipfs/QmXYticnovthF2AzTkwSQdUbeXhiu7TuSQTJLrUpTLDd57\"]},\"node_modules/@zoralabs/shared-contracts/src/interfaces/uniswap/IUniswapV3SwapCallback.sol\":{\"keccak256\":\"0xf2f5787cbc1a19abdedeacfa625ab7f733b1545e75e7085948dbe92c01e613d1\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://a1161d4ce4f7f0740900fa69b6a745186d73b03767ff51fea368939542bec9b9\",\"dweb:/ipfs/Qma3egiUREoMGPiji678bkhjnKgLPCdJKz7Ku9JK1iVkFM\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.28+commit.7893614a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"struct ISwapRouter.ExactInputParams","name":"params","type":"tuple","components":[{"internalType":"bytes","name":"path","type":"bytes"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOutMinimum","type":"uint256"}]}],"stateMutability":"payable","type":"function","name":"exactInput","outputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"}]},{"inputs":[{"internalType":"struct ISwapRouter.ExactInputSingleParams","name":"params","type":"tuple","components":[{"internalType":"address","name":"tokenIn","type":"address"},{"internalType":"address","name":"tokenOut","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOutMinimum","type":"uint256"},{"internalType":"uint160","name":"sqrtPriceLimitX96","type":"uint160"}]}],"stateMutability":"payable","type":"function","name":"exactInputSingle","outputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"}]},{"inputs":[{"internalType":"struct ISwapRouter.ExactOutputParams","name":"params","type":"tuple","components":[{"internalType":"bytes","name":"path","type":"bytes"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"amountInMaximum","type":"uint256"}]}],"stateMutability":"payable","type":"function","name":"exactOutput","outputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"}]},{"inputs":[{"internalType":"struct ISwapRouter.ExactOutputSingleParams","name":"params","type":"tuple","components":[{"internalType":"address","name":"tokenIn","type":"address"},{"internalType":"address","name":"tokenOut","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"amountInMaximum","type":"uint256"},{"internalType":"uint160","name":"sqrtPriceLimitX96","type":"uint160"}]}],"stateMutability":"payable","type":"function","name":"exactOutputSingle","outputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"}]},{"inputs":[{"internalType":"int256","name":"amount0Delta","type":"int256"},{"internalType":"int256","name":"amount1Delta","type":"int256"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"uniswapV3SwapCallback"}],"devdoc":{"kind":"dev","methods":{"exactInput((bytes,address,uint256,uint256))":{"details":"Setting `amountIn` to 0 will cause the contract to look up its own balance, and swap the entire amount, enabling contracts to send tokens before calling this function.","params":{"params":"The parameters necessary for the multi-hop swap, encoded as `ExactInputParams` in calldata"},"returns":{"amountOut":"The amount of the received token"}},"exactInputSingle((address,address,uint24,address,uint256,uint256,uint160))":{"details":"Setting `amountIn` to 0 will cause the contract to look up its own balance, and swap the entire amount, enabling contracts to send tokens before calling this function.","params":{"params":"The parameters necessary for the swap, encoded as `ExactInputSingleParams` in calldata"},"returns":{"amountOut":"The amount of the received token"}},"exactOutput((bytes,address,uint256,uint256))":{"params":{"params":"The parameters necessary for the multi-hop swap, encoded as `ExactOutputParams` in calldata"},"returns":{"amountIn":"The amount of the input token"}},"exactOutputSingle((address,address,uint24,address,uint256,uint256,uint160))":{"params":{"params":"The parameters necessary for the swap, encoded as `ExactOutputSingleParams` in calldata"},"returns":{"amountIn":"The amount of the input token"}},"uniswapV3SwapCallback(int256,int256,bytes)":{"details":"In the implementation you must pay the pool tokens owed for the swap. The caller of this method must be checked to be a UniswapV3Pool deployed by the canonical UniswapV3Factory. amount0Delta and amount1Delta can both be 0 if no tokens were swapped.","params":{"amount0Delta":"The amount of token0 that was sent (negative) or must be received (positive) by the pool by the end of the swap. If positive, the callback must send that amount of token0 to the pool.","amount1Delta":"The amount of token1 that was sent (negative) or must be received (positive) by the pool by the end of the swap. If positive, the callback must send that amount of token1 to the pool.","data":"Any data passed through by the caller via the IUniswapV3PoolActions#swap call"}}},"version":1},"userdoc":{"kind":"user","methods":{"exactInput((bytes,address,uint256,uint256))":{"notice":"Swaps `amountIn` of one token for as much as possible of another along the specified path"},"exactInputSingle((address,address,uint24,address,uint256,uint256,uint160))":{"notice":"Swaps `amountIn` of one token for as much as possible of another token"},"exactOutput((bytes,address,uint256,uint256))":{"notice":"Swaps as little as possible of one token for `amountOut` of another along the specified path (reversed) that may remain in the router after the swap."},"exactOutputSingle((address,address,uint24,address,uint256,uint256,uint160))":{"notice":"Swaps as little as possible of one token for `amountOut` of another token that may remain in the router after the swap."},"uniswapV3SwapCallback(int256,int256,bytes)":{"notice":"Called to `msg.sender` after executing a swap via IUniswapV3Pool#swap."}},"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/shared-contracts/src/interfaces/uniswap/ISwapRouter.sol":"ISwapRouter"},"evmVersion":"prague","libraries":{},"viaIR":true},"sources":{"node_modules/@zoralabs/shared-contracts/src/interfaces/uniswap/ISwapRouter.sol":{"keccak256":"0xccaccab57b0d5a23ba1092ef049ece0352d276fbbf20baf22f5aa5ade46ffe64","urls":["bzz-raw://51a3e5c723fa25de65bc0a01778fa25eae3f6309afe239bdd2baeab5e995c485","dweb:/ipfs/QmXYticnovthF2AzTkwSQdUbeXhiu7TuSQTJLrUpTLDd57"],"license":"GPL-2.0-or-later"},"node_modules/@zoralabs/shared-contracts/src/interfaces/uniswap/IUniswapV3SwapCallback.sol":{"keccak256":"0xf2f5787cbc1a19abdedeacfa625ab7f733b1545e75e7085948dbe92c01e613d1","urls":["bzz-raw://a1161d4ce4f7f0740900fa69b6a745186d73b03767ff51fea368939542bec9b9","dweb:/ipfs/Qma3egiUREoMGPiji678bkhjnKgLPCdJKz7Ku9JK1iVkFM"],"license":"GPL-2.0-or-later"}},"version":1},"id":72}
|
|
1
|
+
{"abi":[{"type":"function","name":"exactInput","inputs":[{"name":"params","type":"tuple","internalType":"struct ISwapRouter.ExactInputParams","components":[{"name":"path","type":"bytes","internalType":"bytes"},{"name":"recipient","type":"address","internalType":"address"},{"name":"amountIn","type":"uint256","internalType":"uint256"},{"name":"amountOutMinimum","type":"uint256","internalType":"uint256"}]}],"outputs":[{"name":"amountOut","type":"uint256","internalType":"uint256"}],"stateMutability":"payable"},{"type":"function","name":"exactInputSingle","inputs":[{"name":"params","type":"tuple","internalType":"struct ISwapRouter.ExactInputSingleParams","components":[{"name":"tokenIn","type":"address","internalType":"address"},{"name":"tokenOut","type":"address","internalType":"address"},{"name":"fee","type":"uint24","internalType":"uint24"},{"name":"recipient","type":"address","internalType":"address"},{"name":"amountIn","type":"uint256","internalType":"uint256"},{"name":"amountOutMinimum","type":"uint256","internalType":"uint256"},{"name":"sqrtPriceLimitX96","type":"uint160","internalType":"uint160"}]}],"outputs":[{"name":"amountOut","type":"uint256","internalType":"uint256"}],"stateMutability":"payable"},{"type":"function","name":"exactOutput","inputs":[{"name":"params","type":"tuple","internalType":"struct ISwapRouter.ExactOutputParams","components":[{"name":"path","type":"bytes","internalType":"bytes"},{"name":"recipient","type":"address","internalType":"address"},{"name":"amountOut","type":"uint256","internalType":"uint256"},{"name":"amountInMaximum","type":"uint256","internalType":"uint256"}]}],"outputs":[{"name":"amountIn","type":"uint256","internalType":"uint256"}],"stateMutability":"payable"},{"type":"function","name":"exactOutputSingle","inputs":[{"name":"params","type":"tuple","internalType":"struct ISwapRouter.ExactOutputSingleParams","components":[{"name":"tokenIn","type":"address","internalType":"address"},{"name":"tokenOut","type":"address","internalType":"address"},{"name":"fee","type":"uint24","internalType":"uint24"},{"name":"recipient","type":"address","internalType":"address"},{"name":"amountOut","type":"uint256","internalType":"uint256"},{"name":"amountInMaximum","type":"uint256","internalType":"uint256"},{"name":"sqrtPriceLimitX96","type":"uint160","internalType":"uint160"}]}],"outputs":[{"name":"amountIn","type":"uint256","internalType":"uint256"}],"stateMutability":"payable"},{"type":"function","name":"uniswapV3SwapCallback","inputs":[{"name":"amount0Delta","type":"int256","internalType":"int256"},{"name":"amount1Delta","type":"int256","internalType":"int256"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"exactInput((bytes,address,uint256,uint256))":"b858183f","exactInputSingle((address,address,uint24,address,uint256,uint256,uint160))":"04e45aaf","exactOutput((bytes,address,uint256,uint256))":"09b81346","exactOutputSingle((address,address,uint24,address,uint256,uint256,uint160))":"5023b4df","uniswapV3SwapCallback(int256,int256,bytes)":"fa461e33"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"path\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMinimum\",\"type\":\"uint256\"}],\"internalType\":\"struct ISwapRouter.ExactInputParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"exactInput\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMinimum\",\"type\":\"uint256\"},{\"internalType\":\"uint160\",\"name\":\"sqrtPriceLimitX96\",\"type\":\"uint160\"}],\"internalType\":\"struct ISwapRouter.ExactInputSingleParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"exactInputSingle\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"path\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountInMaximum\",\"type\":\"uint256\"}],\"internalType\":\"struct ISwapRouter.ExactOutputParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"exactOutput\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountInMaximum\",\"type\":\"uint256\"},{\"internalType\":\"uint160\",\"name\":\"sqrtPriceLimitX96\",\"type\":\"uint160\"}],\"internalType\":\"struct ISwapRouter.ExactOutputSingleParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"exactOutputSingle\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"amount0Delta\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"amount1Delta\",\"type\":\"int256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"uniswapV3SwapCallback\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"exactInput((bytes,address,uint256,uint256))\":{\"details\":\"Setting `amountIn` to 0 will cause the contract to look up its own balance, and swap the entire amount, enabling contracts to send tokens before calling this function.\",\"params\":{\"params\":\"The parameters necessary for the multi-hop swap, encoded as `ExactInputParams` in calldata\"},\"returns\":{\"amountOut\":\"The amount of the received token\"}},\"exactInputSingle((address,address,uint24,address,uint256,uint256,uint160))\":{\"details\":\"Setting `amountIn` to 0 will cause the contract to look up its own balance, and swap the entire amount, enabling contracts to send tokens before calling this function.\",\"params\":{\"params\":\"The parameters necessary for the swap, encoded as `ExactInputSingleParams` in calldata\"},\"returns\":{\"amountOut\":\"The amount of the received token\"}},\"exactOutput((bytes,address,uint256,uint256))\":{\"params\":{\"params\":\"The parameters necessary for the multi-hop swap, encoded as `ExactOutputParams` in calldata\"},\"returns\":{\"amountIn\":\"The amount of the input token\"}},\"exactOutputSingle((address,address,uint24,address,uint256,uint256,uint160))\":{\"params\":{\"params\":\"The parameters necessary for the swap, encoded as `ExactOutputSingleParams` in calldata\"},\"returns\":{\"amountIn\":\"The amount of the input token\"}},\"uniswapV3SwapCallback(int256,int256,bytes)\":{\"details\":\"In the implementation you must pay the pool tokens owed for the swap. The caller of this method must be checked to be a UniswapV3Pool deployed by the canonical UniswapV3Factory. amount0Delta and amount1Delta can both be 0 if no tokens were swapped.\",\"params\":{\"amount0Delta\":\"The amount of token0 that was sent (negative) or must be received (positive) by the pool by the end of the swap. If positive, the callback must send that amount of token0 to the pool.\",\"amount1Delta\":\"The amount of token1 that was sent (negative) or must be received (positive) by the pool by the end of the swap. If positive, the callback must send that amount of token1 to the pool.\",\"data\":\"Any data passed through by the caller via the IUniswapV3PoolActions#swap call\"}}},\"title\":\"Router token swapping functionality\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"exactInput((bytes,address,uint256,uint256))\":{\"notice\":\"Swaps `amountIn` of one token for as much as possible of another along the specified path\"},\"exactInputSingle((address,address,uint24,address,uint256,uint256,uint160))\":{\"notice\":\"Swaps `amountIn` of one token for as much as possible of another token\"},\"exactOutput((bytes,address,uint256,uint256))\":{\"notice\":\"Swaps as little as possible of one token for `amountOut` of another along the specified path (reversed) that may remain in the router after the swap.\"},\"exactOutputSingle((address,address,uint24,address,uint256,uint256,uint160))\":{\"notice\":\"Swaps as little as possible of one token for `amountOut` of another token that may remain in the router after the swap.\"},\"uniswapV3SwapCallback(int256,int256,bytes)\":{\"notice\":\"Called to `msg.sender` after executing a swap via IUniswapV3Pool#swap.\"}},\"notice\":\"Functions for swapping tokens via Uniswap V3\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"node_modules/@zoralabs/shared-contracts/src/interfaces/uniswap/ISwapRouter.sol\":\"ISwapRouter\"},\"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/@zoralabs/shared-contracts/src/interfaces/uniswap/ISwapRouter.sol\":{\"keccak256\":\"0xccaccab57b0d5a23ba1092ef049ece0352d276fbbf20baf22f5aa5ade46ffe64\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://51a3e5c723fa25de65bc0a01778fa25eae3f6309afe239bdd2baeab5e995c485\",\"dweb:/ipfs/QmXYticnovthF2AzTkwSQdUbeXhiu7TuSQTJLrUpTLDd57\"]},\"node_modules/@zoralabs/shared-contracts/src/interfaces/uniswap/IUniswapV3SwapCallback.sol\":{\"keccak256\":\"0xf2f5787cbc1a19abdedeacfa625ab7f733b1545e75e7085948dbe92c01e613d1\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://a1161d4ce4f7f0740900fa69b6a745186d73b03767ff51fea368939542bec9b9\",\"dweb:/ipfs/Qma3egiUREoMGPiji678bkhjnKgLPCdJKz7Ku9JK1iVkFM\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.28+commit.7893614a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"struct ISwapRouter.ExactInputParams","name":"params","type":"tuple","components":[{"internalType":"bytes","name":"path","type":"bytes"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOutMinimum","type":"uint256"}]}],"stateMutability":"payable","type":"function","name":"exactInput","outputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"}]},{"inputs":[{"internalType":"struct ISwapRouter.ExactInputSingleParams","name":"params","type":"tuple","components":[{"internalType":"address","name":"tokenIn","type":"address"},{"internalType":"address","name":"tokenOut","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOutMinimum","type":"uint256"},{"internalType":"uint160","name":"sqrtPriceLimitX96","type":"uint160"}]}],"stateMutability":"payable","type":"function","name":"exactInputSingle","outputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"}]},{"inputs":[{"internalType":"struct ISwapRouter.ExactOutputParams","name":"params","type":"tuple","components":[{"internalType":"bytes","name":"path","type":"bytes"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"amountInMaximum","type":"uint256"}]}],"stateMutability":"payable","type":"function","name":"exactOutput","outputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"}]},{"inputs":[{"internalType":"struct ISwapRouter.ExactOutputSingleParams","name":"params","type":"tuple","components":[{"internalType":"address","name":"tokenIn","type":"address"},{"internalType":"address","name":"tokenOut","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"amountInMaximum","type":"uint256"},{"internalType":"uint160","name":"sqrtPriceLimitX96","type":"uint160"}]}],"stateMutability":"payable","type":"function","name":"exactOutputSingle","outputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"}]},{"inputs":[{"internalType":"int256","name":"amount0Delta","type":"int256"},{"internalType":"int256","name":"amount1Delta","type":"int256"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"uniswapV3SwapCallback"}],"devdoc":{"kind":"dev","methods":{"exactInput((bytes,address,uint256,uint256))":{"details":"Setting `amountIn` to 0 will cause the contract to look up its own balance, and swap the entire amount, enabling contracts to send tokens before calling this function.","params":{"params":"The parameters necessary for the multi-hop swap, encoded as `ExactInputParams` in calldata"},"returns":{"amountOut":"The amount of the received token"}},"exactInputSingle((address,address,uint24,address,uint256,uint256,uint160))":{"details":"Setting `amountIn` to 0 will cause the contract to look up its own balance, and swap the entire amount, enabling contracts to send tokens before calling this function.","params":{"params":"The parameters necessary for the swap, encoded as `ExactInputSingleParams` in calldata"},"returns":{"amountOut":"The amount of the received token"}},"exactOutput((bytes,address,uint256,uint256))":{"params":{"params":"The parameters necessary for the multi-hop swap, encoded as `ExactOutputParams` in calldata"},"returns":{"amountIn":"The amount of the input token"}},"exactOutputSingle((address,address,uint24,address,uint256,uint256,uint160))":{"params":{"params":"The parameters necessary for the swap, encoded as `ExactOutputSingleParams` in calldata"},"returns":{"amountIn":"The amount of the input token"}},"uniswapV3SwapCallback(int256,int256,bytes)":{"details":"In the implementation you must pay the pool tokens owed for the swap. The caller of this method must be checked to be a UniswapV3Pool deployed by the canonical UniswapV3Factory. amount0Delta and amount1Delta can both be 0 if no tokens were swapped.","params":{"amount0Delta":"The amount of token0 that was sent (negative) or must be received (positive) by the pool by the end of the swap. If positive, the callback must send that amount of token0 to the pool.","amount1Delta":"The amount of token1 that was sent (negative) or must be received (positive) by the pool by the end of the swap. If positive, the callback must send that amount of token1 to the pool.","data":"Any data passed through by the caller via the IUniswapV3PoolActions#swap call"}}},"version":1},"userdoc":{"kind":"user","methods":{"exactInput((bytes,address,uint256,uint256))":{"notice":"Swaps `amountIn` of one token for as much as possible of another along the specified path"},"exactInputSingle((address,address,uint24,address,uint256,uint256,uint160))":{"notice":"Swaps `amountIn` of one token for as much as possible of another token"},"exactOutput((bytes,address,uint256,uint256))":{"notice":"Swaps as little as possible of one token for `amountOut` of another along the specified path (reversed) that may remain in the router after the swap."},"exactOutputSingle((address,address,uint24,address,uint256,uint256,uint160))":{"notice":"Swaps as little as possible of one token for `amountOut` of another token that may remain in the router after the swap."},"uniswapV3SwapCallback(int256,int256,bytes)":{"notice":"Called to `msg.sender` after executing a swap via IUniswapV3Pool#swap."}},"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/shared-contracts/src/interfaces/uniswap/ISwapRouter.sol":"ISwapRouter"},"evmVersion":"prague","libraries":{},"viaIR":true},"sources":{"node_modules/@zoralabs/shared-contracts/src/interfaces/uniswap/ISwapRouter.sol":{"keccak256":"0xccaccab57b0d5a23ba1092ef049ece0352d276fbbf20baf22f5aa5ade46ffe64","urls":["bzz-raw://51a3e5c723fa25de65bc0a01778fa25eae3f6309afe239bdd2baeab5e995c485","dweb:/ipfs/QmXYticnovthF2AzTkwSQdUbeXhiu7TuSQTJLrUpTLDd57"],"license":"GPL-2.0-or-later"},"node_modules/@zoralabs/shared-contracts/src/interfaces/uniswap/IUniswapV3SwapCallback.sol":{"keccak256":"0xf2f5787cbc1a19abdedeacfa625ab7f733b1545e75e7085948dbe92c01e613d1","urls":["bzz-raw://a1161d4ce4f7f0740900fa69b6a745186d73b03767ff51fea368939542bec9b9","dweb:/ipfs/Qma3egiUREoMGPiji678bkhjnKgLPCdJKz7Ku9JK1iVkFM"],"license":"GPL-2.0-or-later"}},"version":1},"id":73}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"abi":[{"type":"function","name":"uniswapV3SwapCallback","inputs":[{"name":"amount0Delta","type":"int256","internalType":"int256"},{"name":"amount1Delta","type":"int256","internalType":"int256"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"uniswapV3SwapCallback(int256,int256,bytes)":"fa461e33"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"amount0Delta\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"amount1Delta\",\"type\":\"int256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"uniswapV3SwapCallback\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"uniswapV3SwapCallback(int256,int256,bytes)\":{\"details\":\"In the implementation you must pay the pool tokens owed for the swap. The caller of this method must be checked to be a UniswapV3Pool deployed by the canonical UniswapV3Factory. amount0Delta and amount1Delta can both be 0 if no tokens were swapped.\",\"params\":{\"amount0Delta\":\"The amount of token0 that was sent (negative) or must be received (positive) by the pool by the end of the swap. If positive, the callback must send that amount of token0 to the pool.\",\"amount1Delta\":\"The amount of token1 that was sent (negative) or must be received (positive) by the pool by the end of the swap. If positive, the callback must send that amount of token1 to the pool.\",\"data\":\"Any data passed through by the caller via the IUniswapV3PoolActions#swap call\"}}},\"title\":\"Callback for IUniswapV3PoolActions#swap\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"uniswapV3SwapCallback(int256,int256,bytes)\":{\"notice\":\"Called to `msg.sender` after executing a swap via IUniswapV3Pool#swap.\"}},\"notice\":\"Any contract that calls IUniswapV3PoolActions#swap must implement this interface\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"node_modules/@zoralabs/shared-contracts/src/interfaces/uniswap/IUniswapV3SwapCallback.sol\":\"IUniswapV3SwapCallback\"},\"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/@zoralabs/shared-contracts/src/interfaces/uniswap/IUniswapV3SwapCallback.sol\":{\"keccak256\":\"0xf2f5787cbc1a19abdedeacfa625ab7f733b1545e75e7085948dbe92c01e613d1\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://a1161d4ce4f7f0740900fa69b6a745186d73b03767ff51fea368939542bec9b9\",\"dweb:/ipfs/Qma3egiUREoMGPiji678bkhjnKgLPCdJKz7Ku9JK1iVkFM\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.28+commit.7893614a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"int256","name":"amount0Delta","type":"int256"},{"internalType":"int256","name":"amount1Delta","type":"int256"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"uniswapV3SwapCallback"}],"devdoc":{"kind":"dev","methods":{"uniswapV3SwapCallback(int256,int256,bytes)":{"details":"In the implementation you must pay the pool tokens owed for the swap. The caller of this method must be checked to be a UniswapV3Pool deployed by the canonical UniswapV3Factory. amount0Delta and amount1Delta can both be 0 if no tokens were swapped.","params":{"amount0Delta":"The amount of token0 that was sent (negative) or must be received (positive) by the pool by the end of the swap. If positive, the callback must send that amount of token0 to the pool.","amount1Delta":"The amount of token1 that was sent (negative) or must be received (positive) by the pool by the end of the swap. If positive, the callback must send that amount of token1 to the pool.","data":"Any data passed through by the caller via the IUniswapV3PoolActions#swap call"}}},"version":1},"userdoc":{"kind":"user","methods":{"uniswapV3SwapCallback(int256,int256,bytes)":{"notice":"Called to `msg.sender` after executing a swap via IUniswapV3Pool#swap."}},"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/shared-contracts/src/interfaces/uniswap/IUniswapV3SwapCallback.sol":"IUniswapV3SwapCallback"},"evmVersion":"prague","libraries":{},"viaIR":true},"sources":{"node_modules/@zoralabs/shared-contracts/src/interfaces/uniswap/IUniswapV3SwapCallback.sol":{"keccak256":"0xf2f5787cbc1a19abdedeacfa625ab7f733b1545e75e7085948dbe92c01e613d1","urls":["bzz-raw://a1161d4ce4f7f0740900fa69b6a745186d73b03767ff51fea368939542bec9b9","dweb:/ipfs/Qma3egiUREoMGPiji678bkhjnKgLPCdJKz7Ku9JK1iVkFM"],"license":"GPL-2.0-or-later"}},"version":1},"id":
|
|
1
|
+
{"abi":[{"type":"function","name":"uniswapV3SwapCallback","inputs":[{"name":"amount0Delta","type":"int256","internalType":"int256"},{"name":"amount1Delta","type":"int256","internalType":"int256"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"uniswapV3SwapCallback(int256,int256,bytes)":"fa461e33"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"amount0Delta\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"amount1Delta\",\"type\":\"int256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"uniswapV3SwapCallback\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"uniswapV3SwapCallback(int256,int256,bytes)\":{\"details\":\"In the implementation you must pay the pool tokens owed for the swap. The caller of this method must be checked to be a UniswapV3Pool deployed by the canonical UniswapV3Factory. amount0Delta and amount1Delta can both be 0 if no tokens were swapped.\",\"params\":{\"amount0Delta\":\"The amount of token0 that was sent (negative) or must be received (positive) by the pool by the end of the swap. If positive, the callback must send that amount of token0 to the pool.\",\"amount1Delta\":\"The amount of token1 that was sent (negative) or must be received (positive) by the pool by the end of the swap. If positive, the callback must send that amount of token1 to the pool.\",\"data\":\"Any data passed through by the caller via the IUniswapV3PoolActions#swap call\"}}},\"title\":\"Callback for IUniswapV3PoolActions#swap\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"uniswapV3SwapCallback(int256,int256,bytes)\":{\"notice\":\"Called to `msg.sender` after executing a swap via IUniswapV3Pool#swap.\"}},\"notice\":\"Any contract that calls IUniswapV3PoolActions#swap must implement this interface\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"node_modules/@zoralabs/shared-contracts/src/interfaces/uniswap/IUniswapV3SwapCallback.sol\":\"IUniswapV3SwapCallback\"},\"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/@zoralabs/shared-contracts/src/interfaces/uniswap/IUniswapV3SwapCallback.sol\":{\"keccak256\":\"0xf2f5787cbc1a19abdedeacfa625ab7f733b1545e75e7085948dbe92c01e613d1\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://a1161d4ce4f7f0740900fa69b6a745186d73b03767ff51fea368939542bec9b9\",\"dweb:/ipfs/Qma3egiUREoMGPiji678bkhjnKgLPCdJKz7Ku9JK1iVkFM\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.28+commit.7893614a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"int256","name":"amount0Delta","type":"int256"},{"internalType":"int256","name":"amount1Delta","type":"int256"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"uniswapV3SwapCallback"}],"devdoc":{"kind":"dev","methods":{"uniswapV3SwapCallback(int256,int256,bytes)":{"details":"In the implementation you must pay the pool tokens owed for the swap. The caller of this method must be checked to be a UniswapV3Pool deployed by the canonical UniswapV3Factory. amount0Delta and amount1Delta can both be 0 if no tokens were swapped.","params":{"amount0Delta":"The amount of token0 that was sent (negative) or must be received (positive) by the pool by the end of the swap. If positive, the callback must send that amount of token0 to the pool.","amount1Delta":"The amount of token1 that was sent (negative) or must be received (positive) by the pool by the end of the swap. If positive, the callback must send that amount of token1 to the pool.","data":"Any data passed through by the caller via the IUniswapV3PoolActions#swap call"}}},"version":1},"userdoc":{"kind":"user","methods":{"uniswapV3SwapCallback(int256,int256,bytes)":{"notice":"Called to `msg.sender` after executing a swap via IUniswapV3Pool#swap."}},"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/shared-contracts/src/interfaces/uniswap/IUniswapV3SwapCallback.sol":"IUniswapV3SwapCallback"},"evmVersion":"prague","libraries":{},"viaIR":true},"sources":{"node_modules/@zoralabs/shared-contracts/src/interfaces/uniswap/IUniswapV3SwapCallback.sol":{"keccak256":"0xf2f5787cbc1a19abdedeacfa625ab7f733b1545e75e7085948dbe92c01e613d1","urls":["bzz-raw://a1161d4ce4f7f0740900fa69b6a745186d73b03767ff51fea368939542bec9b9","dweb:/ipfs/Qma3egiUREoMGPiji678bkhjnKgLPCdJKz7Ku9JK1iVkFM"],"license":"GPL-2.0-or-later"}},"version":1},"id":74}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"abi":[{"type":"function","name":"contractVersion","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"pure"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"contractVersion()":"a0a8e460"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"contractVersion\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"node_modules/@zoralabs/shared-contracts/src/interfaces/IVersionedContract.sol\":\"IVersionedContract\"},\"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/@zoralabs/shared-contracts/src/interfaces/IVersionedContract.sol\":{\"keccak256\":\"0x6e50d9eb2a9dcf107dd695c6d4c38292eb55562df1a0f59b9482943945413e66\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c03ad9fd08a3ccb0b9b772d4ace588cc16d708aeb25e87cb7f4b77e45411eb32\",\"dweb:/ipfs/QmdsNvCqYCwhLg7ZKDG2LuEAwA5azKYQbqNZXpcPzS9tn8\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.28+commit.7893614a"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"pure","type":"function","name":"contractVersion","outputs":[{"internalType":"string","name":"","type":"string"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=node_modules/@openzeppelin/","@uniswap/universal-router/contracts/=node_modules/@uniswap/universal-router/contracts/","@uniswap/v4-core/=node_modules/@uniswap/v4-core/","@uniswap/v4-periphery/=node_modules/@uniswap/v4-periphery/","@zoralabs/coins/=node_modules/@zoralabs/coins/","@zoralabs/shared-contracts/=node_modules/@zoralabs/shared-contracts/src/","ds-test/=node_modules/ds-test/src/","forge-std/=node_modules/forge-std/src/","permit2/src/=node_modules/@uniswap/permit2/src/","solady/=node_modules/solady/src/","solmate/=node_modules/solmate/src/"],"optimizer":{"enabled":true,"runs":100},"metadata":{"bytecodeHash":"none","appendCBOR":false},"compilationTarget":{"node_modules/@zoralabs/shared-contracts/src/interfaces/IVersionedContract.sol":"IVersionedContract"},"evmVersion":"prague","libraries":{},"viaIR":true},"sources":{"node_modules/@zoralabs/shared-contracts/src/interfaces/IVersionedContract.sol":{"keccak256":"0x6e50d9eb2a9dcf107dd695c6d4c38292eb55562df1a0f59b9482943945413e66","urls":["bzz-raw://c03ad9fd08a3ccb0b9b772d4ace588cc16d708aeb25e87cb7f4b77e45411eb32","dweb:/ipfs/QmdsNvCqYCwhLg7ZKDG2LuEAwA5azKYQbqNZXpcPzS9tn8"],"license":"MIT"}},"version":1},"id":72}
|
|
@@ -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":"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\":\"Access is controlled by the PermittedCallers base contract. If PUBLIC_ACCESS (address(0)) is permitted, anyone can create orders. Otherwise, only addresses in the permittedCallers mapping can create orders.\",\"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\":\"Only callable by the owner.\",\"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\":\"0x82a8534201a434e47401690a3b3725d2ec835f2bd8e340a3088628ec1c2cff18\",\"license\":\"ZORA-DELAYED-OSL-v1\",\"urls\":[\"bzz-raw://bcb05ff8ddb6b9a37fdab91436e40d29651c1250bb58f1684c51ca704dd5163b\",\"dweb:/ipfs/QmSSwpPRuTu1KoBAnS5pH7GBJp4RexAdUY5NHbTcdzH9Px\"]}},\"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":"Access is controlled by the PermittedCallers base contract. If PUBLIC_ACCESS (address(0)) is permitted, anyone can create orders. Otherwise, only addresses in the permittedCallers mapping can create orders.","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":"Only callable by the owner.","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":"0x82a8534201a434e47401690a3b3725d2ec835f2bd8e340a3088628ec1c2cff18","urls":["bzz-raw://bcb05ff8ddb6b9a37fdab91436e40d29651c1250bb58f1684c51ca704dd5163b","dweb:/ipfs/QmSSwpPRuTu1KoBAnS5pH7GBJp4RexAdUY5NHbTcdzH9Px"],"license":"ZORA-DELAYED-OSL-v1"}},"version":1},"id":76}
|
|
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\":\"Access is controlled by the PermittedCallers base contract. If PUBLIC_ACCESS (address(0)) is permitted, anyone can create orders. Otherwise, only addresses in the permittedCallers mapping can create orders.\",\"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\":\"Only callable by the owner.\",\"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\":\"0x82a8534201a434e47401690a3b3725d2ec835f2bd8e340a3088628ec1c2cff18\",\"license\":\"ZORA-DELAYED-OSL-v1\",\"urls\":[\"bzz-raw://bcb05ff8ddb6b9a37fdab91436e40d29651c1250bb58f1684c51ca704dd5163b\",\"dweb:/ipfs/QmSSwpPRuTu1KoBAnS5pH7GBJp4RexAdUY5NHbTcdzH9Px\"]}},\"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":"Access is controlled by the PermittedCallers base contract. If PUBLIC_ACCESS (address(0)) is permitted, anyone can create orders. Otherwise, only addresses in the permittedCallers mapping can create orders.","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":"Only callable by the owner.","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":"0x82a8534201a434e47401690a3b3725d2ec835f2bd8e340a3088628ec1c2cff18","urls":["bzz-raw://bcb05ff8ddb6b9a37fdab91436e40d29651c1250bb58f1684c51ca704dd5163b","dweb:/ipfs/QmSSwpPRuTu1KoBAnS5pH7GBJp4RexAdUY5NHbTcdzH9Px"],"license":"ZORA-DELAYED-OSL-v1"}},"version":1},"id":77}
|