@zoralabs/limit-orders 0.2.1 → 0.2.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (140) hide show
  1. package/.abi-stability +70 -0
  2. package/.turbo/turbo-build$colon$js.log +50 -51
  3. package/CHANGELOG.md +35 -0
  4. package/abis/ISetLimitOrderConfig.json +27 -0
  5. package/abis/{SimpleAccessManaged.json → Ownable.json} +29 -10
  6. package/abis/Ownable2Step.json +115 -0
  7. package/abis/PermittedCallers.json +181 -0
  8. package/abis/SwapWithLimitOrders.json +116 -3
  9. package/abis/ZoraLimitOrderBook.json +159 -35
  10. package/cache/solidity-files-cache.json +1 -1
  11. package/dist/index.cjs +191 -27
  12. package/dist/index.cjs.map +1 -1
  13. package/dist/index.js +191 -27
  14. package/dist/index.js.map +1 -1
  15. package/dist/wagmiGenerated.d.ts +217 -32
  16. package/dist/wagmiGenerated.d.ts.map +1 -1
  17. package/out/BalanceDelta.sol/BalanceDeltaLibrary.json +1 -1
  18. package/out/BeforeSwapDelta.sol/BeforeSwapDeltaLibrary.json +1 -1
  19. package/out/BitMath.sol/BitMath.json +1 -1
  20. package/out/BytesLib.sol/BytesLib.json +1 -1
  21. package/out/CoinCommon.sol/CoinCommon.json +1 -1
  22. package/out/CoinConfigurationVersions.sol/CoinConfigurationVersions.json +1 -1
  23. package/out/CoinConstants.sol/CoinConstants.json +1 -1
  24. package/out/Context.sol/Context.json +1 -1
  25. package/out/Currency.sol/CurrencyLibrary.json +1 -1
  26. package/out/CurrencyReserves.sol/CurrencyReserves.json +1 -1
  27. package/out/CustomRevert.sol/CustomRevert.json +1 -1
  28. package/out/DopplerMath.sol/DopplerMath.json +1 -1
  29. package/out/FixedPoint128.sol/FixedPoint128.json +1 -1
  30. package/out/FixedPoint96.sol/FixedPoint96.json +1 -1
  31. package/out/FullMath.sol/FullMath.json +1 -1
  32. package/out/IAllowanceTransfer.sol/IAllowanceTransfer.json +1 -1
  33. package/out/ICoin.sol/ICoin.json +1 -1
  34. package/out/ICoin.sol/IHasCoinType.json +1 -1
  35. package/out/ICoin.sol/IHasPoolKey.json +1 -1
  36. package/out/ICoin.sol/IHasSwapPath.json +1 -1
  37. package/out/ICoin.sol/IHasTotalSupplyForPositions.json +1 -1
  38. package/out/IDeployedCoinVersionLookup.sol/IDeployedCoinVersionLookup.json +1 -1
  39. package/out/IDopplerErrors.sol/IDopplerErrors.json +1 -1
  40. package/out/IEIP712.sol/IEIP712.json +1 -1
  41. package/out/IERC1363.sol/IERC1363.json +1 -1
  42. package/out/IERC165.sol/IERC165.json +1 -1
  43. package/out/IERC20.sol/IERC20.json +1 -1
  44. package/out/IERC20Minimal.sol/IERC20Minimal.json +1 -1
  45. package/out/IERC6909Claims.sol/IERC6909Claims.json +1 -1
  46. package/out/IERC7572.sol/IERC7572.json +1 -1
  47. package/out/IExtsload.sol/IExtsload.json +1 -1
  48. package/out/IExttload.sol/IExttload.json +1 -1
  49. package/out/IHasRewardsRecipients.sol/IHasRewardsRecipients.json +1 -1
  50. package/out/IHooks.sol/IHooks.json +1 -1
  51. package/out/IMsgSender.sol/IMsgSender.json +1 -1
  52. package/out/IPoolManager.sol/IPoolManager.json +1 -1
  53. package/out/IProtocolFees.sol/IProtocolFees.json +1 -1
  54. package/out/ISetLimitOrderConfig.sol/ISetLimitOrderConfig.json +1 -0
  55. package/out/ISupportsLimitOrderFill.sol/ISupportsLimitOrderFill.json +1 -1
  56. package/out/ISwapPathRouter.sol/ISwapPathRouter.json +1 -1
  57. package/out/ISwapRouter.sol/ISwapRouter.json +1 -1
  58. package/out/IUniswapV3SwapCallback.sol/IUniswapV3SwapCallback.json +1 -1
  59. package/out/IUpgradeableV4Hook.sol/IUpgradeableDestinationV4Hook.json +1 -1
  60. package/out/IUpgradeableV4Hook.sol/IUpgradeableDestinationV4HookWithUpdateableFee.json +1 -1
  61. package/out/IUpgradeableV4Hook.sol/IUpgradeableV4Hook.json +1 -1
  62. package/out/IWETH.sol/IWETH.json +1 -1
  63. package/out/IZoraHookRegistry.sol/IZoraHookRegistry.json +1 -1
  64. package/out/IZoraLimitOrderBook.sol/IZoraLimitOrderBook.json +1 -1
  65. package/out/IZoraLimitOrderBookCoinsInterface.sol/IZoraLimitOrderBookCoinsInterface.json +1 -1
  66. package/out/IZoraV4CoinHook.sol/IZoraV4CoinHook.json +1 -1
  67. package/out/LimitOrderBitmap.sol/LimitOrderBitmap.json +1 -1
  68. package/out/LimitOrderCommon.sol/LimitOrderCommon.json +1 -1
  69. package/out/LimitOrderCreate.sol/LimitOrderCreate.json +1 -1
  70. package/out/LimitOrderFill.sol/LimitOrderFill.json +1 -1
  71. package/out/LimitOrderLiquidity.sol/LimitOrderLiquidity.json +1 -1
  72. package/out/LimitOrderViews.sol/LimitOrderViews.json +1 -1
  73. package/out/LimitOrderWithdraw.sol/LimitOrderWithdraw.json +1 -1
  74. package/out/LiquidityAmounts.sol/LiquidityAmounts.json +1 -1
  75. package/out/LiquidityMath.sol/LiquidityMath.json +1 -1
  76. package/out/Lock.sol/Lock.json +1 -1
  77. package/out/NonzeroDeltaCount.sol/NonzeroDeltaCount.json +1 -1
  78. package/out/Ownable.sol/Ownable.json +1 -0
  79. package/out/Ownable2Step.sol/Ownable2Step.json +1 -0
  80. package/out/Path.sol/Path.json +1 -1
  81. package/out/PathKey.sol/PathKeyLibrary.json +1 -1
  82. package/out/PermittedCallers.sol/PermittedCallers.json +1 -0
  83. package/out/PoolId.sol/PoolIdLibrary.json +1 -1
  84. package/out/Position.sol/Position.json +1 -1
  85. package/out/SafeCast.sol/SafeCast.json +1 -1
  86. package/out/SafeCast160.sol/SafeCast160.json +1 -1
  87. package/out/SafeERC20.sol/SafeERC20.json +1 -1
  88. package/out/SqrtPriceMath.sol/SqrtPriceMath.json +1 -1
  89. package/out/StateLibrary.sol/StateLibrary.json +1 -1
  90. package/out/SwapLimitOrders.sol/SwapLimitOrders.json +1 -1
  91. package/out/SwapWithLimitOrders.sol/SwapWithLimitOrders.json +1 -1
  92. package/out/TickBitmap.sol/TickBitmap.json +1 -1
  93. package/out/TickMath.sol/TickMath.json +1 -1
  94. package/out/TransientSlot.sol/TransientSlot.json +1 -1
  95. package/out/TransientStateLibrary.sol/TransientStateLibrary.json +1 -1
  96. package/out/UniV4SwapToCurrency.sol/UniV4SwapToCurrency.json +1 -1
  97. package/out/UnsafeMath.sol/UnsafeMath.json +1 -1
  98. package/out/V3ToV4SwapLib.sol/V3ToV4SwapLib.json +1 -1
  99. package/out/ZoraLimitOrderBook.sol/ZoraLimitOrderBook.json +1 -1
  100. package/out/build-info/68b2e124c4a02a45.json +1 -0
  101. package/out/uniswap/BitMath.sol/BitMath.json +1 -1
  102. package/out/uniswap/CustomRevert.sol/CustomRevert.json +1 -1
  103. package/out/uniswap/FullMath.sol/FullMath.json +1 -1
  104. package/out/uniswap/SafeCast.sol/SafeCast.json +1 -1
  105. package/out/uniswap/TickMath.sol/TickMath.json +1 -1
  106. package/package/wagmiGenerated.ts +190 -26
  107. package/package.json +4 -2
  108. package/src/IZoraLimitOrderBook.sol +3 -5
  109. package/src/ZoraLimitOrderBook.sol +14 -45
  110. package/src/access/PermittedCallers.sol +45 -0
  111. package/src/libs/LimitOrderBitmap.sol +0 -1
  112. package/src/libs/LimitOrderCommon.sol +14 -0
  113. package/src/libs/LimitOrderCreate.sol +6 -0
  114. package/src/libs/LimitOrderFill.sol +3 -20
  115. package/src/libs/LimitOrderLiquidity.sol +61 -38
  116. package/src/libs/LimitOrderWithdraw.sol +2 -6
  117. package/src/libs/SwapLimitOrders.sol +13 -7
  118. package/src/router/ISetLimitOrderConfig.sol +12 -0
  119. package/src/router/SwapWithLimitOrders.sol +9 -9
  120. package/test/LimitOrderAccessControl.t.sol +173 -156
  121. package/test/LimitOrderFill.t.sol +0 -5
  122. package/test/LimitOrderLiquidityPayouts.t.sol +14 -14
  123. package/test/SwapWithLimitOrders.t.sol +0 -2
  124. package/test/SwapWithLimitOrdersRouter.t.sol +4 -2
  125. package/test/gas/LimitOrderFillGas.t.sol +0 -7
  126. package/test/gas/LimitOrderSwapGas.t.sol +0 -6
  127. package/test/unit/LimitOrderCreateUnit.t.sol +17 -17
  128. package/test/unit/SwapLimitOrdersUnit.t.sol +49 -88
  129. package/test/unit/SwapLimitOrdersValidation.t.sol +11 -19
  130. package/test/utils/BaseTest.sol +8 -17
  131. package/test/utils/TestableZoraLimitOrderBook.sol +2 -2
  132. package/abis/IAuthority.json +0 -31
  133. package/abis/SimpleAccessManager.json +0 -351
  134. package/out/IAuthority.sol/IAuthority.json +0 -1
  135. package/out/SimpleAccessManaged.sol/SimpleAccessManaged.json +0 -1
  136. package/out/SimpleAccessManager.sol/SimpleAccessManager.json +0 -1
  137. package/out/build-info/876cc09bc44cc8a7.json +0 -1
  138. package/src/access/SimpleAccessManaged.sol +0 -76
  139. package/src/access/SimpleAccessManager.sol +0 -268
  140. package/test/SimpleAccessManager.t.sol +0 -420
@@ -0,0 +1 @@
1
+ {"id":"68b2e124c4a02a45","source_id_to_path":{"0":"node_modules/@openzeppelin/contracts/access/Ownable.sol","1":"node_modules/@openzeppelin/contracts/access/Ownable2Step.sol","2":"node_modules/@openzeppelin/contracts/interfaces/IERC1363.sol","3":"node_modules/@openzeppelin/contracts/interfaces/IERC165.sol","4":"node_modules/@openzeppelin/contracts/interfaces/IERC20.sol","5":"node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol","6":"node_modules/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol","7":"node_modules/@openzeppelin/contracts/utils/Context.sol","8":"node_modules/@openzeppelin/contracts/utils/TransientSlot.sol","9":"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol","10":"node_modules/@uniswap/permit2/src/interfaces/IAllowanceTransfer.sol","11":"node_modules/@uniswap/permit2/src/interfaces/IEIP712.sol","12":"node_modules/@uniswap/permit2/src/libraries/SafeCast160.sol","13":"node_modules/@uniswap/v4-core/src/interfaces/IExtsload.sol","14":"node_modules/@uniswap/v4-core/src/interfaces/IExttload.sol","15":"node_modules/@uniswap/v4-core/src/interfaces/IHooks.sol","16":"node_modules/@uniswap/v4-core/src/interfaces/IPoolManager.sol","17":"node_modules/@uniswap/v4-core/src/interfaces/IProtocolFees.sol","18":"node_modules/@uniswap/v4-core/src/interfaces/external/IERC20Minimal.sol","19":"node_modules/@uniswap/v4-core/src/interfaces/external/IERC6909Claims.sol","20":"node_modules/@uniswap/v4-core/src/libraries/BitMath.sol","21":"node_modules/@uniswap/v4-core/src/libraries/CurrencyReserves.sol","22":"node_modules/@uniswap/v4-core/src/libraries/CustomRevert.sol","23":"node_modules/@uniswap/v4-core/src/libraries/FixedPoint128.sol","24":"node_modules/@uniswap/v4-core/src/libraries/FullMath.sol","25":"node_modules/@uniswap/v4-core/src/libraries/LiquidityMath.sol","26":"node_modules/@uniswap/v4-core/src/libraries/Lock.sol","27":"node_modules/@uniswap/v4-core/src/libraries/NonzeroDeltaCount.sol","28":"node_modules/@uniswap/v4-core/src/libraries/Position.sol","29":"node_modules/@uniswap/v4-core/src/libraries/SafeCast.sol","30":"node_modules/@uniswap/v4-core/src/libraries/StateLibrary.sol","31":"node_modules/@uniswap/v4-core/src/libraries/TickBitmap.sol","32":"node_modules/@uniswap/v4-core/src/libraries/TickMath.sol","33":"node_modules/@uniswap/v4-core/src/libraries/TransientStateLibrary.sol","34":"node_modules/@uniswap/v4-core/src/types/BalanceDelta.sol","35":"node_modules/@uniswap/v4-core/src/types/BeforeSwapDelta.sol","36":"node_modules/@uniswap/v4-core/src/types/Currency.sol","37":"node_modules/@uniswap/v4-core/src/types/PoolId.sol","38":"node_modules/@uniswap/v4-core/src/types/PoolKey.sol","39":"node_modules/@uniswap/v4-core/src/types/PoolOperation.sol","40":"node_modules/@uniswap/v4-periphery/src/libraries/PathKey.sol","41":"node_modules/@zoralabs/coins/src/interfaces/ICoin.sol","42":"node_modules/@zoralabs/coins/src/interfaces/IDeployedCoinVersionLookup.sol","43":"node_modules/@zoralabs/coins/src/interfaces/IDopplerErrors.sol","44":"node_modules/@zoralabs/coins/src/interfaces/IERC7572.sol","45":"node_modules/@zoralabs/coins/src/interfaces/IHasRewardsRecipients.sol","46":"node_modules/@zoralabs/coins/src/interfaces/IMsgSender.sol","47":"node_modules/@zoralabs/coins/src/interfaces/ISupportsLimitOrderFill.sol","48":"node_modules/@zoralabs/coins/src/interfaces/ISwapPathRouter.sol","49":"node_modules/@zoralabs/coins/src/interfaces/ISwapRouter.sol","50":"node_modules/@zoralabs/coins/src/interfaces/IUpgradeableV4Hook.sol","51":"node_modules/@zoralabs/coins/src/interfaces/IWETH.sol","52":"node_modules/@zoralabs/coins/src/interfaces/IZoraHookRegistry.sol","53":"node_modules/@zoralabs/coins/src/interfaces/IZoraLimitOrderBookCoinsInterface.sol","54":"node_modules/@zoralabs/coins/src/interfaces/IZoraV4CoinHook.sol","55":"node_modules/@zoralabs/coins/src/libs/CoinCommon.sol","56":"node_modules/@zoralabs/coins/src/libs/CoinConfigurationVersions.sol","57":"node_modules/@zoralabs/coins/src/libs/CoinConstants.sol","58":"node_modules/@zoralabs/coins/src/libs/DopplerMath.sol","59":"node_modules/@zoralabs/coins/src/libs/UniV4SwapToCurrency.sol","60":"node_modules/@zoralabs/coins/src/libs/V3ToV4SwapLib.sol","61":"node_modules/@zoralabs/coins/src/types/LpPosition.sol","62":"node_modules/@zoralabs/coins/src/types/PoolConfiguration.sol","63":"node_modules/@zoralabs/coins/src/utils/uniswap/BitMath.sol","64":"node_modules/@zoralabs/coins/src/utils/uniswap/CustomRevert.sol","65":"node_modules/@zoralabs/coins/src/utils/uniswap/FixedPoint96.sol","66":"node_modules/@zoralabs/coins/src/utils/uniswap/FullMath.sol","67":"node_modules/@zoralabs/coins/src/utils/uniswap/LiquidityAmounts.sol","68":"node_modules/@zoralabs/coins/src/utils/uniswap/SafeCast.sol","69":"node_modules/@zoralabs/coins/src/utils/uniswap/SqrtPriceMath.sol","70":"node_modules/@zoralabs/coins/src/utils/uniswap/TickMath.sol","71":"node_modules/@zoralabs/coins/src/utils/uniswap/UnsafeMath.sol","72":"node_modules/@zoralabs/shared-contracts/src/interfaces/uniswap/ISwapRouter.sol","73":"node_modules/@zoralabs/shared-contracts/src/interfaces/uniswap/IUniswapV3SwapCallback.sol","74":"node_modules/@zoralabs/shared-contracts/src/libs/UniswapV3/BytesLib.sol","75":"node_modules/@zoralabs/shared-contracts/src/libs/UniswapV3/Path.sol","76":"src/IZoraLimitOrderBook.sol","77":"src/ZoraLimitOrderBook.sol","78":"src/access/PermittedCallers.sol","79":"src/libs/LimitOrderBitmap.sol","80":"src/libs/LimitOrderCommon.sol","81":"src/libs/LimitOrderCreate.sol","82":"src/libs/LimitOrderFill.sol","83":"src/libs/LimitOrderLiquidity.sol","84":"src/libs/LimitOrderQueues.sol","85":"src/libs/LimitOrderStorage.sol","86":"src/libs/LimitOrderTypes.sol","87":"src/libs/LimitOrderViews.sol","88":"src/libs/LimitOrderWithdraw.sol","89":"src/libs/Permit2Payments.sol","90":"src/libs/SwapLimitOrders.sol","91":"src/router/ISetLimitOrderConfig.sol","92":"src/router/SwapWithLimitOrders.sol"},"language":"Solidity"}
@@ -1 +1 @@
1
- {"abi":[],"bytecode":{"object":"0x6080806040523460175760039081601c823930815050f35b5f80fdfe5f80fd","sourceMap":"414:2420:62:-:0;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x5f80fd","sourceMap":"414:2420:62:-:0;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"author\":\"Solady (https://github.com/Vectorized/solady/blob/8200a70e8dc2a77ecb074fc2e99a2a0d36547522/src/utils/LibBit.sol)\",\"details\":\"https://github.com/Uniswap/v4-core/blob/80311e34080fee64b6fc6c916e9a51a437d0e482/src/libraries/BitMath.solThis library provides functionality for computing bit properties of an unsigned integer\",\"kind\":\"dev\",\"methods\":{},\"title\":\"BitMath\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"node_modules/@zoralabs/coins/src/utils/uniswap/BitMath.sol\":\"BitMath\"},\"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/coins/src/utils/uniswap/BitMath.sol\":{\"keccak256\":\"0x4b5411b3868695776c707738846c79a2dd96bf2fd29e5fe8a47818cd20e1a19d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3d9016ed3d9902f455ce8aba6cb4e29d7cb47e5af555de00bb802d7f01566070\",\"dweb:/ipfs/QmeHZHQsXkuCN3i1YAt9WayYTTWWtNz5F8R1EspyEER2JN\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.28+commit.7893614a"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=node_modules/@openzeppelin/","@uniswap/universal-router/contracts/=node_modules/@uniswap/universal-router/contracts/","@uniswap/v4-core/=node_modules/@uniswap/v4-core/","@uniswap/v4-periphery/=node_modules/@uniswap/v4-periphery/","@zoralabs/coins/=node_modules/@zoralabs/coins/","@zoralabs/shared-contracts/=node_modules/@zoralabs/shared-contracts/src/","ds-test/=node_modules/ds-test/src/","forge-std/=node_modules/forge-std/src/","permit2/src/=node_modules/@uniswap/permit2/src/","solady/=node_modules/solady/src/","solmate/=node_modules/solmate/src/"],"optimizer":{"enabled":true,"runs":100},"metadata":{"bytecodeHash":"none","appendCBOR":false},"compilationTarget":{"node_modules/@zoralabs/coins/src/utils/uniswap/BitMath.sol":"BitMath"},"evmVersion":"prague","libraries":{},"viaIR":true},"sources":{"node_modules/@zoralabs/coins/src/utils/uniswap/BitMath.sol":{"keccak256":"0x4b5411b3868695776c707738846c79a2dd96bf2fd29e5fe8a47818cd20e1a19d","urls":["bzz-raw://3d9016ed3d9902f455ce8aba6cb4e29d7cb47e5af555de00bb802d7f01566070","dweb:/ipfs/QmeHZHQsXkuCN3i1YAt9WayYTTWWtNz5F8R1EspyEER2JN"],"license":"MIT"}},"version":1},"id":62}
1
+ {"abi":[],"bytecode":{"object":"0x6080806040523460175760039081601c823930815050f35b5f80fdfe5f80fd","sourceMap":"414:2420:63:-:0;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x5f80fd","sourceMap":"414:2420:63:-:0;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"author\":\"Solady (https://github.com/Vectorized/solady/blob/8200a70e8dc2a77ecb074fc2e99a2a0d36547522/src/utils/LibBit.sol)\",\"details\":\"https://github.com/Uniswap/v4-core/blob/80311e34080fee64b6fc6c916e9a51a437d0e482/src/libraries/BitMath.solThis library provides functionality for computing bit properties of an unsigned integer\",\"kind\":\"dev\",\"methods\":{},\"title\":\"BitMath\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"node_modules/@zoralabs/coins/src/utils/uniswap/BitMath.sol\":\"BitMath\"},\"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/coins/src/utils/uniswap/BitMath.sol\":{\"keccak256\":\"0x4b5411b3868695776c707738846c79a2dd96bf2fd29e5fe8a47818cd20e1a19d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3d9016ed3d9902f455ce8aba6cb4e29d7cb47e5af555de00bb802d7f01566070\",\"dweb:/ipfs/QmeHZHQsXkuCN3i1YAt9WayYTTWWtNz5F8R1EspyEER2JN\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.28+commit.7893614a"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=node_modules/@openzeppelin/","@uniswap/universal-router/contracts/=node_modules/@uniswap/universal-router/contracts/","@uniswap/v4-core/=node_modules/@uniswap/v4-core/","@uniswap/v4-periphery/=node_modules/@uniswap/v4-periphery/","@zoralabs/coins/=node_modules/@zoralabs/coins/","@zoralabs/shared-contracts/=node_modules/@zoralabs/shared-contracts/src/","ds-test/=node_modules/ds-test/src/","forge-std/=node_modules/forge-std/src/","permit2/src/=node_modules/@uniswap/permit2/src/","solady/=node_modules/solady/src/","solmate/=node_modules/solmate/src/"],"optimizer":{"enabled":true,"runs":100},"metadata":{"bytecodeHash":"none","appendCBOR":false},"compilationTarget":{"node_modules/@zoralabs/coins/src/utils/uniswap/BitMath.sol":"BitMath"},"evmVersion":"prague","libraries":{},"viaIR":true},"sources":{"node_modules/@zoralabs/coins/src/utils/uniswap/BitMath.sol":{"keccak256":"0x4b5411b3868695776c707738846c79a2dd96bf2fd29e5fe8a47818cd20e1a19d","urls":["bzz-raw://3d9016ed3d9902f455ce8aba6cb4e29d7cb47e5af555de00bb802d7f01566070","dweb:/ipfs/QmeHZHQsXkuCN3i1YAt9WayYTTWWtNz5F8R1EspyEER2JN"],"license":"MIT"}},"version":1},"id":63}
@@ -1 +1 @@
1
- {"abi":[{"type":"error","name":"WrappedError","inputs":[{"name":"target","type":"address","internalType":"address"},{"name":"selector","type":"bytes4","internalType":"bytes4"},{"name":"reason","type":"bytes","internalType":"bytes"},{"name":"details","type":"bytes","internalType":"bytes"}]}],"bytecode":{"object":"0x6080806040523460175760039081601c823930815050f35b5f80fdfe5f80fd","sourceMap":"622:4550:63:-:0;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x5f80fd","sourceMap":"622:4550:63:-:0;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"},{\"internalType\":\"bytes\",\"name\":\"reason\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"details\",\"type\":\"bytes\"}],\"name\":\"WrappedError\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"https://github.com/Uniswap/v4-core/blob/80311e34080fee64b6fc6c916e9a51a437d0e482/src/libraries/CustomRevert.solTo use this library, declare `using CustomRevert for bytes4;` and replace `revert CustomError()` with `CustomError.selector.revertWith()`The functions may tamper with the free memory pointer but it is fine since the call context is exited immediately\",\"errors\":{\"WrappedError(address,bytes4,bytes,bytes)\":[{\"details\":\"ERC-7751 error for wrapping bubbled up reverts\"}]},\"kind\":\"dev\",\"methods\":{},\"title\":\"Library for reverting with custom errors efficiently\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Contains functions for reverting with custom errors with different argument types efficiently\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"node_modules/@zoralabs/coins/src/utils/uniswap/CustomRevert.sol\":\"CustomRevert\"},\"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/coins/src/utils/uniswap/CustomRevert.sol\":{\"keccak256\":\"0x5c17fced6eedcacc452d65842bb5904bd26b8a72a7973a2d6fac0167700328d4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://07044645057353591b0e9f03e0c6802d225307963b45f443c082bce0738c0c2a\",\"dweb:/ipfs/QmWPo2kbp4jkm6CETwPjpqhdVgeA3EfJAtF1SVZMGbf8xU\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.28+commit.7893614a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes4","name":"selector","type":"bytes4"},{"internalType":"bytes","name":"reason","type":"bytes"},{"internalType":"bytes","name":"details","type":"bytes"}],"type":"error","name":"WrappedError"}],"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/coins/src/utils/uniswap/CustomRevert.sol":"CustomRevert"},"evmVersion":"prague","libraries":{},"viaIR":true},"sources":{"node_modules/@zoralabs/coins/src/utils/uniswap/CustomRevert.sol":{"keccak256":"0x5c17fced6eedcacc452d65842bb5904bd26b8a72a7973a2d6fac0167700328d4","urls":["bzz-raw://07044645057353591b0e9f03e0c6802d225307963b45f443c082bce0738c0c2a","dweb:/ipfs/QmWPo2kbp4jkm6CETwPjpqhdVgeA3EfJAtF1SVZMGbf8xU"],"license":"MIT"}},"version":1},"id":63}
1
+ {"abi":[{"type":"error","name":"WrappedError","inputs":[{"name":"target","type":"address","internalType":"address"},{"name":"selector","type":"bytes4","internalType":"bytes4"},{"name":"reason","type":"bytes","internalType":"bytes"},{"name":"details","type":"bytes","internalType":"bytes"}]}],"bytecode":{"object":"0x6080806040523460175760039081601c823930815050f35b5f80fdfe5f80fd","sourceMap":"622:4550:64:-:0;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x5f80fd","sourceMap":"622:4550:64:-:0;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"},{\"internalType\":\"bytes\",\"name\":\"reason\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"details\",\"type\":\"bytes\"}],\"name\":\"WrappedError\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"https://github.com/Uniswap/v4-core/blob/80311e34080fee64b6fc6c916e9a51a437d0e482/src/libraries/CustomRevert.solTo use this library, declare `using CustomRevert for bytes4;` and replace `revert CustomError()` with `CustomError.selector.revertWith()`The functions may tamper with the free memory pointer but it is fine since the call context is exited immediately\",\"errors\":{\"WrappedError(address,bytes4,bytes,bytes)\":[{\"details\":\"ERC-7751 error for wrapping bubbled up reverts\"}]},\"kind\":\"dev\",\"methods\":{},\"title\":\"Library for reverting with custom errors efficiently\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Contains functions for reverting with custom errors with different argument types efficiently\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"node_modules/@zoralabs/coins/src/utils/uniswap/CustomRevert.sol\":\"CustomRevert\"},\"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/coins/src/utils/uniswap/CustomRevert.sol\":{\"keccak256\":\"0x5c17fced6eedcacc452d65842bb5904bd26b8a72a7973a2d6fac0167700328d4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://07044645057353591b0e9f03e0c6802d225307963b45f443c082bce0738c0c2a\",\"dweb:/ipfs/QmWPo2kbp4jkm6CETwPjpqhdVgeA3EfJAtF1SVZMGbf8xU\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.28+commit.7893614a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes4","name":"selector","type":"bytes4"},{"internalType":"bytes","name":"reason","type":"bytes"},{"internalType":"bytes","name":"details","type":"bytes"}],"type":"error","name":"WrappedError"}],"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/coins/src/utils/uniswap/CustomRevert.sol":"CustomRevert"},"evmVersion":"prague","libraries":{},"viaIR":true},"sources":{"node_modules/@zoralabs/coins/src/utils/uniswap/CustomRevert.sol":{"keccak256":"0x5c17fced6eedcacc452d65842bb5904bd26b8a72a7973a2d6fac0167700328d4","urls":["bzz-raw://07044645057353591b0e9f03e0c6802d225307963b45f443c082bce0738c0c2a","dweb:/ipfs/QmWPo2kbp4jkm6CETwPjpqhdVgeA3EfJAtF1SVZMGbf8xU"],"license":"MIT"}},"version":1},"id":64}
@@ -1 +1 @@
1
- {"abi":[],"bytecode":{"object":"0x6080806040523460175760039081601c823930815050f35b5f80fdfe5f80fd","sourceMap":"471:5108:65:-:0;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x5f80fd","sourceMap":"471:5108:65:-:0;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"https://github.com/Uniswap/v4-core/blob/80311e34080fee64b6fc6c916e9a51a437d0e482/src/libraries/FullMath.solHandles \\\"phantom overflow\\\" i.e., allows multiplication and division where an intermediate value overflows 256 bits\",\"kind\":\"dev\",\"methods\":{},\"title\":\"Contains 512-bit math functions\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Facilitates multiplication and division that can have overflow of an intermediate value without any loss of precision\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"node_modules/@zoralabs/coins/src/utils/uniswap/FullMath.sol\":\"FullMath\"},\"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/coins/src/utils/uniswap/FullMath.sol\":{\"keccak256\":\"0xc6b0d61b8d60acb295d196a72f81e577007e822f63c737ae0fa87d63e228f074\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://643ddf8897f3d2610ce5ac45c0571e86cd2a97542c2599121fa39a06daa95509\",\"dweb:/ipfs/QmZ74RCf31apWy8UukKUrFi98kgSK6sRH68MFMGudPVpqx\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.28+commit.7893614a"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=node_modules/@openzeppelin/","@uniswap/universal-router/contracts/=node_modules/@uniswap/universal-router/contracts/","@uniswap/v4-core/=node_modules/@uniswap/v4-core/","@uniswap/v4-periphery/=node_modules/@uniswap/v4-periphery/","@zoralabs/coins/=node_modules/@zoralabs/coins/","@zoralabs/shared-contracts/=node_modules/@zoralabs/shared-contracts/src/","ds-test/=node_modules/ds-test/src/","forge-std/=node_modules/forge-std/src/","permit2/src/=node_modules/@uniswap/permit2/src/","solady/=node_modules/solady/src/","solmate/=node_modules/solmate/src/"],"optimizer":{"enabled":true,"runs":100},"metadata":{"bytecodeHash":"none","appendCBOR":false},"compilationTarget":{"node_modules/@zoralabs/coins/src/utils/uniswap/FullMath.sol":"FullMath"},"evmVersion":"prague","libraries":{},"viaIR":true},"sources":{"node_modules/@zoralabs/coins/src/utils/uniswap/FullMath.sol":{"keccak256":"0xc6b0d61b8d60acb295d196a72f81e577007e822f63c737ae0fa87d63e228f074","urls":["bzz-raw://643ddf8897f3d2610ce5ac45c0571e86cd2a97542c2599121fa39a06daa95509","dweb:/ipfs/QmZ74RCf31apWy8UukKUrFi98kgSK6sRH68MFMGudPVpqx"],"license":"MIT"}},"version":1},"id":65}
1
+ {"abi":[],"bytecode":{"object":"0x6080806040523460175760039081601c823930815050f35b5f80fdfe5f80fd","sourceMap":"471:5108:66:-:0;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x5f80fd","sourceMap":"471:5108:66:-:0;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"https://github.com/Uniswap/v4-core/blob/80311e34080fee64b6fc6c916e9a51a437d0e482/src/libraries/FullMath.solHandles \\\"phantom overflow\\\" i.e., allows multiplication and division where an intermediate value overflows 256 bits\",\"kind\":\"dev\",\"methods\":{},\"title\":\"Contains 512-bit math functions\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Facilitates multiplication and division that can have overflow of an intermediate value without any loss of precision\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"node_modules/@zoralabs/coins/src/utils/uniswap/FullMath.sol\":\"FullMath\"},\"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/coins/src/utils/uniswap/FullMath.sol\":{\"keccak256\":\"0xc6b0d61b8d60acb295d196a72f81e577007e822f63c737ae0fa87d63e228f074\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://643ddf8897f3d2610ce5ac45c0571e86cd2a97542c2599121fa39a06daa95509\",\"dweb:/ipfs/QmZ74RCf31apWy8UukKUrFi98kgSK6sRH68MFMGudPVpqx\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.28+commit.7893614a"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=node_modules/@openzeppelin/","@uniswap/universal-router/contracts/=node_modules/@uniswap/universal-router/contracts/","@uniswap/v4-core/=node_modules/@uniswap/v4-core/","@uniswap/v4-periphery/=node_modules/@uniswap/v4-periphery/","@zoralabs/coins/=node_modules/@zoralabs/coins/","@zoralabs/shared-contracts/=node_modules/@zoralabs/shared-contracts/src/","ds-test/=node_modules/ds-test/src/","forge-std/=node_modules/forge-std/src/","permit2/src/=node_modules/@uniswap/permit2/src/","solady/=node_modules/solady/src/","solmate/=node_modules/solmate/src/"],"optimizer":{"enabled":true,"runs":100},"metadata":{"bytecodeHash":"none","appendCBOR":false},"compilationTarget":{"node_modules/@zoralabs/coins/src/utils/uniswap/FullMath.sol":"FullMath"},"evmVersion":"prague","libraries":{},"viaIR":true},"sources":{"node_modules/@zoralabs/coins/src/utils/uniswap/FullMath.sol":{"keccak256":"0xc6b0d61b8d60acb295d196a72f81e577007e822f63c737ae0fa87d63e228f074","urls":["bzz-raw://643ddf8897f3d2610ce5ac45c0571e86cd2a97542c2599121fa39a06daa95509","dweb:/ipfs/QmZ74RCf31apWy8UukKUrFi98kgSK6sRH68MFMGudPVpqx"],"license":"MIT"}},"version":1},"id":66}
@@ -1 +1 @@
1
- {"abi":[{"type":"error","name":"SafeCastOverflow","inputs":[]}],"bytecode":{"object":"0x6080806040523460175760039081601c823930815050f35b5f80fdfe5f80fd","sourceMap":"318:2067:67:-:0;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x5f80fd","sourceMap":"318:2067:67:-:0;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"SafeCastOverflow\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"https://github.com/Uniswap/v4-core/blob/80311e34080fee64b6fc6c916e9a51a437d0e482/src/libraries/SafeCast.sol\",\"kind\":\"dev\",\"methods\":{},\"title\":\"Safe casting methods\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Contains methods for safely casting between types\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"node_modules/@zoralabs/coins/src/utils/uniswap/SafeCast.sol\":\"SafeCast\"},\"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/coins/src/utils/uniswap/CustomRevert.sol\":{\"keccak256\":\"0x5c17fced6eedcacc452d65842bb5904bd26b8a72a7973a2d6fac0167700328d4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://07044645057353591b0e9f03e0c6802d225307963b45f443c082bce0738c0c2a\",\"dweb:/ipfs/QmWPo2kbp4jkm6CETwPjpqhdVgeA3EfJAtF1SVZMGbf8xU\"]},\"node_modules/@zoralabs/coins/src/utils/uniswap/SafeCast.sol\":{\"keccak256\":\"0x5ec831c0fbdcb16091d35eee2e49d54eaadf7ce72d971aec9ea30f379cba258a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9440106f4a5ff5d829ed68c82de4f92e171c4e9306e89d28fe75b4ca30b5f298\",\"dweb:/ipfs/QmdLJitnGXNMZxG6XZxhvCMjoNEKzpZVJ2dnzGVXtWUSFf\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.28+commit.7893614a"},"language":"Solidity","output":{"abi":[{"inputs":[],"type":"error","name":"SafeCastOverflow"}],"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/coins/src/utils/uniswap/SafeCast.sol":"SafeCast"},"evmVersion":"prague","libraries":{},"viaIR":true},"sources":{"node_modules/@zoralabs/coins/src/utils/uniswap/CustomRevert.sol":{"keccak256":"0x5c17fced6eedcacc452d65842bb5904bd26b8a72a7973a2d6fac0167700328d4","urls":["bzz-raw://07044645057353591b0e9f03e0c6802d225307963b45f443c082bce0738c0c2a","dweb:/ipfs/QmWPo2kbp4jkm6CETwPjpqhdVgeA3EfJAtF1SVZMGbf8xU"],"license":"MIT"},"node_modules/@zoralabs/coins/src/utils/uniswap/SafeCast.sol":{"keccak256":"0x5ec831c0fbdcb16091d35eee2e49d54eaadf7ce72d971aec9ea30f379cba258a","urls":["bzz-raw://9440106f4a5ff5d829ed68c82de4f92e171c4e9306e89d28fe75b4ca30b5f298","dweb:/ipfs/QmdLJitnGXNMZxG6XZxhvCMjoNEKzpZVJ2dnzGVXtWUSFf"],"license":"MIT"}},"version":1},"id":67}
1
+ {"abi":[{"type":"error","name":"SafeCastOverflow","inputs":[]}],"bytecode":{"object":"0x6080806040523460175760039081601c823930815050f35b5f80fdfe5f80fd","sourceMap":"318:2067:68:-:0;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x5f80fd","sourceMap":"318:2067:68:-:0;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"SafeCastOverflow\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"https://github.com/Uniswap/v4-core/blob/80311e34080fee64b6fc6c916e9a51a437d0e482/src/libraries/SafeCast.sol\",\"kind\":\"dev\",\"methods\":{},\"title\":\"Safe casting methods\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Contains methods for safely casting between types\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"node_modules/@zoralabs/coins/src/utils/uniswap/SafeCast.sol\":\"SafeCast\"},\"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/coins/src/utils/uniswap/CustomRevert.sol\":{\"keccak256\":\"0x5c17fced6eedcacc452d65842bb5904bd26b8a72a7973a2d6fac0167700328d4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://07044645057353591b0e9f03e0c6802d225307963b45f443c082bce0738c0c2a\",\"dweb:/ipfs/QmWPo2kbp4jkm6CETwPjpqhdVgeA3EfJAtF1SVZMGbf8xU\"]},\"node_modules/@zoralabs/coins/src/utils/uniswap/SafeCast.sol\":{\"keccak256\":\"0x5ec831c0fbdcb16091d35eee2e49d54eaadf7ce72d971aec9ea30f379cba258a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9440106f4a5ff5d829ed68c82de4f92e171c4e9306e89d28fe75b4ca30b5f298\",\"dweb:/ipfs/QmdLJitnGXNMZxG6XZxhvCMjoNEKzpZVJ2dnzGVXtWUSFf\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.28+commit.7893614a"},"language":"Solidity","output":{"abi":[{"inputs":[],"type":"error","name":"SafeCastOverflow"}],"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/coins/src/utils/uniswap/SafeCast.sol":"SafeCast"},"evmVersion":"prague","libraries":{},"viaIR":true},"sources":{"node_modules/@zoralabs/coins/src/utils/uniswap/CustomRevert.sol":{"keccak256":"0x5c17fced6eedcacc452d65842bb5904bd26b8a72a7973a2d6fac0167700328d4","urls":["bzz-raw://07044645057353591b0e9f03e0c6802d225307963b45f443c082bce0738c0c2a","dweb:/ipfs/QmWPo2kbp4jkm6CETwPjpqhdVgeA3EfJAtF1SVZMGbf8xU"],"license":"MIT"},"node_modules/@zoralabs/coins/src/utils/uniswap/SafeCast.sol":{"keccak256":"0x5ec831c0fbdcb16091d35eee2e49d54eaadf7ce72d971aec9ea30f379cba258a","urls":["bzz-raw://9440106f4a5ff5d829ed68c82de4f92e171c4e9306e89d28fe75b4ca30b5f298","dweb:/ipfs/QmdLJitnGXNMZxG6XZxhvCMjoNEKzpZVJ2dnzGVXtWUSFf"],"license":"MIT"}},"version":1},"id":68}
@@ -1 +1 @@
1
- {"abi":[{"type":"error","name":"InvalidSqrtPrice","inputs":[{"name":"sqrtPriceX96","type":"uint160","internalType":"uint160"}]},{"type":"error","name":"InvalidTick","inputs":[{"name":"tick","type":"int24","internalType":"int24"}]}],"bytecode":{"object":"0x6080806040523460175760039081601c823930815050f35b5f80fdfe5f80fd","sourceMap":"498:12100:69:-:0;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x5f80fd","sourceMap":"498:12100:69:-:0;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint160\",\"name\":\"sqrtPriceX96\",\"type\":\"uint160\"}],\"name\":\"InvalidSqrtPrice\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"int24\",\"name\":\"tick\",\"type\":\"int24\"}],\"name\":\"InvalidTick\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"https://github.com/Uniswap/v4-core/blob/80311e34080fee64b6fc6c916e9a51a437d0e482/src/libraries/TickMath.sol\",\"kind\":\"dev\",\"methods\":{},\"stateVariables\":{\"MAX_SQRT_PRICE\":{\"details\":\"The maximum value that can be returned from #getSqrtPriceAtTick. Equivalent to getSqrtPriceAtTick(MAX_TICK)\"},\"MAX_SQRT_PRICE_MINUS_MIN_SQRT_PRICE_MINUS_ONE\":{\"details\":\"A threshold used for optimized bounds check, equals `MAX_SQRT_PRICE - MIN_SQRT_PRICE - 1`\"},\"MAX_TICK\":{\"details\":\"The maximum tick that may be passed to #getSqrtPriceAtTick computed from log base 1.0001 of 2**128If ever MIN_TICK and MAX_TICK are not centered around 0, the absTick logic in getSqrtPriceAtTick cannot be used\"},\"MAX_TICK_SPACING\":{\"details\":\"The maximum tick spacing value drawn from the range of type int16, i.e. max from the range [1, 32767]\"},\"MIN_SQRT_PRICE\":{\"details\":\"The minimum value that can be returned from #getSqrtPriceAtTick. Equivalent to getSqrtPriceAtTick(MIN_TICK)\"},\"MIN_TICK\":{\"details\":\"The minimum tick that may be passed to #getSqrtPriceAtTick computed from log base 1.0001 of 2**-128If ever MIN_TICK and MAX_TICK are not centered around 0, the absTick logic in getSqrtPriceAtTick cannot be used\"},\"MIN_TICK_SPACING\":{\"details\":\"The minimum tick spacing value drawn from the range of type int16 that is greater than 0, i.e. min from the range [1, 32767]\"}},\"title\":\"Math library for computing sqrt prices from ticks and vice versa\",\"version\":1},\"userdoc\":{\"errors\":{\"InvalidSqrtPrice(uint160)\":[{\"notice\":\"Thrown when the price passed to #getTickAtSqrtPrice does not correspond to a price between MIN_TICK and MAX_TICK\"}],\"InvalidTick(int24)\":[{\"notice\":\"Thrown when the tick passed to #getSqrtPriceAtTick is not between MIN_TICK and MAX_TICK\"}]},\"kind\":\"user\",\"methods\":{},\"notice\":\"Computes sqrt price for ticks of size 1.0001, i.e. sqrt(1.0001^tick) as fixed point Q64.96 numbers. Supports prices between 2**-128 and 2**128\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"node_modules/@zoralabs/coins/src/utils/uniswap/TickMath.sol\":\"TickMath\"},\"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/coins/src/utils/uniswap/BitMath.sol\":{\"keccak256\":\"0x4b5411b3868695776c707738846c79a2dd96bf2fd29e5fe8a47818cd20e1a19d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3d9016ed3d9902f455ce8aba6cb4e29d7cb47e5af555de00bb802d7f01566070\",\"dweb:/ipfs/QmeHZHQsXkuCN3i1YAt9WayYTTWWtNz5F8R1EspyEER2JN\"]},\"node_modules/@zoralabs/coins/src/utils/uniswap/CustomRevert.sol\":{\"keccak256\":\"0x5c17fced6eedcacc452d65842bb5904bd26b8a72a7973a2d6fac0167700328d4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://07044645057353591b0e9f03e0c6802d225307963b45f443c082bce0738c0c2a\",\"dweb:/ipfs/QmWPo2kbp4jkm6CETwPjpqhdVgeA3EfJAtF1SVZMGbf8xU\"]},\"node_modules/@zoralabs/coins/src/utils/uniswap/TickMath.sol\":{\"keccak256\":\"0xb8d86efe55d877582bdd2d2580d5c57c0fd955fdfb08116dba033f2e8f429e2e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://997e7fc24b30ff5464a5d3db14ac17eb07bed862bbce553a060f38affd8cb6f7\",\"dweb:/ipfs/QmfQ8bo8zEGT6NEDVRdWJaCWaAXMoH7eH8xz14XA1p4Ex3\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.28+commit.7893614a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"uint160","name":"sqrtPriceX96","type":"uint160"}],"type":"error","name":"InvalidSqrtPrice"},{"inputs":[{"internalType":"int24","name":"tick","type":"int24"}],"type":"error","name":"InvalidTick"}],"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/coins/src/utils/uniswap/TickMath.sol":"TickMath"},"evmVersion":"prague","libraries":{},"viaIR":true},"sources":{"node_modules/@zoralabs/coins/src/utils/uniswap/BitMath.sol":{"keccak256":"0x4b5411b3868695776c707738846c79a2dd96bf2fd29e5fe8a47818cd20e1a19d","urls":["bzz-raw://3d9016ed3d9902f455ce8aba6cb4e29d7cb47e5af555de00bb802d7f01566070","dweb:/ipfs/QmeHZHQsXkuCN3i1YAt9WayYTTWWtNz5F8R1EspyEER2JN"],"license":"MIT"},"node_modules/@zoralabs/coins/src/utils/uniswap/CustomRevert.sol":{"keccak256":"0x5c17fced6eedcacc452d65842bb5904bd26b8a72a7973a2d6fac0167700328d4","urls":["bzz-raw://07044645057353591b0e9f03e0c6802d225307963b45f443c082bce0738c0c2a","dweb:/ipfs/QmWPo2kbp4jkm6CETwPjpqhdVgeA3EfJAtF1SVZMGbf8xU"],"license":"MIT"},"node_modules/@zoralabs/coins/src/utils/uniswap/TickMath.sol":{"keccak256":"0xb8d86efe55d877582bdd2d2580d5c57c0fd955fdfb08116dba033f2e8f429e2e","urls":["bzz-raw://997e7fc24b30ff5464a5d3db14ac17eb07bed862bbce553a060f38affd8cb6f7","dweb:/ipfs/QmfQ8bo8zEGT6NEDVRdWJaCWaAXMoH7eH8xz14XA1p4Ex3"],"license":"MIT"}},"version":1},"id":69}
1
+ {"abi":[{"type":"error","name":"InvalidSqrtPrice","inputs":[{"name":"sqrtPriceX96","type":"uint160","internalType":"uint160"}]},{"type":"error","name":"InvalidTick","inputs":[{"name":"tick","type":"int24","internalType":"int24"}]}],"bytecode":{"object":"0x6080806040523460175760039081601c823930815050f35b5f80fdfe5f80fd","sourceMap":"498:12100:70:-:0;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x5f80fd","sourceMap":"498:12100:70:-:0;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint160\",\"name\":\"sqrtPriceX96\",\"type\":\"uint160\"}],\"name\":\"InvalidSqrtPrice\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"int24\",\"name\":\"tick\",\"type\":\"int24\"}],\"name\":\"InvalidTick\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"https://github.com/Uniswap/v4-core/blob/80311e34080fee64b6fc6c916e9a51a437d0e482/src/libraries/TickMath.sol\",\"kind\":\"dev\",\"methods\":{},\"stateVariables\":{\"MAX_SQRT_PRICE\":{\"details\":\"The maximum value that can be returned from #getSqrtPriceAtTick. Equivalent to getSqrtPriceAtTick(MAX_TICK)\"},\"MAX_SQRT_PRICE_MINUS_MIN_SQRT_PRICE_MINUS_ONE\":{\"details\":\"A threshold used for optimized bounds check, equals `MAX_SQRT_PRICE - MIN_SQRT_PRICE - 1`\"},\"MAX_TICK\":{\"details\":\"The maximum tick that may be passed to #getSqrtPriceAtTick computed from log base 1.0001 of 2**128If ever MIN_TICK and MAX_TICK are not centered around 0, the absTick logic in getSqrtPriceAtTick cannot be used\"},\"MAX_TICK_SPACING\":{\"details\":\"The maximum tick spacing value drawn from the range of type int16, i.e. max from the range [1, 32767]\"},\"MIN_SQRT_PRICE\":{\"details\":\"The minimum value that can be returned from #getSqrtPriceAtTick. Equivalent to getSqrtPriceAtTick(MIN_TICK)\"},\"MIN_TICK\":{\"details\":\"The minimum tick that may be passed to #getSqrtPriceAtTick computed from log base 1.0001 of 2**-128If ever MIN_TICK and MAX_TICK are not centered around 0, the absTick logic in getSqrtPriceAtTick cannot be used\"},\"MIN_TICK_SPACING\":{\"details\":\"The minimum tick spacing value drawn from the range of type int16 that is greater than 0, i.e. min from the range [1, 32767]\"}},\"title\":\"Math library for computing sqrt prices from ticks and vice versa\",\"version\":1},\"userdoc\":{\"errors\":{\"InvalidSqrtPrice(uint160)\":[{\"notice\":\"Thrown when the price passed to #getTickAtSqrtPrice does not correspond to a price between MIN_TICK and MAX_TICK\"}],\"InvalidTick(int24)\":[{\"notice\":\"Thrown when the tick passed to #getSqrtPriceAtTick is not between MIN_TICK and MAX_TICK\"}]},\"kind\":\"user\",\"methods\":{},\"notice\":\"Computes sqrt price for ticks of size 1.0001, i.e. sqrt(1.0001^tick) as fixed point Q64.96 numbers. Supports prices between 2**-128 and 2**128\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"node_modules/@zoralabs/coins/src/utils/uniswap/TickMath.sol\":\"TickMath\"},\"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/coins/src/utils/uniswap/BitMath.sol\":{\"keccak256\":\"0x4b5411b3868695776c707738846c79a2dd96bf2fd29e5fe8a47818cd20e1a19d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3d9016ed3d9902f455ce8aba6cb4e29d7cb47e5af555de00bb802d7f01566070\",\"dweb:/ipfs/QmeHZHQsXkuCN3i1YAt9WayYTTWWtNz5F8R1EspyEER2JN\"]},\"node_modules/@zoralabs/coins/src/utils/uniswap/CustomRevert.sol\":{\"keccak256\":\"0x5c17fced6eedcacc452d65842bb5904bd26b8a72a7973a2d6fac0167700328d4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://07044645057353591b0e9f03e0c6802d225307963b45f443c082bce0738c0c2a\",\"dweb:/ipfs/QmWPo2kbp4jkm6CETwPjpqhdVgeA3EfJAtF1SVZMGbf8xU\"]},\"node_modules/@zoralabs/coins/src/utils/uniswap/TickMath.sol\":{\"keccak256\":\"0xb8d86efe55d877582bdd2d2580d5c57c0fd955fdfb08116dba033f2e8f429e2e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://997e7fc24b30ff5464a5d3db14ac17eb07bed862bbce553a060f38affd8cb6f7\",\"dweb:/ipfs/QmfQ8bo8zEGT6NEDVRdWJaCWaAXMoH7eH8xz14XA1p4Ex3\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.28+commit.7893614a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"uint160","name":"sqrtPriceX96","type":"uint160"}],"type":"error","name":"InvalidSqrtPrice"},{"inputs":[{"internalType":"int24","name":"tick","type":"int24"}],"type":"error","name":"InvalidTick"}],"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/coins/src/utils/uniswap/TickMath.sol":"TickMath"},"evmVersion":"prague","libraries":{},"viaIR":true},"sources":{"node_modules/@zoralabs/coins/src/utils/uniswap/BitMath.sol":{"keccak256":"0x4b5411b3868695776c707738846c79a2dd96bf2fd29e5fe8a47818cd20e1a19d","urls":["bzz-raw://3d9016ed3d9902f455ce8aba6cb4e29d7cb47e5af555de00bb802d7f01566070","dweb:/ipfs/QmeHZHQsXkuCN3i1YAt9WayYTTWWtNz5F8R1EspyEER2JN"],"license":"MIT"},"node_modules/@zoralabs/coins/src/utils/uniswap/CustomRevert.sol":{"keccak256":"0x5c17fced6eedcacc452d65842bb5904bd26b8a72a7973a2d6fac0167700328d4","urls":["bzz-raw://07044645057353591b0e9f03e0c6802d225307963b45f443c082bce0738c0c2a","dweb:/ipfs/QmWPo2kbp4jkm6CETwPjpqhdVgeA3EfJAtF1SVZMGbf8xU"],"license":"MIT"},"node_modules/@zoralabs/coins/src/utils/uniswap/TickMath.sol":{"keccak256":"0xb8d86efe55d877582bdd2d2580d5c57c0fd955fdfb08116dba033f2e8f429e2e","urls":["bzz-raw://997e7fc24b30ff5464a5d3db14ac17eb07bed862bbce553a060f38affd8cb6f7","dweb:/ipfs/QmfQ8bo8zEGT6NEDVRdWJaCWaAXMoH7eH8xz14XA1p4Ex3"],"license":"MIT"}},"version":1},"id":70}
@@ -54,10 +54,18 @@ export const swapWithLimitOrdersABI = [
54
54
  type: 'address',
55
55
  },
56
56
  { name: 'permit2_', internalType: 'address', type: 'address' },
57
+ { name: 'owner_', internalType: 'address', type: 'address' },
57
58
  ],
58
59
  stateMutability: 'nonpayable',
59
60
  },
60
61
  { type: 'receive', stateMutability: 'payable' },
62
+ {
63
+ type: 'function',
64
+ inputs: [],
65
+ name: 'acceptOwnership',
66
+ outputs: [],
67
+ stateMutability: 'nonpayable',
68
+ },
61
69
  {
62
70
  type: 'function',
63
71
  inputs: [],
@@ -82,6 +90,20 @@ export const swapWithLimitOrdersABI = [
82
90
  outputs: [{ name: '', internalType: 'address', type: 'address' }],
83
91
  stateMutability: 'view',
84
92
  },
93
+ {
94
+ type: 'function',
95
+ inputs: [],
96
+ name: 'owner',
97
+ outputs: [{ name: '', internalType: 'address', type: 'address' }],
98
+ stateMutability: 'view',
99
+ },
100
+ {
101
+ type: 'function',
102
+ inputs: [],
103
+ name: 'pendingOwner',
104
+ outputs: [{ name: '', internalType: 'address', type: 'address' }],
105
+ stateMutability: 'view',
106
+ },
85
107
  {
86
108
  type: 'function',
87
109
  inputs: [],
@@ -91,6 +113,13 @@ export const swapWithLimitOrdersABI = [
91
113
  ],
92
114
  stateMutability: 'view',
93
115
  },
116
+ {
117
+ type: 'function',
118
+ inputs: [],
119
+ name: 'renounceOwnership',
120
+ outputs: [],
121
+ stateMutability: 'nonpayable',
122
+ },
94
123
  {
95
124
  type: 'function',
96
125
  inputs: [
@@ -170,6 +199,13 @@ export const swapWithLimitOrdersABI = [
170
199
  outputs: [{ name: 'delta', internalType: 'BalanceDelta', type: 'int256' }],
171
200
  stateMutability: 'payable',
172
201
  },
202
+ {
203
+ type: 'function',
204
+ inputs: [{ name: 'newOwner', internalType: 'address', type: 'address' }],
205
+ name: 'transferOwnership',
206
+ outputs: [],
207
+ stateMutability: 'nonpayable',
208
+ },
173
209
  {
174
210
  type: 'function',
175
211
  inputs: [{ name: 'data', internalType: 'bytes', type: 'bytes' }],
@@ -209,6 +245,44 @@ export const swapWithLimitOrdersABI = [
209
245
  ],
210
246
  name: 'LimitOrderConfigUpdated',
211
247
  },
248
+ {
249
+ type: 'event',
250
+ anonymous: false,
251
+ inputs: [
252
+ {
253
+ name: 'previousOwner',
254
+ internalType: 'address',
255
+ type: 'address',
256
+ indexed: true,
257
+ },
258
+ {
259
+ name: 'newOwner',
260
+ internalType: 'address',
261
+ type: 'address',
262
+ indexed: true,
263
+ },
264
+ ],
265
+ name: 'OwnershipTransferStarted',
266
+ },
267
+ {
268
+ type: 'event',
269
+ anonymous: false,
270
+ inputs: [
271
+ {
272
+ name: 'previousOwner',
273
+ internalType: 'address',
274
+ type: 'address',
275
+ indexed: true,
276
+ },
277
+ {
278
+ name: 'newOwner',
279
+ internalType: 'address',
280
+ type: 'address',
281
+ indexed: true,
282
+ },
283
+ ],
284
+ name: 'OwnershipTransferred',
285
+ },
212
286
  {
213
287
  type: 'event',
214
288
  anonymous: false,
@@ -297,8 +371,17 @@ export const swapWithLimitOrdersABI = [
297
371
  { type: 'error', inputs: [], name: 'InvalidMultiple' },
298
372
  { type: 'error', inputs: [], name: 'InvalidPercent' },
299
373
  { type: 'error', inputs: [], name: 'LengthMismatch' },
300
- { type: 'error', inputs: [], name: 'OnlyAuthority' },
301
374
  { type: 'error', inputs: [], name: 'OnlyPoolManager' },
375
+ {
376
+ type: 'error',
377
+ inputs: [{ name: 'owner', internalType: 'address', type: 'address' }],
378
+ name: 'OwnableInvalidOwner',
379
+ },
380
+ {
381
+ type: 'error',
382
+ inputs: [{ name: 'account', internalType: 'address', type: 'address' }],
383
+ name: 'OwnableUnauthorizedAccount',
384
+ },
302
385
  { type: 'error', inputs: [], name: 'PercentOverflow' },
303
386
  {
304
387
  type: 'error',
@@ -325,7 +408,7 @@ export const zoraLimitOrderBookABI = [
325
408
  type: 'address',
326
409
  },
327
410
  { name: 'zoraHookRegistry_', internalType: 'address', type: 'address' },
328
- { name: 'authority_', internalType: 'address', type: 'address' },
411
+ { name: 'owner_', internalType: 'address', type: 'address' },
329
412
  { name: 'weth_', internalType: 'address', type: 'address' },
330
413
  ],
331
414
  stateMutability: 'nonpayable',
@@ -334,9 +417,9 @@ export const zoraLimitOrderBookABI = [
334
417
  {
335
418
  type: 'function',
336
419
  inputs: [],
337
- name: 'authority',
338
- outputs: [{ name: '', internalType: 'address', type: 'address' }],
339
- stateMutability: 'view',
420
+ name: 'acceptOwnership',
421
+ outputs: [],
422
+ stateMutability: 'nonpayable',
340
423
  },
341
424
  {
342
425
  type: 'function',
@@ -438,6 +521,27 @@ export const zoraLimitOrderBookABI = [
438
521
  outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],
439
522
  stateMutability: 'view',
440
523
  },
524
+ {
525
+ type: 'function',
526
+ inputs: [{ name: 'caller', internalType: 'address', type: 'address' }],
527
+ name: 'isPermittedCaller',
528
+ outputs: [{ name: '', internalType: 'bool', type: 'bool' }],
529
+ stateMutability: 'view',
530
+ },
531
+ {
532
+ type: 'function',
533
+ inputs: [],
534
+ name: 'owner',
535
+ outputs: [{ name: '', internalType: 'address', type: 'address' }],
536
+ stateMutability: 'view',
537
+ },
538
+ {
539
+ type: 'function',
540
+ inputs: [],
541
+ name: 'pendingOwner',
542
+ outputs: [{ name: '', internalType: 'address', type: 'address' }],
543
+ stateMutability: 'view',
544
+ },
441
545
  {
442
546
  type: 'function',
443
547
  inputs: [],
@@ -449,10 +553,8 @@ export const zoraLimitOrderBookABI = [
449
553
  },
450
554
  {
451
555
  type: 'function',
452
- inputs: [
453
- { name: 'newAuthority', internalType: 'address', type: 'address' },
454
- ],
455
- name: 'setAuthority',
556
+ inputs: [],
557
+ name: 'renounceOwnership',
456
558
  outputs: [],
457
559
  stateMutability: 'nonpayable',
458
560
  },
@@ -465,6 +567,23 @@ export const zoraLimitOrderBookABI = [
465
567
  outputs: [],
466
568
  stateMutability: 'nonpayable',
467
569
  },
570
+ {
571
+ type: 'function',
572
+ inputs: [
573
+ { name: 'callers', internalType: 'address[]', type: 'address[]' },
574
+ { name: 'permitted', internalType: 'bool[]', type: 'bool[]' },
575
+ ],
576
+ name: 'setPermittedCallers',
577
+ outputs: [],
578
+ stateMutability: 'nonpayable',
579
+ },
580
+ {
581
+ type: 'function',
582
+ inputs: [{ name: 'newOwner', internalType: 'address', type: 'address' }],
583
+ name: 'transferOwnership',
584
+ outputs: [],
585
+ stateMutability: 'nonpayable',
586
+ },
468
587
  {
469
588
  type: 'function',
470
589
  inputs: [{ name: 'data', internalType: 'bytes', type: 'bytes' }],
@@ -513,19 +632,6 @@ export const zoraLimitOrderBookABI = [
513
632
  ],
514
633
  stateMutability: 'view',
515
634
  },
516
- {
517
- type: 'event',
518
- anonymous: false,
519
- inputs: [
520
- {
521
- name: 'authority',
522
- internalType: 'address',
523
- type: 'address',
524
- indexed: false,
525
- },
526
- ],
527
- name: 'AuthorityUpdated',
528
- },
529
635
  {
530
636
  type: 'event',
531
637
  anonymous: false,
@@ -704,13 +810,60 @@ export const zoraLimitOrderBookABI = [
704
810
  name: 'MakerBalanceUpdated',
705
811
  },
706
812
  {
707
- type: 'error',
708
- inputs: [{ name: 'authority', internalType: 'address', type: 'address' }],
709
- name: 'AccessManagedInvalidAuthority',
813
+ type: 'event',
814
+ anonymous: false,
815
+ inputs: [
816
+ {
817
+ name: 'previousOwner',
818
+ internalType: 'address',
819
+ type: 'address',
820
+ indexed: true,
821
+ },
822
+ {
823
+ name: 'newOwner',
824
+ internalType: 'address',
825
+ type: 'address',
826
+ indexed: true,
827
+ },
828
+ ],
829
+ name: 'OwnershipTransferStarted',
830
+ },
831
+ {
832
+ type: 'event',
833
+ anonymous: false,
834
+ inputs: [
835
+ {
836
+ name: 'previousOwner',
837
+ internalType: 'address',
838
+ type: 'address',
839
+ indexed: true,
840
+ },
841
+ {
842
+ name: 'newOwner',
843
+ internalType: 'address',
844
+ type: 'address',
845
+ indexed: true,
846
+ },
847
+ ],
848
+ name: 'OwnershipTransferred',
849
+ },
850
+ {
851
+ type: 'event',
852
+ anonymous: false,
853
+ inputs: [
854
+ {
855
+ name: 'caller',
856
+ internalType: 'address',
857
+ type: 'address',
858
+ indexed: true,
859
+ },
860
+ { name: 'permitted', internalType: 'bool', type: 'bool', indexed: false },
861
+ ],
862
+ name: 'PermittedCallerUpdated',
710
863
  },
711
- { type: 'error', inputs: [], name: 'AccessManagedUnauthorized' },
712
864
  { type: 'error', inputs: [], name: 'AddressZero' },
713
865
  { type: 'error', inputs: [], name: 'ArrayLengthMismatch' },
866
+ { type: 'error', inputs: [], name: 'CallerNotPermitted' },
714
867
  {
715
868
  type: 'error',
716
869
  inputs: [
@@ -748,7 +901,18 @@ export const zoraLimitOrderBookABI = [
748
901
  { type: 'error', inputs: [], name: 'OrderClosed' },
749
902
  { type: 'error', inputs: [], name: 'OrderFillable' },
750
903
  { type: 'error', inputs: [], name: 'OrderNotMaker' },
904
+ {
905
+ type: 'error',
906
+ inputs: [{ name: 'owner', internalType: 'address', type: 'address' }],
907
+ name: 'OwnableInvalidOwner',
908
+ },
909
+ {
910
+ type: 'error',
911
+ inputs: [{ name: 'account', internalType: 'address', type: 'address' }],
912
+ name: 'OwnableUnauthorizedAccount',
913
+ },
751
914
  { type: 'error', inputs: [], name: 'PathMustHaveAtLeastOneStep' },
915
+ { type: 'error', inputs: [], name: 'PermittedCallersLengthMismatch' },
752
916
  { type: 'error', inputs: [], name: 'RouterMsgSenderInvalid' },
753
917
  { type: 'error', inputs: [], name: 'UnknownCallback' },
754
918
  { type: 'error', inputs: [], name: 'UnlockedFillNotAllowed' },
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zoralabs/limit-orders",
3
- "version": "0.2.1",
3
+ "version": "0.2.4",
4
4
  "type": "module",
5
5
  "main": "./dist/index.cjs",
6
6
  "module": "./dist/index.js",
@@ -37,7 +37,7 @@
37
37
  "viem": "^2.21.18",
38
38
  "@zoralabs/shared-contracts": "^0.0.5",
39
39
  "@zoralabs/shared-scripts": "^0.0.0",
40
- "@zoralabs/coins": "^2.4.1",
40
+ "@zoralabs/coins": "^2.5.0",
41
41
  "@zoralabs/tsconfig": "^0.0.1"
42
42
  },
43
43
  "scripts": {
@@ -50,6 +50,8 @@
50
50
  "prettier:check": "prettier --check 'src/**/*.sol' 'test/**/*.sol'",
51
51
  "prettier:write": "prettier --write 'src/**/*.sol' 'test/**/*.sol'",
52
52
  "test": "forge test -vv",
53
+ "abi-check:check": "../../scripts/abi-check.sh check",
54
+ "abi-check:generate": "../../scripts/abi-check.sh generate",
53
55
  "test-gas": "forge test --gas-report",
54
56
  "update-contract-version": "pnpm exec update-contract-version",
55
57
  "wagmi:generate": "pnpm run build:contracts:minimal && wagmi generate && pnpm exec rename-generated-abi-casing ./package/wagmiGenerated.ts"
@@ -140,9 +140,8 @@ interface IZoraLimitOrderBook is IZoraLimitOrderBookCoinsInterface {
140
140
  error CoinMismatch(bytes32 orderId, address expectedCoin, address actualCoin);
141
141
 
142
142
  /// @notice Creates limit orders, pulling funds from msg.sender when pool manager is locked, or using funds already in manager when unlocked.
143
- /// @dev This function is access-controlled via OpenZeppelin's AccessManager. The caller must have the appropriate role
144
- /// as configured in the AccessManager contract. Initially, this can be set to PUBLIC_ROLE to allow anyone to create orders,
145
- /// or it can be restricted to specific addresses/roles for permissioned operation.
143
+ /// @dev Access is controlled by the PermittedCallers base contract. If PUBLIC_ACCESS (address(0)) is permitted, anyone can create orders.
144
+ /// Otherwise, only addresses in the permittedCallers mapping can create orders.
146
145
  /// @param key Pool key specifying currency pair and tick spacing.
147
146
  /// @param isCurrency0 Whether the orders are denominated in currency0.
148
147
  /// @param orderSizes Order liquidity sizes.
@@ -190,8 +189,7 @@ interface IZoraLimitOrderBook is IZoraLimitOrderBookCoinsInterface {
190
189
  function getMaxFillCount() external view returns (uint256);
191
190
 
192
191
  /// @notice Sets the maximum number of orders that can be filled in a single fill operation.
193
- /// @dev This function is access-controlled via OpenZeppelin's AccessManager. The caller must have the appropriate role
194
- /// as configured in the AccessManager contract.
192
+ /// @dev Only callable by the owner.
195
193
  /// @param maxFillCount The new maximum fill count value.
196
194
  function setMaxFillCount(uint256 maxFillCount) external;
197
195
  }