@zoralabs/limit-orders 0.2.5 → 0.2.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (57) hide show
  1. package/.abi-stability +0 -21
  2. package/.turbo/turbo-build$colon$js.log +52 -50
  3. package/CHANGELOG.md +21 -6
  4. package/abis/ContractVersionBase.json +15 -0
  5. package/abis/ICoin.json +5 -0
  6. package/abis/IVersionedContract.json +15 -0
  7. package/abis/SwapWithLimitOrders.json +13 -0
  8. package/abis/ZoraLimitOrderBook.json +13 -0
  9. package/cache/solidity-files-cache.json +1 -1
  10. package/dist/index.cjs +14 -0
  11. package/dist/index.cjs.map +1 -1
  12. package/dist/index.js +14 -0
  13. package/dist/index.js.map +1 -1
  14. package/dist/wagmiGenerated.d.ts +20 -0
  15. package/dist/wagmiGenerated.d.ts.map +1 -1
  16. package/out/BytesLib.sol/BytesLib.json +1 -1
  17. package/out/CoinConfigurationVersions.sol/CoinConfigurationVersions.json +1 -1
  18. package/out/CoinConstants.sol/CoinConstants.json +1 -1
  19. package/out/ContractVersionBase.sol/ContractVersionBase.json +1 -0
  20. package/out/DopplerMath.sol/DopplerMath.json +1 -1
  21. package/out/ICoin.sol/ICoin.json +1 -1
  22. package/out/ICoin.sol/IHasCoinType.json +1 -1
  23. package/out/ICoin.sol/IHasPoolKey.json +1 -1
  24. package/out/ICoin.sol/IHasSwapPath.json +1 -1
  25. package/out/ICoin.sol/IHasTotalSupplyForPositions.json +1 -1
  26. package/out/ISwapRouter.sol/ISwapRouter.json +1 -1
  27. package/out/IUniswapV3SwapCallback.sol/IUniswapV3SwapCallback.json +1 -1
  28. package/out/IVersionedContract.sol/IVersionedContract.json +1 -0
  29. package/out/IZoraLimitOrderBook.sol/IZoraLimitOrderBook.json +1 -1
  30. package/out/IZoraV4CoinHook.sol/IZoraV4CoinHook.json +1 -1
  31. package/out/LimitOrderBitmap.sol/LimitOrderBitmap.json +1 -1
  32. package/out/LimitOrderCommon.sol/LimitOrderCommon.json +1 -1
  33. package/out/LimitOrderCreate.sol/LimitOrderCreate.json +1 -1
  34. package/out/LimitOrderFill.sol/LimitOrderFill.json +1 -1
  35. package/out/LimitOrderLiquidity.sol/LimitOrderLiquidity.json +1 -1
  36. package/out/LimitOrderQueues.sol/LimitOrderQueues.json +1 -1
  37. package/out/LimitOrderStorage.sol/LimitOrderStorage.json +1 -1
  38. package/out/LimitOrderTypes.sol/LimitOrderTypes.json +1 -1
  39. package/out/LimitOrderViews.sol/LimitOrderViews.json +1 -1
  40. package/out/LimitOrderWithdraw.sol/LimitOrderWithdraw.json +1 -1
  41. package/out/Path.sol/Path.json +1 -1
  42. package/out/Permit2Payments.sol/Permit2Payments.json +1 -1
  43. package/out/PermittedCallers.sol/PermittedCallers.json +1 -1
  44. package/out/SwapLimitOrders.sol/SwapLimitOrders.json +1 -1
  45. package/out/SwapWithLimitOrders.sol/SwapWithLimitOrders.json +1 -1
  46. package/out/UniV4SwapToCurrency.sol/UniV4SwapToCurrency.json +1 -1
  47. package/out/ZoraLimitOrderBook.sol/ZoraLimitOrderBook.json +1 -1
  48. package/out/build-info/{c9f7ee5726bfbd48.json → fcf3d601c2943dea.json} +1 -1
  49. package/package/wagmiGenerated.ts +14 -0
  50. package/package.json +3 -3
  51. package/src/ZoraLimitOrderBook.sol +4 -1
  52. package/src/libs/LimitOrderFill.sol +4 -5
  53. package/src/router/SwapWithLimitOrders.sol +2 -1
  54. package/src/version/ContractVersionBase.sol +14 -0
  55. package/test/DebugSwapWithLimitOrders.t.sol +196 -0
  56. package/test/LimitOrderAccessControl.t.sol +8 -2
  57. package/test/LimitOrderFill.t.sol +118 -0
package/.abi-stability CHANGED
@@ -47,24 +47,3 @@ DEPRECATED FUNCTIONS
47
47
  | withdraw(bytes32[],address,uint256,address) | c2ec68ea |
48
48
  ╰-------------------------------------------------------------------------------+------------╯
49
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.5 build:js /home/runner/work/zora-protocol-private/zora-protocol-private/packages/limit-orders
2
+ > @zoralabs/limit-orders@0.2.7 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.5 wagmi:generate /home/runner/work/zora-protocol-private/zora-protocol-private/packages/limit-orders
6
+ > @zoralabs/limit-orders@0.2.7 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.5 build:contracts:minimal /home/runner/work/zora-protocol-private/zora-protocol-private/packages/limit-orders
10
+ > @zoralabs/limit-orders@0.2.7 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
- Compiling 92 files with Solc 0.8.28
14
- Solc 0.8.28 finished in 7.62s
13
+ Compiling 94 files with Solc 0.8.28
14
+ Solc 0.8.28 finished in 7.87s
15
15
  Compiler run successful!
16
16
  - Validating plugins
17
17
  ✔ Validating plugins
@@ -26,60 +26,62 @@ 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.5 copy-abis /home/runner/work/zora-protocol-private/zora-protocol-private/packages/limit-orders
29
+ > @zoralabs/limit-orders@0.2.7 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.5 prettier:write /home/runner/work/zora-protocol-private/zora-protocol-private/packages/limit-orders
33
+ > @zoralabs/limit-orders@0.2.7 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 502ms (unchanged)
37
- src/IZoraLimitOrderBook.sol 61ms (unchanged)
38
- src/libs/LimitOrderBitmap.sol 59ms (unchanged)
39
- src/libs/LimitOrderCommon.sol 217ms (unchanged)
40
- src/libs/LimitOrderCreate.sol 387ms (unchanged)
41
- src/libs/LimitOrderFill.sol 238ms (unchanged)
42
- src/libs/LimitOrderLiquidity.sol 231ms (unchanged)
43
- src/libs/LimitOrderQueues.sol 62ms (unchanged)
44
- src/libs/LimitOrderStorage.sol 14ms (unchanged)
45
- src/libs/LimitOrderTypes.sol 2ms (unchanged)
46
- src/libs/LimitOrderViews.sol 106ms (unchanged)
47
- src/libs/LimitOrderWithdraw.sol 106ms (unchanged)
48
- src/libs/Permit2Payments.sol 17ms (unchanged)
49
- src/libs/SwapLimitOrders.sol 149ms (unchanged)
50
- src/router/SwapWithLimitOrders.sol 256ms (unchanged)
51
- src/ZoraLimitOrderBook.sol 141ms (unchanged)
52
- test/gas/LimitOrderFillGas.t.sol 812ms (unchanged)
53
- test/gas/LimitOrderSwapGas.t.sol 305ms (unchanged)
54
- test/LimitOrderAccessControl.t.sol 392ms (unchanged)
55
- test/LimitOrderBitmap.t.sol 208ms (unchanged)
56
- test/LimitOrderCreate.t.sol 462ms (unchanged)
57
- test/LimitOrderFill.t.sol 1033ms (unchanged)
58
- test/LimitOrderLibraries.t.sol 402ms (unchanged)
59
- test/LimitOrderLiquidityPayouts.t.sol 418ms (unchanged)
60
- test/LimitOrderV4Pools.t.sol 148ms (unchanged)
61
- test/LimitOrderWithdraw.t.sol 641ms (unchanged)
62
- test/SwapWithLimitOrders.t.sol 98ms (unchanged)
63
- test/SwapWithLimitOrdersRouter.t.sol 628ms (unchanged)
64
- test/unit/LimitOrderBitmapUnit.t.sol 83ms (unchanged)
65
- test/unit/LimitOrderCreateUnit.t.sol 165ms (unchanged)
66
- test/unit/SwapLimitOrdersUnit.t.sol 616ms (unchanged)
67
- test/unit/SwapLimitOrdersValidation.t.sol 250ms (unchanged)
68
- test/unit/SwapWithLimitOrdersUnit.t.sol 69ms (unchanged)
69
- test/utils/BaseTest.sol 638ms (unchanged)
70
- test/utils/MockWETH.sol 22ms (unchanged)
71
- test/utils/TestableZoraLimitOrderBook.sol 19ms (unchanged)
36
+ src/access/PermittedCallers.sol 479ms (unchanged)
37
+ src/IZoraLimitOrderBook.sol 58ms (unchanged)
38
+ src/libs/LimitOrderBitmap.sol 70ms (unchanged)
39
+ src/libs/LimitOrderCommon.sol 292ms (unchanged)
40
+ src/libs/LimitOrderCreate.sol 427ms (unchanged)
41
+ src/libs/LimitOrderFill.sol 253ms (unchanged)
42
+ src/libs/LimitOrderLiquidity.sol 267ms (unchanged)
43
+ src/libs/LimitOrderQueues.sol 79ms (unchanged)
44
+ src/libs/LimitOrderStorage.sol 15ms (unchanged)
45
+ src/libs/LimitOrderTypes.sol 2ms (unchanged)
46
+ src/libs/LimitOrderViews.sol 117ms (unchanged)
47
+ src/libs/LimitOrderWithdraw.sol 110ms (unchanged)
48
+ src/libs/Permit2Payments.sol 19ms (unchanged)
49
+ src/libs/SwapLimitOrders.sol 175ms (unchanged)
50
+ src/router/SwapWithLimitOrders.sol 296ms (unchanged)
51
+ src/version/ContractVersionBase.sol 8ms (unchanged)
52
+ src/ZoraLimitOrderBook.sol 174ms (unchanged)
53
+ test/DebugSwapWithLimitOrders.t.sol 166ms
54
+ test/gas/LimitOrderFillGas.t.sol 909ms (unchanged)
55
+ test/gas/LimitOrderSwapGas.t.sol 326ms (unchanged)
56
+ test/LimitOrderAccessControl.t.sol 398ms (unchanged)
57
+ test/LimitOrderBitmap.t.sol 221ms (unchanged)
58
+ test/LimitOrderCreate.t.sol 398ms (unchanged)
59
+ test/LimitOrderFill.t.sol 1178ms (unchanged)
60
+ test/LimitOrderLibraries.t.sol 422ms (unchanged)
61
+ test/LimitOrderLiquidityPayouts.t.sol 417ms (unchanged)
62
+ test/LimitOrderV4Pools.t.sol 142ms (unchanged)
63
+ test/LimitOrderWithdraw.t.sol 677ms (unchanged)
64
+ test/SwapWithLimitOrders.t.sol 91ms (unchanged)
65
+ test/SwapWithLimitOrdersRouter.t.sol 646ms (unchanged)
66
+ test/unit/LimitOrderBitmapUnit.t.sol 87ms (unchanged)
67
+ test/unit/LimitOrderCreateUnit.t.sol 177ms (unchanged)
68
+ test/unit/SwapLimitOrdersUnit.t.sol 686ms (unchanged)
69
+ test/unit/SwapLimitOrdersValidation.t.sol 256ms (unchanged)
70
+ test/unit/SwapWithLimitOrdersUnit.t.sol 72ms (unchanged)
71
+ test/utils/BaseTest.sol 669ms (unchanged)
72
+ test/utils/MockWETH.sol 39ms (unchanged)
73
+ test/utils/TestableZoraLimitOrderBook.sol 35ms (unchanged)
72
74
  CLI Building entry: package/index.ts
73
75
  CLI Using tsconfig: tsconfig.json
74
- CLI tsup v8.4.0
76
+ CLI tsup v8.5.1
75
77
  CLI Using tsup config: /home/runner/work/zora-protocol-private/zora-protocol-private/packages/limit-orders/tsup.config.ts
76
78
  CLI Target: es2021
77
79
  CLI Cleaning output folder
78
80
  CJS Build start
79
81
  ESM Build start
80
- CJS dist/index.cjs 25.65 KB
81
- CJS dist/index.cjs.map 44.14 KB
82
- CJS ⚡️ Build success in 45ms
83
- ESM dist/index.js 24.48 KB
84
- ESM dist/index.js.map 44.03 KB
85
- ESM ⚡️ Build success in 47ms
82
+ CJS dist/index.cjs 25.99 KB
83
+ CJS dist/index.cjs.map 44.79 KB
84
+ CJS ⚡️ Build success in 38ms
85
+ ESM dist/index.js 24.82 KB
86
+ ESM dist/index.js.map 44.67 KB
87
+ ESM ⚡️ Build success in 37ms
package/CHANGELOG.md CHANGED
@@ -1,5 +1,26 @@
1
1
  # @zoralabs/limit-orders
2
2
 
3
+ ## 0.2.7
4
+
5
+ ### Patch Changes
6
+
7
+ - ee8921b7: Fix multi-hop payout path for content coin limit orders
8
+ - Pass `coinIn` instead of `coinOut` to `burnAndPayout` in `LimitOrderFill._fillOrder`
9
+ - This ensures content coin orders pay out in the ultimate backing currency (ZORA) via the multi-hop path
10
+ - Previously, content coin orders would fall back to single-hop and pay out in creator coin instead of ZORA
11
+
12
+ ## 0.2.6
13
+
14
+ ### Patch Changes
15
+
16
+ - df0b0a1d: Add ContractVersionBase inheritance to ZoraLimitOrderBook and SwapWithLimitOrders
17
+ - Both contracts now inherit from ContractVersionBase for consistent version tracking
18
+ - Implements IVersionedContract interface with contractVersion() returning "0.2.5"
19
+
20
+ - b374124a: Initialize max fill count to 50 in ZoraLimitOrderBook constructor
21
+
22
+ Sets a default maximum fill count of 50 orders per transaction in the constructor, providing consistent behavior from deployment without requiring separate configuration.
23
+
3
24
  ## 0.2.5
4
25
 
5
26
  ### Patch Changes
@@ -18,7 +39,6 @@
18
39
  ### Patch Changes
19
40
 
20
41
  - 98e02520: Fix dual positive deltas consolidation in burnAndRefund
21
-
22
42
  - Consolidate payouts to single currency when burning limit orders with dual positive deltas
23
43
  - Extract path-building logic into reusable `_buildSingleHopPath` helper function
24
44
  - Ensure users receive proceeds in their original deposit currency by swapping counter-assets
@@ -34,7 +54,6 @@
34
54
  ### Patch Changes
35
55
 
36
56
  - bb2c2b76: Replace AccessManager with PermittedCallers + Ownable2Step for access control in ZoraLimitOrderBook and SwapWithLimitOrders contracts.
37
-
38
57
  - Remove AccessManager and SimpleAccessManaged pattern
39
58
  - Use OpenZeppelin Ownable2Step for two-step ownership transfer
40
59
  - Add `permittedCallers` mapping to gate `create()` access (public by default, owner can restrict)
@@ -79,7 +98,6 @@
79
98
  - 2cb9cb30: Remove fixed MIN_LIMIT_ORDER_SIZE threshold that made many tokens unusable. Limit orders now accept any positive amount instead of requiring at least 1e18 tokens, fixing compatibility issues with tokens using different decimal configurations.
80
99
  - eec53af3: Remove unnecessary Permit2Payments inheritance and use direct PERMIT2 immutable reference instead. This simplifies the contract structure by eliminating unused inherited functions while maintaining identical functionality.
81
100
  - 83726a0e: Remove unused settle negative deltas logic
82
-
83
101
  - Remove redundant `_settleNegativeDeltas` function that was never executed
84
102
  - Simplify limit order closure logic by removing unnecessary delta settlement
85
103
 
@@ -109,19 +127,16 @@
109
127
  - c59a6fac: Initial release of limit orders protocol
110
128
 
111
129
  Introduces a limit order system built on top of Uniswap V4 concentrated liquidity positions:
112
-
113
130
  - **Orders as V4 Positions**: Each limit order is a single-tick-wide Uniswap V4 liquidity position, enabling makers to place orders at specific price points
114
131
  - **FIFO Queue System**: Orders are organized in queues by `(poolKeyHash, coin, tick)` with bitmap-based tick tracking for efficient iteration
115
132
  - **Epoch-Based Fill Protection**: Orders cannot be filled in the same epoch they were created, preventing same-transaction manipulation
116
133
 
117
134
  **Fill Integration Modes:**
118
-
119
135
  - **Auto-fill via Hook**: The Zora hook now calls `fill()` on the limit order book during `afterSwap`, automatically filling orders as swaps cross through their tick ranges
120
136
  - **Router Fallback**: For legacy hooks, the router can call `fill()` post-swap
121
137
  - **Third-party Fill**: Anyone can call `fill()` when the PoolManager is locked, incentivized by LP fee collection
122
138
 
123
139
  **Fee Model:**
124
-
125
140
  - Fill referrals receive accrued LP fees from filled positions
126
141
  - Makers receive full proceeds on withdrawal
127
142
  - Makers can cancel their limit orders to withdraw the backing currency
@@ -0,0 +1,15 @@
1
+ [
2
+ {
3
+ "type": "function",
4
+ "name": "contractVersion",
5
+ "inputs": [],
6
+ "outputs": [
7
+ {
8
+ "name": "",
9
+ "type": "string",
10
+ "internalType": "string"
11
+ }
12
+ ],
13
+ "stateMutability": "pure"
14
+ }
15
+ ]
package/abis/ICoin.json CHANGED
@@ -968,6 +968,11 @@
968
968
  "name": "InsufficientLiquidity",
969
969
  "inputs": []
970
970
  },
971
+ {
972
+ "type": "error",
973
+ "name": "InvalidCurrency",
974
+ "inputs": []
975
+ },
971
976
  {
972
977
  "type": "error",
973
978
  "name": "InvalidCurrencyLowerTick",
@@ -0,0 +1,15 @@
1
+ [
2
+ {
3
+ "type": "function",
4
+ "name": "contractVersion",
5
+ "inputs": [],
6
+ "outputs": [
7
+ {
8
+ "name": "",
9
+ "type": "string",
10
+ "internalType": "string"
11
+ }
12
+ ],
13
+ "stateMutability": "pure"
14
+ }
15
+ ]
@@ -41,6 +41,19 @@
41
41
  "outputs": [],
42
42
  "stateMutability": "nonpayable"
43
43
  },
44
+ {
45
+ "type": "function",
46
+ "name": "contractVersion",
47
+ "inputs": [],
48
+ "outputs": [
49
+ {
50
+ "name": "",
51
+ "type": "string",
52
+ "internalType": "string"
53
+ }
54
+ ],
55
+ "stateMutability": "pure"
56
+ },
44
57
  {
45
58
  "type": "function",
46
59
  "name": "getLimitOrderConfig",
@@ -65,6 +65,19 @@
65
65
  ],
66
66
  "stateMutability": "view"
67
67
  },
68
+ {
69
+ "type": "function",
70
+ "name": "contractVersion",
71
+ "inputs": [],
72
+ "outputs": [
73
+ {
74
+ "name": "",
75
+ "type": "string",
76
+ "internalType": "string"
77
+ }
78
+ ],
79
+ "stateMutability": "pure"
80
+ },
68
81
  {
69
82
  "type": "function",
70
83
  "name": "create",