@zoralabs/limit-orders 0.2.2 → 0.2.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (37) hide show
  1. package/.abi-stability +70 -0
  2. package/.turbo/turbo-build$colon$js.log +40 -40
  3. package/CHANGELOG.md +23 -0
  4. package/cache/solidity-files-cache.json +1 -1
  5. package/out/CoinConfigurationVersions.sol/CoinConfigurationVersions.json +1 -1
  6. package/out/CoinConstants.sol/CoinConstants.json +1 -1
  7. package/out/DopplerMath.sol/DopplerMath.json +1 -1
  8. package/out/ISetLimitOrderConfig.sol/ISetLimitOrderConfig.json +1 -1
  9. package/out/LimitOrderBitmap.sol/LimitOrderBitmap.json +1 -1
  10. package/out/LimitOrderCommon.sol/LimitOrderCommon.json +1 -1
  11. package/out/LimitOrderCreate.sol/LimitOrderCreate.json +1 -1
  12. package/out/LimitOrderFill.sol/LimitOrderFill.json +1 -1
  13. package/out/LimitOrderLiquidity.sol/LimitOrderLiquidity.json +1 -1
  14. package/out/LimitOrderWithdraw.sol/LimitOrderWithdraw.json +1 -1
  15. package/out/PermittedCallers.sol/PermittedCallers.json +1 -1
  16. package/out/SwapLimitOrders.sol/SwapLimitOrders.json +1 -1
  17. package/out/SwapWithLimitOrders.sol/SwapWithLimitOrders.json +1 -1
  18. package/out/UniV4SwapToCurrency.sol/UniV4SwapToCurrency.json +1 -1
  19. package/out/V3ToV4SwapLib.sol/V3ToV4SwapLib.json +1 -1
  20. package/out/ZoraLimitOrderBook.sol/ZoraLimitOrderBook.json +1 -1
  21. package/out/build-info/{37e0124d88d60569.json → 68b2e124c4a02a45.json} +1 -1
  22. package/package.json +4 -2
  23. package/src/access/PermittedCallers.sol +5 -1
  24. package/src/libs/LimitOrderBitmap.sol +0 -1
  25. package/src/libs/LimitOrderCommon.sol +14 -0
  26. package/src/libs/LimitOrderCreate.sol +6 -0
  27. package/src/libs/LimitOrderFill.sol +3 -20
  28. package/src/libs/LimitOrderLiquidity.sol +61 -38
  29. package/src/libs/LimitOrderWithdraw.sol +2 -6
  30. package/src/libs/SwapLimitOrders.sol +13 -7
  31. package/src/router/SwapWithLimitOrders.sol +1 -0
  32. package/test/LimitOrderLiquidityPayouts.t.sol +14 -14
  33. package/test/SwapWithLimitOrdersRouter.t.sol +4 -0
  34. package/test/unit/LimitOrderCreateUnit.t.sol +17 -17
  35. package/test/unit/SwapLimitOrdersUnit.t.sol +47 -86
  36. package/test/unit/SwapLimitOrdersValidation.t.sol +3 -11
  37. package/test/utils/BaseTest.sol +1 -1
package/.abi-stability ADDED
@@ -0,0 +1,70 @@
1
+ =======================
2
+ 👁👁 ABI STABILITY snapshot 👁👁
3
+ =======================
4
+
5
+ ===============================
6
+ DEPRECATED FUNCTIONS
7
+ ===============================
8
+
9
+ (none)
10
+
11
+ ===============================
12
+ ➡ IZoraLimitOrderBook
13
+ ===============================
14
+
15
+ --- EVENTS ---
16
+
17
+ ╭-------------------------------------------------------------------------------------------------+--------------------------------------------------------------------╮
18
+ | Event | Topic |
19
+ +======================================================================================================================================================================+
20
+ | LimitOrderCreated(address,address,bytes32,bool,int24,int24,uint128,bytes32) | 0x36c14a3cb6751895ef6ab64f123dcca47c492ec447d69f86bb560eb5ad0e47a3 |
21
+ |-------------------------------------------------------------------------------------------------+--------------------------------------------------------------------|
22
+ | LimitOrderFilled(address,address,address,uint128,uint128,address,uint128,bytes32,int24,bytes32) | 0x59d8d839dc2a16f78d0e321652546b26bd10065beade9541895b54e0ec058a37 |
23
+ |-------------------------------------------------------------------------------------------------+--------------------------------------------------------------------|
24
+ | LimitOrderUpdated(address,address,bytes32,bool,int24,uint128,bytes32,bool) | 0x73544fee6e45e543d5464c5d945a19046ad773dabfc95c7d1c119b135d947dde |
25
+ |-------------------------------------------------------------------------------------------------+--------------------------------------------------------------------|
26
+ | MakerBalanceUpdated(address,address,uint256) | 0xa942ad2d47c64ce0859147575881ee76ce335036216e9378b100614f683006cb |
27
+ ╰-------------------------------------------------------------------------------------------------+--------------------------------------------------------------------╯
28
+
29
+
30
+ --- FUNCTIONS ---
31
+
32
+ ╭-------------------------------------------------------------------------------+------------╮
33
+ | Method | Identifier |
34
+ +============================================================================================+
35
+ | balanceOf(address,address) | f7888aec |
36
+ |-------------------------------------------------------------------------------+------------|
37
+ | create((address,address,uint24,int24,address),bool,uint256[],int24[],address) | eb07ed24 |
38
+ |-------------------------------------------------------------------------------+------------|
39
+ | fill(((address,address,uint24,int24,address),bool,bytes32[])[],address) | 7a9cf273 |
40
+ |-------------------------------------------------------------------------------+------------|
41
+ | fill((address,address,uint24,int24,address),bool,int24,int24,uint256,address) | 5f8fbad6 |
42
+ |-------------------------------------------------------------------------------+------------|
43
+ | getMaxFillCount() | d8c31772 |
44
+ |-------------------------------------------------------------------------------+------------|
45
+ | setMaxFillCount(uint256) | c96d060b |
46
+ |-------------------------------------------------------------------------------+------------|
47
+ | withdraw(bytes32[],address,uint256,address) | c2ec68ea |
48
+ ╰-------------------------------------------------------------------------------+------------╯
49
+
50
+
51
+ ===============================
52
+ ➡ ISetLimitOrderConfig
53
+ ===============================
54
+
55
+ --- EVENTS ---
56
+
57
+ ╭-------+-------╮
58
+ | Event | Topic |
59
+ +===============+
60
+ ╰-------+-------╯
61
+
62
+
63
+ --- FUNCTIONS ---
64
+
65
+ ╭--------------------------------------------+------------╮
66
+ | Method | Identifier |
67
+ +=========================================================+
68
+ | setLimitOrderConfig((uint256[],uint256[])) | 18ed2974 |
69
+ ╰--------------------------------------------+------------╯
70
+
@@ -1,17 +1,17 @@
1
1
 
2
- > @zoralabs/limit-orders@0.2.2 build:js /home/runner/work/zora-protocol-private/zora-protocol-private/packages/limit-orders
2
+ > @zoralabs/limit-orders@0.2.4 build:js /home/runner/work/zora-protocol-private/zora-protocol-private/packages/limit-orders
3
3
  > pnpm run wagmi:generate && pnpm run copy-abis && pnpm run prettier:write && tsup
4
4
 
5
5
 
6
- > @zoralabs/limit-orders@0.2.2 wagmi:generate /home/runner/work/zora-protocol-private/zora-protocol-private/packages/limit-orders
6
+ > @zoralabs/limit-orders@0.2.4 wagmi:generate /home/runner/work/zora-protocol-private/zora-protocol-private/packages/limit-orders
7
7
  > pnpm run build:contracts:minimal && wagmi generate && pnpm exec rename-generated-abi-casing ./package/wagmiGenerated.ts
8
8
 
9
9
 
10
- > @zoralabs/limit-orders@0.2.2 build:contracts:minimal /home/runner/work/zora-protocol-private/zora-protocol-private/packages/limit-orders
10
+ > @zoralabs/limit-orders@0.2.4 build:contracts:minimal /home/runner/work/zora-protocol-private/zora-protocol-private/packages/limit-orders
11
11
  > forge build src/ --no-metadata
12
12
 
13
13
  Compiling 93 files with Solc 0.8.28
14
- Solc 0.8.28 finished in 7.13s
14
+ Solc 0.8.28 finished in 7.24s
15
15
  Compiler run successful!
16
16
  - Validating plugins
17
17
  ✔ Validating plugins
@@ -26,50 +26,50 @@ Compiler run successful!
26
26
  ✅ Updated ./package/wagmiGenerated.ts (3 replacements)
27
27
  ✨ All files processed successfully!
28
28
 
29
- > @zoralabs/limit-orders@0.2.2 copy-abis /home/runner/work/zora-protocol-private/zora-protocol-private/packages/limit-orders
29
+ > @zoralabs/limit-orders@0.2.4 copy-abis /home/runner/work/zora-protocol-private/zora-protocol-private/packages/limit-orders
30
30
  > pnpm exec bundle-abis
31
31
 
32
32
 
33
- > @zoralabs/limit-orders@0.2.2 prettier:write /home/runner/work/zora-protocol-private/zora-protocol-private/packages/limit-orders
33
+ > @zoralabs/limit-orders@0.2.4 prettier:write /home/runner/work/zora-protocol-private/zora-protocol-private/packages/limit-orders
34
34
  > prettier --write 'src/**/*.sol' 'test/**/*.sol'
35
35
 
36
- src/access/PermittedCallers.sol 449ms (unchanged)
37
- src/IZoraLimitOrderBook.sol 54ms (unchanged)
38
- src/libs/LimitOrderBitmap.sol 57ms (unchanged)
39
- src/libs/LimitOrderCommon.sol 210ms (unchanged)
40
- src/libs/LimitOrderCreate.sol 374ms (unchanged)
41
- src/libs/LimitOrderFill.sol 244ms (unchanged)
42
- src/libs/LimitOrderLiquidity.sol 250ms (unchanged)
43
- src/libs/LimitOrderQueues.sol 43ms (unchanged)
44
- src/libs/LimitOrderStorage.sol 13ms (unchanged)
36
+ src/access/PermittedCallers.sol 462ms (unchanged)
37
+ src/IZoraLimitOrderBook.sol 66ms (unchanged)
38
+ src/libs/LimitOrderBitmap.sol 64ms (unchanged)
39
+ src/libs/LimitOrderCommon.sol 249ms (unchanged)
40
+ src/libs/LimitOrderCreate.sol 402ms (unchanged)
41
+ src/libs/LimitOrderFill.sol 234ms (unchanged)
42
+ src/libs/LimitOrderLiquidity.sol 256ms (unchanged)
43
+ src/libs/LimitOrderQueues.sol 49ms (unchanged)
44
+ src/libs/LimitOrderStorage.sol 38ms (unchanged)
45
45
  src/libs/LimitOrderTypes.sol 3ms (unchanged)
46
- src/libs/LimitOrderViews.sol 114ms (unchanged)
46
+ src/libs/LimitOrderViews.sol 105ms (unchanged)
47
47
  src/libs/LimitOrderWithdraw.sol 109ms (unchanged)
48
- src/libs/Permit2Payments.sol 17ms (unchanged)
49
- src/libs/SwapLimitOrders.sol 173ms (unchanged)
48
+ src/libs/Permit2Payments.sol 18ms (unchanged)
49
+ src/libs/SwapLimitOrders.sol 163ms (unchanged)
50
50
  src/router/ISetLimitOrderConfig.sol 1ms (unchanged)
51
- src/router/SwapWithLimitOrders.sol 301ms (unchanged)
52
- src/ZoraLimitOrderBook.sol 111ms (unchanged)
53
- test/gas/LimitOrderFillGas.t.sol 792ms (unchanged)
54
- test/gas/LimitOrderSwapGas.t.sol 283ms (unchanged)
55
- test/LimitOrderAccessControl.t.sol 396ms (unchanged)
56
- test/LimitOrderBitmap.t.sol 212ms (unchanged)
57
- test/LimitOrderCreate.t.sol 364ms (unchanged)
58
- test/LimitOrderFill.t.sol 999ms (unchanged)
59
- test/LimitOrderLibraries.t.sol 371ms (unchanged)
60
- test/LimitOrderLiquidityPayouts.t.sol 420ms (unchanged)
61
- test/LimitOrderV4Pools.t.sol 141ms (unchanged)
62
- test/LimitOrderWithdraw.t.sol 665ms (unchanged)
63
- test/SwapWithLimitOrders.t.sol 88ms (unchanged)
64
- test/SwapWithLimitOrdersRouter.t.sol 626ms (unchanged)
65
- test/unit/LimitOrderBitmapUnit.t.sol 80ms (unchanged)
51
+ src/router/SwapWithLimitOrders.sol 253ms (unchanged)
52
+ src/ZoraLimitOrderBook.sol 137ms (unchanged)
53
+ test/gas/LimitOrderFillGas.t.sol 859ms (unchanged)
54
+ test/gas/LimitOrderSwapGas.t.sol 306ms (unchanged)
55
+ test/LimitOrderAccessControl.t.sol 388ms (unchanged)
56
+ test/LimitOrderBitmap.t.sol 222ms (unchanged)
57
+ test/LimitOrderCreate.t.sol 389ms (unchanged)
58
+ test/LimitOrderFill.t.sol 1062ms (unchanged)
59
+ test/LimitOrderLibraries.t.sol 395ms (unchanged)
60
+ test/LimitOrderLiquidityPayouts.t.sol 442ms (unchanged)
61
+ test/LimitOrderV4Pools.t.sol 160ms (unchanged)
62
+ test/LimitOrderWithdraw.t.sol 691ms (unchanged)
63
+ test/SwapWithLimitOrders.t.sol 89ms (unchanged)
64
+ test/SwapWithLimitOrdersRouter.t.sol 631ms (unchanged)
65
+ test/unit/LimitOrderBitmapUnit.t.sol 91ms (unchanged)
66
66
  test/unit/LimitOrderCreateUnit.t.sol 193ms (unchanged)
67
- test/unit/SwapLimitOrdersUnit.t.sol 601ms (unchanged)
68
- test/unit/SwapLimitOrdersValidation.t.sol 228ms (unchanged)
69
- test/unit/SwapWithLimitOrdersUnit.t.sol 63ms (unchanged)
70
- test/utils/BaseTest.sol 593ms (unchanged)
71
- test/utils/MockWETH.sol 34ms (unchanged)
72
- test/utils/TestableZoraLimitOrderBook.sol 41ms (unchanged)
67
+ test/unit/SwapLimitOrdersUnit.t.sol 667ms (unchanged)
68
+ test/unit/SwapLimitOrdersValidation.t.sol 251ms (unchanged)
69
+ test/unit/SwapWithLimitOrdersUnit.t.sol 66ms (unchanged)
70
+ test/utils/BaseTest.sol 640ms (unchanged)
71
+ test/utils/MockWETH.sol 28ms (unchanged)
72
+ test/utils/TestableZoraLimitOrderBook.sol 40ms (unchanged)
73
73
  CLI Building entry: package/index.ts
74
74
  CLI Using tsconfig: tsconfig.json
75
75
  CLI tsup v8.4.0
@@ -80,7 +80,7 @@ test/utils/TestableZoraLimitOrderBook.sol 41ms (unchanged)
80
80
  ESM Build start
81
81
  CJS dist/index.cjs 25.65 KB
82
82
  CJS dist/index.cjs.map 44.14 KB
83
- CJS ⚡️ Build success in 35ms
83
+ CJS ⚡️ Build success in 36ms
84
84
  ESM dist/index.js 24.48 KB
85
85
  ESM dist/index.js.map 44.03 KB
86
86
  ESM ⚡️ Build success in 35ms
package/CHANGELOG.md CHANGED
@@ -1,5 +1,28 @@
1
1
  # @zoralabs/limit-orders
2
2
 
3
+ ## 0.2.4
4
+
5
+ ### Patch Changes
6
+
7
+ - 3a8a5a05: Fixed infinite loop bug in batch fill when order hasn't crossed tick range
8
+ - 53957bf7: Skip order creation when swaps hit hard price boundaries using sqrt price sentinel checks.
9
+
10
+ ## 0.2.3
11
+
12
+ ### Patch Changes
13
+
14
+ - 98e02520: Fix dual positive deltas consolidation in burnAndRefund
15
+
16
+ - Consolidate payouts to single currency when burning limit orders with dual positive deltas
17
+ - Extract path-building logic into reusable `_buildSingleHopPath` helper function
18
+ - Ensure users receive proceeds in their original deposit currency by swapping counter-assets
19
+ - Align burnAndRefund behavior with burnAndPayout for consistent payout consolidation
20
+
21
+ - 91a82b2f: Fix withdraw crossed order check to use consistent logic with fills. The `hasCrossed` check for currency1 orders now uses strict `<` comparison instead of `<=`, preventing false positives at the tick boundary. Consolidated `hasCrossed` and `currentPoolTick` helpers into `LimitOrderCommon` for shared use across fill and withdraw paths.
22
+ - e9ffd038: Fix premature limit order fills due to Uniswap v4 tick boundary handling
23
+
24
+ Previously, limit orders for non-currency0 tokens could be filled prematurely when the current tick was exactly equal to the order's lower tick boundary. This fix ensures orders are only filled when the pool tick has fully crossed the order's range, preventing users from receiving fewer output tokens than intended.
25
+
3
26
  ## 0.2.2
4
27
 
5
28
  ### Patch Changes