@zoralabs/limit-orders 0.2.0 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (84) hide show
  1. package/.turbo/turbo-build$colon$js.log +47 -45
  2. package/CHANGELOG.md +61 -0
  3. package/abis/IWETH.json +118 -0
  4. package/abis/IZoraLimitOrderBook.json +5 -0
  5. package/abis/LimitOrderLiquidity.json +7 -0
  6. package/abis/LimitOrderViews.json +62 -0
  7. package/abis/SwapWithLimitOrders.json +18 -11
  8. package/abis/ZoraLimitOrderBook.json +28 -0
  9. package/cache/solidity-files-cache.json +1 -1
  10. package/dist/index.cjs +29 -8
  11. package/dist/index.cjs.map +1 -1
  12. package/dist/index.js +29 -8
  13. package/dist/index.js.map +1 -1
  14. package/dist/wagmiGenerated.d.ts +37 -9
  15. package/dist/wagmiGenerated.d.ts.map +1 -1
  16. package/out/BytesLib.sol/BytesLib.json +1 -1
  17. package/out/CoinCommon.sol/CoinCommon.json +1 -1
  18. package/out/CoinConfigurationVersions.sol/CoinConfigurationVersions.json +1 -1
  19. package/out/CoinConstants.sol/CoinConstants.json +1 -1
  20. package/out/DopplerMath.sol/DopplerMath.json +1 -1
  21. package/out/FixedPoint96.sol/FixedPoint96.json +1 -1
  22. package/out/ISwapRouter.sol/ISwapRouter.json +1 -1
  23. package/out/IUniswapV3SwapCallback.sol/IUniswapV3SwapCallback.json +1 -1
  24. package/out/IWETH.sol/IWETH.json +1 -0
  25. package/out/IZoraHookRegistry.sol/IZoraHookRegistry.json +1 -1
  26. package/out/IZoraLimitOrderBook.sol/IZoraLimitOrderBook.json +1 -1
  27. package/out/IZoraLimitOrderBookCoinsInterface.sol/IZoraLimitOrderBookCoinsInterface.json +1 -1
  28. package/out/IZoraV4CoinHook.sol/IZoraV4CoinHook.json +1 -1
  29. package/out/LimitOrderBitmap.sol/LimitOrderBitmap.json +1 -1
  30. package/out/LimitOrderCommon.sol/LimitOrderCommon.json +1 -1
  31. package/out/LimitOrderCreate.sol/LimitOrderCreate.json +1 -1
  32. package/out/LimitOrderFill.sol/LimitOrderFill.json +1 -1
  33. package/out/LimitOrderLiquidity.sol/LimitOrderLiquidity.json +1 -1
  34. package/out/LimitOrderQueues.sol/LimitOrderQueues.json +1 -1
  35. package/out/LimitOrderStorage.sol/LimitOrderStorage.json +1 -1
  36. package/out/LimitOrderTypes.sol/LimitOrderTypes.json +1 -1
  37. package/out/LimitOrderViews.sol/LimitOrderViews.json +1 -0
  38. package/out/LimitOrderWithdraw.sol/LimitOrderWithdraw.json +1 -1
  39. package/out/LiquidityAmounts.sol/LiquidityAmounts.json +1 -1
  40. package/out/Path.sol/Path.json +1 -1
  41. package/out/Permit2Payments.sol/Permit2Payments.json +1 -1
  42. package/out/SimpleAccessManaged.sol/SimpleAccessManaged.json +1 -1
  43. package/out/SimpleAccessManager.sol/SimpleAccessManager.json +1 -1
  44. package/out/SqrtPriceMath.sol/SqrtPriceMath.json +1 -1
  45. package/out/SwapLimitOrders.sol/SwapLimitOrders.json +1 -1
  46. package/out/SwapWithLimitOrders.sol/SwapWithLimitOrders.json +1 -1
  47. package/out/UniV4SwapToCurrency.sol/UniV4SwapToCurrency.json +1 -1
  48. package/out/UnsafeMath.sol/UnsafeMath.json +1 -1
  49. package/out/V3ToV4SwapLib.sol/V3ToV4SwapLib.json +1 -1
  50. package/out/ZoraLimitOrderBook.sol/ZoraLimitOrderBook.json +1 -1
  51. package/out/build-info/{69718f10d1dc37f0.json → 876cc09bc44cc8a7.json} +1 -1
  52. package/out/uniswap/BitMath.sol/BitMath.json +1 -1
  53. package/out/uniswap/CustomRevert.sol/CustomRevert.json +1 -1
  54. package/out/uniswap/FullMath.sol/FullMath.json +1 -1
  55. package/out/uniswap/SafeCast.sol/SafeCast.json +1 -1
  56. package/out/uniswap/TickMath.sol/TickMath.json +1 -1
  57. package/package/wagmiGenerated.ts +28 -7
  58. package/package.json +1 -1
  59. package/src/IZoraLimitOrderBook.sol +2 -0
  60. package/src/ZoraLimitOrderBook.sol +22 -8
  61. package/src/libs/LimitOrderBitmap.sol +0 -51
  62. package/src/libs/LimitOrderCommon.sol +48 -30
  63. package/src/libs/LimitOrderCreate.sol +5 -18
  64. package/src/libs/LimitOrderFill.sol +32 -161
  65. package/src/libs/LimitOrderLiquidity.sol +92 -71
  66. package/src/libs/LimitOrderViews.sol +168 -0
  67. package/src/libs/LimitOrderWithdraw.sol +13 -4
  68. package/src/libs/SwapLimitOrders.sol +14 -7
  69. package/src/router/SwapWithLimitOrders.sol +40 -26
  70. package/test/LimitOrderBitmap.t.sol +13 -7
  71. package/test/LimitOrderFill.t.sol +43 -0
  72. package/test/LimitOrderLibraries.t.sol +18 -10
  73. package/test/LimitOrderLiquidityPayouts.t.sol +280 -3
  74. package/test/LimitOrderWithdraw.t.sol +28 -1
  75. package/test/SwapWithLimitOrders.t.sol +3 -3
  76. package/test/SwapWithLimitOrdersRouter.t.sol +108 -11
  77. package/test/unit/LimitOrderBitmapUnit.t.sol +0 -134
  78. package/test/unit/LimitOrderCreateUnit.t.sol +32 -0
  79. package/test/unit/SwapLimitOrdersUnit.t.sol +231 -33
  80. package/test/unit/SwapLimitOrdersValidation.t.sol +20 -34
  81. package/test/unit/SwapWithLimitOrdersUnit.t.sol +21 -88
  82. package/test/utils/BaseTest.sol +29 -8
  83. package/test/utils/MockWETH.sol +39 -0
  84. package/test/utils/TestableZoraLimitOrderBook.sol +5 -7
@@ -1 +1 @@
1
- {"abi":[{"type":"constructor","inputs":[{"name":"initialAdmin","type":"address","internalType":"address"},{"name":"initialFunctionRoles","type":"tuple[]","internalType":"struct SimpleAccessManager.InitialFunctionRole[]","components":[{"name":"selector","type":"bytes4","internalType":"bytes4"},{"name":"roleId","type":"uint64","internalType":"uint64"}]}],"stateMutability":"nonpayable"},{"type":"function","name":"ADMIN_ROLE","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"PUBLIC_ROLE","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"canCall","inputs":[{"name":"caller","type":"address","internalType":"address"},{"name":"","type":"address","internalType":"address"},{"name":"selector","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"getFunctionRole","inputs":[{"name":"selector","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"getRoleAdmin","inputs":[{"name":"roleId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"grantRole","inputs":[{"name":"roleId","type":"uint64","internalType":"uint64"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"hasRole","inputs":[{"name":"roleId","type":"uint64","internalType":"uint64"},{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"renounceRole","inputs":[{"name":"roleId","type":"uint64","internalType":"uint64"},{"name":"callerConfirmation","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"revokeRole","inputs":[{"name":"roleId","type":"uint64","internalType":"uint64"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setFunctionRole","inputs":[{"name":"selector","type":"bytes4","internalType":"bytes4"},{"name":"roleId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setRoleAdmin","inputs":[{"name":"roleId","type":"uint64","internalType":"uint64"},{"name":"admin","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"FunctionRoleUpdated","inputs":[{"name":"selector","type":"bytes4","indexed":true,"internalType":"bytes4"},{"name":"roleId","type":"uint64","indexed":true,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"RoleAdminChanged","inputs":[{"name":"roleId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"admin","type":"uint64","indexed":true,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"RoleGranted","inputs":[{"name":"roleId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"account","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"RoleRevoked","inputs":[{"name":"roleId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"account","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"error","name":"AccessManagerInvalidInitialAdmin","inputs":[{"name":"initialAdmin","type":"address","internalType":"address"}]},{"type":"error","name":"AccessManagerLockedRole","inputs":[{"name":"roleId","type":"uint64","internalType":"uint64"}]},{"type":"error","name":"AccessManagerUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"roleId","type":"uint64","internalType":"uint64"}]}],"bytecode":{"object":"0x60806040523461022357610919803803806100198161023b565b9283398101906040818303126102235780516001600160a01b0381169190829003610223576020810151906001600160401b038211610223570182601f82011215610223578051906001600160401b0382116102275761007e60208360051b0161023b565b9360208086858152019360061b8301019181831161022357602001925b8284106101bc57858580156101a9575f8181525f5160206108f95f395f51905f52602052604090205460ff161561015b575b505f5b815181101561014c576001906001600160e01b03196100ef8285610260565b515116828060401b0360206101048487610260565b5101511690805f525f60205260405f2082858060401b03198254161790557fa3e0b2a435476f7258ef6426c5ccc383db5cef84c531fc21905af2a5872a6d015f80a3016100d0565b60405161067090816102898239f35b5f8181525f5160206108f95f395f51905f5260205260408120805460ff191660011790557faad194d4c741066ed559517462aa599f8be124ae17cf4832c66a3a2958f277268180a3816100cd565b630409d6d160e11b5f525f60045260245ffd5b6040848303126102235760408051919082016001600160401b038111838210176102275760405284516001600160e01b0319811681036102235782526020850151906001600160401b0382168203610223578260209283604095015281520193019261009b565b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b6040519190601f01601f191682016001600160401b0381118382101761022757604052565b80518210156102745760209160051b010190565b634e487b7160e01b5f52603260045260245ffdfe60806040526004361015610011575f80fd5b5f3560e01c806330cae187146104625780633ca7c02a14610441578063530dd4561461040057806375b238fc146103e65780638e11fde6146103a5578063aa682ab614610303578063b428b0b0146101f9578063b700961314610199578063b7d2b16214610128578063d1f856ee146100f25763fe0776f514610092575f80fd5b346100ee5760403660031901126100ee576100ab610501565b6100b3610544565b336001600160a01b038216036100ce576100cc916105d8565b005b6001600160401b038263f07e038f60e01b5f52336004521660245260445ffd5b5f80fd5b346100ee5760403660031901126100ee57602061011e610110610501565b610118610544565b90610596565b6040519015158152f35b346100ee5760403660031901126100ee57610141610501565b610149610544565b6001600160401b0382165f5260026020526001600160401b0360405f205416916101733384610596565b15610182576100cc92506105d8565b8263f07e038f60e01b5f523360045260245260445ffd5b346100ee5760603660031901126100ee576004356001600160a01b03811681036100ee576101c5610544565b5060443563ffffffff60e01b81168091036100ee5760209161011e915f525f83526001600160401b0360405f205416610596565b346100ee5760403660031901126100ee57610212610501565b6001600160401b03610222610544565b911690815f5260026020526001600160401b0360405f2054166102453382610596565b156102ed57506001600160401b0382146102da57815f52600160205260405f2060018060a01b0382165f5260205260ff60405f2054161561028257005b815f52600160205260405f2060018060a01b0382165f5260205260405f20600160ff1982541617905560018060a01b0316907faad194d4c741066ed559517462aa599f8be124ae17cf4832c66a3a2958f277265f80a3005b5063061c6a4360e21b5f5260045260245ffd5b63f07e038f60e01b5f523360045260245260445ffd5b346100ee5760403660031901126100ee5761031c61052d565b610324610517565b9061032e3361055a565b1561038e576001600160e01b0319165f818152602081905260408120805467ffffffffffffffff19166001600160401b039490941693841790557fa3e0b2a435476f7258ef6426c5ccc383db5cef84c531fc21905af2a5872a6d019080a3005b63f07e038f60e01b5f52336004525f60245260445ffd5b346100ee5760203660031901126100ee576001600160e01b03196103c761052d565b165f525f60205260206001600160401b0360405f205416604051908152f35b346100ee575f3660031901126100ee5760206040515f8152f35b346100ee5760203660031901126100ee576001600160401b03610421610501565b165f52600260205260206001600160401b0360405f205416604051908152f35b346100ee575f3660031901126100ee5760206040516001600160401b038152f35b346100ee5760403660031901126100ee5761047b610501565b610483610517565b9061048d3361055a565b1561038e576001600160401b031690811580156104f1575b6102da576001600160401b0390825f52600260205260405f20828216831982541617905516907f1fd6dd7631312dfac2205b52913f99de03b4d7e381d5d27d3dbfe0713e6e63405f80a3005b506001600160401b0382146104a5565b600435906001600160401b03821682036100ee57565b602435906001600160401b03821682036100ee57565b600435906001600160e01b0319821682036100ee57565b602435906001600160a01b03821682036100ee57565b6001600160a01b03165f9081527fa6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb49602052604090205460ff1690565b6001600160401b03166001600160401b0381146105d1575f52600160205260405f209060018060a01b03165f5260205260ff60405f20541690565b5050600190565b6001600160401b0316906001600160401b0382146102da57815f52600160205260405f2060018060a01b0382165f5260205260ff60405f20541661061a575050565b5f8281526001602090815260408083206001600160a01b0394909416808452939091528120805460ff191690559091907ff229baa593af28c41b1d16b748cd7688f0c83aaf92d4be41c44005defe84c1669080a356a6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb49","sourceMap":"1139:11059:77:-:0;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1139:11059:77;;;;;;;;;;;;;;-1:-1:-1;;;;;1139:11059:77;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1139:11059:77;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5091:26;;;;5087:108;;-1:-1:-1;1498:16:77;;;-1:-1:-1;;;;;;;;;;;1139:11059:77;1498:16;1139:11059;1498:16;;;;;10542:30;10538:144;;1139:11059;5337:13;-1:-1:-1;5385:3:77;1340:16;;5352:31;;;;;10543:12;;-1:-1:-1;;;;;;5421:23:77;1139:11059;5421:23;;:::i;:::-;;1340:16;1139:11059;;;;;;;5455:23;;;;:::i;:::-;;:30;1340:16;1139:11059;;;-1:-1:-1;1139:11059:77;-1:-1:-1;1139:11059:77;;;-1:-1:-1;1139:11059:77;;;;;;;;;;;;;;12152:37;-1:-1:-1;12152:37:77;;1340:16;5337:13;;5352:31;1139:11059;;;;;;;;;10538:144;-1:-1:-1;1498:16:77;;;-1:-1:-1;;;;;;;;;;;1139:11059:77;1498:16;1139:11059;1498:16;;;;-1:-1:-1;;1498:16:77;10543:12;1498:16;;;10643:28;-1:-1:-1;;10643:28:77;10538:144;;;5087:108;5140:44;;;-1:-1:-1;5140:44:77;-1:-1:-1;5140:44:77;1139:11059;;-1:-1:-1;5140:44:77;1139:11059;;;;;;;;;;;;;;;-1:-1:-1;;;;;1139:11059:77;;;;;;;;;;;;-1:-1:-1;;;;;;1139:11059:77;;;;;;;;;;;;;-1:-1:-1;;;;;1139:11059:77;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1139:11059:77;;;;;;-1:-1:-1;1139:11059:77;;;;;-1:-1:-1;1139:11059:77;;;;;;;;-1:-1:-1;;1139:11059:77;;;-1:-1:-1;;;;;1139:11059:77;;;;;;;;;;:::o;1340:16::-;;;;;;;;;;;;;;;:::o;:::-;1139:11059;;;1340:16;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x60806040526004361015610011575f80fd5b5f3560e01c806330cae187146104625780633ca7c02a14610441578063530dd4561461040057806375b238fc146103e65780638e11fde6146103a5578063aa682ab614610303578063b428b0b0146101f9578063b700961314610199578063b7d2b16214610128578063d1f856ee146100f25763fe0776f514610092575f80fd5b346100ee5760403660031901126100ee576100ab610501565b6100b3610544565b336001600160a01b038216036100ce576100cc916105d8565b005b6001600160401b038263f07e038f60e01b5f52336004521660245260445ffd5b5f80fd5b346100ee5760403660031901126100ee57602061011e610110610501565b610118610544565b90610596565b6040519015158152f35b346100ee5760403660031901126100ee57610141610501565b610149610544565b6001600160401b0382165f5260026020526001600160401b0360405f205416916101733384610596565b15610182576100cc92506105d8565b8263f07e038f60e01b5f523360045260245260445ffd5b346100ee5760603660031901126100ee576004356001600160a01b03811681036100ee576101c5610544565b5060443563ffffffff60e01b81168091036100ee5760209161011e915f525f83526001600160401b0360405f205416610596565b346100ee5760403660031901126100ee57610212610501565b6001600160401b03610222610544565b911690815f5260026020526001600160401b0360405f2054166102453382610596565b156102ed57506001600160401b0382146102da57815f52600160205260405f2060018060a01b0382165f5260205260ff60405f2054161561028257005b815f52600160205260405f2060018060a01b0382165f5260205260405f20600160ff1982541617905560018060a01b0316907faad194d4c741066ed559517462aa599f8be124ae17cf4832c66a3a2958f277265f80a3005b5063061c6a4360e21b5f5260045260245ffd5b63f07e038f60e01b5f523360045260245260445ffd5b346100ee5760403660031901126100ee5761031c61052d565b610324610517565b9061032e3361055a565b1561038e576001600160e01b0319165f818152602081905260408120805467ffffffffffffffff19166001600160401b039490941693841790557fa3e0b2a435476f7258ef6426c5ccc383db5cef84c531fc21905af2a5872a6d019080a3005b63f07e038f60e01b5f52336004525f60245260445ffd5b346100ee5760203660031901126100ee576001600160e01b03196103c761052d565b165f525f60205260206001600160401b0360405f205416604051908152f35b346100ee575f3660031901126100ee5760206040515f8152f35b346100ee5760203660031901126100ee576001600160401b03610421610501565b165f52600260205260206001600160401b0360405f205416604051908152f35b346100ee575f3660031901126100ee5760206040516001600160401b038152f35b346100ee5760403660031901126100ee5761047b610501565b610483610517565b9061048d3361055a565b1561038e576001600160401b031690811580156104f1575b6102da576001600160401b0390825f52600260205260405f20828216831982541617905516907f1fd6dd7631312dfac2205b52913f99de03b4d7e381d5d27d3dbfe0713e6e63405f80a3005b506001600160401b0382146104a5565b600435906001600160401b03821682036100ee57565b602435906001600160401b03821682036100ee57565b600435906001600160e01b0319821682036100ee57565b602435906001600160a01b03821682036100ee57565b6001600160a01b03165f9081527fa6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb49602052604090205460ff1690565b6001600160401b03166001600160401b0381146105d1575f52600160205260405f209060018060a01b03165f5260205260ff60405f20541690565b5050600190565b6001600160401b0316906001600160401b0382146102da57815f52600160205260405f2060018060a01b0382165f5260205260ff60405f20541661061a575050565b5f8281526001602090815260408083206001600160a01b0394909416808452939091528120805460ff191690559091907ff229baa593af28c41b1d16b748cd7688f0c83aaf92d4be41c44005defe84c1669080a356","sourceMap":"1139:11059:77:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1139:11059:77;;;;;;:::i;:::-;;;:::i;:::-;735:10:6;-1:-1:-1;;;;;1139:11059:77;;9412:34;9408:126;;9563:18;;;:::i;:::-;1139:11059;9408:126;-1:-1:-1;;;;;3994:58:77;;;;1139:11059;9469:54;735:10:6;1139:11059:77;;;;;;;9469:54;1139:11059;;;;;;;;;;-1:-1:-1;;1139:11059:77;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;-1:-1:-1;;1139:11059:77;;;;;;:::i;:::-;;;:::i;:::-;-1:-1:-1;;;;;1139:11059:77;;;;7419:11;1139:11059;;-1:-1:-1;;;;;1139:11059:77;;;;;735:10:6;4364:32:77;735:10:6;4364:32:77;;:::i;:::-;4363:33;4359:128;;8956:7;;;;:::i;4359:128::-;3994:58;;;;1139:11059;4419:57;735:10:6;1139:11059:77;;;;;;4419:57;1139:11059;;;;;;-1:-1:-1;;1139:11059:77;;;;;;-1:-1:-1;;;;;1139:11059:77;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;6399:23;1139:11059;;;;;;-1:-1:-1;;;;;1139:11059:77;;;;;6399:23;:::i;1139:11059::-;;;;;;-1:-1:-1;;1139:11059:77;;;;;;:::i;:::-;-1:-1:-1;;;;;1139:11059:77;;:::i;:::-;;;;;;;7419:11;1139:11059;;-1:-1:-1;;;;;1139:11059:77;;;;;4364:32;735:10:6;4364:32:77;;:::i;:::-;4363:33;4359:128;;10442:21;-1:-1:-1;;;;;10442:21:77;;10438:90;;1139:11059;;;10543:12;1139:11059;;;;;;;;;;;;-1:-1:-1;1139:11059:77;;;;;-1:-1:-1;1139:11059:77;;;10542:30;10538:144;;1139:11059;10538:144;1139:11059;;;10543:12;1139:11059;;;;;;;;;;;;-1:-1:-1;1139:11059:77;;;;-1:-1:-1;1139:11059:77;10543:12;1139:11059;;;;;;;;;;;;;;10643:28;;1139:11059;10643:28;;1139:11059;10438:90;10038:31;;;;1139:11059;10486:31;1139:11059;;;;10486:31;4359:128;3994:58;;;1139:11059;4419:57;735:10:6;1139:11059:77;;;;;;4419:57;1139:11059;;;;;;-1:-1:-1;;1139:11059:77;;;;;;:::i;:::-;;;:::i;:::-;735:10:6;3938:33:77;735:10:6;3938:33:77;:::i;:::-;3937:34;3933:130;;-1:-1:-1;;;;;;1139:11059:77;;;;;;;;;;;;;;-1:-1:-1;;1139:11059:77;-1:-1:-1;;;;;1139:11059:77;;;;;;;;;12152:37;;1139:11059;12152:37;1139:11059;3933:130;3994:58;;;1139:11059;3994:58;735:10:6;1139:11059:77;;;;;;;3994:58;1139:11059;;;;;;-1:-1:-1;;1139:11059:77;;;;-1:-1:-1;;;;;;1139:11059:77;;:::i;:::-;;;;;;;;-1:-1:-1;;;;;1139:11059:77;;;;;;;;;;;;;;;;;-1:-1:-1;;1139:11059:77;;;;;;;;;;;;;;;;;-1:-1:-1;;1139:11059:77;;;;-1:-1:-1;;;;;1139:11059:77;;:::i;:::-;;;;7419:11;1139:11059;;;-1:-1:-1;;;;;1139:11059:77;;;;;;;;;;;;;;;;;-1:-1:-1;;1139:11059:77;;;;;;;-1:-1:-1;;;;;1139:11059:77;;;;;;;;;-1:-1:-1;;1139:11059:77;;;;;;:::i;:::-;;;:::i;:::-;735:10:6;3938:33:77;735:10:6;3938:33:77;:::i;:::-;3937:34;3933:130;;-1:-1:-1;;;;;1139:11059:77;9970:20;;;:45;;;;1139:11059;9966:114;;-1:-1:-1;;;;;1139:11059:77;;;;10090:11;1139:11059;;;;;;;;;;;;;;;;;10132:31;;1139:11059;10132:31;;1139:11059;9970:45;9994:21;-1:-1:-1;;;;;9994:21:77;;9970:45;;1139:11059;;;;-1:-1:-1;;;;;1139:11059:77;;;;;;:::o;:::-;;;;-1:-1:-1;;;;;1139:11059:77;;;;;;:::o;:::-;;;;-1:-1:-1;;;;;;1139:11059:77;;;;;;:::o;:::-;;;;-1:-1:-1;;;;;1139:11059:77;;;;;;:::o;7800:201::-;-1:-1:-1;;;;;1139:11059:77;-1:-1:-1;1139:11059:77;;;;;;;;;;;;;7800:201::o;:::-;-1:-1:-1;;;;;1139:11059:77;-1:-1:-1;;;;;7890:21:77;;7886:63;;1139:11059;;7965:12;1139:11059;;;;;7965:29;1139:11059;;;;;;-1:-1:-1;1139:11059:77;;;;;-1:-1:-1;1139:11059:77;;;7800:201;:::o;7886:63::-;7927:11;;7934:4;7927:11;:::o;10886:322::-;-1:-1:-1;;;;;1139:11059:77;10962:21;-1:-1:-1;;;;;10962:21:77;;10958:90;;1139:11059;-1:-1:-1;1139:11059:77;11062:12;1139:11059;;;-1:-1:-1;1139:11059:77;;;;;;;;-1:-1:-1;1139:11059:77;;;;;-1:-1:-1;1139:11059:77;;;11058:144;;10886:322;;:::o;11058:144::-;-1:-1:-1;1139:11059:77;;;11062:12;1139:11059;;;;;;;;-1:-1:-1;;;;;1139:11059:77;;;;;;;;;;;;;;;-1:-1:-1;;1139:11059:77;;;;;;11163:28;;-1:-1:-1;11163:28:77;10886:322::o","linkReferences":{}},"methodIdentifiers":{"ADMIN_ROLE()":"75b238fc","PUBLIC_ROLE()":"3ca7c02a","canCall(address,address,bytes4)":"b7009613","getFunctionRole(bytes4)":"8e11fde6","getRoleAdmin(uint64)":"530dd456","grantRole(uint64,address)":"b428b0b0","hasRole(uint64,address)":"d1f856ee","renounceRole(uint64,address)":"fe0776f5","revokeRole(uint64,address)":"b7d2b162","setFunctionRole(bytes4,uint64)":"aa682ab6","setRoleAdmin(uint64,uint64)":"30cae187"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"initialAdmin\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"},{\"internalType\":\"uint64\",\"name\":\"roleId\",\"type\":\"uint64\"}],\"internalType\":\"struct SimpleAccessManager.InitialFunctionRole[]\",\"name\":\"initialFunctionRoles\",\"type\":\"tuple[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"initialAdmin\",\"type\":\"address\"}],\"name\":\"AccessManagerInvalidInitialAdmin\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"roleId\",\"type\":\"uint64\"}],\"name\":\"AccessManagerLockedRole\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"roleId\",\"type\":\"uint64\"}],\"name\":\"AccessManagerUnauthorizedAccount\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"roleId\",\"type\":\"uint64\"}],\"name\":\"FunctionRoleUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"roleId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"admin\",\"type\":\"uint64\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"roleId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"roleId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PUBLIC_ROLE\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"}],\"name\":\"canCall\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"}],\"name\":\"getFunctionRole\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"roleId\",\"type\":\"uint64\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"roleId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"roleId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"roleId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"callerConfirmation\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"roleId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"},{\"internalType\":\"uint64\",\"name\":\"roleId\",\"type\":\"uint64\"}],\"name\":\"setFunctionRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"roleId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"admin\",\"type\":\"uint64\"}],\"name\":\"setRoleAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Zora\",\"details\":\"This contract is designed to manage access for a single target contract by mapping function selectors directly to required roles. It implements the IAuthority interface for compatibility with SimpleAccessManaged contracts. Key features: - Maps function selectors to roles (selector -> roleId) - Immediate role grants/revokes (no delays) - PUBLIC_ROLE grants access to all addresses - ADMIN_ROLE (role 0) can configure function roles and manage other roles - Each role can have a custom admin role for delegation This is intentionally simpler than OpenZeppelin's AccessManager: - No execution delays or scheduled operations - No guardian role - No target address tracking (single-contract authority)\",\"errors\":{\"AccessManagerInvalidInitialAdmin(address)\":[{\"params\":{\"initialAdmin\":\"The invalid admin address provided\"}}],\"AccessManagerLockedRole(uint64)\":[{\"params\":{\"roleId\":\"The locked role that was targeted\"}}],\"AccessManagerUnauthorizedAccount(address,uint64)\":[{\"params\":{\"account\":\"The account that attempted the action\",\"roleId\":\"The role that was required\"}}]},\"events\":{\"FunctionRoleUpdated(bytes4,uint64)\":{\"params\":{\"roleId\":\"The new required role\",\"selector\":\"The function selector that was configured\"}},\"RoleAdminChanged(uint64,uint64)\":{\"params\":{\"admin\":\"The new admin role\",\"roleId\":\"The role whose admin changed\"}},\"RoleGranted(uint64,address)\":{\"params\":{\"account\":\"The account that received the role\",\"roleId\":\"The role that was granted\"}},\"RoleRevoked(uint64,address)\":{\"params\":{\"account\":\"The account that lost the role\",\"roleId\":\"The role that was revoked\"}}},\"kind\":\"dev\",\"methods\":{\"canCall(address,address,bytes4)\":{\"details\":\"The target parameter is ignored since this is a single-contract authority. Returns true if the caller has the role required for the selector, or if the selector is mapped to PUBLIC_ROLE (which all addresses implicitly have).\",\"params\":{\"caller\":\"The address attempting to call the function\",\"selector\":\"The function selector being called\"},\"returns\":{\"_0\":\"True if the caller is authorized to call the function\"}},\"constructor\":{\"details\":\"The initial admin is granted ADMIN_ROLE immediately. Initial function roles allow configuring access permissions at deployment time without additional transactions.\",\"params\":{\"initialAdmin\":\"The address that will receive ADMIN_ROLE (cannot be zero address)\",\"initialFunctionRoles\":\"Array of selector-to-role mappings to configure at deployment\"}},\"getFunctionRole(bytes4)\":{\"details\":\"If no role has been set for the selector, returns 0 (ADMIN_ROLE), meaning only admins can call unconfigured functions by default.\",\"params\":{\"selector\":\"The function selector to query\"},\"returns\":{\"_0\":\"The role ID required to call the function\"}},\"getRoleAdmin(uint64)\":{\"details\":\"The admin role is the role that can grant/revoke the specified role. If no admin has been set, returns 0 (ADMIN_ROLE).\",\"params\":{\"roleId\":\"The role to query the admin for\"},\"returns\":{\"_0\":\"The admin role ID that can manage the specified role\"}},\"grantRole(uint64,address)\":{\"details\":\"Only callable by accounts that have the admin role for the specified role. Emits {RoleGranted} if the account did not already have the role.\",\"params\":{\"account\":\"The account to receive the role\",\"roleId\":\"The role to grant\"}},\"hasRole(uint64,address)\":{\"details\":\"PUBLIC_ROLE always returns true for any account. For other roles, returns true only if the account has been explicitly granted the role.\",\"params\":{\"account\":\"The account to check\",\"roleId\":\"The role to check\"},\"returns\":{\"_0\":\"True if the account has the role\"}},\"renounceRole(uint64,address)\":{\"details\":\"The callerConfirmation parameter must match msg.sender to prevent accidental role renunciation. Emits {RoleRevoked} if the account had the role.\",\"params\":{\"callerConfirmation\":\"Must be msg.sender's address as confirmation\",\"roleId\":\"The role to renounce\"}},\"revokeRole(uint64,address)\":{\"details\":\"Only callable by accounts that have the admin role for the specified role. Emits {RoleRevoked} if the account had the role.\",\"params\":{\"account\":\"The account to lose the role\",\"roleId\":\"The role to revoke\"}},\"setFunctionRole(bytes4,uint64)\":{\"details\":\"Only callable by accounts with ADMIN_ROLE. Set to PUBLIC_ROLE to make a function callable by anyone. Emits {FunctionRoleUpdated}.\",\"params\":{\"roleId\":\"The role that will be required to call the function\",\"selector\":\"The function selector to configure\"}},\"setRoleAdmin(uint64,uint64)\":{\"details\":\"Only callable by accounts with ADMIN_ROLE. Cannot modify the admin of ADMIN_ROLE or PUBLIC_ROLE. Emits {RoleAdminChanged}.\",\"params\":{\"admin\":\"The new admin role ID\",\"roleId\":\"The role to set the admin for\"}}},\"stateVariables\":{\"_functionRoles\":{\"details\":\"Maps function selector to the role required to call it\"},\"_roleAdmins\":{\"details\":\"Maps role to its admin role (the role that can grant/revoke it)\"},\"_roleMembers\":{\"details\":\"Maps role to its members\"}},\"title\":\"SimpleAccessManager\",\"version\":1},\"userdoc\":{\"errors\":{\"AccessManagerInvalidInitialAdmin(address)\":[{\"notice\":\"Thrown when the initial admin address is invalid (zero address)\"}],\"AccessManagerLockedRole(uint64)\":[{\"notice\":\"Thrown when attempting to modify a locked role (ADMIN_ROLE or PUBLIC_ROLE)\"}],\"AccessManagerUnauthorizedAccount(address,uint64)\":[{\"notice\":\"Thrown when an account lacks the required role\"}]},\"events\":{\"FunctionRoleUpdated(bytes4,uint64)\":{\"notice\":\"Emitted when a function's required role is updated\"},\"RoleAdminChanged(uint64,uint64)\":{\"notice\":\"Emitted when a role's admin is changed\"},\"RoleGranted(uint64,address)\":{\"notice\":\"Emitted when a role is granted to an account\"},\"RoleRevoked(uint64,address)\":{\"notice\":\"Emitted when a role is revoked from an account\"}},\"kind\":\"user\",\"methods\":{\"ADMIN_ROLE()\":{\"notice\":\"The admin role identifier (0). Members can configure function roles and grant other roles.\"},\"PUBLIC_ROLE()\":{\"notice\":\"The public role identifier (max uint64). All addresses implicitly have this role.\"},\"canCall(address,address,bytes4)\":{\"notice\":\"Checks if a caller is authorized to invoke a function.\"},\"constructor\":{\"notice\":\"Initializes the access manager with an admin and optional function role configurations.\"},\"getFunctionRole(bytes4)\":{\"notice\":\"Returns the role required to call a specific function.\"},\"getRoleAdmin(uint64)\":{\"notice\":\"Returns the admin role for a given role.\"},\"grantRole(uint64,address)\":{\"notice\":\"Grants a role to an account.\"},\"hasRole(uint64,address)\":{\"notice\":\"Checks if an account has a specific role.\"},\"renounceRole(uint64,address)\":{\"notice\":\"Allows an account to renounce a role it has.\"},\"revokeRole(uint64,address)\":{\"notice\":\"Revokes a role from an account.\"},\"setFunctionRole(bytes4,uint64)\":{\"notice\":\"Sets the role required to call a specific function.\"},\"setRoleAdmin(uint64,uint64)\":{\"notice\":\"Sets the admin role for a given role.\"}},\"notice\":\"A simplified single-contract access manager providing role-based access control without time-based validation.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/access/SimpleAccessManager.sol\":\"SimpleAccessManager\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"appendCBOR\":false,\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":100},\"remappings\":[\":@openzeppelin/=node_modules/@openzeppelin/\",\":@uniswap/universal-router/contracts/=node_modules/@uniswap/universal-router/contracts/\",\":@uniswap/v4-core/=node_modules/@uniswap/v4-core/\",\":@uniswap/v4-periphery/=node_modules/@uniswap/v4-periphery/\",\":@zoralabs/coins/=node_modules/@zoralabs/coins/\",\":@zoralabs/shared-contracts/=node_modules/@zoralabs/shared-contracts/src/\",\":ds-test/=node_modules/ds-test/src/\",\":forge-std/=node_modules/forge-std/src/\",\":permit2/src/=node_modules/@uniswap/permit2/src/\",\":solady/=node_modules/solady/src/\",\":solmate/=node_modules/solmate/src/\"],\"viaIR\":true},\"sources\":{\"node_modules/@openzeppelin/contracts/access/manager/IAuthority.sol\":{\"keccak256\":\"0x9c9a58dd831b9bb4a0ea47d96b53c13ab9a6e4270a518ea395b1424092fd74dc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d806b0c87fbcaf0cb827b51203b27f8289b13743aeadb5867fbbe041fcf87a92\",\"dweb:/ipfs/QmfTEGiDGxKDaqBuBJ5wWJockGDrsEBZnW5S7UWrKhAxGc\"]},\"node_modules/@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"src/access/SimpleAccessManager.sol\":{\"keccak256\":\"0xbcb0d251b0f6841cfdcdedfd297621a949a2c21bf6a11969d934b9adcfd7f40f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a31d797c8ddbbecae738b62656b8828558f7a3f622b7058d84bd9d0b97429f36\",\"dweb:/ipfs/QmTTAiRJM13oaMbVqNp2EPfKCYzCNb1wg2QU5WTG68Q425\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.28+commit.7893614a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"initialAdmin","type":"address"},{"internalType":"struct SimpleAccessManager.InitialFunctionRole[]","name":"initialFunctionRoles","type":"tuple[]","components":[{"internalType":"bytes4","name":"selector","type":"bytes4"},{"internalType":"uint64","name":"roleId","type":"uint64"}]}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"initialAdmin","type":"address"}],"type":"error","name":"AccessManagerInvalidInitialAdmin"},{"inputs":[{"internalType":"uint64","name":"roleId","type":"uint64"}],"type":"error","name":"AccessManagerLockedRole"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint64","name":"roleId","type":"uint64"}],"type":"error","name":"AccessManagerUnauthorizedAccount"},{"inputs":[{"internalType":"bytes4","name":"selector","type":"bytes4","indexed":true},{"internalType":"uint64","name":"roleId","type":"uint64","indexed":true}],"type":"event","name":"FunctionRoleUpdated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"roleId","type":"uint64","indexed":true},{"internalType":"uint64","name":"admin","type":"uint64","indexed":true}],"type":"event","name":"RoleAdminChanged","anonymous":false},{"inputs":[{"internalType":"uint64","name":"roleId","type":"uint64","indexed":true},{"internalType":"address","name":"account","type":"address","indexed":true}],"type":"event","name":"RoleGranted","anonymous":false},{"inputs":[{"internalType":"uint64","name":"roleId","type":"uint64","indexed":true},{"internalType":"address","name":"account","type":"address","indexed":true}],"type":"event","name":"RoleRevoked","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"ADMIN_ROLE","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"PUBLIC_ROLE","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"address","name":"caller","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"bytes4","name":"selector","type":"bytes4"}],"stateMutability":"view","type":"function","name":"canCall","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"bytes4","name":"selector","type":"bytes4"}],"stateMutability":"view","type":"function","name":"getFunctionRole","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"roleId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getRoleAdmin","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"roleId","type":"uint64"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"grantRole"},{"inputs":[{"internalType":"uint64","name":"roleId","type":"uint64"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"roleId","type":"uint64"},{"internalType":"address","name":"callerConfirmation","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"renounceRole"},{"inputs":[{"internalType":"uint64","name":"roleId","type":"uint64"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"revokeRole"},{"inputs":[{"internalType":"bytes4","name":"selector","type":"bytes4"},{"internalType":"uint64","name":"roleId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"setFunctionRole"},{"inputs":[{"internalType":"uint64","name":"roleId","type":"uint64"},{"internalType":"uint64","name":"admin","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"setRoleAdmin"}],"devdoc":{"kind":"dev","methods":{"canCall(address,address,bytes4)":{"details":"The target parameter is ignored since this is a single-contract authority. Returns true if the caller has the role required for the selector, or if the selector is mapped to PUBLIC_ROLE (which all addresses implicitly have).","params":{"caller":"The address attempting to call the function","selector":"The function selector being called"},"returns":{"_0":"True if the caller is authorized to call the function"}},"constructor":{"details":"The initial admin is granted ADMIN_ROLE immediately. Initial function roles allow configuring access permissions at deployment time without additional transactions.","params":{"initialAdmin":"The address that will receive ADMIN_ROLE (cannot be zero address)","initialFunctionRoles":"Array of selector-to-role mappings to configure at deployment"}},"getFunctionRole(bytes4)":{"details":"If no role has been set for the selector, returns 0 (ADMIN_ROLE), meaning only admins can call unconfigured functions by default.","params":{"selector":"The function selector to query"},"returns":{"_0":"The role ID required to call the function"}},"getRoleAdmin(uint64)":{"details":"The admin role is the role that can grant/revoke the specified role. If no admin has been set, returns 0 (ADMIN_ROLE).","params":{"roleId":"The role to query the admin for"},"returns":{"_0":"The admin role ID that can manage the specified role"}},"grantRole(uint64,address)":{"details":"Only callable by accounts that have the admin role for the specified role. Emits {RoleGranted} if the account did not already have the role.","params":{"account":"The account to receive the role","roleId":"The role to grant"}},"hasRole(uint64,address)":{"details":"PUBLIC_ROLE always returns true for any account. For other roles, returns true only if the account has been explicitly granted the role.","params":{"account":"The account to check","roleId":"The role to check"},"returns":{"_0":"True if the account has the role"}},"renounceRole(uint64,address)":{"details":"The callerConfirmation parameter must match msg.sender to prevent accidental role renunciation. Emits {RoleRevoked} if the account had the role.","params":{"callerConfirmation":"Must be msg.sender's address as confirmation","roleId":"The role to renounce"}},"revokeRole(uint64,address)":{"details":"Only callable by accounts that have the admin role for the specified role. Emits {RoleRevoked} if the account had the role.","params":{"account":"The account to lose the role","roleId":"The role to revoke"}},"setFunctionRole(bytes4,uint64)":{"details":"Only callable by accounts with ADMIN_ROLE. Set to PUBLIC_ROLE to make a function callable by anyone. Emits {FunctionRoleUpdated}.","params":{"roleId":"The role that will be required to call the function","selector":"The function selector to configure"}},"setRoleAdmin(uint64,uint64)":{"details":"Only callable by accounts with ADMIN_ROLE. Cannot modify the admin of ADMIN_ROLE or PUBLIC_ROLE. Emits {RoleAdminChanged}.","params":{"admin":"The new admin role ID","roleId":"The role to set the admin for"}}},"version":1},"userdoc":{"kind":"user","methods":{"ADMIN_ROLE()":{"notice":"The admin role identifier (0). Members can configure function roles and grant other roles."},"PUBLIC_ROLE()":{"notice":"The public role identifier (max uint64). All addresses implicitly have this role."},"canCall(address,address,bytes4)":{"notice":"Checks if a caller is authorized to invoke a function."},"constructor":{"notice":"Initializes the access manager with an admin and optional function role configurations."},"getFunctionRole(bytes4)":{"notice":"Returns the role required to call a specific function."},"getRoleAdmin(uint64)":{"notice":"Returns the admin role for a given role."},"grantRole(uint64,address)":{"notice":"Grants a role to an account."},"hasRole(uint64,address)":{"notice":"Checks if an account has a specific role."},"renounceRole(uint64,address)":{"notice":"Allows an account to renounce a role it has."},"revokeRole(uint64,address)":{"notice":"Revokes a role from an account."},"setFunctionRole(bytes4,uint64)":{"notice":"Sets the role required to call a specific function."},"setRoleAdmin(uint64,uint64)":{"notice":"Sets the admin role for a given role."}},"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/access/SimpleAccessManager.sol":"SimpleAccessManager"},"evmVersion":"prague","libraries":{},"viaIR":true},"sources":{"node_modules/@openzeppelin/contracts/access/manager/IAuthority.sol":{"keccak256":"0x9c9a58dd831b9bb4a0ea47d96b53c13ab9a6e4270a518ea395b1424092fd74dc","urls":["bzz-raw://d806b0c87fbcaf0cb827b51203b27f8289b13743aeadb5867fbbe041fcf87a92","dweb:/ipfs/QmfTEGiDGxKDaqBuBJ5wWJockGDrsEBZnW5S7UWrKhAxGc"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"},"src/access/SimpleAccessManager.sol":{"keccak256":"0xbcb0d251b0f6841cfdcdedfd297621a949a2c21bf6a11969d934b9adcfd7f40f","urls":["bzz-raw://a31d797c8ddbbecae738b62656b8828558f7a3f622b7058d84bd9d0b97429f36","dweb:/ipfs/QmTTAiRJM13oaMbVqNp2EPfKCYzCNb1wg2QU5WTG68Q425"],"license":"MIT"}},"version":1},"id":77}
1
+ {"abi":[{"type":"constructor","inputs":[{"name":"initialAdmin","type":"address","internalType":"address"},{"name":"initialFunctionRoles","type":"tuple[]","internalType":"struct SimpleAccessManager.InitialFunctionRole[]","components":[{"name":"selector","type":"bytes4","internalType":"bytes4"},{"name":"roleId","type":"uint64","internalType":"uint64"}]}],"stateMutability":"nonpayable"},{"type":"function","name":"ADMIN_ROLE","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"PUBLIC_ROLE","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"canCall","inputs":[{"name":"caller","type":"address","internalType":"address"},{"name":"","type":"address","internalType":"address"},{"name":"selector","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"getFunctionRole","inputs":[{"name":"selector","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"getRoleAdmin","inputs":[{"name":"roleId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"grantRole","inputs":[{"name":"roleId","type":"uint64","internalType":"uint64"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"hasRole","inputs":[{"name":"roleId","type":"uint64","internalType":"uint64"},{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"renounceRole","inputs":[{"name":"roleId","type":"uint64","internalType":"uint64"},{"name":"callerConfirmation","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"revokeRole","inputs":[{"name":"roleId","type":"uint64","internalType":"uint64"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setFunctionRole","inputs":[{"name":"selector","type":"bytes4","internalType":"bytes4"},{"name":"roleId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setRoleAdmin","inputs":[{"name":"roleId","type":"uint64","internalType":"uint64"},{"name":"admin","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"FunctionRoleUpdated","inputs":[{"name":"selector","type":"bytes4","indexed":true,"internalType":"bytes4"},{"name":"roleId","type":"uint64","indexed":true,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"RoleAdminChanged","inputs":[{"name":"roleId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"admin","type":"uint64","indexed":true,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"RoleGranted","inputs":[{"name":"roleId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"account","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"RoleRevoked","inputs":[{"name":"roleId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"account","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"error","name":"AccessManagerInvalidInitialAdmin","inputs":[{"name":"initialAdmin","type":"address","internalType":"address"}]},{"type":"error","name":"AccessManagerLockedRole","inputs":[{"name":"roleId","type":"uint64","internalType":"uint64"}]},{"type":"error","name":"AccessManagerUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"roleId","type":"uint64","internalType":"uint64"}]}],"bytecode":{"object":"0x60806040523461022357610919803803806100198161023b565b9283398101906040818303126102235780516001600160a01b0381169190829003610223576020810151906001600160401b038211610223570182601f82011215610223578051906001600160401b0382116102275761007e60208360051b0161023b565b9360208086858152019360061b8301019181831161022357602001925b8284106101bc57858580156101a9575f8181525f5160206108f95f395f51905f52602052604090205460ff161561015b575b505f5b815181101561014c576001906001600160e01b03196100ef8285610260565b515116828060401b0360206101048487610260565b5101511690805f525f60205260405f2082858060401b03198254161790557fa3e0b2a435476f7258ef6426c5ccc383db5cef84c531fc21905af2a5872a6d015f80a3016100d0565b60405161067090816102898239f35b5f8181525f5160206108f95f395f51905f5260205260408120805460ff191660011790557faad194d4c741066ed559517462aa599f8be124ae17cf4832c66a3a2958f277268180a3816100cd565b630409d6d160e11b5f525f60045260245ffd5b6040848303126102235760408051919082016001600160401b038111838210176102275760405284516001600160e01b0319811681036102235782526020850151906001600160401b0382168203610223578260209283604095015281520193019261009b565b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b6040519190601f01601f191682016001600160401b0381118382101761022757604052565b80518210156102745760209160051b010190565b634e487b7160e01b5f52603260045260245ffdfe60806040526004361015610011575f80fd5b5f3560e01c806330cae187146104625780633ca7c02a14610441578063530dd4561461040057806375b238fc146103e65780638e11fde6146103a5578063aa682ab614610303578063b428b0b0146101f9578063b700961314610199578063b7d2b16214610128578063d1f856ee146100f25763fe0776f514610092575f80fd5b346100ee5760403660031901126100ee576100ab610501565b6100b3610544565b336001600160a01b038216036100ce576100cc916105d8565b005b6001600160401b038263f07e038f60e01b5f52336004521660245260445ffd5b5f80fd5b346100ee5760403660031901126100ee57602061011e610110610501565b610118610544565b90610596565b6040519015158152f35b346100ee5760403660031901126100ee57610141610501565b610149610544565b6001600160401b0382165f5260026020526001600160401b0360405f205416916101733384610596565b15610182576100cc92506105d8565b8263f07e038f60e01b5f523360045260245260445ffd5b346100ee5760603660031901126100ee576004356001600160a01b03811681036100ee576101c5610544565b5060443563ffffffff60e01b81168091036100ee5760209161011e915f525f83526001600160401b0360405f205416610596565b346100ee5760403660031901126100ee57610212610501565b6001600160401b03610222610544565b911690815f5260026020526001600160401b0360405f2054166102453382610596565b156102ed57506001600160401b0382146102da57815f52600160205260405f2060018060a01b0382165f5260205260ff60405f2054161561028257005b815f52600160205260405f2060018060a01b0382165f5260205260405f20600160ff1982541617905560018060a01b0316907faad194d4c741066ed559517462aa599f8be124ae17cf4832c66a3a2958f277265f80a3005b5063061c6a4360e21b5f5260045260245ffd5b63f07e038f60e01b5f523360045260245260445ffd5b346100ee5760403660031901126100ee5761031c61052d565b610324610517565b9061032e3361055a565b1561038e576001600160e01b0319165f818152602081905260408120805467ffffffffffffffff19166001600160401b039490941693841790557fa3e0b2a435476f7258ef6426c5ccc383db5cef84c531fc21905af2a5872a6d019080a3005b63f07e038f60e01b5f52336004525f60245260445ffd5b346100ee5760203660031901126100ee576001600160e01b03196103c761052d565b165f525f60205260206001600160401b0360405f205416604051908152f35b346100ee575f3660031901126100ee5760206040515f8152f35b346100ee5760203660031901126100ee576001600160401b03610421610501565b165f52600260205260206001600160401b0360405f205416604051908152f35b346100ee575f3660031901126100ee5760206040516001600160401b038152f35b346100ee5760403660031901126100ee5761047b610501565b610483610517565b9061048d3361055a565b1561038e576001600160401b031690811580156104f1575b6102da576001600160401b0390825f52600260205260405f20828216831982541617905516907f1fd6dd7631312dfac2205b52913f99de03b4d7e381d5d27d3dbfe0713e6e63405f80a3005b506001600160401b0382146104a5565b600435906001600160401b03821682036100ee57565b602435906001600160401b03821682036100ee57565b600435906001600160e01b0319821682036100ee57565b602435906001600160a01b03821682036100ee57565b6001600160a01b03165f9081527fa6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb49602052604090205460ff1690565b6001600160401b03166001600160401b0381146105d1575f52600160205260405f209060018060a01b03165f5260205260ff60405f20541690565b5050600190565b6001600160401b0316906001600160401b0382146102da57815f52600160205260405f2060018060a01b0382165f5260205260ff60405f20541661061a575050565b5f8281526001602090815260408083206001600160a01b0394909416808452939091528120805460ff191690559091907ff229baa593af28c41b1d16b748cd7688f0c83aaf92d4be41c44005defe84c1669080a356a6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb49","sourceMap":"1139:11059:78:-:0;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1139:11059:78;;;;;;;;;;;;;;-1:-1:-1;;;;;1139:11059:78;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1139:11059:78;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5091:26;;;;5087:108;;-1:-1:-1;1498:16:78;;;-1:-1:-1;;;;;;;;;;;1139:11059:78;1498:16;1139:11059;1498:16;;;;;10542:30;10538:144;;1139:11059;5337:13;-1:-1:-1;5385:3:78;1340:16;;5352:31;;;;;10543:12;;-1:-1:-1;;;;;;5421:23:78;1139:11059;5421:23;;:::i;:::-;;1340:16;1139:11059;;;;;;;5455:23;;;;:::i;:::-;;:30;1340:16;1139:11059;;;-1:-1:-1;1139:11059:78;-1:-1:-1;1139:11059:78;;;-1:-1:-1;1139:11059:78;;;;;;;;;;;;;;12152:37;-1:-1:-1;12152:37:78;;1340:16;5337:13;;5352:31;1139:11059;;;;;;;;;10538:144;-1:-1:-1;1498:16:78;;;-1:-1:-1;;;;;;;;;;;1139:11059:78;1498:16;1139:11059;1498:16;;;;-1:-1:-1;;1498:16:78;10543:12;1498:16;;;10643:28;-1:-1:-1;;10643:28:78;10538:144;;;5087:108;5140:44;;;-1:-1:-1;5140:44:78;-1:-1:-1;5140:44:78;1139:11059;;-1:-1:-1;5140:44:78;1139:11059;;;;;;;;;;;;;;;-1:-1:-1;;;;;1139:11059:78;;;;;;;;;;;;-1:-1:-1;;;;;;1139:11059:78;;;;;;;;;;;;;-1:-1:-1;;;;;1139:11059:78;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1139:11059:78;;;;;;-1:-1:-1;1139:11059:78;;;;;-1:-1:-1;1139:11059:78;;;;;;;;-1:-1:-1;;1139:11059:78;;;-1:-1:-1;;;;;1139:11059:78;;;;;;;;;;:::o;1340:16::-;;;;;;;;;;;;;;;:::o;:::-;1139:11059;;;1340:16;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x60806040526004361015610011575f80fd5b5f3560e01c806330cae187146104625780633ca7c02a14610441578063530dd4561461040057806375b238fc146103e65780638e11fde6146103a5578063aa682ab614610303578063b428b0b0146101f9578063b700961314610199578063b7d2b16214610128578063d1f856ee146100f25763fe0776f514610092575f80fd5b346100ee5760403660031901126100ee576100ab610501565b6100b3610544565b336001600160a01b038216036100ce576100cc916105d8565b005b6001600160401b038263f07e038f60e01b5f52336004521660245260445ffd5b5f80fd5b346100ee5760403660031901126100ee57602061011e610110610501565b610118610544565b90610596565b6040519015158152f35b346100ee5760403660031901126100ee57610141610501565b610149610544565b6001600160401b0382165f5260026020526001600160401b0360405f205416916101733384610596565b15610182576100cc92506105d8565b8263f07e038f60e01b5f523360045260245260445ffd5b346100ee5760603660031901126100ee576004356001600160a01b03811681036100ee576101c5610544565b5060443563ffffffff60e01b81168091036100ee5760209161011e915f525f83526001600160401b0360405f205416610596565b346100ee5760403660031901126100ee57610212610501565b6001600160401b03610222610544565b911690815f5260026020526001600160401b0360405f2054166102453382610596565b156102ed57506001600160401b0382146102da57815f52600160205260405f2060018060a01b0382165f5260205260ff60405f2054161561028257005b815f52600160205260405f2060018060a01b0382165f5260205260405f20600160ff1982541617905560018060a01b0316907faad194d4c741066ed559517462aa599f8be124ae17cf4832c66a3a2958f277265f80a3005b5063061c6a4360e21b5f5260045260245ffd5b63f07e038f60e01b5f523360045260245260445ffd5b346100ee5760403660031901126100ee5761031c61052d565b610324610517565b9061032e3361055a565b1561038e576001600160e01b0319165f818152602081905260408120805467ffffffffffffffff19166001600160401b039490941693841790557fa3e0b2a435476f7258ef6426c5ccc383db5cef84c531fc21905af2a5872a6d019080a3005b63f07e038f60e01b5f52336004525f60245260445ffd5b346100ee5760203660031901126100ee576001600160e01b03196103c761052d565b165f525f60205260206001600160401b0360405f205416604051908152f35b346100ee575f3660031901126100ee5760206040515f8152f35b346100ee5760203660031901126100ee576001600160401b03610421610501565b165f52600260205260206001600160401b0360405f205416604051908152f35b346100ee575f3660031901126100ee5760206040516001600160401b038152f35b346100ee5760403660031901126100ee5761047b610501565b610483610517565b9061048d3361055a565b1561038e576001600160401b031690811580156104f1575b6102da576001600160401b0390825f52600260205260405f20828216831982541617905516907f1fd6dd7631312dfac2205b52913f99de03b4d7e381d5d27d3dbfe0713e6e63405f80a3005b506001600160401b0382146104a5565b600435906001600160401b03821682036100ee57565b602435906001600160401b03821682036100ee57565b600435906001600160e01b0319821682036100ee57565b602435906001600160a01b03821682036100ee57565b6001600160a01b03165f9081527fa6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb49602052604090205460ff1690565b6001600160401b03166001600160401b0381146105d1575f52600160205260405f209060018060a01b03165f5260205260ff60405f20541690565b5050600190565b6001600160401b0316906001600160401b0382146102da57815f52600160205260405f2060018060a01b0382165f5260205260ff60405f20541661061a575050565b5f8281526001602090815260408083206001600160a01b0394909416808452939091528120805460ff191690559091907ff229baa593af28c41b1d16b748cd7688f0c83aaf92d4be41c44005defe84c1669080a356","sourceMap":"1139:11059:78:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1139:11059:78;;;;;;:::i;:::-;;;:::i;:::-;735:10:6;-1:-1:-1;;;;;1139:11059:78;;9412:34;9408:126;;9563:18;;;:::i;:::-;1139:11059;9408:126;-1:-1:-1;;;;;3994:58:78;;;;1139:11059;9469:54;735:10:6;1139:11059:78;;;;;;;9469:54;1139:11059;;;;;;;;;;-1:-1:-1;;1139:11059:78;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;-1:-1:-1;;1139:11059:78;;;;;;:::i;:::-;;;:::i;:::-;-1:-1:-1;;;;;1139:11059:78;;;;7419:11;1139:11059;;-1:-1:-1;;;;;1139:11059:78;;;;;735:10:6;4364:32:78;735:10:6;4364:32:78;;:::i;:::-;4363:33;4359:128;;8956:7;;;;:::i;4359:128::-;3994:58;;;;1139:11059;4419:57;735:10:6;1139:11059:78;;;;;;4419:57;1139:11059;;;;;;-1:-1:-1;;1139:11059:78;;;;;;-1:-1:-1;;;;;1139:11059:78;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;6399:23;1139:11059;;;;;;-1:-1:-1;;;;;1139:11059:78;;;;;6399:23;:::i;1139:11059::-;;;;;;-1:-1:-1;;1139:11059:78;;;;;;:::i;:::-;-1:-1:-1;;;;;1139:11059:78;;:::i;:::-;;;;;;;7419:11;1139:11059;;-1:-1:-1;;;;;1139:11059:78;;;;;4364:32;735:10:6;4364:32:78;;:::i;:::-;4363:33;4359:128;;10442:21;-1:-1:-1;;;;;10442:21:78;;10438:90;;1139:11059;;;10543:12;1139:11059;;;;;;;;;;;;-1:-1:-1;1139:11059:78;;;;;-1:-1:-1;1139:11059:78;;;10542:30;10538:144;;1139:11059;10538:144;1139:11059;;;10543:12;1139:11059;;;;;;;;;;;;-1:-1:-1;1139:11059:78;;;;-1:-1:-1;1139:11059:78;10543:12;1139:11059;;;;;;;;;;;;;;10643:28;;1139:11059;10643:28;;1139:11059;10438:90;10038:31;;;;1139:11059;10486:31;1139:11059;;;;10486:31;4359:128;3994:58;;;1139:11059;4419:57;735:10:6;1139:11059:78;;;;;;4419:57;1139:11059;;;;;;-1:-1:-1;;1139:11059:78;;;;;;:::i;:::-;;;:::i;:::-;735:10:6;3938:33:78;735:10:6;3938:33:78;:::i;:::-;3937:34;3933:130;;-1:-1:-1;;;;;;1139:11059:78;;;;;;;;;;;;;;-1:-1:-1;;1139:11059:78;-1:-1:-1;;;;;1139:11059:78;;;;;;;;;12152:37;;1139:11059;12152:37;1139:11059;3933:130;3994:58;;;1139:11059;3994:58;735:10:6;1139:11059:78;;;;;;;3994:58;1139:11059;;;;;;-1:-1:-1;;1139:11059:78;;;;-1:-1:-1;;;;;;1139:11059:78;;:::i;:::-;;;;;;;;-1:-1:-1;;;;;1139:11059:78;;;;;;;;;;;;;;;;;-1:-1:-1;;1139:11059:78;;;;;;;;;;;;;;;;;-1:-1:-1;;1139:11059:78;;;;-1:-1:-1;;;;;1139:11059:78;;:::i;:::-;;;;7419:11;1139:11059;;;-1:-1:-1;;;;;1139:11059:78;;;;;;;;;;;;;;;;;-1:-1:-1;;1139:11059:78;;;;;;;-1:-1:-1;;;;;1139:11059:78;;;;;;;;;-1:-1:-1;;1139:11059:78;;;;;;:::i;:::-;;;:::i;:::-;735:10:6;3938:33:78;735:10:6;3938:33:78;:::i;:::-;3937:34;3933:130;;-1:-1:-1;;;;;1139:11059:78;9970:20;;;:45;;;;1139:11059;9966:114;;-1:-1:-1;;;;;1139:11059:78;;;;10090:11;1139:11059;;;;;;;;;;;;;;;;;10132:31;;1139:11059;10132:31;;1139:11059;9970:45;9994:21;-1:-1:-1;;;;;9994:21:78;;9970:45;;1139:11059;;;;-1:-1:-1;;;;;1139:11059:78;;;;;;:::o;:::-;;;;-1:-1:-1;;;;;1139:11059:78;;;;;;:::o;:::-;;;;-1:-1:-1;;;;;;1139:11059:78;;;;;;:::o;:::-;;;;-1:-1:-1;;;;;1139:11059:78;;;;;;:::o;7800:201::-;-1:-1:-1;;;;;1139:11059:78;-1:-1:-1;1139:11059:78;;;;;;;;;;;;;7800:201::o;:::-;-1:-1:-1;;;;;1139:11059:78;-1:-1:-1;;;;;7890:21:78;;7886:63;;1139:11059;;7965:12;1139:11059;;;;;7965:29;1139:11059;;;;;;-1:-1:-1;1139:11059:78;;;;;-1:-1:-1;1139:11059:78;;;7800:201;:::o;7886:63::-;7927:11;;7934:4;7927:11;:::o;10886:322::-;-1:-1:-1;;;;;1139:11059:78;10962:21;-1:-1:-1;;;;;10962:21:78;;10958:90;;1139:11059;-1:-1:-1;1139:11059:78;11062:12;1139:11059;;;-1:-1:-1;1139:11059:78;;;;;;;;-1:-1:-1;1139:11059:78;;;;;-1:-1:-1;1139:11059:78;;;11058:144;;10886:322;;:::o;11058:144::-;-1:-1:-1;1139:11059:78;;;11062:12;1139:11059;;;;;;;;-1:-1:-1;;;;;1139:11059:78;;;;;;;;;;;;;;;-1:-1:-1;;1139:11059:78;;;;;;11163:28;;-1:-1:-1;11163:28:78;10886:322::o","linkReferences":{}},"methodIdentifiers":{"ADMIN_ROLE()":"75b238fc","PUBLIC_ROLE()":"3ca7c02a","canCall(address,address,bytes4)":"b7009613","getFunctionRole(bytes4)":"8e11fde6","getRoleAdmin(uint64)":"530dd456","grantRole(uint64,address)":"b428b0b0","hasRole(uint64,address)":"d1f856ee","renounceRole(uint64,address)":"fe0776f5","revokeRole(uint64,address)":"b7d2b162","setFunctionRole(bytes4,uint64)":"aa682ab6","setRoleAdmin(uint64,uint64)":"30cae187"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"initialAdmin\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"},{\"internalType\":\"uint64\",\"name\":\"roleId\",\"type\":\"uint64\"}],\"internalType\":\"struct SimpleAccessManager.InitialFunctionRole[]\",\"name\":\"initialFunctionRoles\",\"type\":\"tuple[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"initialAdmin\",\"type\":\"address\"}],\"name\":\"AccessManagerInvalidInitialAdmin\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"roleId\",\"type\":\"uint64\"}],\"name\":\"AccessManagerLockedRole\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"roleId\",\"type\":\"uint64\"}],\"name\":\"AccessManagerUnauthorizedAccount\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"roleId\",\"type\":\"uint64\"}],\"name\":\"FunctionRoleUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"roleId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"admin\",\"type\":\"uint64\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"roleId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"roleId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PUBLIC_ROLE\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"}],\"name\":\"canCall\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"}],\"name\":\"getFunctionRole\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"roleId\",\"type\":\"uint64\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"roleId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"roleId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"roleId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"callerConfirmation\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"roleId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"},{\"internalType\":\"uint64\",\"name\":\"roleId\",\"type\":\"uint64\"}],\"name\":\"setFunctionRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"roleId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"admin\",\"type\":\"uint64\"}],\"name\":\"setRoleAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Zora\",\"details\":\"This contract is designed to manage access for a single target contract by mapping function selectors directly to required roles. It implements the IAuthority interface for compatibility with SimpleAccessManaged contracts. Key features: - Maps function selectors to roles (selector -> roleId) - Immediate role grants/revokes (no delays) - PUBLIC_ROLE grants access to all addresses - ADMIN_ROLE (role 0) can configure function roles and manage other roles - Each role can have a custom admin role for delegation This is intentionally simpler than OpenZeppelin's AccessManager: - No execution delays or scheduled operations - No guardian role - No target address tracking (single-contract authority)\",\"errors\":{\"AccessManagerInvalidInitialAdmin(address)\":[{\"params\":{\"initialAdmin\":\"The invalid admin address provided\"}}],\"AccessManagerLockedRole(uint64)\":[{\"params\":{\"roleId\":\"The locked role that was targeted\"}}],\"AccessManagerUnauthorizedAccount(address,uint64)\":[{\"params\":{\"account\":\"The account that attempted the action\",\"roleId\":\"The role that was required\"}}]},\"events\":{\"FunctionRoleUpdated(bytes4,uint64)\":{\"params\":{\"roleId\":\"The new required role\",\"selector\":\"The function selector that was configured\"}},\"RoleAdminChanged(uint64,uint64)\":{\"params\":{\"admin\":\"The new admin role\",\"roleId\":\"The role whose admin changed\"}},\"RoleGranted(uint64,address)\":{\"params\":{\"account\":\"The account that received the role\",\"roleId\":\"The role that was granted\"}},\"RoleRevoked(uint64,address)\":{\"params\":{\"account\":\"The account that lost the role\",\"roleId\":\"The role that was revoked\"}}},\"kind\":\"dev\",\"methods\":{\"canCall(address,address,bytes4)\":{\"details\":\"The target parameter is ignored since this is a single-contract authority. Returns true if the caller has the role required for the selector, or if the selector is mapped to PUBLIC_ROLE (which all addresses implicitly have).\",\"params\":{\"caller\":\"The address attempting to call the function\",\"selector\":\"The function selector being called\"},\"returns\":{\"_0\":\"True if the caller is authorized to call the function\"}},\"constructor\":{\"details\":\"The initial admin is granted ADMIN_ROLE immediately. Initial function roles allow configuring access permissions at deployment time without additional transactions.\",\"params\":{\"initialAdmin\":\"The address that will receive ADMIN_ROLE (cannot be zero address)\",\"initialFunctionRoles\":\"Array of selector-to-role mappings to configure at deployment\"}},\"getFunctionRole(bytes4)\":{\"details\":\"If no role has been set for the selector, returns 0 (ADMIN_ROLE), meaning only admins can call unconfigured functions by default.\",\"params\":{\"selector\":\"The function selector to query\"},\"returns\":{\"_0\":\"The role ID required to call the function\"}},\"getRoleAdmin(uint64)\":{\"details\":\"The admin role is the role that can grant/revoke the specified role. If no admin has been set, returns 0 (ADMIN_ROLE).\",\"params\":{\"roleId\":\"The role to query the admin for\"},\"returns\":{\"_0\":\"The admin role ID that can manage the specified role\"}},\"grantRole(uint64,address)\":{\"details\":\"Only callable by accounts that have the admin role for the specified role. Emits {RoleGranted} if the account did not already have the role.\",\"params\":{\"account\":\"The account to receive the role\",\"roleId\":\"The role to grant\"}},\"hasRole(uint64,address)\":{\"details\":\"PUBLIC_ROLE always returns true for any account. For other roles, returns true only if the account has been explicitly granted the role.\",\"params\":{\"account\":\"The account to check\",\"roleId\":\"The role to check\"},\"returns\":{\"_0\":\"True if the account has the role\"}},\"renounceRole(uint64,address)\":{\"details\":\"The callerConfirmation parameter must match msg.sender to prevent accidental role renunciation. Emits {RoleRevoked} if the account had the role.\",\"params\":{\"callerConfirmation\":\"Must be msg.sender's address as confirmation\",\"roleId\":\"The role to renounce\"}},\"revokeRole(uint64,address)\":{\"details\":\"Only callable by accounts that have the admin role for the specified role. Emits {RoleRevoked} if the account had the role.\",\"params\":{\"account\":\"The account to lose the role\",\"roleId\":\"The role to revoke\"}},\"setFunctionRole(bytes4,uint64)\":{\"details\":\"Only callable by accounts with ADMIN_ROLE. Set to PUBLIC_ROLE to make a function callable by anyone. Emits {FunctionRoleUpdated}.\",\"params\":{\"roleId\":\"The role that will be required to call the function\",\"selector\":\"The function selector to configure\"}},\"setRoleAdmin(uint64,uint64)\":{\"details\":\"Only callable by accounts with ADMIN_ROLE. Cannot modify the admin of ADMIN_ROLE or PUBLIC_ROLE. Emits {RoleAdminChanged}.\",\"params\":{\"admin\":\"The new admin role ID\",\"roleId\":\"The role to set the admin for\"}}},\"stateVariables\":{\"_functionRoles\":{\"details\":\"Maps function selector to the role required to call it\"},\"_roleAdmins\":{\"details\":\"Maps role to its admin role (the role that can grant/revoke it)\"},\"_roleMembers\":{\"details\":\"Maps role to its members\"}},\"title\":\"SimpleAccessManager\",\"version\":1},\"userdoc\":{\"errors\":{\"AccessManagerInvalidInitialAdmin(address)\":[{\"notice\":\"Thrown when the initial admin address is invalid (zero address)\"}],\"AccessManagerLockedRole(uint64)\":[{\"notice\":\"Thrown when attempting to modify a locked role (ADMIN_ROLE or PUBLIC_ROLE)\"}],\"AccessManagerUnauthorizedAccount(address,uint64)\":[{\"notice\":\"Thrown when an account lacks the required role\"}]},\"events\":{\"FunctionRoleUpdated(bytes4,uint64)\":{\"notice\":\"Emitted when a function's required role is updated\"},\"RoleAdminChanged(uint64,uint64)\":{\"notice\":\"Emitted when a role's admin is changed\"},\"RoleGranted(uint64,address)\":{\"notice\":\"Emitted when a role is granted to an account\"},\"RoleRevoked(uint64,address)\":{\"notice\":\"Emitted when a role is revoked from an account\"}},\"kind\":\"user\",\"methods\":{\"ADMIN_ROLE()\":{\"notice\":\"The admin role identifier (0). Members can configure function roles and grant other roles.\"},\"PUBLIC_ROLE()\":{\"notice\":\"The public role identifier (max uint64). All addresses implicitly have this role.\"},\"canCall(address,address,bytes4)\":{\"notice\":\"Checks if a caller is authorized to invoke a function.\"},\"constructor\":{\"notice\":\"Initializes the access manager with an admin and optional function role configurations.\"},\"getFunctionRole(bytes4)\":{\"notice\":\"Returns the role required to call a specific function.\"},\"getRoleAdmin(uint64)\":{\"notice\":\"Returns the admin role for a given role.\"},\"grantRole(uint64,address)\":{\"notice\":\"Grants a role to an account.\"},\"hasRole(uint64,address)\":{\"notice\":\"Checks if an account has a specific role.\"},\"renounceRole(uint64,address)\":{\"notice\":\"Allows an account to renounce a role it has.\"},\"revokeRole(uint64,address)\":{\"notice\":\"Revokes a role from an account.\"},\"setFunctionRole(bytes4,uint64)\":{\"notice\":\"Sets the role required to call a specific function.\"},\"setRoleAdmin(uint64,uint64)\":{\"notice\":\"Sets the admin role for a given role.\"}},\"notice\":\"A simplified single-contract access manager providing role-based access control without time-based validation.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/access/SimpleAccessManager.sol\":\"SimpleAccessManager\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"appendCBOR\":false,\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":100},\"remappings\":[\":@openzeppelin/=node_modules/@openzeppelin/\",\":@uniswap/universal-router/contracts/=node_modules/@uniswap/universal-router/contracts/\",\":@uniswap/v4-core/=node_modules/@uniswap/v4-core/\",\":@uniswap/v4-periphery/=node_modules/@uniswap/v4-periphery/\",\":@zoralabs/coins/=node_modules/@zoralabs/coins/\",\":@zoralabs/shared-contracts/=node_modules/@zoralabs/shared-contracts/src/\",\":ds-test/=node_modules/ds-test/src/\",\":forge-std/=node_modules/forge-std/src/\",\":permit2/src/=node_modules/@uniswap/permit2/src/\",\":solady/=node_modules/solady/src/\",\":solmate/=node_modules/solmate/src/\"],\"viaIR\":true},\"sources\":{\"node_modules/@openzeppelin/contracts/access/manager/IAuthority.sol\":{\"keccak256\":\"0x9c9a58dd831b9bb4a0ea47d96b53c13ab9a6e4270a518ea395b1424092fd74dc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d806b0c87fbcaf0cb827b51203b27f8289b13743aeadb5867fbbe041fcf87a92\",\"dweb:/ipfs/QmfTEGiDGxKDaqBuBJ5wWJockGDrsEBZnW5S7UWrKhAxGc\"]},\"node_modules/@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"src/access/SimpleAccessManager.sol\":{\"keccak256\":\"0xbcb0d251b0f6841cfdcdedfd297621a949a2c21bf6a11969d934b9adcfd7f40f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a31d797c8ddbbecae738b62656b8828558f7a3f622b7058d84bd9d0b97429f36\",\"dweb:/ipfs/QmTTAiRJM13oaMbVqNp2EPfKCYzCNb1wg2QU5WTG68Q425\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.28+commit.7893614a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"initialAdmin","type":"address"},{"internalType":"struct SimpleAccessManager.InitialFunctionRole[]","name":"initialFunctionRoles","type":"tuple[]","components":[{"internalType":"bytes4","name":"selector","type":"bytes4"},{"internalType":"uint64","name":"roleId","type":"uint64"}]}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"initialAdmin","type":"address"}],"type":"error","name":"AccessManagerInvalidInitialAdmin"},{"inputs":[{"internalType":"uint64","name":"roleId","type":"uint64"}],"type":"error","name":"AccessManagerLockedRole"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint64","name":"roleId","type":"uint64"}],"type":"error","name":"AccessManagerUnauthorizedAccount"},{"inputs":[{"internalType":"bytes4","name":"selector","type":"bytes4","indexed":true},{"internalType":"uint64","name":"roleId","type":"uint64","indexed":true}],"type":"event","name":"FunctionRoleUpdated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"roleId","type":"uint64","indexed":true},{"internalType":"uint64","name":"admin","type":"uint64","indexed":true}],"type":"event","name":"RoleAdminChanged","anonymous":false},{"inputs":[{"internalType":"uint64","name":"roleId","type":"uint64","indexed":true},{"internalType":"address","name":"account","type":"address","indexed":true}],"type":"event","name":"RoleGranted","anonymous":false},{"inputs":[{"internalType":"uint64","name":"roleId","type":"uint64","indexed":true},{"internalType":"address","name":"account","type":"address","indexed":true}],"type":"event","name":"RoleRevoked","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"ADMIN_ROLE","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"PUBLIC_ROLE","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"address","name":"caller","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"bytes4","name":"selector","type":"bytes4"}],"stateMutability":"view","type":"function","name":"canCall","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"bytes4","name":"selector","type":"bytes4"}],"stateMutability":"view","type":"function","name":"getFunctionRole","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"roleId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getRoleAdmin","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"roleId","type":"uint64"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"grantRole"},{"inputs":[{"internalType":"uint64","name":"roleId","type":"uint64"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"roleId","type":"uint64"},{"internalType":"address","name":"callerConfirmation","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"renounceRole"},{"inputs":[{"internalType":"uint64","name":"roleId","type":"uint64"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"revokeRole"},{"inputs":[{"internalType":"bytes4","name":"selector","type":"bytes4"},{"internalType":"uint64","name":"roleId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"setFunctionRole"},{"inputs":[{"internalType":"uint64","name":"roleId","type":"uint64"},{"internalType":"uint64","name":"admin","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"setRoleAdmin"}],"devdoc":{"kind":"dev","methods":{"canCall(address,address,bytes4)":{"details":"The target parameter is ignored since this is a single-contract authority. Returns true if the caller has the role required for the selector, or if the selector is mapped to PUBLIC_ROLE (which all addresses implicitly have).","params":{"caller":"The address attempting to call the function","selector":"The function selector being called"},"returns":{"_0":"True if the caller is authorized to call the function"}},"constructor":{"details":"The initial admin is granted ADMIN_ROLE immediately. Initial function roles allow configuring access permissions at deployment time without additional transactions.","params":{"initialAdmin":"The address that will receive ADMIN_ROLE (cannot be zero address)","initialFunctionRoles":"Array of selector-to-role mappings to configure at deployment"}},"getFunctionRole(bytes4)":{"details":"If no role has been set for the selector, returns 0 (ADMIN_ROLE), meaning only admins can call unconfigured functions by default.","params":{"selector":"The function selector to query"},"returns":{"_0":"The role ID required to call the function"}},"getRoleAdmin(uint64)":{"details":"The admin role is the role that can grant/revoke the specified role. If no admin has been set, returns 0 (ADMIN_ROLE).","params":{"roleId":"The role to query the admin for"},"returns":{"_0":"The admin role ID that can manage the specified role"}},"grantRole(uint64,address)":{"details":"Only callable by accounts that have the admin role for the specified role. Emits {RoleGranted} if the account did not already have the role.","params":{"account":"The account to receive the role","roleId":"The role to grant"}},"hasRole(uint64,address)":{"details":"PUBLIC_ROLE always returns true for any account. For other roles, returns true only if the account has been explicitly granted the role.","params":{"account":"The account to check","roleId":"The role to check"},"returns":{"_0":"True if the account has the role"}},"renounceRole(uint64,address)":{"details":"The callerConfirmation parameter must match msg.sender to prevent accidental role renunciation. Emits {RoleRevoked} if the account had the role.","params":{"callerConfirmation":"Must be msg.sender's address as confirmation","roleId":"The role to renounce"}},"revokeRole(uint64,address)":{"details":"Only callable by accounts that have the admin role for the specified role. Emits {RoleRevoked} if the account had the role.","params":{"account":"The account to lose the role","roleId":"The role to revoke"}},"setFunctionRole(bytes4,uint64)":{"details":"Only callable by accounts with ADMIN_ROLE. Set to PUBLIC_ROLE to make a function callable by anyone. Emits {FunctionRoleUpdated}.","params":{"roleId":"The role that will be required to call the function","selector":"The function selector to configure"}},"setRoleAdmin(uint64,uint64)":{"details":"Only callable by accounts with ADMIN_ROLE. Cannot modify the admin of ADMIN_ROLE or PUBLIC_ROLE. Emits {RoleAdminChanged}.","params":{"admin":"The new admin role ID","roleId":"The role to set the admin for"}}},"version":1},"userdoc":{"kind":"user","methods":{"ADMIN_ROLE()":{"notice":"The admin role identifier (0). Members can configure function roles and grant other roles."},"PUBLIC_ROLE()":{"notice":"The public role identifier (max uint64). All addresses implicitly have this role."},"canCall(address,address,bytes4)":{"notice":"Checks if a caller is authorized to invoke a function."},"constructor":{"notice":"Initializes the access manager with an admin and optional function role configurations."},"getFunctionRole(bytes4)":{"notice":"Returns the role required to call a specific function."},"getRoleAdmin(uint64)":{"notice":"Returns the admin role for a given role."},"grantRole(uint64,address)":{"notice":"Grants a role to an account."},"hasRole(uint64,address)":{"notice":"Checks if an account has a specific role."},"renounceRole(uint64,address)":{"notice":"Allows an account to renounce a role it has."},"revokeRole(uint64,address)":{"notice":"Revokes a role from an account."},"setFunctionRole(bytes4,uint64)":{"notice":"Sets the role required to call a specific function."},"setRoleAdmin(uint64,uint64)":{"notice":"Sets the admin role for a given role."}},"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/access/SimpleAccessManager.sol":"SimpleAccessManager"},"evmVersion":"prague","libraries":{},"viaIR":true},"sources":{"node_modules/@openzeppelin/contracts/access/manager/IAuthority.sol":{"keccak256":"0x9c9a58dd831b9bb4a0ea47d96b53c13ab9a6e4270a518ea395b1424092fd74dc","urls":["bzz-raw://d806b0c87fbcaf0cb827b51203b27f8289b13743aeadb5867fbbe041fcf87a92","dweb:/ipfs/QmfTEGiDGxKDaqBuBJ5wWJockGDrsEBZnW5S7UWrKhAxGc"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"},"src/access/SimpleAccessManager.sol":{"keccak256":"0xbcb0d251b0f6841cfdcdedfd297621a949a2c21bf6a11969d934b9adcfd7f40f","urls":["bzz-raw://a31d797c8ddbbecae738b62656b8828558f7a3f622b7058d84bd9d0b97429f36","dweb:/ipfs/QmTTAiRJM13oaMbVqNp2EPfKCYzCNb1wg2QU5WTG68Q425"],"license":"MIT"}},"version":1},"id":78}
@@ -1 +1 @@
1
- {"abi":[{"type":"error","name":"InvalidPrice","inputs":[]},{"type":"error","name":"InvalidPriceOrLiquidity","inputs":[]},{"type":"error","name":"NotEnoughLiquidity","inputs":[]},{"type":"error","name":"PriceOverflow","inputs":[]}],"bytecode":{"object":"0x6080806040523460175760039081601c823930815050f35b5f80fdfe5f80fd","sourceMap":"524:13285:67:-:0;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x5f80fd","sourceMap":"524:13285:67:-:0;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"InvalidPrice\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPriceOrLiquidity\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotEnoughLiquidity\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PriceOverflow\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"https://github.com/Uniswap/v4-core/blob/80311e34080fee64b6fc6c916e9a51a437d0e482/src/libraries/SqrtPriceMath.sol\",\"kind\":\"dev\",\"methods\":{},\"title\":\"Functions based on Q64.96 sqrt price and liquidity\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Contains the math that uses square root of price as a Q64.96 and liquidity to compute deltas\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"node_modules/@zoralabs/coins/src/utils/uniswap/SqrtPriceMath.sol\":\"SqrtPriceMath\"},\"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/FixedPoint96.sol\":{\"keccak256\":\"0x711b83cbdbbfe19afc1df6f45f2f71abb1b75305ecb288e36a37cc286bc8de46\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2957b0c179395705c49084b5b0c1033c0f47beeca043658a6c572226f5d07348\",\"dweb:/ipfs/QmZQD8s7u1Kjnydkw6n9FUyzVK9Loo6gYSZXic732Y7J76\"]},\"node_modules/@zoralabs/coins/src/utils/uniswap/FullMath.sol\":{\"keccak256\":\"0xc6b0d61b8d60acb295d196a72f81e577007e822f63c737ae0fa87d63e228f074\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://643ddf8897f3d2610ce5ac45c0571e86cd2a97542c2599121fa39a06daa95509\",\"dweb:/ipfs/QmZ74RCf31apWy8UukKUrFi98kgSK6sRH68MFMGudPVpqx\"]},\"node_modules/@zoralabs/coins/src/utils/uniswap/SafeCast.sol\":{\"keccak256\":\"0x5ec831c0fbdcb16091d35eee2e49d54eaadf7ce72d971aec9ea30f379cba258a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9440106f4a5ff5d829ed68c82de4f92e171c4e9306e89d28fe75b4ca30b5f298\",\"dweb:/ipfs/QmdLJitnGXNMZxG6XZxhvCMjoNEKzpZVJ2dnzGVXtWUSFf\"]},\"node_modules/@zoralabs/coins/src/utils/uniswap/SqrtPriceMath.sol\":{\"keccak256\":\"0x45ed757203ba04c7337435dd32e6231b768abf1709917b1d5e81ae1333513f75\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2fa319aa9c92b8da5a9634407ff487cbf0e0e6e234a99146f49c9ded06e8fd74\",\"dweb:/ipfs/QmcqHrXBGpcfgMyb8DqyPYuafBKuESGcvJo1tfCAUrYokb\"]},\"node_modules/@zoralabs/coins/src/utils/uniswap/UnsafeMath.sol\":{\"keccak256\":\"0x44ea34293d502dcff60379eff5504313d7a042ebcae72e7d82ca937f199f3d84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://142c8209cf7ff88b88fa5fe41c0c22a59a8065e1726c0e18b0582facbead3c5c\",\"dweb:/ipfs/QmRZZfsipKck8Ja4pPCK5GYFNfD5TeZggjqLVwJi1AjBzt\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.28+commit.7893614a"},"language":"Solidity","output":{"abi":[{"inputs":[],"type":"error","name":"InvalidPrice"},{"inputs":[],"type":"error","name":"InvalidPriceOrLiquidity"},{"inputs":[],"type":"error","name":"NotEnoughLiquidity"},{"inputs":[],"type":"error","name":"PriceOverflow"}],"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/SqrtPriceMath.sol":"SqrtPriceMath"},"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/FixedPoint96.sol":{"keccak256":"0x711b83cbdbbfe19afc1df6f45f2f71abb1b75305ecb288e36a37cc286bc8de46","urls":["bzz-raw://2957b0c179395705c49084b5b0c1033c0f47beeca043658a6c572226f5d07348","dweb:/ipfs/QmZQD8s7u1Kjnydkw6n9FUyzVK9Loo6gYSZXic732Y7J76"],"license":"MIT"},"node_modules/@zoralabs/coins/src/utils/uniswap/FullMath.sol":{"keccak256":"0xc6b0d61b8d60acb295d196a72f81e577007e822f63c737ae0fa87d63e228f074","urls":["bzz-raw://643ddf8897f3d2610ce5ac45c0571e86cd2a97542c2599121fa39a06daa95509","dweb:/ipfs/QmZ74RCf31apWy8UukKUrFi98kgSK6sRH68MFMGudPVpqx"],"license":"MIT"},"node_modules/@zoralabs/coins/src/utils/uniswap/SafeCast.sol":{"keccak256":"0x5ec831c0fbdcb16091d35eee2e49d54eaadf7ce72d971aec9ea30f379cba258a","urls":["bzz-raw://9440106f4a5ff5d829ed68c82de4f92e171c4e9306e89d28fe75b4ca30b5f298","dweb:/ipfs/QmdLJitnGXNMZxG6XZxhvCMjoNEKzpZVJ2dnzGVXtWUSFf"],"license":"MIT"},"node_modules/@zoralabs/coins/src/utils/uniswap/SqrtPriceMath.sol":{"keccak256":"0x45ed757203ba04c7337435dd32e6231b768abf1709917b1d5e81ae1333513f75","urls":["bzz-raw://2fa319aa9c92b8da5a9634407ff487cbf0e0e6e234a99146f49c9ded06e8fd74","dweb:/ipfs/QmcqHrXBGpcfgMyb8DqyPYuafBKuESGcvJo1tfCAUrYokb"],"license":"MIT"},"node_modules/@zoralabs/coins/src/utils/uniswap/UnsafeMath.sol":{"keccak256":"0x44ea34293d502dcff60379eff5504313d7a042ebcae72e7d82ca937f199f3d84","urls":["bzz-raw://142c8209cf7ff88b88fa5fe41c0c22a59a8065e1726c0e18b0582facbead3c5c","dweb:/ipfs/QmRZZfsipKck8Ja4pPCK5GYFNfD5TeZggjqLVwJi1AjBzt"],"license":"MIT"}},"version":1},"id":67}
1
+ {"abi":[{"type":"error","name":"InvalidPrice","inputs":[]},{"type":"error","name":"InvalidPriceOrLiquidity","inputs":[]},{"type":"error","name":"NotEnoughLiquidity","inputs":[]},{"type":"error","name":"PriceOverflow","inputs":[]}],"bytecode":{"object":"0x6080806040523460175760039081601c823930815050f35b5f80fdfe5f80fd","sourceMap":"524:13285:68:-:0;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x5f80fd","sourceMap":"524:13285:68:-:0;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"InvalidPrice\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPriceOrLiquidity\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotEnoughLiquidity\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PriceOverflow\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"https://github.com/Uniswap/v4-core/blob/80311e34080fee64b6fc6c916e9a51a437d0e482/src/libraries/SqrtPriceMath.sol\",\"kind\":\"dev\",\"methods\":{},\"title\":\"Functions based on Q64.96 sqrt price and liquidity\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Contains the math that uses square root of price as a Q64.96 and liquidity to compute deltas\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"node_modules/@zoralabs/coins/src/utils/uniswap/SqrtPriceMath.sol\":\"SqrtPriceMath\"},\"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/FixedPoint96.sol\":{\"keccak256\":\"0x711b83cbdbbfe19afc1df6f45f2f71abb1b75305ecb288e36a37cc286bc8de46\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2957b0c179395705c49084b5b0c1033c0f47beeca043658a6c572226f5d07348\",\"dweb:/ipfs/QmZQD8s7u1Kjnydkw6n9FUyzVK9Loo6gYSZXic732Y7J76\"]},\"node_modules/@zoralabs/coins/src/utils/uniswap/FullMath.sol\":{\"keccak256\":\"0xc6b0d61b8d60acb295d196a72f81e577007e822f63c737ae0fa87d63e228f074\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://643ddf8897f3d2610ce5ac45c0571e86cd2a97542c2599121fa39a06daa95509\",\"dweb:/ipfs/QmZ74RCf31apWy8UukKUrFi98kgSK6sRH68MFMGudPVpqx\"]},\"node_modules/@zoralabs/coins/src/utils/uniswap/SafeCast.sol\":{\"keccak256\":\"0x5ec831c0fbdcb16091d35eee2e49d54eaadf7ce72d971aec9ea30f379cba258a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9440106f4a5ff5d829ed68c82de4f92e171c4e9306e89d28fe75b4ca30b5f298\",\"dweb:/ipfs/QmdLJitnGXNMZxG6XZxhvCMjoNEKzpZVJ2dnzGVXtWUSFf\"]},\"node_modules/@zoralabs/coins/src/utils/uniswap/SqrtPriceMath.sol\":{\"keccak256\":\"0x45ed757203ba04c7337435dd32e6231b768abf1709917b1d5e81ae1333513f75\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2fa319aa9c92b8da5a9634407ff487cbf0e0e6e234a99146f49c9ded06e8fd74\",\"dweb:/ipfs/QmcqHrXBGpcfgMyb8DqyPYuafBKuESGcvJo1tfCAUrYokb\"]},\"node_modules/@zoralabs/coins/src/utils/uniswap/UnsafeMath.sol\":{\"keccak256\":\"0x44ea34293d502dcff60379eff5504313d7a042ebcae72e7d82ca937f199f3d84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://142c8209cf7ff88b88fa5fe41c0c22a59a8065e1726c0e18b0582facbead3c5c\",\"dweb:/ipfs/QmRZZfsipKck8Ja4pPCK5GYFNfD5TeZggjqLVwJi1AjBzt\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.28+commit.7893614a"},"language":"Solidity","output":{"abi":[{"inputs":[],"type":"error","name":"InvalidPrice"},{"inputs":[],"type":"error","name":"InvalidPriceOrLiquidity"},{"inputs":[],"type":"error","name":"NotEnoughLiquidity"},{"inputs":[],"type":"error","name":"PriceOverflow"}],"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/SqrtPriceMath.sol":"SqrtPriceMath"},"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/FixedPoint96.sol":{"keccak256":"0x711b83cbdbbfe19afc1df6f45f2f71abb1b75305ecb288e36a37cc286bc8de46","urls":["bzz-raw://2957b0c179395705c49084b5b0c1033c0f47beeca043658a6c572226f5d07348","dweb:/ipfs/QmZQD8s7u1Kjnydkw6n9FUyzVK9Loo6gYSZXic732Y7J76"],"license":"MIT"},"node_modules/@zoralabs/coins/src/utils/uniswap/FullMath.sol":{"keccak256":"0xc6b0d61b8d60acb295d196a72f81e577007e822f63c737ae0fa87d63e228f074","urls":["bzz-raw://643ddf8897f3d2610ce5ac45c0571e86cd2a97542c2599121fa39a06daa95509","dweb:/ipfs/QmZ74RCf31apWy8UukKUrFi98kgSK6sRH68MFMGudPVpqx"],"license":"MIT"},"node_modules/@zoralabs/coins/src/utils/uniswap/SafeCast.sol":{"keccak256":"0x5ec831c0fbdcb16091d35eee2e49d54eaadf7ce72d971aec9ea30f379cba258a","urls":["bzz-raw://9440106f4a5ff5d829ed68c82de4f92e171c4e9306e89d28fe75b4ca30b5f298","dweb:/ipfs/QmdLJitnGXNMZxG6XZxhvCMjoNEKzpZVJ2dnzGVXtWUSFf"],"license":"MIT"},"node_modules/@zoralabs/coins/src/utils/uniswap/SqrtPriceMath.sol":{"keccak256":"0x45ed757203ba04c7337435dd32e6231b768abf1709917b1d5e81ae1333513f75","urls":["bzz-raw://2fa319aa9c92b8da5a9634407ff487cbf0e0e6e234a99146f49c9ded06e8fd74","dweb:/ipfs/QmcqHrXBGpcfgMyb8DqyPYuafBKuESGcvJo1tfCAUrYokb"],"license":"MIT"},"node_modules/@zoralabs/coins/src/utils/uniswap/UnsafeMath.sol":{"keccak256":"0x44ea34293d502dcff60379eff5504313d7a042ebcae72e7d82ca937f199f3d84","urls":["bzz-raw://142c8209cf7ff88b88fa5fe41c0c22a59a8065e1726c0e18b0582facbead3c5c","dweb:/ipfs/QmRZZfsipKck8Ja4pPCK5GYFNfD5TeZggjqLVwJi1AjBzt"],"license":"MIT"}},"version":1},"id":68}
@@ -1 +1 @@
1
- {"abi":[{"type":"error","name":"InvalidMultiple","inputs":[]},{"type":"error","name":"InvalidPercent","inputs":[]},{"type":"error","name":"LengthMismatch","inputs":[]},{"type":"error","name":"PercentOverflow","inputs":[]}],"bytecode":{"object":"0x6080806040523460175760039081601c823930815050f35b5f80fdfe5f80fd","sourceMap":"1669:6910:88:-:0;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x5f80fd","sourceMap":"1669:6910:88:-:0;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"InvalidMultiple\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPercent\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LengthMismatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PercentOverflow\",\"type\":\"error\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"stateVariables\":{\"MIN_LIMIT_ORDER_SIZE\":{\"details\":\"Minimum coins to create orders - prevents dust\"},\"MULTIPLE_SCALE\":{\"details\":\"1.0x price multiplier (e.g., 2e18 = 2x)\"},\"PERCENT_SCALE\":{\"details\":\"100% in basis points (e.g., 5000 = 50%)\"},\"SQRT_MULTIPLE_SCALE\":{\"details\":\"sqrt(1e18) - scales sqrt calculations without precision loss\"}},\"title\":\"SwapLimitOrders\",\"version\":1},\"userdoc\":{\"errors\":{\"InvalidMultiple()\":[{\"notice\":\"A multiple is \\u2264 1.0x\"}],\"InvalidPercent()\":[{\"notice\":\"A percentage is zero\"}],\"LengthMismatch()\":[{\"notice\":\"Multiples and percentages arrays have different lengths\"}],\"PercentOverflow()\":[{\"notice\":\"Percentages sum exceeds 100%\"}]},\"kind\":\"user\",\"methods\":{},\"notice\":\"Computes limit order ladders on coin swaps\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/libs/SwapLimitOrders.sol\":\"SwapLimitOrders\"},\"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/IDopplerErrors.sol\":{\"keccak256\":\"0xf78efeb8a0d37914bae9be8c6ed70d54a1d48305b3f9e3f8b95d20f9685640ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1e51cc18a8367dc9363a958f179cf2e8af662cbe41474647aa78424be781120e\",\"dweb:/ipfs/QmNrxrY2P7FMRY7tJtV2n5eiPDyM5pRhBpn9wgDfgwdDCs\"]},\"node_modules/@zoralabs/coins/src/libs/CoinConstants.sol\":{\"keccak256\":\"0x0c17b040ed707c2353e4b238bf6bac90d22a71980ff1a091f763da281b7035bf\",\"license\":\"ZORA-DELAYED-OSL-v1\",\"urls\":[\"bzz-raw://083bb0022dd69434858946ea15b55d08483913baf57b428d600ede1eb5a19f46\",\"dweb:/ipfs/QmXdNPvCm2Wv4R8Kbd7FYdnjjQCLWVGsr1DhCn5MrQj3Z7\"]},\"node_modules/@zoralabs/coins/src/libs/DopplerMath.sol\":{\"keccak256\":\"0xafa02392a303dd86c7728266484b038b933bba74cad3a0fb44848a2463626683\",\"license\":\"ZORA-DELAYED-OSL-v1\",\"urls\":[\"bzz-raw://b307a817e4a60a99b1d4ccdbae1fe65b9ce7e6753bb2bb019c8588712cfbe96b\",\"dweb:/ipfs/QmeCjTfTGADS9aU9x2zMyauak3vqSCmiWSEoSBhBVLWaAx\"]},\"node_modules/@zoralabs/coins/src/types/LpPosition.sol\":{\"keccak256\":\"0x19dfc13b9f6a831ee7a624094c17a7c0b20bbc9ef62121dd98d85a8641d53aaf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fe77a4cb9ff9afbf7561ed647d15729b201259ef767d6c140a0b6e9254a97fe6\",\"dweb:/ipfs/QmaieKjUcT2SG2Spdg2sHzZso8zd5YTVsMRRoDzz6Kgn1t\"]},\"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/FixedPoint96.sol\":{\"keccak256\":\"0x711b83cbdbbfe19afc1df6f45f2f71abb1b75305ecb288e36a37cc286bc8de46\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2957b0c179395705c49084b5b0c1033c0f47beeca043658a6c572226f5d07348\",\"dweb:/ipfs/QmZQD8s7u1Kjnydkw6n9FUyzVK9Loo6gYSZXic732Y7J76\"]},\"node_modules/@zoralabs/coins/src/utils/uniswap/FullMath.sol\":{\"keccak256\":\"0xc6b0d61b8d60acb295d196a72f81e577007e822f63c737ae0fa87d63e228f074\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://643ddf8897f3d2610ce5ac45c0571e86cd2a97542c2599121fa39a06daa95509\",\"dweb:/ipfs/QmZ74RCf31apWy8UukKUrFi98kgSK6sRH68MFMGudPVpqx\"]},\"node_modules/@zoralabs/coins/src/utils/uniswap/LiquidityAmounts.sol\":{\"keccak256\":\"0x4811d0187e6ccf97d6323c597355967e481392cbdc65dea804f770dec91cece7\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://8d41f633f2a92b4caeb0430096851b62b0be1f68915603ff8c5b220c693e9755\",\"dweb:/ipfs/QmY9c5EwQVKi2Ak7xude2iUe7TGAdwmChUtwzwWcGb62PE\"]},\"node_modules/@zoralabs/coins/src/utils/uniswap/SafeCast.sol\":{\"keccak256\":\"0x5ec831c0fbdcb16091d35eee2e49d54eaadf7ce72d971aec9ea30f379cba258a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9440106f4a5ff5d829ed68c82de4f92e171c4e9306e89d28fe75b4ca30b5f298\",\"dweb:/ipfs/QmdLJitnGXNMZxG6XZxhvCMjoNEKzpZVJ2dnzGVXtWUSFf\"]},\"node_modules/@zoralabs/coins/src/utils/uniswap/SqrtPriceMath.sol\":{\"keccak256\":\"0x45ed757203ba04c7337435dd32e6231b768abf1709917b1d5e81ae1333513f75\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2fa319aa9c92b8da5a9634407ff487cbf0e0e6e234a99146f49c9ded06e8fd74\",\"dweb:/ipfs/QmcqHrXBGpcfgMyb8DqyPYuafBKuESGcvJo1tfCAUrYokb\"]},\"node_modules/@zoralabs/coins/src/utils/uniswap/TickMath.sol\":{\"keccak256\":\"0xb8d86efe55d877582bdd2d2580d5c57c0fd955fdfb08116dba033f2e8f429e2e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://997e7fc24b30ff5464a5d3db14ac17eb07bed862bbce553a060f38affd8cb6f7\",\"dweb:/ipfs/QmfQ8bo8zEGT6NEDVRdWJaCWaAXMoH7eH8xz14XA1p4Ex3\"]},\"node_modules/@zoralabs/coins/src/utils/uniswap/UnsafeMath.sol\":{\"keccak256\":\"0x44ea34293d502dcff60379eff5504313d7a042ebcae72e7d82ca937f199f3d84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://142c8209cf7ff88b88fa5fe41c0c22a59a8065e1726c0e18b0582facbead3c5c\",\"dweb:/ipfs/QmRZZfsipKck8Ja4pPCK5GYFNfD5TeZggjqLVwJi1AjBzt\"]},\"src/libs/SwapLimitOrders.sol\":{\"keccak256\":\"0x8cae687f28f2afa4b9ca021c0d8f8e3209534986e2c98036ddfe4bdc5d9b3d1b\",\"license\":\"ZORA-DELAYED-OSL-v1\",\"urls\":[\"bzz-raw://873f7e137bbbcc9a56bf362525eaf122ca6912d4e20c44bebabf12f565f78b5a\",\"dweb:/ipfs/QmUfYtnhmc8vFNZaWhjYriMXR1bGg6JzdAbXpS6wMASxHM\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.28+commit.7893614a"},"language":"Solidity","output":{"abi":[{"inputs":[],"type":"error","name":"InvalidMultiple"},{"inputs":[],"type":"error","name":"InvalidPercent"},{"inputs":[],"type":"error","name":"LengthMismatch"},{"inputs":[],"type":"error","name":"PercentOverflow"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=node_modules/@openzeppelin/","@uniswap/universal-router/contracts/=node_modules/@uniswap/universal-router/contracts/","@uniswap/v4-core/=node_modules/@uniswap/v4-core/","@uniswap/v4-periphery/=node_modules/@uniswap/v4-periphery/","@zoralabs/coins/=node_modules/@zoralabs/coins/","@zoralabs/shared-contracts/=node_modules/@zoralabs/shared-contracts/src/","ds-test/=node_modules/ds-test/src/","forge-std/=node_modules/forge-std/src/","permit2/src/=node_modules/@uniswap/permit2/src/","solady/=node_modules/solady/src/","solmate/=node_modules/solmate/src/"],"optimizer":{"enabled":true,"runs":100},"metadata":{"bytecodeHash":"none","appendCBOR":false},"compilationTarget":{"src/libs/SwapLimitOrders.sol":"SwapLimitOrders"},"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/IDopplerErrors.sol":{"keccak256":"0xf78efeb8a0d37914bae9be8c6ed70d54a1d48305b3f9e3f8b95d20f9685640ea","urls":["bzz-raw://1e51cc18a8367dc9363a958f179cf2e8af662cbe41474647aa78424be781120e","dweb:/ipfs/QmNrxrY2P7FMRY7tJtV2n5eiPDyM5pRhBpn9wgDfgwdDCs"],"license":"MIT"},"node_modules/@zoralabs/coins/src/libs/CoinConstants.sol":{"keccak256":"0x0c17b040ed707c2353e4b238bf6bac90d22a71980ff1a091f763da281b7035bf","urls":["bzz-raw://083bb0022dd69434858946ea15b55d08483913baf57b428d600ede1eb5a19f46","dweb:/ipfs/QmXdNPvCm2Wv4R8Kbd7FYdnjjQCLWVGsr1DhCn5MrQj3Z7"],"license":"ZORA-DELAYED-OSL-v1"},"node_modules/@zoralabs/coins/src/libs/DopplerMath.sol":{"keccak256":"0xafa02392a303dd86c7728266484b038b933bba74cad3a0fb44848a2463626683","urls":["bzz-raw://b307a817e4a60a99b1d4ccdbae1fe65b9ce7e6753bb2bb019c8588712cfbe96b","dweb:/ipfs/QmeCjTfTGADS9aU9x2zMyauak3vqSCmiWSEoSBhBVLWaAx"],"license":"ZORA-DELAYED-OSL-v1"},"node_modules/@zoralabs/coins/src/types/LpPosition.sol":{"keccak256":"0x19dfc13b9f6a831ee7a624094c17a7c0b20bbc9ef62121dd98d85a8641d53aaf","urls":["bzz-raw://fe77a4cb9ff9afbf7561ed647d15729b201259ef767d6c140a0b6e9254a97fe6","dweb:/ipfs/QmaieKjUcT2SG2Spdg2sHzZso8zd5YTVsMRRoDzz6Kgn1t"],"license":"MIT"},"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/FixedPoint96.sol":{"keccak256":"0x711b83cbdbbfe19afc1df6f45f2f71abb1b75305ecb288e36a37cc286bc8de46","urls":["bzz-raw://2957b0c179395705c49084b5b0c1033c0f47beeca043658a6c572226f5d07348","dweb:/ipfs/QmZQD8s7u1Kjnydkw6n9FUyzVK9Loo6gYSZXic732Y7J76"],"license":"MIT"},"node_modules/@zoralabs/coins/src/utils/uniswap/FullMath.sol":{"keccak256":"0xc6b0d61b8d60acb295d196a72f81e577007e822f63c737ae0fa87d63e228f074","urls":["bzz-raw://643ddf8897f3d2610ce5ac45c0571e86cd2a97542c2599121fa39a06daa95509","dweb:/ipfs/QmZ74RCf31apWy8UukKUrFi98kgSK6sRH68MFMGudPVpqx"],"license":"MIT"},"node_modules/@zoralabs/coins/src/utils/uniswap/LiquidityAmounts.sol":{"keccak256":"0x4811d0187e6ccf97d6323c597355967e481392cbdc65dea804f770dec91cece7","urls":["bzz-raw://8d41f633f2a92b4caeb0430096851b62b0be1f68915603ff8c5b220c693e9755","dweb:/ipfs/QmY9c5EwQVKi2Ak7xude2iUe7TGAdwmChUtwzwWcGb62PE"],"license":"UNLICENSED"},"node_modules/@zoralabs/coins/src/utils/uniswap/SafeCast.sol":{"keccak256":"0x5ec831c0fbdcb16091d35eee2e49d54eaadf7ce72d971aec9ea30f379cba258a","urls":["bzz-raw://9440106f4a5ff5d829ed68c82de4f92e171c4e9306e89d28fe75b4ca30b5f298","dweb:/ipfs/QmdLJitnGXNMZxG6XZxhvCMjoNEKzpZVJ2dnzGVXtWUSFf"],"license":"MIT"},"node_modules/@zoralabs/coins/src/utils/uniswap/SqrtPriceMath.sol":{"keccak256":"0x45ed757203ba04c7337435dd32e6231b768abf1709917b1d5e81ae1333513f75","urls":["bzz-raw://2fa319aa9c92b8da5a9634407ff487cbf0e0e6e234a99146f49c9ded06e8fd74","dweb:/ipfs/QmcqHrXBGpcfgMyb8DqyPYuafBKuESGcvJo1tfCAUrYokb"],"license":"MIT"},"node_modules/@zoralabs/coins/src/utils/uniswap/TickMath.sol":{"keccak256":"0xb8d86efe55d877582bdd2d2580d5c57c0fd955fdfb08116dba033f2e8f429e2e","urls":["bzz-raw://997e7fc24b30ff5464a5d3db14ac17eb07bed862bbce553a060f38affd8cb6f7","dweb:/ipfs/QmfQ8bo8zEGT6NEDVRdWJaCWaAXMoH7eH8xz14XA1p4Ex3"],"license":"MIT"},"node_modules/@zoralabs/coins/src/utils/uniswap/UnsafeMath.sol":{"keccak256":"0x44ea34293d502dcff60379eff5504313d7a042ebcae72e7d82ca937f199f3d84","urls":["bzz-raw://142c8209cf7ff88b88fa5fe41c0c22a59a8065e1726c0e18b0582facbead3c5c","dweb:/ipfs/QmRZZfsipKck8Ja4pPCK5GYFNfD5TeZggjqLVwJi1AjBzt"],"license":"MIT"},"src/libs/SwapLimitOrders.sol":{"keccak256":"0x8cae687f28f2afa4b9ca021c0d8f8e3209534986e2c98036ddfe4bdc5d9b3d1b","urls":["bzz-raw://873f7e137bbbcc9a56bf362525eaf122ca6912d4e20c44bebabf12f565f78b5a","dweb:/ipfs/QmUfYtnhmc8vFNZaWhjYriMXR1bGg6JzdAbXpS6wMASxHM"],"license":"ZORA-DELAYED-OSL-v1"}},"version":1},"id":88}
1
+ {"abi":[{"type":"error","name":"InvalidMultiple","inputs":[]},{"type":"error","name":"InvalidPercent","inputs":[]},{"type":"error","name":"LengthMismatch","inputs":[]},{"type":"error","name":"PercentOverflow","inputs":[]}],"bytecode":{"object":"0x6080806040523460175760039081601c823930815050f35b5f80fdfe5f80fd","sourceMap":"1669:7338:90:-:0;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x5f80fd","sourceMap":"1669:7338:90:-:0;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"InvalidMultiple\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPercent\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LengthMismatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PercentOverflow\",\"type\":\"error\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"stateVariables\":{\"MULTIPLE_SCALE\":{\"details\":\"1.0x price multiplier (e.g., 2e18 = 2x)\"},\"PERCENT_SCALE\":{\"details\":\"100% in basis points (e.g., 5000 = 50%)\"},\"SQRT_MULTIPLE_SCALE\":{\"details\":\"sqrt(1e18) - scales sqrt calculations without precision loss\"}},\"title\":\"SwapLimitOrders\",\"version\":1},\"userdoc\":{\"errors\":{\"InvalidMultiple()\":[{\"notice\":\"A multiple is \\u2264 1.0x\"}],\"InvalidPercent()\":[{\"notice\":\"A percentage is zero\"}],\"LengthMismatch()\":[{\"notice\":\"Multiples and percentages arrays have different lengths\"}],\"PercentOverflow()\":[{\"notice\":\"Percentages sum exceeds 100%\"}]},\"kind\":\"user\",\"methods\":{},\"notice\":\"Computes limit order ladders on coin swaps\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/libs/SwapLimitOrders.sol\":\"SwapLimitOrders\"},\"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/IDopplerErrors.sol\":{\"keccak256\":\"0xf78efeb8a0d37914bae9be8c6ed70d54a1d48305b3f9e3f8b95d20f9685640ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1e51cc18a8367dc9363a958f179cf2e8af662cbe41474647aa78424be781120e\",\"dweb:/ipfs/QmNrxrY2P7FMRY7tJtV2n5eiPDyM5pRhBpn9wgDfgwdDCs\"]},\"node_modules/@zoralabs/coins/src/libs/CoinConstants.sol\":{\"keccak256\":\"0x0c17b040ed707c2353e4b238bf6bac90d22a71980ff1a091f763da281b7035bf\",\"license\":\"ZORA-DELAYED-OSL-v1\",\"urls\":[\"bzz-raw://083bb0022dd69434858946ea15b55d08483913baf57b428d600ede1eb5a19f46\",\"dweb:/ipfs/QmXdNPvCm2Wv4R8Kbd7FYdnjjQCLWVGsr1DhCn5MrQj3Z7\"]},\"node_modules/@zoralabs/coins/src/libs/DopplerMath.sol\":{\"keccak256\":\"0xafa02392a303dd86c7728266484b038b933bba74cad3a0fb44848a2463626683\",\"license\":\"ZORA-DELAYED-OSL-v1\",\"urls\":[\"bzz-raw://b307a817e4a60a99b1d4ccdbae1fe65b9ce7e6753bb2bb019c8588712cfbe96b\",\"dweb:/ipfs/QmeCjTfTGADS9aU9x2zMyauak3vqSCmiWSEoSBhBVLWaAx\"]},\"node_modules/@zoralabs/coins/src/types/LpPosition.sol\":{\"keccak256\":\"0x19dfc13b9f6a831ee7a624094c17a7c0b20bbc9ef62121dd98d85a8641d53aaf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fe77a4cb9ff9afbf7561ed647d15729b201259ef767d6c140a0b6e9254a97fe6\",\"dweb:/ipfs/QmaieKjUcT2SG2Spdg2sHzZso8zd5YTVsMRRoDzz6Kgn1t\"]},\"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/FixedPoint96.sol\":{\"keccak256\":\"0x711b83cbdbbfe19afc1df6f45f2f71abb1b75305ecb288e36a37cc286bc8de46\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2957b0c179395705c49084b5b0c1033c0f47beeca043658a6c572226f5d07348\",\"dweb:/ipfs/QmZQD8s7u1Kjnydkw6n9FUyzVK9Loo6gYSZXic732Y7J76\"]},\"node_modules/@zoralabs/coins/src/utils/uniswap/FullMath.sol\":{\"keccak256\":\"0xc6b0d61b8d60acb295d196a72f81e577007e822f63c737ae0fa87d63e228f074\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://643ddf8897f3d2610ce5ac45c0571e86cd2a97542c2599121fa39a06daa95509\",\"dweb:/ipfs/QmZ74RCf31apWy8UukKUrFi98kgSK6sRH68MFMGudPVpqx\"]},\"node_modules/@zoralabs/coins/src/utils/uniswap/LiquidityAmounts.sol\":{\"keccak256\":\"0x4811d0187e6ccf97d6323c597355967e481392cbdc65dea804f770dec91cece7\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://8d41f633f2a92b4caeb0430096851b62b0be1f68915603ff8c5b220c693e9755\",\"dweb:/ipfs/QmY9c5EwQVKi2Ak7xude2iUe7TGAdwmChUtwzwWcGb62PE\"]},\"node_modules/@zoralabs/coins/src/utils/uniswap/SafeCast.sol\":{\"keccak256\":\"0x5ec831c0fbdcb16091d35eee2e49d54eaadf7ce72d971aec9ea30f379cba258a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9440106f4a5ff5d829ed68c82de4f92e171c4e9306e89d28fe75b4ca30b5f298\",\"dweb:/ipfs/QmdLJitnGXNMZxG6XZxhvCMjoNEKzpZVJ2dnzGVXtWUSFf\"]},\"node_modules/@zoralabs/coins/src/utils/uniswap/SqrtPriceMath.sol\":{\"keccak256\":\"0x45ed757203ba04c7337435dd32e6231b768abf1709917b1d5e81ae1333513f75\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2fa319aa9c92b8da5a9634407ff487cbf0e0e6e234a99146f49c9ded06e8fd74\",\"dweb:/ipfs/QmcqHrXBGpcfgMyb8DqyPYuafBKuESGcvJo1tfCAUrYokb\"]},\"node_modules/@zoralabs/coins/src/utils/uniswap/TickMath.sol\":{\"keccak256\":\"0xb8d86efe55d877582bdd2d2580d5c57c0fd955fdfb08116dba033f2e8f429e2e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://997e7fc24b30ff5464a5d3db14ac17eb07bed862bbce553a060f38affd8cb6f7\",\"dweb:/ipfs/QmfQ8bo8zEGT6NEDVRdWJaCWaAXMoH7eH8xz14XA1p4Ex3\"]},\"node_modules/@zoralabs/coins/src/utils/uniswap/UnsafeMath.sol\":{\"keccak256\":\"0x44ea34293d502dcff60379eff5504313d7a042ebcae72e7d82ca937f199f3d84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://142c8209cf7ff88b88fa5fe41c0c22a59a8065e1726c0e18b0582facbead3c5c\",\"dweb:/ipfs/QmRZZfsipKck8Ja4pPCK5GYFNfD5TeZggjqLVwJi1AjBzt\"]},\"src/libs/SwapLimitOrders.sol\":{\"keccak256\":\"0xfe1d3d583d323cc9f1053b048eef645feb6d9c80744b836ecc0ee5c6fa242cd5\",\"license\":\"ZORA-DELAYED-OSL-v1\",\"urls\":[\"bzz-raw://ae59aaa5e8420e9b8a61f1ff1eaa09a3481f47223842643b66601a2b28490aaf\",\"dweb:/ipfs/QmVS6AXRNV14eaywvrYqGhLvtZfND2ydnubBoiyqeHYrKY\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.28+commit.7893614a"},"language":"Solidity","output":{"abi":[{"inputs":[],"type":"error","name":"InvalidMultiple"},{"inputs":[],"type":"error","name":"InvalidPercent"},{"inputs":[],"type":"error","name":"LengthMismatch"},{"inputs":[],"type":"error","name":"PercentOverflow"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=node_modules/@openzeppelin/","@uniswap/universal-router/contracts/=node_modules/@uniswap/universal-router/contracts/","@uniswap/v4-core/=node_modules/@uniswap/v4-core/","@uniswap/v4-periphery/=node_modules/@uniswap/v4-periphery/","@zoralabs/coins/=node_modules/@zoralabs/coins/","@zoralabs/shared-contracts/=node_modules/@zoralabs/shared-contracts/src/","ds-test/=node_modules/ds-test/src/","forge-std/=node_modules/forge-std/src/","permit2/src/=node_modules/@uniswap/permit2/src/","solady/=node_modules/solady/src/","solmate/=node_modules/solmate/src/"],"optimizer":{"enabled":true,"runs":100},"metadata":{"bytecodeHash":"none","appendCBOR":false},"compilationTarget":{"src/libs/SwapLimitOrders.sol":"SwapLimitOrders"},"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/IDopplerErrors.sol":{"keccak256":"0xf78efeb8a0d37914bae9be8c6ed70d54a1d48305b3f9e3f8b95d20f9685640ea","urls":["bzz-raw://1e51cc18a8367dc9363a958f179cf2e8af662cbe41474647aa78424be781120e","dweb:/ipfs/QmNrxrY2P7FMRY7tJtV2n5eiPDyM5pRhBpn9wgDfgwdDCs"],"license":"MIT"},"node_modules/@zoralabs/coins/src/libs/CoinConstants.sol":{"keccak256":"0x0c17b040ed707c2353e4b238bf6bac90d22a71980ff1a091f763da281b7035bf","urls":["bzz-raw://083bb0022dd69434858946ea15b55d08483913baf57b428d600ede1eb5a19f46","dweb:/ipfs/QmXdNPvCm2Wv4R8Kbd7FYdnjjQCLWVGsr1DhCn5MrQj3Z7"],"license":"ZORA-DELAYED-OSL-v1"},"node_modules/@zoralabs/coins/src/libs/DopplerMath.sol":{"keccak256":"0xafa02392a303dd86c7728266484b038b933bba74cad3a0fb44848a2463626683","urls":["bzz-raw://b307a817e4a60a99b1d4ccdbae1fe65b9ce7e6753bb2bb019c8588712cfbe96b","dweb:/ipfs/QmeCjTfTGADS9aU9x2zMyauak3vqSCmiWSEoSBhBVLWaAx"],"license":"ZORA-DELAYED-OSL-v1"},"node_modules/@zoralabs/coins/src/types/LpPosition.sol":{"keccak256":"0x19dfc13b9f6a831ee7a624094c17a7c0b20bbc9ef62121dd98d85a8641d53aaf","urls":["bzz-raw://fe77a4cb9ff9afbf7561ed647d15729b201259ef767d6c140a0b6e9254a97fe6","dweb:/ipfs/QmaieKjUcT2SG2Spdg2sHzZso8zd5YTVsMRRoDzz6Kgn1t"],"license":"MIT"},"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/FixedPoint96.sol":{"keccak256":"0x711b83cbdbbfe19afc1df6f45f2f71abb1b75305ecb288e36a37cc286bc8de46","urls":["bzz-raw://2957b0c179395705c49084b5b0c1033c0f47beeca043658a6c572226f5d07348","dweb:/ipfs/QmZQD8s7u1Kjnydkw6n9FUyzVK9Loo6gYSZXic732Y7J76"],"license":"MIT"},"node_modules/@zoralabs/coins/src/utils/uniswap/FullMath.sol":{"keccak256":"0xc6b0d61b8d60acb295d196a72f81e577007e822f63c737ae0fa87d63e228f074","urls":["bzz-raw://643ddf8897f3d2610ce5ac45c0571e86cd2a97542c2599121fa39a06daa95509","dweb:/ipfs/QmZ74RCf31apWy8UukKUrFi98kgSK6sRH68MFMGudPVpqx"],"license":"MIT"},"node_modules/@zoralabs/coins/src/utils/uniswap/LiquidityAmounts.sol":{"keccak256":"0x4811d0187e6ccf97d6323c597355967e481392cbdc65dea804f770dec91cece7","urls":["bzz-raw://8d41f633f2a92b4caeb0430096851b62b0be1f68915603ff8c5b220c693e9755","dweb:/ipfs/QmY9c5EwQVKi2Ak7xude2iUe7TGAdwmChUtwzwWcGb62PE"],"license":"UNLICENSED"},"node_modules/@zoralabs/coins/src/utils/uniswap/SafeCast.sol":{"keccak256":"0x5ec831c0fbdcb16091d35eee2e49d54eaadf7ce72d971aec9ea30f379cba258a","urls":["bzz-raw://9440106f4a5ff5d829ed68c82de4f92e171c4e9306e89d28fe75b4ca30b5f298","dweb:/ipfs/QmdLJitnGXNMZxG6XZxhvCMjoNEKzpZVJ2dnzGVXtWUSFf"],"license":"MIT"},"node_modules/@zoralabs/coins/src/utils/uniswap/SqrtPriceMath.sol":{"keccak256":"0x45ed757203ba04c7337435dd32e6231b768abf1709917b1d5e81ae1333513f75","urls":["bzz-raw://2fa319aa9c92b8da5a9634407ff487cbf0e0e6e234a99146f49c9ded06e8fd74","dweb:/ipfs/QmcqHrXBGpcfgMyb8DqyPYuafBKuESGcvJo1tfCAUrYokb"],"license":"MIT"},"node_modules/@zoralabs/coins/src/utils/uniswap/TickMath.sol":{"keccak256":"0xb8d86efe55d877582bdd2d2580d5c57c0fd955fdfb08116dba033f2e8f429e2e","urls":["bzz-raw://997e7fc24b30ff5464a5d3db14ac17eb07bed862bbce553a060f38affd8cb6f7","dweb:/ipfs/QmfQ8bo8zEGT6NEDVRdWJaCWaAXMoH7eH8xz14XA1p4Ex3"],"license":"MIT"},"node_modules/@zoralabs/coins/src/utils/uniswap/UnsafeMath.sol":{"keccak256":"0x44ea34293d502dcff60379eff5504313d7a042ebcae72e7d82ca937f199f3d84","urls":["bzz-raw://142c8209cf7ff88b88fa5fe41c0c22a59a8065e1726c0e18b0582facbead3c5c","dweb:/ipfs/QmRZZfsipKck8Ja4pPCK5GYFNfD5TeZggjqLVwJi1AjBzt"],"license":"MIT"},"src/libs/SwapLimitOrders.sol":{"keccak256":"0xfe1d3d583d323cc9f1053b048eef645feb6d9c80744b836ecc0ee5c6fa242cd5","urls":["bzz-raw://ae59aaa5e8420e9b8a61f1ff1eaa09a3481f47223842643b66601a2b28490aaf","dweb:/ipfs/QmVS6AXRNV14eaywvrYqGhLvtZfND2ydnubBoiyqeHYrKY"],"license":"ZORA-DELAYED-OSL-v1"}},"version":1},"id":90}