@zoralabs/limit-orders 0.2.5 → 0.2.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.abi-stability +0 -21
- package/.turbo/turbo-build$colon$js.log +51 -50
- package/CHANGELOG.md +13 -0
- package/abis/ContractVersionBase.json +15 -0
- package/abis/IVersionedContract.json +15 -0
- package/abis/SwapWithLimitOrders.json +13 -0
- package/abis/ZoraLimitOrderBook.json +13 -0
- package/cache/solidity-files-cache.json +1 -1
- package/dist/index.cjs +14 -0
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +14 -0
- package/dist/index.js.map +1 -1
- package/dist/wagmiGenerated.d.ts +20 -0
- package/dist/wagmiGenerated.d.ts.map +1 -1
- package/out/BytesLib.sol/BytesLib.json +1 -1
- package/out/ContractVersionBase.sol/ContractVersionBase.json +1 -0
- package/out/ISwapRouter.sol/ISwapRouter.json +1 -1
- package/out/IUniswapV3SwapCallback.sol/IUniswapV3SwapCallback.json +1 -1
- package/out/IVersionedContract.sol/IVersionedContract.json +1 -0
- package/out/IZoraLimitOrderBook.sol/IZoraLimitOrderBook.json +1 -1
- package/out/LimitOrderBitmap.sol/LimitOrderBitmap.json +1 -1
- package/out/LimitOrderCommon.sol/LimitOrderCommon.json +1 -1
- package/out/LimitOrderCreate.sol/LimitOrderCreate.json +1 -1
- package/out/LimitOrderFill.sol/LimitOrderFill.json +1 -1
- package/out/LimitOrderLiquidity.sol/LimitOrderLiquidity.json +1 -1
- package/out/LimitOrderQueues.sol/LimitOrderQueues.json +1 -1
- package/out/LimitOrderStorage.sol/LimitOrderStorage.json +1 -1
- package/out/LimitOrderTypes.sol/LimitOrderTypes.json +1 -1
- package/out/LimitOrderViews.sol/LimitOrderViews.json +1 -1
- package/out/LimitOrderWithdraw.sol/LimitOrderWithdraw.json +1 -1
- package/out/Path.sol/Path.json +1 -1
- package/out/Permit2Payments.sol/Permit2Payments.json +1 -1
- package/out/PermittedCallers.sol/PermittedCallers.json +1 -1
- package/out/SwapLimitOrders.sol/SwapLimitOrders.json +1 -1
- package/out/SwapWithLimitOrders.sol/SwapWithLimitOrders.json +1 -1
- package/out/ZoraLimitOrderBook.sol/ZoraLimitOrderBook.json +1 -1
- package/out/build-info/{c9f7ee5726bfbd48.json → b6efea4394bdeb7d.json} +1 -1
- package/package/wagmiGenerated.ts +14 -0
- package/package.json +2 -2
- package/src/ZoraLimitOrderBook.sol +4 -1
- package/src/router/SwapWithLimitOrders.sol +2 -1
- package/src/version/ContractVersionBase.sol +14 -0
- package/test/LimitOrderAccessControl.t.sol +8 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"id":"
|
|
1
|
+
{"id":"b6efea4394bdeb7d","source_id_to_path":{"0":"node_modules/@openzeppelin/contracts/access/Ownable.sol","1":"node_modules/@openzeppelin/contracts/access/Ownable2Step.sol","2":"node_modules/@openzeppelin/contracts/interfaces/IERC1363.sol","3":"node_modules/@openzeppelin/contracts/interfaces/IERC165.sol","4":"node_modules/@openzeppelin/contracts/interfaces/IERC20.sol","5":"node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol","6":"node_modules/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol","7":"node_modules/@openzeppelin/contracts/utils/Context.sol","8":"node_modules/@openzeppelin/contracts/utils/TransientSlot.sol","9":"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol","10":"node_modules/@uniswap/permit2/src/interfaces/IAllowanceTransfer.sol","11":"node_modules/@uniswap/permit2/src/interfaces/IEIP712.sol","12":"node_modules/@uniswap/permit2/src/libraries/SafeCast160.sol","13":"node_modules/@uniswap/v4-core/src/interfaces/IExtsload.sol","14":"node_modules/@uniswap/v4-core/src/interfaces/IExttload.sol","15":"node_modules/@uniswap/v4-core/src/interfaces/IHooks.sol","16":"node_modules/@uniswap/v4-core/src/interfaces/IPoolManager.sol","17":"node_modules/@uniswap/v4-core/src/interfaces/IProtocolFees.sol","18":"node_modules/@uniswap/v4-core/src/interfaces/external/IERC20Minimal.sol","19":"node_modules/@uniswap/v4-core/src/interfaces/external/IERC6909Claims.sol","20":"node_modules/@uniswap/v4-core/src/libraries/BitMath.sol","21":"node_modules/@uniswap/v4-core/src/libraries/CurrencyReserves.sol","22":"node_modules/@uniswap/v4-core/src/libraries/CustomRevert.sol","23":"node_modules/@uniswap/v4-core/src/libraries/FixedPoint128.sol","24":"node_modules/@uniswap/v4-core/src/libraries/FullMath.sol","25":"node_modules/@uniswap/v4-core/src/libraries/LiquidityMath.sol","26":"node_modules/@uniswap/v4-core/src/libraries/Lock.sol","27":"node_modules/@uniswap/v4-core/src/libraries/NonzeroDeltaCount.sol","28":"node_modules/@uniswap/v4-core/src/libraries/Position.sol","29":"node_modules/@uniswap/v4-core/src/libraries/SafeCast.sol","30":"node_modules/@uniswap/v4-core/src/libraries/StateLibrary.sol","31":"node_modules/@uniswap/v4-core/src/libraries/TickBitmap.sol","32":"node_modules/@uniswap/v4-core/src/libraries/TickMath.sol","33":"node_modules/@uniswap/v4-core/src/libraries/TransientStateLibrary.sol","34":"node_modules/@uniswap/v4-core/src/types/BalanceDelta.sol","35":"node_modules/@uniswap/v4-core/src/types/BeforeSwapDelta.sol","36":"node_modules/@uniswap/v4-core/src/types/Currency.sol","37":"node_modules/@uniswap/v4-core/src/types/PoolId.sol","38":"node_modules/@uniswap/v4-core/src/types/PoolKey.sol","39":"node_modules/@uniswap/v4-core/src/types/PoolOperation.sol","40":"node_modules/@uniswap/v4-periphery/src/libraries/PathKey.sol","41":"node_modules/@zoralabs/coins/src/interfaces/ICoin.sol","42":"node_modules/@zoralabs/coins/src/interfaces/IDeployedCoinVersionLookup.sol","43":"node_modules/@zoralabs/coins/src/interfaces/IDopplerErrors.sol","44":"node_modules/@zoralabs/coins/src/interfaces/IERC7572.sol","45":"node_modules/@zoralabs/coins/src/interfaces/IHasRewardsRecipients.sol","46":"node_modules/@zoralabs/coins/src/interfaces/IMsgSender.sol","47":"node_modules/@zoralabs/coins/src/interfaces/ISupportsLimitOrderFill.sol","48":"node_modules/@zoralabs/coins/src/interfaces/ISwapPathRouter.sol","49":"node_modules/@zoralabs/coins/src/interfaces/ISwapRouter.sol","50":"node_modules/@zoralabs/coins/src/interfaces/IUpgradeableV4Hook.sol","51":"node_modules/@zoralabs/coins/src/interfaces/IWETH.sol","52":"node_modules/@zoralabs/coins/src/interfaces/IZoraHookRegistry.sol","53":"node_modules/@zoralabs/coins/src/interfaces/IZoraLimitOrderBookCoinsInterface.sol","54":"node_modules/@zoralabs/coins/src/interfaces/IZoraV4CoinHook.sol","55":"node_modules/@zoralabs/coins/src/libs/CoinCommon.sol","56":"node_modules/@zoralabs/coins/src/libs/CoinConfigurationVersions.sol","57":"node_modules/@zoralabs/coins/src/libs/CoinConstants.sol","58":"node_modules/@zoralabs/coins/src/libs/DopplerMath.sol","59":"node_modules/@zoralabs/coins/src/libs/UniV4SwapToCurrency.sol","60":"node_modules/@zoralabs/coins/src/libs/V3ToV4SwapLib.sol","61":"node_modules/@zoralabs/coins/src/types/LpPosition.sol","62":"node_modules/@zoralabs/coins/src/types/PoolConfiguration.sol","63":"node_modules/@zoralabs/coins/src/utils/uniswap/BitMath.sol","64":"node_modules/@zoralabs/coins/src/utils/uniswap/CustomRevert.sol","65":"node_modules/@zoralabs/coins/src/utils/uniswap/FixedPoint96.sol","66":"node_modules/@zoralabs/coins/src/utils/uniswap/FullMath.sol","67":"node_modules/@zoralabs/coins/src/utils/uniswap/LiquidityAmounts.sol","68":"node_modules/@zoralabs/coins/src/utils/uniswap/SafeCast.sol","69":"node_modules/@zoralabs/coins/src/utils/uniswap/SqrtPriceMath.sol","70":"node_modules/@zoralabs/coins/src/utils/uniswap/TickMath.sol","71":"node_modules/@zoralabs/coins/src/utils/uniswap/UnsafeMath.sol","72":"node_modules/@zoralabs/shared-contracts/src/interfaces/IVersionedContract.sol","73":"node_modules/@zoralabs/shared-contracts/src/interfaces/uniswap/ISwapRouter.sol","74":"node_modules/@zoralabs/shared-contracts/src/interfaces/uniswap/IUniswapV3SwapCallback.sol","75":"node_modules/@zoralabs/shared-contracts/src/libs/UniswapV3/BytesLib.sol","76":"node_modules/@zoralabs/shared-contracts/src/libs/UniswapV3/Path.sol","77":"src/IZoraLimitOrderBook.sol","78":"src/ZoraLimitOrderBook.sol","79":"src/access/PermittedCallers.sol","80":"src/libs/LimitOrderBitmap.sol","81":"src/libs/LimitOrderCommon.sol","82":"src/libs/LimitOrderCreate.sol","83":"src/libs/LimitOrderFill.sol","84":"src/libs/LimitOrderLiquidity.sol","85":"src/libs/LimitOrderQueues.sol","86":"src/libs/LimitOrderStorage.sol","87":"src/libs/LimitOrderTypes.sol","88":"src/libs/LimitOrderViews.sol","89":"src/libs/LimitOrderWithdraw.sol","90":"src/libs/Permit2Payments.sol","91":"src/libs/SwapLimitOrders.sol","92":"src/router/SwapWithLimitOrders.sol","93":"src/version/ContractVersionBase.sol"},"language":"Solidity"}
|
|
@@ -66,6 +66,13 @@ export const swapWithLimitOrdersABI = [
|
|
|
66
66
|
outputs: [],
|
|
67
67
|
stateMutability: 'nonpayable',
|
|
68
68
|
},
|
|
69
|
+
{
|
|
70
|
+
type: 'function',
|
|
71
|
+
inputs: [],
|
|
72
|
+
name: 'contractVersion',
|
|
73
|
+
outputs: [{ name: '', internalType: 'string', type: 'string' }],
|
|
74
|
+
stateMutability: 'pure',
|
|
75
|
+
},
|
|
69
76
|
{
|
|
70
77
|
type: 'function',
|
|
71
78
|
inputs: [],
|
|
@@ -431,6 +438,13 @@ export const zoraLimitOrderBookABI = [
|
|
|
431
438
|
outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],
|
|
432
439
|
stateMutability: 'view',
|
|
433
440
|
},
|
|
441
|
+
{
|
|
442
|
+
type: 'function',
|
|
443
|
+
inputs: [],
|
|
444
|
+
name: 'contractVersion',
|
|
445
|
+
outputs: [{ name: '', internalType: 'string', type: 'string' }],
|
|
446
|
+
stateMutability: 'pure',
|
|
447
|
+
},
|
|
434
448
|
{
|
|
435
449
|
type: 'function',
|
|
436
450
|
inputs: [
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@zoralabs/limit-orders",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.6",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "./dist/index.cjs",
|
|
6
6
|
"module": "./dist/index.js",
|
|
@@ -34,7 +34,7 @@
|
|
|
34
34
|
"tsup": "^7.2.0",
|
|
35
35
|
"tsx": "^3.13.0",
|
|
36
36
|
"typescript": "^5.2.2",
|
|
37
|
-
"viem": "
|
|
37
|
+
"viem": "2.22.12",
|
|
38
38
|
"@zoralabs/shared-contracts": "^0.0.5",
|
|
39
39
|
"@zoralabs/shared-scripts": "^0.0.0",
|
|
40
40
|
"@zoralabs/coins": "^2.5.0",
|
|
@@ -21,8 +21,9 @@ import {LimitOrderWithdraw} from "./libs/LimitOrderWithdraw.sol";
|
|
|
21
21
|
import {LimitOrderViews} from "./libs/LimitOrderViews.sol";
|
|
22
22
|
import {LimitOrderTypes} from "./libs/LimitOrderTypes.sol";
|
|
23
23
|
import {PermittedCallers} from "./access/PermittedCallers.sol";
|
|
24
|
+
import {ContractVersionBase} from "./version/ContractVersionBase.sol";
|
|
24
25
|
|
|
25
|
-
contract ZoraLimitOrderBook is IZoraLimitOrderBook, PermittedCallers {
|
|
26
|
+
contract ZoraLimitOrderBook is IZoraLimitOrderBook, ContractVersionBase, PermittedCallers {
|
|
26
27
|
IPoolManager public immutable poolManager;
|
|
27
28
|
IDeployedCoinVersionLookup public immutable zoraCoinVersionLookup;
|
|
28
29
|
IZoraHookRegistry public immutable zoraHookRegistry;
|
|
@@ -38,6 +39,8 @@ contract ZoraLimitOrderBook is IZoraLimitOrderBook, PermittedCallers {
|
|
|
38
39
|
zoraCoinVersionLookup = IDeployedCoinVersionLookup(zoraCoinVersionLookup_);
|
|
39
40
|
zoraHookRegistry = IZoraHookRegistry(zoraHookRegistry_);
|
|
40
41
|
weth = weth_;
|
|
42
|
+
|
|
43
|
+
LimitOrderStorage.layout().maxFillCount = 50;
|
|
41
44
|
}
|
|
42
45
|
|
|
43
46
|
/// @inheritdoc IZoraLimitOrderBook
|
|
@@ -28,6 +28,7 @@ import {V3ToV4SwapLib} from "@zoralabs/coins/src/libs/V3ToV4SwapLib.sol";
|
|
|
28
28
|
import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol";
|
|
29
29
|
import {Ownable2Step} from "@openzeppelin/contracts/access/Ownable2Step.sol";
|
|
30
30
|
import {IAllowanceTransfer} from "permit2/src/interfaces/IAllowanceTransfer.sol";
|
|
31
|
+
import {ContractVersionBase} from "../version/ContractVersionBase.sol";
|
|
31
32
|
|
|
32
33
|
/// @title SwapWithLimitOrders
|
|
33
34
|
/// @notice Standalone router contract that executes swaps with automatic limit order placement and filling.
|
|
@@ -36,7 +37,7 @@ import {IAllowanceTransfer} from "permit2/src/interfaces/IAllowanceTransfer.sol"
|
|
|
36
37
|
/// Users call swapWithLimitOrders() directly, which triggers the unlock callback flow.
|
|
37
38
|
/// Uses Permit2 for token approvals, matching the universal-router pattern.
|
|
38
39
|
/// @author oveddan
|
|
39
|
-
contract SwapWithLimitOrders is Ownable2Step, IMsgSender {
|
|
40
|
+
contract SwapWithLimitOrders is ContractVersionBase, Ownable2Step, IMsgSender {
|
|
40
41
|
using SafeERC20 for IERC20;
|
|
41
42
|
using BalanceDeltaLibrary for BalanceDelta;
|
|
42
43
|
using CurrencyLibrary for Currency;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
// This file is automatically generated by code; do not manually update
|
|
2
|
+
// SPDX-License-Identifier: MIT
|
|
3
|
+
pragma solidity ^0.8.23;
|
|
4
|
+
|
|
5
|
+
import {IVersionedContract} from "@zoralabs/shared-contracts/interfaces/IVersionedContract.sol";
|
|
6
|
+
|
|
7
|
+
/// @title ContractVersionBase
|
|
8
|
+
/// @notice Base contract for versioning contracts
|
|
9
|
+
contract ContractVersionBase is IVersionedContract {
|
|
10
|
+
/// @notice The version of the contract
|
|
11
|
+
function contractVersion() external pure override returns (string memory) {
|
|
12
|
+
return "0.2.6";
|
|
13
|
+
}
|
|
14
|
+
}
|
|
@@ -332,9 +332,15 @@ contract LimitOrderAccessControlTest is BaseTest {
|
|
|
332
332
|
payable(address(limitOrderBook)).transfer(1 wei);
|
|
333
333
|
}
|
|
334
334
|
|
|
335
|
+
// Test: maxFillCount defaults to 50 after construction
|
|
336
|
+
function test_maxFillCount_defaultsTo50() public {
|
|
337
|
+
// Max fill count should be initialized to 50 in constructor
|
|
338
|
+
assertEq(limitOrderBook.getMaxFillCount(), 50);
|
|
339
|
+
}
|
|
340
|
+
|
|
335
341
|
// Test: setMaxFillCount - owner can set
|
|
336
342
|
function test_setMaxFillCount_ownerCanSet() public {
|
|
337
|
-
// Initially max fill count should be 50 (set in
|
|
343
|
+
// Initially max fill count should be 50 (set in constructor)
|
|
338
344
|
assertEq(limitOrderBook.getMaxFillCount(), 50);
|
|
339
345
|
|
|
340
346
|
// Owner (this contract) should be able to set it
|
|
@@ -350,7 +356,7 @@ contract LimitOrderAccessControlTest is BaseTest {
|
|
|
350
356
|
vm.expectRevert(abi.encodeWithSelector(Ownable.OwnableUnauthorizedAccount.selector, unauthorizedUser));
|
|
351
357
|
limitOrderBook.setMaxFillCount(20);
|
|
352
358
|
|
|
353
|
-
// Verify value hasn't changed (still 50 from
|
|
359
|
+
// Verify value hasn't changed (still 50 from constructor)
|
|
354
360
|
assertEq(limitOrderBook.getMaxFillCount(), 50);
|
|
355
361
|
}
|
|
356
362
|
|