bitbadgesjs-sdk 0.29.2 → 0.29.3

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 (75) hide show
  1. package/dist/cjs/core/misc.spec.d.ts +2 -0
  2. package/dist/cjs/core/misc.spec.d.ts.map +1 -0
  3. package/dist/cjs/core/misc.spec.js +363 -0
  4. package/dist/cjs/core/misc.spec.js.map +1 -0
  5. package/dist/cjs/core/overlaps.spec.d.ts +2 -0
  6. package/dist/cjs/core/overlaps.spec.d.ts.map +1 -0
  7. package/dist/cjs/core/overlaps.spec.js +398 -0
  8. package/dist/cjs/core/overlaps.spec.js.map +1 -0
  9. package/dist/cjs/transactions/precompile/abi-data.d.ts +333 -0
  10. package/dist/cjs/transactions/precompile/abi-data.d.ts.map +1 -1
  11. package/dist/cjs/transactions/precompile/abi-data.js +202 -1
  12. package/dist/cjs/transactions/precompile/abi-data.js.map +1 -1
  13. package/dist/cjs/transactions/precompile/abi.d.ts +2 -0
  14. package/dist/cjs/transactions/precompile/abi.d.ts.map +1 -1
  15. package/dist/cjs/transactions/precompile/abi.js +3 -1
  16. package/dist/cjs/transactions/precompile/abi.js.map +1 -1
  17. package/dist/cjs/transactions/precompile/data-converter.d.ts +19 -0
  18. package/dist/cjs/transactions/precompile/data-converter.d.ts.map +1 -1
  19. package/dist/cjs/transactions/precompile/data-converter.js +118 -0
  20. package/dist/cjs/transactions/precompile/data-converter.js.map +1 -1
  21. package/dist/cjs/transactions/precompile/function-mapper.d.ts +7 -1
  22. package/dist/cjs/transactions/precompile/function-mapper.d.ts.map +1 -1
  23. package/dist/cjs/transactions/precompile/function-mapper.js +13 -1
  24. package/dist/cjs/transactions/precompile/function-mapper.js.map +1 -1
  25. package/dist/cjs/transactions/precompile/index.d.ts +4 -3
  26. package/dist/cjs/transactions/precompile/index.d.ts.map +1 -1
  27. package/dist/cjs/transactions/precompile/index.js +15 -1
  28. package/dist/cjs/transactions/precompile/index.js.map +1 -1
  29. package/dist/cjs/transactions/precompile/type-detector.d.ts +13 -1
  30. package/dist/cjs/transactions/precompile/type-detector.d.ts.map +1 -1
  31. package/dist/cjs/transactions/precompile/type-detector.js +73 -0
  32. package/dist/cjs/transactions/precompile/type-detector.js.map +1 -1
  33. package/dist/cjs/transactions/precompile/utils.d.ts +4 -2
  34. package/dist/cjs/transactions/precompile/utils.d.ts.map +1 -1
  35. package/dist/cjs/transactions/precompile/utils.js +113 -2
  36. package/dist/cjs/transactions/precompile/utils.js.map +1 -1
  37. package/dist/cjs/tsconfig.build.tsbuildinfo +1 -1
  38. package/dist/esm/core/misc.spec.d.ts +2 -0
  39. package/dist/esm/core/misc.spec.d.ts.map +1 -0
  40. package/dist/esm/core/misc.spec.js +361 -0
  41. package/dist/esm/core/misc.spec.js.map +1 -0
  42. package/dist/esm/core/overlaps.spec.d.ts +2 -0
  43. package/dist/esm/core/overlaps.spec.d.ts.map +1 -0
  44. package/dist/esm/core/overlaps.spec.js +396 -0
  45. package/dist/esm/core/overlaps.spec.js.map +1 -0
  46. package/dist/esm/transactions/precompile/abi-data.d.ts +333 -0
  47. package/dist/esm/transactions/precompile/abi-data.d.ts.map +1 -1
  48. package/dist/esm/transactions/precompile/abi-data.js +201 -0
  49. package/dist/esm/transactions/precompile/abi-data.js.map +1 -1
  50. package/dist/esm/transactions/precompile/abi.d.ts +2 -0
  51. package/dist/esm/transactions/precompile/abi.d.ts.map +1 -1
  52. package/dist/esm/transactions/precompile/abi.js +2 -0
  53. package/dist/esm/transactions/precompile/abi.js.map +1 -1
  54. package/dist/esm/transactions/precompile/data-converter.d.ts +19 -0
  55. package/dist/esm/transactions/precompile/data-converter.d.ts.map +1 -1
  56. package/dist/esm/transactions/precompile/data-converter.js +112 -0
  57. package/dist/esm/transactions/precompile/data-converter.js.map +1 -1
  58. package/dist/esm/transactions/precompile/function-mapper.d.ts +7 -1
  59. package/dist/esm/transactions/precompile/function-mapper.d.ts.map +1 -1
  60. package/dist/esm/transactions/precompile/function-mapper.js +13 -1
  61. package/dist/esm/transactions/precompile/function-mapper.js.map +1 -1
  62. package/dist/esm/transactions/precompile/index.d.ts +4 -3
  63. package/dist/esm/transactions/precompile/index.d.ts.map +1 -1
  64. package/dist/esm/transactions/precompile/index.js +3 -2
  65. package/dist/esm/transactions/precompile/index.js.map +1 -1
  66. package/dist/esm/transactions/precompile/type-detector.d.ts +13 -1
  67. package/dist/esm/transactions/precompile/type-detector.d.ts.map +1 -1
  68. package/dist/esm/transactions/precompile/type-detector.js +67 -0
  69. package/dist/esm/transactions/precompile/type-detector.js.map +1 -1
  70. package/dist/esm/transactions/precompile/utils.d.ts +4 -2
  71. package/dist/esm/transactions/precompile/utils.d.ts.map +1 -1
  72. package/dist/esm/transactions/precompile/utils.js +111 -4
  73. package/dist/esm/transactions/precompile/utils.js.map +1 -1
  74. package/dist/esm/tsconfig-esm.build.tsbuildinfo +1 -1
  75. package/package.json +1 -1
@@ -0,0 +1,398 @@
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('UsedFlags constants', () => {
372
+ test('ActionPermissionUsedFlags should have all flags false', () => {
373
+ expect(overlaps_js_1.ActionPermissionUsedFlags.usesTokenIds).toBe(false);
374
+ expect(overlaps_js_1.ActionPermissionUsedFlags.usesTimelineTimes).toBe(false);
375
+ expect(overlaps_js_1.ActionPermissionUsedFlags.usesTransferTimes).toBe(false);
376
+ expect(overlaps_js_1.ActionPermissionUsedFlags.usesToList).toBe(false);
377
+ expect(overlaps_js_1.ActionPermissionUsedFlags.usesFromList).toBe(false);
378
+ expect(overlaps_js_1.ActionPermissionUsedFlags.usesInitiatedByList).toBe(false);
379
+ expect(overlaps_js_1.ActionPermissionUsedFlags.usesOwnershipTimes).toBe(false);
380
+ expect(overlaps_js_1.ActionPermissionUsedFlags.usesApprovalIdList).toBe(false);
381
+ });
382
+ test('TimedUpdatePermissionUsedFlags should only have usesTimelineTimes true', () => {
383
+ expect(overlaps_js_1.TimedUpdatePermissionUsedFlags.usesTokenIds).toBe(false);
384
+ expect(overlaps_js_1.TimedUpdatePermissionUsedFlags.usesTimelineTimes).toBe(true);
385
+ expect(overlaps_js_1.TimedUpdatePermissionUsedFlags.usesTransferTimes).toBe(false);
386
+ });
387
+ test('ApprovalPermissionUsedFlags should have approval-related flags true', () => {
388
+ expect(overlaps_js_1.ApprovalPermissionUsedFlags.usesTokenIds).toBe(true);
389
+ expect(overlaps_js_1.ApprovalPermissionUsedFlags.usesTransferTimes).toBe(true);
390
+ expect(overlaps_js_1.ApprovalPermissionUsedFlags.usesToList).toBe(true);
391
+ expect(overlaps_js_1.ApprovalPermissionUsedFlags.usesFromList).toBe(true);
392
+ expect(overlaps_js_1.ApprovalPermissionUsedFlags.usesInitiatedByList).toBe(true);
393
+ expect(overlaps_js_1.ApprovalPermissionUsedFlags.usesOwnershipTimes).toBe(true);
394
+ expect(overlaps_js_1.ApprovalPermissionUsedFlags.usesApprovalIdList).toBe(true);
395
+ });
396
+ });
397
+ });
398
+ //# 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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"}