bitbadgesjs-sdk 0.29.2 → 0.30.0

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 (245) hide show
  1. package/dist/cjs/api-indexer/BitBadgesApi.js +13 -17
  2. package/dist/cjs/api-indexer/BitBadgesApi.js.map +1 -1
  3. package/dist/cjs/api-indexer/BitBadgesCollection.d.ts +4 -2
  4. package/dist/cjs/api-indexer/BitBadgesCollection.d.ts.map +1 -1
  5. package/dist/cjs/api-indexer/BitBadgesCollection.js +1 -0
  6. package/dist/cjs/api-indexer/BitBadgesCollection.js.map +1 -1
  7. package/dist/cjs/api-indexer/base.d.ts +2 -1
  8. package/dist/cjs/api-indexer/base.d.ts.map +1 -1
  9. package/dist/cjs/api-indexer/base.js +4 -12
  10. package/dist/cjs/api-indexer/base.js.map +1 -1
  11. package/dist/cjs/api-indexer/docs-types/docs.d.ts +0 -1
  12. package/dist/cjs/api-indexer/docs-types/docs.d.ts.map +1 -1
  13. package/dist/cjs/api-indexer/docs-types/docs.js +0 -1
  14. package/dist/cjs/api-indexer/docs-types/docs.js.map +1 -1
  15. package/dist/cjs/api-indexer/docs-types/interfaces.d.ts +0 -1
  16. package/dist/cjs/api-indexer/docs-types/interfaces.d.ts.map +1 -1
  17. package/dist/cjs/api-indexer/docs-types/interfaces.js.map +1 -1
  18. package/dist/cjs/api-indexer/metadata/tokenMetadata.d.ts +4 -4
  19. package/dist/cjs/api-indexer/metadata/tokenMetadata.d.ts.map +1 -1
  20. package/dist/cjs/api-indexer/requests/requests.d.ts +0 -2
  21. package/dist/cjs/api-indexer/requests/requests.d.ts.map +1 -1
  22. package/dist/cjs/api-indexer/requests/requests.js.map +1 -1
  23. package/dist/cjs/core/addressLists.d.ts +3 -0
  24. package/dist/cjs/core/addressLists.d.ts.map +1 -1
  25. package/dist/cjs/core/addressLists.js +39 -0
  26. package/dist/cjs/core/addressLists.js.map +1 -1
  27. package/dist/cjs/core/approvals.d.ts +11 -2
  28. package/dist/cjs/core/approvals.d.ts.map +1 -1
  29. package/dist/cjs/core/approvals.js +50 -8
  30. package/dist/cjs/core/approvals.js.map +1 -1
  31. package/dist/cjs/core/balances.d.ts +12 -0
  32. package/dist/cjs/core/balances.d.ts.map +1 -1
  33. package/dist/cjs/core/balances.js +37 -1
  34. package/dist/cjs/core/balances.js.map +1 -1
  35. package/dist/cjs/core/ibc-wrappers.d.ts +2 -1
  36. package/dist/cjs/core/ibc-wrappers.d.ts.map +1 -1
  37. package/dist/cjs/core/ibc-wrappers.js +21 -2
  38. package/dist/cjs/core/ibc-wrappers.js.map +1 -1
  39. package/dist/cjs/core/misc.d.ts +38 -2
  40. package/dist/cjs/core/misc.d.ts.map +1 -1
  41. package/dist/cjs/core/misc.js +107 -4
  42. package/dist/cjs/core/misc.js.map +1 -1
  43. package/dist/cjs/core/misc.spec.d.ts +2 -0
  44. package/dist/cjs/core/misc.spec.d.ts.map +1 -0
  45. package/dist/cjs/core/misc.spec.js +363 -0
  46. package/dist/cjs/core/misc.spec.js.map +1 -0
  47. package/dist/cjs/core/overlaps.d.ts.map +1 -1
  48. package/dist/cjs/core/overlaps.js +6 -22
  49. package/dist/cjs/core/overlaps.js.map +1 -1
  50. package/dist/cjs/core/overlaps.spec.d.ts +2 -0
  51. package/dist/cjs/core/overlaps.spec.d.ts.map +1 -0
  52. package/dist/cjs/core/overlaps.spec.js +529 -0
  53. package/dist/cjs/core/overlaps.spec.js.map +1 -0
  54. package/dist/cjs/core/transfers.spec.js +267 -0
  55. package/dist/cjs/core/transfers.spec.js.map +1 -1
  56. package/dist/cjs/interfaces/types/approvals.d.ts +4 -1
  57. package/dist/cjs/interfaces/types/approvals.d.ts.map +1 -1
  58. package/dist/cjs/interfaces/types/core.d.ts +26 -0
  59. package/dist/cjs/interfaces/types/core.d.ts.map +1 -1
  60. package/dist/cjs/proto/google/protobuf/descriptor_pb.js +2 -2
  61. package/dist/cjs/proto/google/protobuf/descriptor_pb.js.map +1 -1
  62. package/dist/cjs/proto/tokenization/approval_criteria_pb.d.ts +4 -1
  63. package/dist/cjs/proto/tokenization/approval_criteria_pb.d.ts.map +1 -1
  64. package/dist/cjs/proto/tokenization/approval_criteria_pb.js +6 -0
  65. package/dist/cjs/proto/tokenization/approval_criteria_pb.js.map +1 -1
  66. package/dist/cjs/proto/tokenization/challenges_pb.d.ts +17 -0
  67. package/dist/cjs/proto/tokenization/challenges_pb.d.ts.map +1 -1
  68. package/dist/cjs/proto/tokenization/challenges_pb.js +38 -1
  69. package/dist/cjs/proto/tokenization/challenges_pb.js.map +1 -1
  70. package/dist/cjs/proto/tokenization/collections_pb.d.ts +14 -0
  71. package/dist/cjs/proto/tokenization/collections_pb.d.ts.map +1 -1
  72. package/dist/cjs/proto/tokenization/collections_pb.js +31 -1
  73. package/dist/cjs/proto/tokenization/collections_pb.js.map +1 -1
  74. package/dist/cjs/proto/tokenization/genesis_pb.d.ts +3 -1
  75. package/dist/cjs/proto/tokenization/genesis_pb.d.ts.map +1 -1
  76. package/dist/cjs/proto/tokenization/genesis_pb.js +4 -0
  77. package/dist/cjs/proto/tokenization/genesis_pb.js.map +1 -1
  78. package/dist/cjs/proto/tokenization/icq_pb.d.ts +84 -0
  79. package/dist/cjs/proto/tokenization/icq_pb.d.ts.map +1 -0
  80. package/dist/cjs/proto/tokenization/icq_pb.js +185 -0
  81. package/dist/cjs/proto/tokenization/icq_pb.js.map +1 -0
  82. package/dist/cjs/proto/tokenization/packet_pb.d.ts +19 -0
  83. package/dist/cjs/proto/tokenization/packet_pb.d.ts.map +1 -1
  84. package/dist/cjs/proto/tokenization/packet_pb.js +7 -0
  85. package/dist/cjs/proto/tokenization/packet_pb.js.map +1 -1
  86. package/dist/cjs/proto/tokenization/query_pb.d.ts +23 -1
  87. package/dist/cjs/proto/tokenization/query_pb.d.ts.map +1 -1
  88. package/dist/cjs/proto/tokenization/query_pb.js +50 -1
  89. package/dist/cjs/proto/tokenization/query_pb.js.map +1 -1
  90. package/dist/cjs/proto/tokenization/tx_pb.d.ts +2 -0
  91. package/dist/cjs/proto/tokenization/tx_pb.d.ts.map +1 -1
  92. package/dist/cjs/proto/tokenization/tx_pb.js +3 -0
  93. package/dist/cjs/proto/tokenization/tx_pb.js.map +1 -1
  94. package/dist/cjs/transactions/precompile/abi-data.d.ts +333 -0
  95. package/dist/cjs/transactions/precompile/abi-data.d.ts.map +1 -1
  96. package/dist/cjs/transactions/precompile/abi-data.js +202 -1
  97. package/dist/cjs/transactions/precompile/abi-data.js.map +1 -1
  98. package/dist/cjs/transactions/precompile/abi.d.ts +2 -0
  99. package/dist/cjs/transactions/precompile/abi.d.ts.map +1 -1
  100. package/dist/cjs/transactions/precompile/abi.js +3 -1
  101. package/dist/cjs/transactions/precompile/abi.js.map +1 -1
  102. package/dist/cjs/transactions/precompile/data-converter.d.ts +19 -0
  103. package/dist/cjs/transactions/precompile/data-converter.d.ts.map +1 -1
  104. package/dist/cjs/transactions/precompile/data-converter.js +118 -0
  105. package/dist/cjs/transactions/precompile/data-converter.js.map +1 -1
  106. package/dist/cjs/transactions/precompile/function-mapper.d.ts +7 -1
  107. package/dist/cjs/transactions/precompile/function-mapper.d.ts.map +1 -1
  108. package/dist/cjs/transactions/precompile/function-mapper.js +13 -1
  109. package/dist/cjs/transactions/precompile/function-mapper.js.map +1 -1
  110. package/dist/cjs/transactions/precompile/index.d.ts +4 -3
  111. package/dist/cjs/transactions/precompile/index.d.ts.map +1 -1
  112. package/dist/cjs/transactions/precompile/index.js +15 -1
  113. package/dist/cjs/transactions/precompile/index.js.map +1 -1
  114. package/dist/cjs/transactions/precompile/type-detector.d.ts +13 -1
  115. package/dist/cjs/transactions/precompile/type-detector.d.ts.map +1 -1
  116. package/dist/cjs/transactions/precompile/type-detector.js +73 -0
  117. package/dist/cjs/transactions/precompile/type-detector.js.map +1 -1
  118. package/dist/cjs/transactions/precompile/utils.d.ts +4 -2
  119. package/dist/cjs/transactions/precompile/utils.d.ts.map +1 -1
  120. package/dist/cjs/transactions/precompile/utils.js +113 -2
  121. package/dist/cjs/transactions/precompile/utils.js.map +1 -1
  122. package/dist/cjs/tsconfig.build.tsbuildinfo +1 -1
  123. package/dist/esm/api-indexer/BitBadgesApi.js +13 -17
  124. package/dist/esm/api-indexer/BitBadgesApi.js.map +1 -1
  125. package/dist/esm/api-indexer/BitBadgesCollection.d.ts +4 -2
  126. package/dist/esm/api-indexer/BitBadgesCollection.d.ts.map +1 -1
  127. package/dist/esm/api-indexer/BitBadgesCollection.js +3 -1
  128. package/dist/esm/api-indexer/BitBadgesCollection.js.map +1 -1
  129. package/dist/esm/api-indexer/base.d.ts +2 -1
  130. package/dist/esm/api-indexer/base.d.ts.map +1 -1
  131. package/dist/esm/api-indexer/base.js +7 -12
  132. package/dist/esm/api-indexer/base.js.map +1 -1
  133. package/dist/esm/api-indexer/docs-types/docs.d.ts +0 -1
  134. package/dist/esm/api-indexer/docs-types/docs.d.ts.map +1 -1
  135. package/dist/esm/api-indexer/docs-types/docs.js +0 -2
  136. package/dist/esm/api-indexer/docs-types/docs.js.map +1 -1
  137. package/dist/esm/api-indexer/docs-types/interfaces.d.ts +0 -1
  138. package/dist/esm/api-indexer/docs-types/interfaces.d.ts.map +1 -1
  139. package/dist/esm/api-indexer/docs-types/interfaces.js.map +1 -1
  140. package/dist/esm/api-indexer/metadata/tokenMetadata.d.ts +4 -4
  141. package/dist/esm/api-indexer/metadata/tokenMetadata.d.ts.map +1 -1
  142. package/dist/esm/api-indexer/requests/requests.d.ts +0 -2
  143. package/dist/esm/api-indexer/requests/requests.d.ts.map +1 -1
  144. package/dist/esm/api-indexer/requests/requests.js.map +1 -1
  145. package/dist/esm/core/addressLists.d.ts +3 -0
  146. package/dist/esm/core/addressLists.d.ts.map +1 -1
  147. package/dist/esm/core/addressLists.js +39 -0
  148. package/dist/esm/core/addressLists.js.map +1 -1
  149. package/dist/esm/core/approvals.d.ts +11 -2
  150. package/dist/esm/core/approvals.d.ts.map +1 -1
  151. package/dist/esm/core/approvals.js +57 -9
  152. package/dist/esm/core/approvals.js.map +1 -1
  153. package/dist/esm/core/balances.d.ts +12 -0
  154. package/dist/esm/core/balances.d.ts.map +1 -1
  155. package/dist/esm/core/balances.js +35 -0
  156. package/dist/esm/core/balances.js.map +1 -1
  157. package/dist/esm/core/ibc-wrappers.d.ts +2 -1
  158. package/dist/esm/core/ibc-wrappers.d.ts.map +1 -1
  159. package/dist/esm/core/ibc-wrappers.js +22 -2
  160. package/dist/esm/core/ibc-wrappers.js.map +1 -1
  161. package/dist/esm/core/misc.d.ts +38 -2
  162. package/dist/esm/core/misc.d.ts.map +1 -1
  163. package/dist/esm/core/misc.js +114 -3
  164. package/dist/esm/core/misc.js.map +1 -1
  165. package/dist/esm/core/misc.spec.d.ts +2 -0
  166. package/dist/esm/core/misc.spec.d.ts.map +1 -0
  167. package/dist/esm/core/misc.spec.js +361 -0
  168. package/dist/esm/core/misc.spec.js.map +1 -0
  169. package/dist/esm/core/overlaps.d.ts.map +1 -1
  170. package/dist/esm/core/overlaps.js +6 -22
  171. package/dist/esm/core/overlaps.js.map +1 -1
  172. package/dist/esm/core/overlaps.spec.d.ts +2 -0
  173. package/dist/esm/core/overlaps.spec.d.ts.map +1 -0
  174. package/dist/esm/core/overlaps.spec.js +527 -0
  175. package/dist/esm/core/overlaps.spec.js.map +1 -0
  176. package/dist/esm/core/transfers.spec.js +267 -0
  177. package/dist/esm/core/transfers.spec.js.map +1 -1
  178. package/dist/esm/interfaces/types/approvals.d.ts +4 -1
  179. package/dist/esm/interfaces/types/approvals.d.ts.map +1 -1
  180. package/dist/esm/interfaces/types/core.d.ts +26 -0
  181. package/dist/esm/interfaces/types/core.d.ts.map +1 -1
  182. package/dist/esm/proto/google/protobuf/descriptor_pb.js +2 -2
  183. package/dist/esm/proto/google/protobuf/descriptor_pb.js.map +1 -1
  184. package/dist/esm/proto/tokenization/approval_criteria_pb.d.ts +4 -1
  185. package/dist/esm/proto/tokenization/approval_criteria_pb.d.ts.map +1 -1
  186. package/dist/esm/proto/tokenization/approval_criteria_pb.js +7 -1
  187. package/dist/esm/proto/tokenization/approval_criteria_pb.js.map +1 -1
  188. package/dist/esm/proto/tokenization/challenges_pb.d.ts +17 -0
  189. package/dist/esm/proto/tokenization/challenges_pb.d.ts.map +1 -1
  190. package/dist/esm/proto/tokenization/challenges_pb.js +36 -0
  191. package/dist/esm/proto/tokenization/challenges_pb.js.map +1 -1
  192. package/dist/esm/proto/tokenization/collections_pb.d.ts +14 -0
  193. package/dist/esm/proto/tokenization/collections_pb.d.ts.map +1 -1
  194. package/dist/esm/proto/tokenization/collections_pb.js +29 -0
  195. package/dist/esm/proto/tokenization/collections_pb.js.map +1 -1
  196. package/dist/esm/proto/tokenization/genesis_pb.d.ts +3 -1
  197. package/dist/esm/proto/tokenization/genesis_pb.d.ts.map +1 -1
  198. package/dist/esm/proto/tokenization/genesis_pb.js +5 -1
  199. package/dist/esm/proto/tokenization/genesis_pb.js.map +1 -1
  200. package/dist/esm/proto/tokenization/icq_pb.d.ts +84 -0
  201. package/dist/esm/proto/tokenization/icq_pb.d.ts.map +1 -0
  202. package/dist/esm/proto/tokenization/icq_pb.js +176 -0
  203. package/dist/esm/proto/tokenization/icq_pb.js.map +1 -0
  204. package/dist/esm/proto/tokenization/packet_pb.d.ts +19 -0
  205. package/dist/esm/proto/tokenization/packet_pb.d.ts.map +1 -1
  206. package/dist/esm/proto/tokenization/packet_pb.js +7 -0
  207. package/dist/esm/proto/tokenization/packet_pb.js.map +1 -1
  208. package/dist/esm/proto/tokenization/query_pb.d.ts +23 -1
  209. package/dist/esm/proto/tokenization/query_pb.d.ts.map +1 -1
  210. package/dist/esm/proto/tokenization/query_pb.js +49 -1
  211. package/dist/esm/proto/tokenization/query_pb.js.map +1 -1
  212. package/dist/esm/proto/tokenization/tx_pb.d.ts +2 -0
  213. package/dist/esm/proto/tokenization/tx_pb.d.ts.map +1 -1
  214. package/dist/esm/proto/tokenization/tx_pb.js +3 -0
  215. package/dist/esm/proto/tokenization/tx_pb.js.map +1 -1
  216. package/dist/esm/transactions/precompile/abi-data.d.ts +333 -0
  217. package/dist/esm/transactions/precompile/abi-data.d.ts.map +1 -1
  218. package/dist/esm/transactions/precompile/abi-data.js +201 -0
  219. package/dist/esm/transactions/precompile/abi-data.js.map +1 -1
  220. package/dist/esm/transactions/precompile/abi.d.ts +2 -0
  221. package/dist/esm/transactions/precompile/abi.d.ts.map +1 -1
  222. package/dist/esm/transactions/precompile/abi.js +2 -0
  223. package/dist/esm/transactions/precompile/abi.js.map +1 -1
  224. package/dist/esm/transactions/precompile/data-converter.d.ts +19 -0
  225. package/dist/esm/transactions/precompile/data-converter.d.ts.map +1 -1
  226. package/dist/esm/transactions/precompile/data-converter.js +112 -0
  227. package/dist/esm/transactions/precompile/data-converter.js.map +1 -1
  228. package/dist/esm/transactions/precompile/function-mapper.d.ts +7 -1
  229. package/dist/esm/transactions/precompile/function-mapper.d.ts.map +1 -1
  230. package/dist/esm/transactions/precompile/function-mapper.js +13 -1
  231. package/dist/esm/transactions/precompile/function-mapper.js.map +1 -1
  232. package/dist/esm/transactions/precompile/index.d.ts +4 -3
  233. package/dist/esm/transactions/precompile/index.d.ts.map +1 -1
  234. package/dist/esm/transactions/precompile/index.js +3 -2
  235. package/dist/esm/transactions/precompile/index.js.map +1 -1
  236. package/dist/esm/transactions/precompile/type-detector.d.ts +13 -1
  237. package/dist/esm/transactions/precompile/type-detector.d.ts.map +1 -1
  238. package/dist/esm/transactions/precompile/type-detector.js +67 -0
  239. package/dist/esm/transactions/precompile/type-detector.js.map +1 -1
  240. package/dist/esm/transactions/precompile/utils.d.ts +4 -2
  241. package/dist/esm/transactions/precompile/utils.d.ts.map +1 -1
  242. package/dist/esm/transactions/precompile/utils.js +111 -4
  243. package/dist/esm/transactions/precompile/utils.js.map +1 -1
  244. package/dist/esm/tsconfig-esm.build.tsbuildinfo +1 -1
  245. package/package.json +2 -2
@@ -0,0 +1,529 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const addressLists_js_1 = require("./addressLists.js");
4
+ const overlaps_js_1 = require("./overlaps.js");
5
+ const uintRanges_js_1 = require("./uintRanges.js");
6
+ const alice = 'bb1e0w5t53nrq7p66fye6c8p0ynyhf6y24lke5430';
7
+ const bob = 'bb1jmjfq0tplp9tmx4v9uemw72y4d2wa5nrjmmk3q';
8
+ const charlie = 'bb1xyxs3skf3f4jfqeuv89yyaqvjc6lffav9altme';
9
+ function createPermissionDetails(tokenIdRange, timelineTimeRange, transferTimeRange, ownershipTimeRange, toList, fromList, initiatedByList, approvalIdList = { addresses: [], whitelist: false }) {
10
+ return {
11
+ tokenId: new uintRanges_js_1.UintRange(tokenIdRange),
12
+ timelineTime: new uintRanges_js_1.UintRange(timelineTimeRange),
13
+ transferTime: new uintRanges_js_1.UintRange(transferTimeRange),
14
+ ownershipTime: new uintRanges_js_1.UintRange(ownershipTimeRange),
15
+ toList: new addressLists_js_1.AddressList({
16
+ listId: '',
17
+ addresses: toList.addresses,
18
+ whitelist: toList.whitelist,
19
+ uri: '',
20
+ customData: ''
21
+ }),
22
+ fromList: new addressLists_js_1.AddressList({
23
+ listId: '',
24
+ addresses: fromList.addresses,
25
+ whitelist: fromList.whitelist,
26
+ uri: '',
27
+ customData: ''
28
+ }),
29
+ initiatedByList: new addressLists_js_1.AddressList({
30
+ listId: '',
31
+ addresses: initiatedByList.addresses,
32
+ whitelist: initiatedByList.whitelist,
33
+ uri: '',
34
+ customData: ''
35
+ }),
36
+ approvalIdList: new addressLists_js_1.AddressList({
37
+ listId: '',
38
+ addresses: approvalIdList.addresses,
39
+ whitelist: approvalIdList.whitelist,
40
+ uri: '',
41
+ customData: ''
42
+ }),
43
+ permanentlyPermittedTimes: uintRanges_js_1.UintRangeArray.From([]),
44
+ permanentlyForbiddenTimes: uintRanges_js_1.UintRangeArray.From([]),
45
+ arbitraryValue: {}
46
+ };
47
+ }
48
+ describe('overlaps', () => {
49
+ describe('universalRemoveOverlaps', () => {
50
+ test('should remove exact overlap (single point from range)', () => {
51
+ const handled = createPermissionDetails({ start: 5n, end: 5n }, { start: 5n, end: 5n }, { start: 5n, end: 5n }, { start: 5n, end: 5n }, { addresses: [alice, bob, charlie], whitelist: true }, { addresses: [alice, bob, charlie], whitelist: true }, { addresses: [alice, bob, charlie], whitelist: true });
52
+ const valueToCheck = createPermissionDetails({ start: 1n, end: 10n }, { start: 1n, end: 10n }, { start: 1n, end: 10n }, { start: 1n, end: 10n }, { addresses: [alice, bob, charlie], whitelist: true }, { addresses: [alice, bob, charlie], whitelist: true }, { addresses: [alice, bob, charlie], whitelist: true });
53
+ const [remaining, removed] = (0, overlaps_js_1.universalRemoveOverlaps)(handled, valueToCheck);
54
+ expect(remaining.length).toBe(8);
55
+ expect(removed.length).toBe(1);
56
+ expect(remaining[0].timelineTime.start).toBe(1n);
57
+ expect(remaining[0].timelineTime.end).toBe(4n);
58
+ expect(remaining[0].tokenId.start).toBe(1n);
59
+ expect(remaining[0].tokenId.end).toBe(10n);
60
+ expect(remaining[1].timelineTime.start).toBe(6n);
61
+ expect(remaining[1].timelineTime.end).toBe(10n);
62
+ expect(removed[0].timelineTime.start).toBe(5n);
63
+ expect(removed[0].timelineTime.end).toBe(5n);
64
+ expect(removed[0].tokenId.start).toBe(5n);
65
+ expect(removed[0].tokenId.end).toBe(5n);
66
+ });
67
+ test('should handle no overlap (disjoint ranges)', () => {
68
+ const handled = createPermissionDetails({ start: 100n, end: 200n }, { start: 1n, end: 1n }, { start: 1n, end: 1n }, { start: 1n, end: 1n }, { addresses: [], whitelist: false }, { addresses: [], whitelist: false }, { addresses: [], whitelist: false });
69
+ const valueToCheck = createPermissionDetails({ start: 1n, end: 10n }, { start: 1n, end: 1n }, { start: 1n, end: 1n }, { start: 1n, end: 1n }, { addresses: [], whitelist: false }, { addresses: [], whitelist: false }, { addresses: [], whitelist: false });
70
+ const [remaining, removed] = (0, overlaps_js_1.universalRemoveOverlaps)(handled, valueToCheck);
71
+ expect(remaining.length).toBe(1);
72
+ expect(removed.length).toBe(0);
73
+ expect(remaining[0].tokenId.start).toBe(1n);
74
+ expect(remaining[0].tokenId.end).toBe(10n);
75
+ });
76
+ test('should handle full overlap (handled contains entire valueToCheck)', () => {
77
+ const handled = createPermissionDetails({ start: 1n, end: 100n }, { start: 1n, end: 100n }, { start: 1n, end: 100n }, { start: 1n, end: 100n }, { addresses: [], whitelist: false }, { addresses: [], whitelist: false }, { addresses: [], whitelist: false });
78
+ const valueToCheck = createPermissionDetails({ start: 10n, end: 20n }, { start: 10n, end: 20n }, { start: 10n, end: 20n }, { start: 10n, end: 20n }, { addresses: [], whitelist: false }, { addresses: [], whitelist: false }, { addresses: [], whitelist: false });
79
+ const [remaining, removed] = (0, overlaps_js_1.universalRemoveOverlaps)(handled, valueToCheck);
80
+ expect(remaining.length).toBe(0);
81
+ expect(removed.length).toBe(1);
82
+ expect(removed[0].tokenId.start).toBe(10n);
83
+ expect(removed[0].tokenId.end).toBe(20n);
84
+ });
85
+ test('should handle address list overlap removal', () => {
86
+ const handled = createPermissionDetails({ start: 5n, end: 5n }, { start: 5n, end: 5n }, { start: 5n, end: 5n }, { start: 5n, end: 5n }, { addresses: [alice], whitelist: true }, { addresses: [alice], whitelist: true }, { addresses: [alice], whitelist: true });
87
+ const valueToCheck = createPermissionDetails({ start: 1n, end: 10n }, { start: 1n, end: 10n }, { start: 1n, end: 10n }, { start: 1n, end: 10n }, { addresses: [alice, bob, charlie], whitelist: true }, { addresses: [alice, bob, charlie], whitelist: true }, { addresses: [alice, bob, charlie], whitelist: true });
88
+ const [remaining, removed] = (0, overlaps_js_1.universalRemoveOverlaps)(handled, valueToCheck);
89
+ expect(remaining.length).toBeGreaterThan(0);
90
+ expect(removed.length).toBeGreaterThan(0);
91
+ });
92
+ });
93
+ describe('universalRemoveOverlapFromValues', () => {
94
+ test('should remove overlap from array of values', () => {
95
+ const handled = createPermissionDetails({ start: 5n, end: 5n }, { start: 1n, end: 1n }, { start: 1n, end: 1n }, { start: 1n, end: 1n }, { addresses: [], whitelist: false }, { addresses: [], whitelist: false }, { addresses: [], whitelist: false });
96
+ const valuesToCheck = [
97
+ createPermissionDetails({ start: 1n, end: 10n }, { start: 1n, end: 1n }, { start: 1n, end: 1n }, { start: 1n, end: 1n }, { addresses: [], whitelist: false }, { addresses: [], whitelist: false }, { addresses: [], whitelist: false }),
98
+ createPermissionDetails({ start: 20n, end: 30n }, { start: 1n, end: 1n }, { start: 1n, end: 1n }, { start: 1n, end: 1n }, { addresses: [], whitelist: false }, { addresses: [], whitelist: false }, { addresses: [], whitelist: false })
99
+ ];
100
+ const [newValues, removed] = (0, overlaps_js_1.universalRemoveOverlapFromValues)(handled, valuesToCheck);
101
+ expect(newValues.length).toBeGreaterThan(1);
102
+ expect(removed.length).toBe(1);
103
+ const hasSecondValue = newValues.some((v) => v.tokenId.start === 20n && v.tokenId.end === 30n);
104
+ expect(hasSecondValue).toBe(true);
105
+ });
106
+ });
107
+ describe('getOverlapsAndNonOverlaps', () => {
108
+ test('should correctly identify overlaps between two permission sets', () => {
109
+ const firstDetails = [
110
+ createPermissionDetails({ start: 1n, end: 10n }, { start: 1n, end: 1n }, { start: 1n, end: 1n }, { start: 1n, end: 1n }, { addresses: [], whitelist: false }, { addresses: [], whitelist: false }, { addresses: [], whitelist: false })
111
+ ];
112
+ const secondDetails = [
113
+ createPermissionDetails({ start: 5n, end: 15n }, { start: 1n, end: 1n }, { start: 1n, end: 1n }, { start: 1n, end: 1n }, { addresses: [], whitelist: false }, { addresses: [], whitelist: false }, { addresses: [], whitelist: false })
114
+ ];
115
+ const [allOverlaps, inOldButNotNew, inNewButNotOld] = (0, overlaps_js_1.getOverlapsAndNonOverlaps)(firstDetails, secondDetails);
116
+ expect(allOverlaps.length).toBe(1);
117
+ expect(allOverlaps[0].overlap.tokenId.start).toBe(5n);
118
+ expect(allOverlaps[0].overlap.tokenId.end).toBe(10n);
119
+ expect(inOldButNotNew.length).toBe(1);
120
+ expect(inOldButNotNew[0].tokenId.start).toBe(1n);
121
+ expect(inOldButNotNew[0].tokenId.end).toBe(4n);
122
+ expect(inNewButNotOld.length).toBe(1);
123
+ expect(inNewButNotOld[0].tokenId.start).toBe(11n);
124
+ expect(inNewButNotOld[0].tokenId.end).toBe(15n);
125
+ });
126
+ test('should handle identical permission sets', () => {
127
+ const details = [
128
+ createPermissionDetails({ start: 1n, end: 10n }, { start: 1n, end: 1n }, { start: 1n, end: 1n }, { start: 1n, end: 1n }, { addresses: [], whitelist: false }, { addresses: [], whitelist: false }, { addresses: [], whitelist: false })
129
+ ];
130
+ const [allOverlaps, inOldButNotNew, inNewButNotOld] = (0, overlaps_js_1.getOverlapsAndNonOverlaps)(details, details);
131
+ expect(allOverlaps.length).toBe(1);
132
+ expect(inOldButNotNew.length).toBe(0);
133
+ expect(inNewButNotOld.length).toBe(0);
134
+ });
135
+ test('should handle disjoint permission sets', () => {
136
+ const firstDetails = [
137
+ createPermissionDetails({ start: 1n, end: 10n }, { start: 1n, end: 1n }, { start: 1n, end: 1n }, { start: 1n, end: 1n }, { addresses: [], whitelist: false }, { addresses: [], whitelist: false }, { addresses: [], whitelist: false })
138
+ ];
139
+ const secondDetails = [
140
+ createPermissionDetails({ start: 20n, end: 30n }, { start: 1n, end: 1n }, { start: 1n, end: 1n }, { start: 1n, end: 1n }, { addresses: [], whitelist: false }, { addresses: [], whitelist: false }, { addresses: [], whitelist: false })
141
+ ];
142
+ const [allOverlaps, inOldButNotNew, inNewButNotOld] = (0, overlaps_js_1.getOverlapsAndNonOverlaps)(firstDetails, secondDetails);
143
+ expect(allOverlaps.length).toBe(0);
144
+ expect(inOldButNotNew.length).toBe(1);
145
+ expect(inNewButNotOld.length).toBe(1);
146
+ });
147
+ test('should handle empty input arrays', () => {
148
+ const [allOverlaps1, inOldButNotNew1, inNewButNotOld1] = (0, overlaps_js_1.getOverlapsAndNonOverlaps)([], []);
149
+ expect(allOverlaps1.length).toBe(0);
150
+ expect(inOldButNotNew1.length).toBe(0);
151
+ expect(inNewButNotOld1.length).toBe(0);
152
+ const nonEmpty = [
153
+ createPermissionDetails({ start: 1n, end: 10n }, { start: 1n, end: 1n }, { start: 1n, end: 1n }, { start: 1n, end: 1n }, { addresses: [], whitelist: false }, { addresses: [], whitelist: false }, { addresses: [], whitelist: false })
154
+ ];
155
+ const [allOverlaps2, inOldButNotNew2, inNewButNotOld2] = (0, overlaps_js_1.getOverlapsAndNonOverlaps)(nonEmpty, []);
156
+ expect(allOverlaps2.length).toBe(0);
157
+ expect(inOldButNotNew2.length).toBe(1);
158
+ expect(inNewButNotOld2.length).toBe(0);
159
+ });
160
+ });
161
+ describe('GetUintRangesWithOptions', () => {
162
+ test('should return original ranges when uses is true', () => {
163
+ const ranges = uintRanges_js_1.UintRangeArray.From([
164
+ { start: 1n, end: 10n },
165
+ { start: 20n, end: 30n }
166
+ ]);
167
+ const result = (0, overlaps_js_1.GetUintRangesWithOptions)(ranges, true);
168
+ expect(result.length).toBe(2);
169
+ expect(result[0].start).toBe(1n);
170
+ expect(result[0].end).toBe(10n);
171
+ expect(result[1].start).toBe(20n);
172
+ expect(result[1].end).toBe(30n);
173
+ });
174
+ test('should return dummy range when uses is false', () => {
175
+ const ranges = uintRanges_js_1.UintRangeArray.From([
176
+ { start: 1n, end: 10n },
177
+ { start: 20n, end: 30n }
178
+ ]);
179
+ const result = (0, overlaps_js_1.GetUintRangesWithOptions)(ranges, false);
180
+ expect(result.length).toBe(1);
181
+ expect(result[0].start).toBe(1n);
182
+ expect(result[0].end).toBe(1n);
183
+ });
184
+ });
185
+ describe('GetListWithOptions', () => {
186
+ test('should return original list when uses is true', () => {
187
+ const list = new addressLists_js_1.AddressList({
188
+ listId: 'test',
189
+ addresses: [alice, bob],
190
+ whitelist: true,
191
+ uri: '',
192
+ customData: ''
193
+ });
194
+ const result = (0, overlaps_js_1.GetListWithOptions)(list, true);
195
+ expect(result.addresses).toEqual([alice, bob]);
196
+ expect(result.whitelist).toBe(true);
197
+ });
198
+ test('should return empty non-whitelist when uses is false', () => {
199
+ const list = new addressLists_js_1.AddressList({
200
+ listId: 'test',
201
+ addresses: [alice, bob],
202
+ whitelist: true,
203
+ uri: '',
204
+ customData: ''
205
+ });
206
+ const result = (0, overlaps_js_1.GetListWithOptions)(list, false);
207
+ expect(result.addresses).toEqual([]);
208
+ expect(result.whitelist).toBe(false);
209
+ });
210
+ });
211
+ describe('GetFirstMatchOnly', () => {
212
+ test('should return first match for each unique combination', () => {
213
+ const permission1 = {
214
+ tokenIds: uintRanges_js_1.UintRangeArray.From([{ start: 1n, end: 10n }]),
215
+ timelineTimes: uintRanges_js_1.UintRangeArray.From([{ start: 1n, end: 1n }]),
216
+ transferTimes: uintRanges_js_1.UintRangeArray.From([{ start: 1n, end: 1n }]),
217
+ ownershipTimes: uintRanges_js_1.UintRangeArray.From([{ start: 1n, end: 1n }]),
218
+ toList: addressLists_js_1.AddressList.AllAddresses(),
219
+ fromList: addressLists_js_1.AddressList.AllAddresses(),
220
+ initiatedByList: addressLists_js_1.AddressList.AllAddresses(),
221
+ approvalIdList: new addressLists_js_1.AddressList({ listId: '', addresses: [], whitelist: false, uri: '', customData: '' }),
222
+ permanentlyPermittedTimes: uintRanges_js_1.UintRangeArray.From([{ start: 1n, end: 100n }]),
223
+ permanentlyForbiddenTimes: uintRanges_js_1.UintRangeArray.From([]),
224
+ usesTokenIds: true,
225
+ usesTimelineTimes: false,
226
+ usesTransferTimes: false,
227
+ usesToList: false,
228
+ usesFromList: false,
229
+ usesInitiatedByList: false,
230
+ usesOwnershipTimes: false,
231
+ usesApprovalIdList: false,
232
+ arbitraryValue: { id: 'first' }
233
+ };
234
+ const permission2 = {
235
+ ...permission1,
236
+ tokenIds: uintRanges_js_1.UintRangeArray.From([{ start: 5n, end: 15n }]),
237
+ permanentlyPermittedTimes: uintRanges_js_1.UintRangeArray.From([{ start: 200n, end: 300n }]),
238
+ arbitraryValue: { id: 'second' }
239
+ };
240
+ const result = (0, overlaps_js_1.GetFirstMatchOnly)([permission1, permission2]);
241
+ expect(result.length).toBe(2);
242
+ const first = result.find((r) => r.tokenId.start === 1n && r.tokenId.end === 10n);
243
+ expect(first).toBeDefined();
244
+ expect(first.permanentlyPermittedTimes[0].start).toBe(1n);
245
+ expect(first.permanentlyPermittedTimes[0].end).toBe(100n);
246
+ const second = result.find((r) => r.tokenId.start === 11n && r.tokenId.end === 15n);
247
+ expect(second).toBeDefined();
248
+ expect(second.permanentlyPermittedTimes[0].start).toBe(200n);
249
+ expect(second.permanentlyPermittedTimes[0].end).toBe(300n);
250
+ });
251
+ test('should handle empty permissions array', () => {
252
+ const result = (0, overlaps_js_1.GetFirstMatchOnly)([]);
253
+ expect(result.length).toBe(0);
254
+ });
255
+ test('should work with handleAllPossibleCombinations flag', () => {
256
+ const permission = {
257
+ tokenIds: uintRanges_js_1.UintRangeArray.From([{ start: 1n, end: 10n }]),
258
+ timelineTimes: uintRanges_js_1.UintRangeArray.From([{ start: 1n, end: 1n }]),
259
+ transferTimes: uintRanges_js_1.UintRangeArray.From([{ start: 1n, end: 1n }]),
260
+ ownershipTimes: uintRanges_js_1.UintRangeArray.From([{ start: 1n, end: 1n }]),
261
+ toList: addressLists_js_1.AddressList.AllAddresses(),
262
+ fromList: addressLists_js_1.AddressList.AllAddresses(),
263
+ initiatedByList: addressLists_js_1.AddressList.AllAddresses(),
264
+ approvalIdList: new addressLists_js_1.AddressList({ listId: '', addresses: [], whitelist: false, uri: '', customData: '' }),
265
+ permanentlyPermittedTimes: uintRanges_js_1.UintRangeArray.From([{ start: 1n, end: 100n }]),
266
+ permanentlyForbiddenTimes: uintRanges_js_1.UintRangeArray.From([]),
267
+ usesTokenIds: true,
268
+ usesTimelineTimes: false,
269
+ usesTransferTimes: false,
270
+ usesToList: false,
271
+ usesFromList: false,
272
+ usesInitiatedByList: false,
273
+ usesOwnershipTimes: false,
274
+ usesApprovalIdList: false,
275
+ arbitraryValue: {}
276
+ };
277
+ const result = (0, overlaps_js_1.GetFirstMatchOnly)([permission], true, overlaps_js_1.ActionPermissionUsedFlags);
278
+ expect(result.length).toBeGreaterThanOrEqual(1);
279
+ });
280
+ test('should throw when handleAllPossibleCombinations is true but usesFlags is undefined', () => {
281
+ expect(() => {
282
+ (0, overlaps_js_1.GetFirstMatchOnly)([], true, undefined);
283
+ }).toThrow('handleAllPossibleCombinations is true but usesFlags is null');
284
+ });
285
+ });
286
+ describe('MergeUniversalPermissionDetails', () => {
287
+ test('should convert permissions to merged format', () => {
288
+ const permissions = [
289
+ createPermissionDetails({ start: 1n, end: 5n }, { start: 1n, end: 1n }, { start: 1n, end: 1n }, { start: 1n, end: 1n }, { addresses: [], whitelist: false }, { addresses: [], whitelist: false }, { addresses: [], whitelist: false }),
290
+ createPermissionDetails({ start: 6n, end: 10n }, { start: 1n, end: 1n }, { start: 1n, end: 1n }, { start: 1n, end: 1n }, { addresses: [], whitelist: false }, { addresses: [], whitelist: false }, { addresses: [], whitelist: false })
291
+ ];
292
+ const result = (0, overlaps_js_1.MergeUniversalPermissionDetails)(permissions);
293
+ expect(result.length).toBeGreaterThanOrEqual(1);
294
+ expect(Array.isArray(result[0].tokenIds)).toBe(true);
295
+ expect(result[0].tokenIds.length).toBeGreaterThanOrEqual(1);
296
+ });
297
+ test('should not merge when doNotMerge is true', () => {
298
+ const permissions = [
299
+ createPermissionDetails({ start: 1n, end: 5n }, { start: 1n, end: 1n }, { start: 1n, end: 1n }, { start: 1n, end: 1n }, { addresses: [], whitelist: false }, { addresses: [], whitelist: false }, { addresses: [], whitelist: false }),
300
+ createPermissionDetails({ start: 6n, end: 10n }, { start: 1n, end: 1n }, { start: 1n, end: 1n }, { start: 1n, end: 1n }, { addresses: [], whitelist: false }, { addresses: [], whitelist: false }, { addresses: [], whitelist: false })
301
+ ];
302
+ const result = (0, overlaps_js_1.MergeUniversalPermissionDetails)(permissions, true);
303
+ expect(result.length).toBe(2);
304
+ });
305
+ test('should handle empty input', () => {
306
+ const result = (0, overlaps_js_1.MergeUniversalPermissionDetails)([]);
307
+ expect(result.length).toBe(0);
308
+ });
309
+ test('should not merge permissions with different properties', () => {
310
+ const permissions = [
311
+ createPermissionDetails({ start: 1n, end: 5n }, { start: 1n, end: 1n }, { start: 1n, end: 1n }, { start: 1n, end: 1n }, { addresses: [alice], whitelist: true }, { addresses: [], whitelist: false }, { addresses: [], whitelist: false }),
312
+ createPermissionDetails({ start: 6n, end: 10n }, { start: 1n, end: 1n }, { start: 1n, end: 1n }, { start: 1n, end: 1n }, { addresses: [bob], whitelist: true }, { addresses: [], whitelist: false }, { addresses: [], whitelist: false })
313
+ ];
314
+ const result = (0, overlaps_js_1.MergeUniversalPermissionDetails)(permissions);
315
+ expect(result.length).toBe(2);
316
+ });
317
+ });
318
+ describe('ValidateUniversalPermissionUpdate', () => {
319
+ test('should return null for valid update (adding new permissions)', () => {
320
+ const oldPermissions = [
321
+ createPermissionDetails({ start: 1n, end: 10n }, { start: 1n, end: 1n }, { start: 1n, end: 1n }, { start: 1n, end: 1n }, { addresses: [], whitelist: false }, { addresses: [], whitelist: false }, { addresses: [], whitelist: false })
322
+ ];
323
+ oldPermissions[0].permanentlyPermittedTimes = uintRanges_js_1.UintRangeArray.From([{ start: 1n, end: 100n }]);
324
+ const newPermissions = [
325
+ createPermissionDetails({ start: 1n, end: 10n }, { start: 1n, end: 1n }, { start: 1n, end: 1n }, { start: 1n, end: 1n }, { addresses: [], whitelist: false }, { addresses: [], whitelist: false }, { addresses: [], whitelist: false })
326
+ ];
327
+ newPermissions[0].permanentlyPermittedTimes = uintRanges_js_1.UintRangeArray.From([
328
+ { start: 1n, end: 100n },
329
+ { start: 200n, end: 300n }
330
+ ]);
331
+ const error = (0, overlaps_js_1.ValidateUniversalPermissionUpdate)(oldPermissions, newPermissions);
332
+ expect(error).toBeNull();
333
+ });
334
+ test('should return error when removing old permissions', () => {
335
+ const oldPermissions = [
336
+ createPermissionDetails({ start: 1n, end: 10n }, { start: 1n, end: 1n }, { start: 1n, end: 1n }, { start: 1n, end: 1n }, { addresses: [], whitelist: false }, { addresses: [], whitelist: false }, { addresses: [], whitelist: false })
337
+ ];
338
+ const newPermissions = [
339
+ createPermissionDetails({ start: 1n, end: 5n }, { start: 1n, end: 1n }, { start: 1n, end: 1n }, { start: 1n, end: 1n }, { addresses: [], whitelist: false }, { addresses: [], whitelist: false }, { addresses: [], whitelist: false })
340
+ ];
341
+ const error = (0, overlaps_js_1.ValidateUniversalPermissionUpdate)(oldPermissions, newPermissions);
342
+ expect(error).not.toBeNull();
343
+ expect(error.message).toContain('found in old permissions but not in new permissions');
344
+ });
345
+ test('should return error when revoking previously permitted times', () => {
346
+ const oldPermissions = [
347
+ createPermissionDetails({ start: 1n, end: 10n }, { start: 1n, end: 1n }, { start: 1n, end: 1n }, { start: 1n, end: 1n }, { addresses: [], whitelist: false }, { addresses: [], whitelist: false }, { addresses: [], whitelist: false })
348
+ ];
349
+ oldPermissions[0].permanentlyPermittedTimes = uintRanges_js_1.UintRangeArray.From([{ start: 1n, end: 100n }]);
350
+ const newPermissions = [
351
+ createPermissionDetails({ start: 1n, end: 10n }, { start: 1n, end: 1n }, { start: 1n, end: 1n }, { start: 1n, end: 1n }, { addresses: [], whitelist: false }, { addresses: [], whitelist: false }, { addresses: [], whitelist: false })
352
+ ];
353
+ newPermissions[0].permanentlyPermittedTimes = uintRanges_js_1.UintRangeArray.From([{ start: 1n, end: 49n }]);
354
+ const error = (0, overlaps_js_1.ValidateUniversalPermissionUpdate)(oldPermissions, newPermissions);
355
+ expect(error).not.toBeNull();
356
+ expect(error.message).toContain('previously explicitly allowed');
357
+ });
358
+ test('should return null for identical permissions', () => {
359
+ const permissions = [
360
+ createPermissionDetails({ start: 1n, end: 10n }, { start: 1n, end: 1n }, { start: 1n, end: 1n }, { start: 1n, end: 1n }, { addresses: [], whitelist: false }, { addresses: [], whitelist: false }, { addresses: [], whitelist: false })
361
+ ];
362
+ permissions[0].permanentlyPermittedTimes = uintRanges_js_1.UintRangeArray.From([{ start: 1n, end: 100n }]);
363
+ const error = (0, overlaps_js_1.ValidateUniversalPermissionUpdate)(permissions, permissions);
364
+ expect(error).toBeNull();
365
+ });
366
+ test('should handle empty permission arrays', () => {
367
+ const error = (0, overlaps_js_1.ValidateUniversalPermissionUpdate)([], []);
368
+ expect(error).toBeNull();
369
+ });
370
+ });
371
+ describe('MergeUniversalPermissionDetails - Address List Polarity Bug', () => {
372
+ test('should NOT merge permissions with different toList whitelist polarities', () => {
373
+ const permissions = [
374
+ createPermissionDetails({ start: 1n, end: 5n }, { start: 1n, end: 1n }, { start: 1n, end: 1n }, { start: 1n, end: 1n }, { addresses: [alice], whitelist: true }, { addresses: [], whitelist: false }, { addresses: [], whitelist: false }),
375
+ createPermissionDetails({ start: 6n, end: 10n }, { start: 1n, end: 1n }, { start: 1n, end: 1n }, { start: 1n, end: 1n }, { addresses: [bob], whitelist: false }, { addresses: [], whitelist: false }, { addresses: [], whitelist: false })
376
+ ];
377
+ const result = (0, overlaps_js_1.MergeUniversalPermissionDetails)(permissions);
378
+ expect(result.length).toBe(2);
379
+ });
380
+ test('should merge permissions when ALL UintRanges are same and only one address list differs (same polarity)', () => {
381
+ const permissions = [
382
+ createPermissionDetails({ start: 1n, end: 10n }, { start: 1n, end: 1n }, { start: 1n, end: 1n }, { start: 1n, end: 1n }, { addresses: [alice], whitelist: true }, { addresses: [], whitelist: false }, { addresses: [], whitelist: false }),
383
+ createPermissionDetails({ start: 1n, end: 10n }, { start: 1n, end: 1n }, { start: 1n, end: 1n }, { start: 1n, end: 1n }, { addresses: [bob], whitelist: true }, { addresses: [], whitelist: false }, { addresses: [], whitelist: false })
384
+ ];
385
+ const result = (0, overlaps_js_1.MergeUniversalPermissionDetails)(permissions);
386
+ expect(result.length).toBe(1);
387
+ expect(result[0].toList.addresses).toContain(alice);
388
+ expect(result[0].toList.addresses).toContain(bob);
389
+ expect(result[0].toList.whitelist).toBe(true);
390
+ });
391
+ test('should NOT merge when UintRanges differ and address lists also differ', () => {
392
+ const permissions = [
393
+ createPermissionDetails({ start: 1n, end: 5n }, { start: 1n, end: 1n }, { start: 1n, end: 1n }, { start: 1n, end: 1n }, { addresses: [alice], whitelist: true }, { addresses: [], whitelist: false }, { addresses: [], whitelist: false }),
394
+ createPermissionDetails({ start: 6n, end: 10n }, { start: 1n, end: 1n }, { start: 1n, end: 1n }, { start: 1n, end: 1n }, { addresses: [bob], whitelist: true }, { addresses: [], whitelist: false }, { addresses: [], whitelist: false })
395
+ ];
396
+ const result = (0, overlaps_js_1.MergeUniversalPermissionDetails)(permissions);
397
+ expect(result.length).toBe(2);
398
+ });
399
+ test('documents merge behavior: when sameCount === 3, differing field is not combined', () => {
400
+ const permissions = [
401
+ createPermissionDetails({ start: 1n, end: 5n }, { start: 1n, end: 1n }, { start: 1n, end: 1n }, { start: 1n, end: 1n }, { addresses: [alice], whitelist: true }, { addresses: [], whitelist: false }, { addresses: [], whitelist: false }),
402
+ createPermissionDetails({ start: 6n, end: 10n }, { start: 1n, end: 1n }, { start: 1n, end: 1n }, { start: 1n, end: 1n }, { addresses: [alice], whitelist: true }, { addresses: [], whitelist: false }, { addresses: [], whitelist: false })
403
+ ];
404
+ const result = (0, overlaps_js_1.MergeUniversalPermissionDetails)(permissions);
405
+ expect(result.length).toBe(1);
406
+ expect(result[0].tokenIds.length).toBe(1);
407
+ expect(result[0].tokenIds[0].start.toString()).toBe('1');
408
+ expect(result[0].tokenIds[0].end.toString()).toBe('5');
409
+ });
410
+ });
411
+ describe('Edge Cases - Large UintRange Values', () => {
412
+ test('should handle large range values', () => {
413
+ const largeValue = 1000000000000n;
414
+ const handled = createPermissionDetails({ start: largeValue, end: largeValue }, { start: 1n, end: 1n }, { start: 1n, end: 1n }, { start: 1n, end: 1n }, { addresses: [], whitelist: false }, { addresses: [], whitelist: false }, { addresses: [], whitelist: false });
415
+ const valueToCheck = createPermissionDetails({ start: 1n, end: largeValue }, { start: 1n, end: 1n }, { start: 1n, end: 1n }, { start: 1n, end: 1n }, { addresses: [], whitelist: false }, { addresses: [], whitelist: false }, { addresses: [], whitelist: false });
416
+ const [remaining, removed] = (0, overlaps_js_1.universalRemoveOverlaps)(handled, valueToCheck);
417
+ expect(removed.length).toBe(1);
418
+ expect(removed[0].tokenId.start.toString()).toBe(largeValue.toString());
419
+ expect(removed[0].tokenId.end.toString()).toBe(largeValue.toString());
420
+ expect(remaining.length).toBeGreaterThan(0);
421
+ });
422
+ test('should handle full range removal from large range', () => {
423
+ const largeEnd = 10000000n;
424
+ const fullRange = createPermissionDetails({ start: 1n, end: largeEnd }, { start: 1n, end: largeEnd }, { start: 1n, end: largeEnd }, { start: 1n, end: largeEnd }, { addresses: [], whitelist: false }, { addresses: [], whitelist: false }, { addresses: [], whitelist: false });
425
+ const singlePoint = createPermissionDetails({ start: 1000n, end: 1000n }, { start: 1000n, end: 1000n }, { start: 1000n, end: 1000n }, { start: 1000n, end: 1000n }, { addresses: [], whitelist: false }, { addresses: [], whitelist: false }, { addresses: [], whitelist: false });
426
+ const [remaining, removed] = (0, overlaps_js_1.universalRemoveOverlaps)(singlePoint, fullRange);
427
+ expect(removed.length).toBe(1);
428
+ expect(remaining.length).toBeGreaterThan(0);
429
+ });
430
+ });
431
+ describe('Edge Cases - Empty and Single Element Inputs', () => {
432
+ test('should handle single-element permission arrays', () => {
433
+ const singlePermission = [
434
+ createPermissionDetails({ start: 5n, end: 5n }, { start: 1n, end: 1n }, { start: 1n, end: 1n }, { start: 1n, end: 1n }, { addresses: [], whitelist: false }, { addresses: [], whitelist: false }, { addresses: [], whitelist: false })
435
+ ];
436
+ const [overlaps, inOld, inNew] = (0, overlaps_js_1.getOverlapsAndNonOverlaps)(singlePermission, singlePermission);
437
+ expect(overlaps.length).toBe(1);
438
+ expect(inOld.length).toBe(0);
439
+ expect(inNew.length).toBe(0);
440
+ });
441
+ test('should handle permission with empty address lists', () => {
442
+ const emptyLists = createPermissionDetails({ start: 1n, end: 10n }, { start: 1n, end: 1n }, { start: 1n, end: 1n }, { start: 1n, end: 1n }, { addresses: [], whitelist: true }, { addresses: [], whitelist: true }, { addresses: [], whitelist: true });
443
+ const nonEmptyLists = createPermissionDetails({ start: 1n, end: 10n }, { start: 1n, end: 1n }, { start: 1n, end: 1n }, { start: 1n, end: 1n }, { addresses: [alice], whitelist: true }, { addresses: [alice], whitelist: true }, { addresses: [alice], whitelist: true });
444
+ const [remaining, removed] = (0, overlaps_js_1.universalRemoveOverlaps)(emptyLists, nonEmptyLists);
445
+ expect(remaining.length).toBeGreaterThan(0);
446
+ });
447
+ test('should handle single address in list', () => {
448
+ const singleAddress = createPermissionDetails({ start: 1n, end: 10n }, { start: 1n, end: 1n }, { start: 1n, end: 1n }, { start: 1n, end: 1n }, { addresses: [alice], whitelist: true }, { addresses: [alice], whitelist: true }, { addresses: [alice], whitelist: true });
449
+ const [overlaps, inOld, inNew] = (0, overlaps_js_1.getOverlapsAndNonOverlaps)([singleAddress], [singleAddress]);
450
+ expect(overlaps.length).toBe(1);
451
+ expect(inOld.length).toBe(0);
452
+ expect(inNew.length).toBe(0);
453
+ });
454
+ });
455
+ describe('Multiple Overlapping Permissions', () => {
456
+ test('should correctly handle multiple overlapping permission sets', () => {
457
+ const permissions1 = [
458
+ createPermissionDetails({ start: 1n, end: 10n }, { start: 1n, end: 1n }, { start: 1n, end: 1n }, { start: 1n, end: 1n }, { addresses: [], whitelist: false }, { addresses: [], whitelist: false }, { addresses: [], whitelist: false }),
459
+ createPermissionDetails({ start: 20n, end: 30n }, { start: 1n, end: 1n }, { start: 1n, end: 1n }, { start: 1n, end: 1n }, { addresses: [], whitelist: false }, { addresses: [], whitelist: false }, { addresses: [], whitelist: false })
460
+ ];
461
+ const permissions2 = [
462
+ createPermissionDetails({ start: 5n, end: 25n }, { start: 1n, end: 1n }, { start: 1n, end: 1n }, { start: 1n, end: 1n }, { addresses: [], whitelist: false }, { addresses: [], whitelist: false }, { addresses: [], whitelist: false })
463
+ ];
464
+ const [overlaps, inOld, inNew] = (0, overlaps_js_1.getOverlapsAndNonOverlaps)(permissions1, permissions2);
465
+ expect(overlaps.length).toBe(2);
466
+ expect(inOld.length).toBeGreaterThan(0);
467
+ const hasRange1to4 = inOld.some((p) => p.tokenId.start.toString() === '1' && p.tokenId.end.toString() === '4');
468
+ expect(hasRange1to4).toBe(true);
469
+ expect(inNew.length).toBeGreaterThan(0);
470
+ });
471
+ test('should handle three-way overlap scenarios', () => {
472
+ const perms = [
473
+ createPermissionDetails({ start: 1n, end: 10n }, { start: 1n, end: 1n }, { start: 1n, end: 1n }, { start: 1n, end: 1n }, { addresses: [], whitelist: false }, { addresses: [], whitelist: false }, { addresses: [], whitelist: false }),
474
+ createPermissionDetails({ start: 5n, end: 15n }, { start: 1n, end: 1n }, { start: 1n, end: 1n }, { start: 1n, end: 1n }, { addresses: [], whitelist: false }, { addresses: [], whitelist: false }, { addresses: [], whitelist: false }),
475
+ createPermissionDetails({ start: 8n, end: 20n }, { start: 1n, end: 1n }, { start: 1n, end: 1n }, { start: 1n, end: 1n }, { addresses: [], whitelist: false }, { addresses: [], whitelist: false }, { addresses: [], whitelist: false })
476
+ ];
477
+ const firstMatchPermissions = perms.map((p) => ({
478
+ tokenIds: uintRanges_js_1.UintRangeArray.From([p.tokenId]),
479
+ timelineTimes: uintRanges_js_1.UintRangeArray.From([p.timelineTime]),
480
+ transferTimes: uintRanges_js_1.UintRangeArray.From([p.transferTime]),
481
+ ownershipTimes: uintRanges_js_1.UintRangeArray.From([p.ownershipTime]),
482
+ toList: p.toList,
483
+ fromList: p.fromList,
484
+ initiatedByList: p.initiatedByList,
485
+ approvalIdList: p.approvalIdList,
486
+ permanentlyPermittedTimes: uintRanges_js_1.UintRangeArray.From([{ start: 1n, end: 100n }]),
487
+ permanentlyForbiddenTimes: uintRanges_js_1.UintRangeArray.From([]),
488
+ usesTokenIds: true,
489
+ usesTimelineTimes: false,
490
+ usesTransferTimes: false,
491
+ usesToList: false,
492
+ usesFromList: false,
493
+ usesInitiatedByList: false,
494
+ usesOwnershipTimes: false,
495
+ usesApprovalIdList: false,
496
+ arbitraryValue: {}
497
+ }));
498
+ const result = (0, overlaps_js_1.GetFirstMatchOnly)(firstMatchPermissions);
499
+ expect(result.length).toBe(3);
500
+ });
501
+ });
502
+ describe('UsedFlags constants', () => {
503
+ test('ActionPermissionUsedFlags should have all flags false', () => {
504
+ expect(overlaps_js_1.ActionPermissionUsedFlags.usesTokenIds).toBe(false);
505
+ expect(overlaps_js_1.ActionPermissionUsedFlags.usesTimelineTimes).toBe(false);
506
+ expect(overlaps_js_1.ActionPermissionUsedFlags.usesTransferTimes).toBe(false);
507
+ expect(overlaps_js_1.ActionPermissionUsedFlags.usesToList).toBe(false);
508
+ expect(overlaps_js_1.ActionPermissionUsedFlags.usesFromList).toBe(false);
509
+ expect(overlaps_js_1.ActionPermissionUsedFlags.usesInitiatedByList).toBe(false);
510
+ expect(overlaps_js_1.ActionPermissionUsedFlags.usesOwnershipTimes).toBe(false);
511
+ expect(overlaps_js_1.ActionPermissionUsedFlags.usesApprovalIdList).toBe(false);
512
+ });
513
+ test('TimedUpdatePermissionUsedFlags should only have usesTimelineTimes true', () => {
514
+ expect(overlaps_js_1.TimedUpdatePermissionUsedFlags.usesTokenIds).toBe(false);
515
+ expect(overlaps_js_1.TimedUpdatePermissionUsedFlags.usesTimelineTimes).toBe(true);
516
+ expect(overlaps_js_1.TimedUpdatePermissionUsedFlags.usesTransferTimes).toBe(false);
517
+ });
518
+ test('ApprovalPermissionUsedFlags should have approval-related flags true', () => {
519
+ expect(overlaps_js_1.ApprovalPermissionUsedFlags.usesTokenIds).toBe(true);
520
+ expect(overlaps_js_1.ApprovalPermissionUsedFlags.usesTransferTimes).toBe(true);
521
+ expect(overlaps_js_1.ApprovalPermissionUsedFlags.usesToList).toBe(true);
522
+ expect(overlaps_js_1.ApprovalPermissionUsedFlags.usesFromList).toBe(true);
523
+ expect(overlaps_js_1.ApprovalPermissionUsedFlags.usesInitiatedByList).toBe(true);
524
+ expect(overlaps_js_1.ApprovalPermissionUsedFlags.usesOwnershipTimes).toBe(true);
525
+ expect(overlaps_js_1.ApprovalPermissionUsedFlags.usesApprovalIdList).toBe(true);
526
+ });
527
+ });
528
+ });
529
+ //# sourceMappingURL=overlaps.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"overlaps.spec.js","sourceRoot":"","sources":["../../../src/core/overlaps.spec.ts"],"names":[],"mappings":"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"}