@zoralabs/limit-orders 0.2.4 → 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.
Files changed (50) hide show
  1. package/.abi-stability +0 -21
  2. package/.turbo/turbo-build$colon$js.log +51 -51
  3. package/AUDIT_NOTES.md +0 -1
  4. package/CHANGELOG.md +19 -0
  5. package/README.md +6 -9
  6. package/SPEC.md +5 -5
  7. package/abis/ContractVersionBase.json +15 -0
  8. package/abis/IVersionedContract.json +15 -0
  9. package/abis/SwapWithLimitOrders.json +13 -0
  10. package/abis/ZoraLimitOrderBook.json +13 -0
  11. package/cache/solidity-files-cache.json +1 -1
  12. package/dist/index.cjs +14 -0
  13. package/dist/index.cjs.map +1 -1
  14. package/dist/index.js +14 -0
  15. package/dist/index.js.map +1 -1
  16. package/dist/wagmiGenerated.d.ts +20 -0
  17. package/dist/wagmiGenerated.d.ts.map +1 -1
  18. package/out/BytesLib.sol/BytesLib.json +1 -1
  19. package/out/ContractVersionBase.sol/ContractVersionBase.json +1 -0
  20. package/out/ISwapRouter.sol/ISwapRouter.json +1 -1
  21. package/out/IUniswapV3SwapCallback.sol/IUniswapV3SwapCallback.json +1 -1
  22. package/out/IVersionedContract.sol/IVersionedContract.json +1 -0
  23. package/out/IZoraLimitOrderBook.sol/IZoraLimitOrderBook.json +1 -1
  24. package/out/LimitOrderBitmap.sol/LimitOrderBitmap.json +1 -1
  25. package/out/LimitOrderCommon.sol/LimitOrderCommon.json +1 -1
  26. package/out/LimitOrderCreate.sol/LimitOrderCreate.json +1 -1
  27. package/out/LimitOrderFill.sol/LimitOrderFill.json +1 -1
  28. package/out/LimitOrderLiquidity.sol/LimitOrderLiquidity.json +1 -1
  29. package/out/LimitOrderQueues.sol/LimitOrderQueues.json +1 -1
  30. package/out/LimitOrderStorage.sol/LimitOrderStorage.json +1 -1
  31. package/out/LimitOrderTypes.sol/LimitOrderTypes.json +1 -1
  32. package/out/LimitOrderViews.sol/LimitOrderViews.json +1 -1
  33. package/out/LimitOrderWithdraw.sol/LimitOrderWithdraw.json +1 -1
  34. package/out/Path.sol/Path.json +1 -1
  35. package/out/Permit2Payments.sol/Permit2Payments.json +1 -1
  36. package/out/PermittedCallers.sol/PermittedCallers.json +1 -1
  37. package/out/SwapLimitOrders.sol/SwapLimitOrders.json +1 -1
  38. package/out/SwapWithLimitOrders.sol/SwapWithLimitOrders.json +1 -1
  39. package/out/ZoraLimitOrderBook.sol/ZoraLimitOrderBook.json +1 -1
  40. package/out/build-info/{68b2e124c4a02a45.json → b6efea4394bdeb7d.json} +1 -1
  41. package/package/wagmiGenerated.ts +14 -0
  42. package/package.json +2 -2
  43. package/src/ZoraLimitOrderBook.sol +4 -1
  44. package/src/router/SwapWithLimitOrders.sol +2 -2
  45. package/src/version/ContractVersionBase.sol +14 -0
  46. package/test/LimitOrderAccessControl.t.sol +8 -2
  47. package/AUDIT_RFP.md +0 -408
  48. package/abis/ISetLimitOrderConfig.json +0 -27
  49. package/out/ISetLimitOrderConfig.sol/ISetLimitOrderConfig.json +0 -1
  50. package/src/router/ISetLimitOrderConfig.sol +0 -12
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.4 build:js /home/runner/work/zora-protocol-private/zora-protocol-private/packages/limit-orders
2
+ > @zoralabs/limit-orders@0.2.6 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.4 wagmi:generate /home/runner/work/zora-protocol-private/zora-protocol-private/packages/limit-orders
6
+ > @zoralabs/limit-orders@0.2.6 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.4 build:contracts:minimal /home/runner/work/zora-protocol-private/zora-protocol-private/packages/limit-orders
10
+ > @zoralabs/limit-orders@0.2.6 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 93 files with Solc 0.8.28
14
- Solc 0.8.28 finished in 7.24s
13
+ Compiling 94 files with Solc 0.8.28
14
+ Solc 0.8.28 finished in 8.46s
15
15
  Compiler run successful!
16
16
  - Validating plugins
17
17
  ✔ Validating plugins
@@ -26,61 +26,61 @@ 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.4 copy-abis /home/runner/work/zora-protocol-private/zora-protocol-private/packages/limit-orders
29
+ > @zoralabs/limit-orders@0.2.6 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.4 prettier:write /home/runner/work/zora-protocol-private/zora-protocol-private/packages/limit-orders
33
+ > @zoralabs/limit-orders@0.2.6 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 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
- src/libs/LimitOrderTypes.sol 3ms (unchanged)
46
- src/libs/LimitOrderViews.sol 105ms (unchanged)
47
- src/libs/LimitOrderWithdraw.sol 109ms (unchanged)
48
- src/libs/Permit2Payments.sol 18ms (unchanged)
49
- src/libs/SwapLimitOrders.sol 163ms (unchanged)
50
- src/router/ISetLimitOrderConfig.sol 1ms (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
- test/unit/LimitOrderCreateUnit.t.sol 193ms (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)
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)
44
+ src/libs/LimitOrderStorage.sol 15ms (unchanged)
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)
57
+ 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)
73
73
  CLI Building entry: package/index.ts
74
74
  CLI Using tsconfig: tsconfig.json
75
- CLI tsup v8.4.0
75
+ CLI tsup v8.5.1
76
76
  CLI Using tsup config: /home/runner/work/zora-protocol-private/zora-protocol-private/packages/limit-orders/tsup.config.ts
77
77
  CLI Target: es2021
78
78
  CLI Cleaning output folder
79
79
  CJS Build start
80
80
  ESM Build start
81
- CJS dist/index.cjs 25.65 KB
82
- CJS dist/index.cjs.map 44.14 KB
83
- CJS ⚡️ Build success in 36ms
84
- ESM dist/index.js 24.48 KB
85
- ESM dist/index.js.map 44.03 KB
86
- ESM ⚡️ Build success in 35ms
81
+ ESM dist/index.js 24.82 KB
82
+ ESM dist/index.js.map 44.67 KB
83
+ ESM ⚡️ Build success in 42ms
84
+ CJS dist/index.cjs 25.99 KB
85
+ CJS dist/index.cjs.map 44.79 KB
86
+ CJS ⚡️ Build success in 42ms
package/AUDIT_NOTES.md CHANGED
@@ -6,7 +6,6 @@ Related docs:
6
6
 
7
7
  - [`README.md`](./README.md) — architecture & diagrams
8
8
  - [`SPEC.md`](./SPEC.md) — normative behavior + invariants
9
- - [`AUDIT_RFP.md`](./AUDIT_RFP.md) — audit scope
10
9
 
11
10
  ---
12
11
 
package/CHANGELOG.md CHANGED
@@ -1,5 +1,24 @@
1
1
  # @zoralabs/limit-orders
2
2
 
3
+ ## 0.2.6
4
+
5
+ ### Patch Changes
6
+
7
+ - df0b0a1d: Add ContractVersionBase inheritance to ZoraLimitOrderBook and SwapWithLimitOrders
8
+
9
+ - Both contracts now inherit from ContractVersionBase for consistent version tracking
10
+ - Implements IVersionedContract interface with contractVersion() returning "0.2.5"
11
+
12
+ - b374124a: Initialize max fill count to 50 in ZoraLimitOrderBook constructor
13
+
14
+ Sets a default maximum fill count of 50 orders per transaction in the constructor, providing consistent behavior from deployment without requiring separate configuration.
15
+
16
+ ## 0.2.5
17
+
18
+ ### Patch Changes
19
+
20
+ - 9a46fe15: Remove unused ISetLimitOrderConfig interface from SwapWithLimitOrders router
21
+
3
22
  ## 0.2.4
4
23
 
5
24
  ### Patch Changes
package/README.md CHANGED
@@ -5,9 +5,6 @@
5
5
  - **Architecture + diagrams (this doc)**: [`README.md`](./README.md)
6
6
  - **Normative behavior + invariants**: [`SPEC.md`](./SPEC.md)
7
7
  - **Threat model + audit checklist**: [`AUDIT_NOTES.md`](./AUDIT_NOTES.md)
8
- - **Audit scope / process**: [`AUDIT_RFP.md`](./AUDIT_RFP.md)
9
-
10
- If you’re auditing: read **README → SPEC → AUDIT_NOTES → code**.
11
8
 
12
9
  ### Table of Contents
13
10
 
@@ -155,8 +152,7 @@ Components
155
152
 
156
153
  4. Access Control
157
154
 
158
- - [`SimpleAccessManaged.sol`](./src/access/SimpleAccessManaged.sol) - Base contract for access-controlled functions
159
- - [`SimpleAccessManager.sol`](./src/access/SimpleAccessManager.sol) - Role-based access manager implementation
155
+ - [`PermittedCallers.sol`](./src/access/PermittedCallers.sol) - Ownable2Step-based access control with permitted callers mapping
160
156
 
161
157
  #### Tick Queue System
162
158
 
@@ -456,13 +452,14 @@ This enables.
456
452
  - Potential future upgradeability
457
453
  - Gas-efficient storage access
458
454
 
459
- Access Control via SimpleAccessManaged
455
+ Access Control via PermittedCallers
460
456
 
461
- Uses OpenZeppelin's access control pattern with a separate `AccessManager` contract.
457
+ Uses OpenZeppelin's `Ownable2Step` pattern with a simple permitted callers mapping.
462
458
 
463
- - Flexible role-based permissions
459
+ - By default, `PUBLIC_ACCESS` (address(0)) is permitted, meaning anyone can call
460
+ - Owner can restrict access by setting `PUBLIC_ACCESS` to false and whitelisting specific addresses
464
461
  - Can restrict `create()` to specific routers/hooks if needed
465
- - Authority can be transferred or upgraded
462
+ - Two-step ownership transfer for safe admin transitions
466
463
 
467
464
  ### 4. Fill Execution Paths
468
465
 
package/SPEC.md CHANGED
@@ -4,9 +4,8 @@ This document is the **behavioral specification** for the Limit Orders system in
4
4
 
5
5
  Related docs:
6
6
 
7
- - [`README.md`](./README.md) — architecture & diagrams (canonical where to start)
7
+ - [`README.md`](./README.md) — architecture & diagrams (canonical "where to start")
8
8
  - [`AUDIT_NOTES.md`](./AUDIT_NOTES.md) — threat model & audit checklist
9
- - [`AUDIT_RFP.md`](./AUDIT_RFP.md) — audit scope & deliverables
10
9
 
11
10
  ---
12
11
 
@@ -65,7 +64,7 @@ This section defines **intended behavior** for the public entrypoints. For exact
65
64
 
66
65
  **Authorization**
67
66
 
68
- - `create()` is access-controlled via `SimpleAccessManaged` authority checks.
67
+ - `create()` is access-controlled via `PermittedCallers` which uses an `onlyPermitted` modifier.
69
68
 
70
69
  **Effects**
71
70
 
@@ -163,9 +162,10 @@ This section defines **intended behavior** for the public entrypoints. For exact
163
162
  - Updates the stored default max fills per call.
164
163
  - Must not allow admin to withdraw user funds or block withdrawals.
165
164
 
166
- **Authority management**
165
+ **Permitted callers management**
167
166
 
168
- - Authority contract can be updated as per `SimpleAccessManaged` design.
167
+ - Owner can update permitted callers via `setPermittedCallers()`.
168
+ - Ownership can be transferred via two-step process (`Ownable2Step`).
169
169
 
170
170
  ---
171
171
 
@@ -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
+ ]
@@ -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",