@zoralabs/limit-orders 0.2.6 → 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 (29) hide show
  1. package/.turbo/turbo-build$colon$js.log +45 -44
  2. package/CHANGELOG.md +9 -7
  3. package/abis/ICoin.json +5 -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/ContractVersionBase.sol/ContractVersionBase.json +1 -1
  8. package/out/DopplerMath.sol/DopplerMath.json +1 -1
  9. package/out/ICoin.sol/ICoin.json +1 -1
  10. package/out/ICoin.sol/IHasCoinType.json +1 -1
  11. package/out/ICoin.sol/IHasPoolKey.json +1 -1
  12. package/out/ICoin.sol/IHasSwapPath.json +1 -1
  13. package/out/ICoin.sol/IHasTotalSupplyForPositions.json +1 -1
  14. package/out/IZoraV4CoinHook.sol/IZoraV4CoinHook.json +1 -1
  15. package/out/LimitOrderCommon.sol/LimitOrderCommon.json +1 -1
  16. package/out/LimitOrderCreate.sol/LimitOrderCreate.json +1 -1
  17. package/out/LimitOrderFill.sol/LimitOrderFill.json +1 -1
  18. package/out/LimitOrderLiquidity.sol/LimitOrderLiquidity.json +1 -1
  19. package/out/LimitOrderWithdraw.sol/LimitOrderWithdraw.json +1 -1
  20. package/out/SwapLimitOrders.sol/SwapLimitOrders.json +1 -1
  21. package/out/SwapWithLimitOrders.sol/SwapWithLimitOrders.json +1 -1
  22. package/out/UniV4SwapToCurrency.sol/UniV4SwapToCurrency.json +1 -1
  23. package/out/ZoraLimitOrderBook.sol/ZoraLimitOrderBook.json +1 -1
  24. package/out/build-info/{b6efea4394bdeb7d.json → fcf3d601c2943dea.json} +1 -1
  25. package/package.json +2 -2
  26. package/src/libs/LimitOrderFill.sol +4 -5
  27. package/src/version/ContractVersionBase.sol +1 -1
  28. package/test/DebugSwapWithLimitOrders.t.sol +196 -0
  29. package/test/LimitOrderFill.t.sol +118 -0
@@ -1,17 +1,17 @@
1
1
 
2
- > @zoralabs/limit-orders@0.2.6 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.6 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.6 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
13
  Compiling 94 files with Solc 0.8.28
14
- Solc 0.8.28 finished in 8.46s
14
+ Solc 0.8.28 finished in 7.87s
15
15
  Compiler run successful!
16
16
  - Validating plugins
17
17
  ✔ Validating plugins
@@ -26,50 +26,51 @@ 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.6 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.6 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 469ms (unchanged)
37
- src/IZoraLimitOrderBook.sol 61ms (unchanged)
38
- src/libs/LimitOrderBitmap.sol 64ms (unchanged)
39
- src/libs/LimitOrderCommon.sol 259ms (unchanged)
40
- src/libs/LimitOrderCreate.sol 379ms (unchanged)
41
- src/libs/LimitOrderFill.sol 234ms (unchanged)
42
- src/libs/LimitOrderLiquidity.sol 234ms (unchanged)
43
- src/libs/LimitOrderQueues.sol 70ms (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
44
  src/libs/LimitOrderStorage.sol 15ms (unchanged)
45
45
  src/libs/LimitOrderTypes.sol 2ms (unchanged)
46
- src/libs/LimitOrderViews.sol 119ms (unchanged)
47
- src/libs/LimitOrderWithdraw.sol 116ms (unchanged)
48
- src/libs/Permit2Payments.sol 17ms (unchanged)
49
- src/libs/SwapLimitOrders.sol 171ms (unchanged)
50
- src/router/SwapWithLimitOrders.sol 267ms (unchanged)
51
- src/version/ContractVersionBase.sol 4ms (unchanged)
52
- src/ZoraLimitOrderBook.sol 134ms (unchanged)
53
- test/gas/LimitOrderFillGas.t.sol 855ms (unchanged)
54
- test/gas/LimitOrderSwapGas.t.sol 320ms (unchanged)
55
- test/LimitOrderAccessControl.t.sol 421ms (unchanged)
56
- test/LimitOrderBitmap.t.sol 226ms (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)
57
58
  test/LimitOrderCreate.t.sol 398ms (unchanged)
58
- test/LimitOrderFill.t.sol 1114ms (unchanged)
59
- test/LimitOrderLibraries.t.sol 404ms (unchanged)
60
- test/LimitOrderLiquidityPayouts.t.sol 459ms (unchanged)
61
- test/LimitOrderV4Pools.t.sol 156ms (unchanged)
62
- test/LimitOrderWithdraw.t.sol 679ms (unchanged)
63
- test/SwapWithLimitOrders.t.sol 92ms (unchanged)
64
- test/SwapWithLimitOrdersRouter.t.sol 677ms (unchanged)
65
- test/unit/LimitOrderBitmapUnit.t.sol 96ms (unchanged)
66
- test/unit/LimitOrderCreateUnit.t.sol 176ms (unchanged)
67
- test/unit/SwapLimitOrdersUnit.t.sol 676ms (unchanged)
68
- test/unit/SwapLimitOrdersValidation.t.sol 278ms (unchanged)
69
- test/unit/SwapWithLimitOrdersUnit.t.sol 83ms (unchanged)
70
- test/utils/BaseTest.sol 663ms (unchanged)
71
- test/utils/MockWETH.sol 34ms (unchanged)
72
- test/utils/TestableZoraLimitOrderBook.sol 20ms (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)
73
74
  CLI Building entry: package/index.ts
74
75
  CLI Using tsconfig: tsconfig.json
75
76
  CLI tsup v8.5.1
@@ -78,9 +79,9 @@ Compiler run successful!
78
79
  CLI Cleaning output folder
79
80
  CJS Build start
80
81
  ESM Build start
81
- ESM dist/index.js 24.82 KB
82
- ESM dist/index.js.map 44.67 KB
83
- ESM ⚡️ Build success in 42ms
84
82
  CJS dist/index.cjs 25.99 KB
85
83
  CJS dist/index.cjs.map 44.79 KB
86
- CJS ⚡️ Build success in 42ms
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,11 +1,19 @@
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
+
3
12
  ## 0.2.6
4
13
 
5
14
  ### Patch Changes
6
15
 
7
16
  - df0b0a1d: Add ContractVersionBase inheritance to ZoraLimitOrderBook and SwapWithLimitOrders
8
-
9
17
  - Both contracts now inherit from ContractVersionBase for consistent version tracking
10
18
  - Implements IVersionedContract interface with contractVersion() returning "0.2.5"
11
19
 
@@ -31,7 +39,6 @@
31
39
  ### Patch Changes
32
40
 
33
41
  - 98e02520: Fix dual positive deltas consolidation in burnAndRefund
34
-
35
42
  - Consolidate payouts to single currency when burning limit orders with dual positive deltas
36
43
  - Extract path-building logic into reusable `_buildSingleHopPath` helper function
37
44
  - Ensure users receive proceeds in their original deposit currency by swapping counter-assets
@@ -47,7 +54,6 @@
47
54
  ### Patch Changes
48
55
 
49
56
  - bb2c2b76: Replace AccessManager with PermittedCallers + Ownable2Step for access control in ZoraLimitOrderBook and SwapWithLimitOrders contracts.
50
-
51
57
  - Remove AccessManager and SimpleAccessManaged pattern
52
58
  - Use OpenZeppelin Ownable2Step for two-step ownership transfer
53
59
  - Add `permittedCallers` mapping to gate `create()` access (public by default, owner can restrict)
@@ -92,7 +98,6 @@
92
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.
93
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.
94
100
  - 83726a0e: Remove unused settle negative deltas logic
95
-
96
101
  - Remove redundant `_settleNegativeDeltas` function that was never executed
97
102
  - Simplify limit order closure logic by removing unnecessary delta settlement
98
103
 
@@ -122,19 +127,16 @@
122
127
  - c59a6fac: Initial release of limit orders protocol
123
128
 
124
129
  Introduces a limit order system built on top of Uniswap V4 concentrated liquidity positions:
125
-
126
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
127
131
  - **FIFO Queue System**: Orders are organized in queues by `(poolKeyHash, coin, tick)` with bitmap-based tick tracking for efficient iteration
128
132
  - **Epoch-Based Fill Protection**: Orders cannot be filled in the same epoch they were created, preventing same-transaction manipulation
129
133
 
130
134
  **Fill Integration Modes:**
131
-
132
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
133
136
  - **Router Fallback**: For legacy hooks, the router can call `fill()` post-swap
134
137
  - **Third-party Fill**: Anyone can call `fill()` when the PoolManager is locked, incentivized by LP fee collection
135
138
 
136
139
  **Fee Model:**
137
-
138
140
  - Fill referrals receive accrued LP fees from filled positions
139
141
  - Makers receive full proceeds on withdrawal
140
142
  - Makers can cancel their limit orders to withdraw the backing currency
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",