@beclab/olaresid 0.1.13 → 0.2.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 (181) hide show
  1. package/CLI-TREE.md +107 -0
  2. package/CLI.md +122 -1340
  3. package/README.md +30 -12
  4. package/SDK-TREE.md +151 -0
  5. package/TAG.md +95 -41
  6. package/config.json +6 -4
  7. package/dist/abi/TerminusDIDQueryABI.d.ts +397 -0
  8. package/dist/abi/TerminusDIDQueryABI.d.ts.map +1 -0
  9. package/dist/abi/TerminusDIDQueryABI.js +519 -0
  10. package/dist/abi/TerminusDIDQueryABI.js.map +1 -0
  11. package/dist/business/index.d.ts.map +1 -1
  12. package/dist/business/index.js +9 -23
  13. package/dist/business/index.js.map +1 -1
  14. package/dist/business/tag-context.d.ts +1 -0
  15. package/dist/business/tag-context.d.ts.map +1 -1
  16. package/dist/business/tag-context.js +13 -7
  17. package/dist/business/tag-context.js.map +1 -1
  18. package/dist/cli.js +177 -76
  19. package/dist/cli.js.map +1 -1
  20. package/dist/config/index.d.ts +16 -4
  21. package/dist/config/index.d.ts.map +1 -1
  22. package/dist/config/index.js +28 -14
  23. package/dist/config/index.js.map +1 -1
  24. package/dist/domain/core.d.ts +65 -0
  25. package/dist/domain/core.d.ts.map +1 -0
  26. package/dist/domain/core.js +317 -0
  27. package/dist/domain/core.js.map +1 -0
  28. package/dist/domain/index.d.ts +104 -57
  29. package/dist/domain/index.d.ts.map +1 -1
  30. package/dist/domain/index.js +188 -428
  31. package/dist/domain/index.js.map +1 -1
  32. package/dist/domain/types.d.ts +56 -0
  33. package/dist/domain/types.d.ts.map +1 -0
  34. package/dist/domain/types.js +3 -0
  35. package/dist/domain/types.js.map +1 -0
  36. package/dist/index.d.ts +80 -23
  37. package/dist/index.d.ts.map +1 -1
  38. package/dist/index.js +152 -143
  39. package/dist/index.js.map +1 -1
  40. package/dist/utils/crypto-utils.d.ts +110 -0
  41. package/dist/utils/crypto-utils.d.ts.map +1 -1
  42. package/dist/utils/crypto-utils.js +127 -8
  43. package/dist/utils/crypto-utils.js.map +1 -1
  44. package/dist/utils/error-parser.d.ts.map +1 -1
  45. package/dist/utils/error-parser.js +2 -1
  46. package/dist/utils/error-parser.js.map +1 -1
  47. package/dist/utils/event-parser.d.ts +161 -0
  48. package/dist/utils/event-parser.d.ts.map +1 -0
  49. package/dist/utils/event-parser.js +140 -0
  50. package/dist/utils/event-parser.js.map +1 -0
  51. package/dist/utils/tag-type-builder.d.ts +43 -0
  52. package/dist/utils/tag-type-builder.d.ts.map +1 -1
  53. package/dist/utils/tag-type-builder.js +122 -0
  54. package/dist/utils/tag-type-builder.js.map +1 -1
  55. package/dist/utils/tag-type-parser.d.ts +70 -0
  56. package/dist/utils/tag-type-parser.d.ts.map +1 -0
  57. package/dist/utils/tag-type-parser.js +190 -0
  58. package/dist/utils/tag-type-parser.js.map +1 -0
  59. package/examples/create-with-rpc-demo.ts +142 -0
  60. package/examples/fetch-all-flat-demo.ts +159 -0
  61. package/examples/fetch-by-indices-demo.ts +235 -0
  62. package/examples/fetch-domain-demo.ts +137 -0
  63. package/examples/fetch-domains-demo.ts +221 -0
  64. package/examples/frontend-demo/index.html +2 -2
  65. package/examples/frontend-demo/package-lock.json +4 -1
  66. package/examples/index.ts +3 -5
  67. package/jest.config.js +25 -0
  68. package/package.json +6 -2
  69. package/src/abi/TerminusDIDQueryABI.ts +516 -0
  70. package/src/business/index.ts +9 -33
  71. package/src/business/tag-context.ts +35 -7
  72. package/src/cli.ts +253 -90
  73. package/src/config/index.ts +34 -19
  74. package/src/domain/core.ts +382 -0
  75. package/src/domain/index.ts +271 -641
  76. package/src/domain/types.ts +59 -0
  77. package/src/index.ts +221 -207
  78. package/src/utils/crypto-utils.ts +205 -2
  79. package/src/utils/error-parser.ts +2 -1
  80. package/src/utils/event-parser.ts +353 -0
  81. package/src/utils/tag-type-builder.ts +138 -0
  82. package/src/utils/tag-type-parser.ts +246 -0
  83. package/tests/unit/crypto-utils.test.ts +338 -0
  84. package/tests/unit/ed25519-jwk.test.ts +201 -0
  85. package/tests/unit/event-parser.test.ts +690 -0
  86. package/tests/unit/generate-mnemonic.test.ts +268 -0
  87. package/tests/unit/olares-id-format.test.ts +321 -0
  88. package/tests/unit/tag-type-parser.test.ts +802 -0
  89. package/tests/unit/tag-types.test.ts +821 -0
  90. package/tsconfig.json +3 -2
  91. package/dist/abi/ABITypeABI.d.ts +0 -88
  92. package/dist/abi/ABITypeABI.d.ts.map +0 -1
  93. package/dist/abi/ABITypeABI.js +0 -382
  94. package/dist/abi/ABITypeABI.js.map +0 -1
  95. package/dist/abi/RegistryABI.d.ts +0 -77
  96. package/dist/abi/RegistryABI.d.ts.map +0 -1
  97. package/dist/abi/RegistryABI.js +0 -462
  98. package/dist/abi/RegistryABI.js.map +0 -1
  99. package/dist/tag/address.d.ts +0 -11
  100. package/dist/tag/address.d.ts.map +0 -1
  101. package/dist/tag/address.js +0 -44
  102. package/dist/tag/address.js.map +0 -1
  103. package/dist/tag/array.d.ts +0 -14
  104. package/dist/tag/array.d.ts.map +0 -1
  105. package/dist/tag/array.js +0 -72
  106. package/dist/tag/array.js.map +0 -1
  107. package/dist/tag/bool.d.ts +0 -11
  108. package/dist/tag/bool.d.ts.map +0 -1
  109. package/dist/tag/bool.js +0 -43
  110. package/dist/tag/bool.js.map +0 -1
  111. package/dist/tag/bytes.d.ts +0 -11
  112. package/dist/tag/bytes.d.ts.map +0 -1
  113. package/dist/tag/bytes.js +0 -37
  114. package/dist/tag/bytes.js.map +0 -1
  115. package/dist/tag/flarray.d.ts +0 -15
  116. package/dist/tag/flarray.d.ts.map +0 -1
  117. package/dist/tag/flarray.js +0 -81
  118. package/dist/tag/flarray.js.map +0 -1
  119. package/dist/tag/flbytes.d.ts +0 -11
  120. package/dist/tag/flbytes.d.ts.map +0 -1
  121. package/dist/tag/flbytes.js +0 -47
  122. package/dist/tag/flbytes.js.map +0 -1
  123. package/dist/tag/index.d.ts +0 -32
  124. package/dist/tag/index.d.ts.map +0 -1
  125. package/dist/tag/index.js +0 -121
  126. package/dist/tag/index.js.map +0 -1
  127. package/dist/tag/int.d.ts +0 -12
  128. package/dist/tag/int.d.ts.map +0 -1
  129. package/dist/tag/int.js +0 -49
  130. package/dist/tag/int.js.map +0 -1
  131. package/dist/tag/string.d.ts +0 -11
  132. package/dist/tag/string.d.ts.map +0 -1
  133. package/dist/tag/string.js +0 -37
  134. package/dist/tag/string.js.map +0 -1
  135. package/dist/tag/tag.d.ts +0 -67
  136. package/dist/tag/tag.d.ts.map +0 -1
  137. package/dist/tag/tag.js +0 -157
  138. package/dist/tag/tag.js.map +0 -1
  139. package/dist/tag/tuple.d.ts +0 -17
  140. package/dist/tag/tuple.d.ts.map +0 -1
  141. package/dist/tag/tuple.js +0 -162
  142. package/dist/tag/tuple.js.map +0 -1
  143. package/dist/tag/uint.d.ts +0 -12
  144. package/dist/tag/uint.d.ts.map +0 -1
  145. package/dist/tag/uint.js +0 -49
  146. package/dist/tag/uint.js.map +0 -1
  147. package/dist/test/did.d.ts +0 -2
  148. package/dist/test/did.d.ts.map +0 -1
  149. package/dist/test/did.js +0 -177
  150. package/dist/test/did.js.map +0 -1
  151. package/dist/utils/tag-abi-codec.d.ts +0 -69
  152. package/dist/utils/tag-abi-codec.d.ts.map +0 -1
  153. package/dist/utils/tag-abi-codec.js +0 -144
  154. package/dist/utils/tag-abi-codec.js.map +0 -1
  155. package/examples/crypto-utilities.ts +0 -140
  156. package/examples/ed25519-jwk.ts +0 -73
  157. package/examples/generate-mnemonic.ts +0 -149
  158. package/examples/legacy.ts +0 -33
  159. package/examples/olares-id-format.ts +0 -197
  160. package/examples/tag-builder.ts +0 -235
  161. package/examples/tag-nested-tuple.ts +0 -190
  162. package/examples/tag-simple.ts +0 -149
  163. package/examples/tag-tagger.ts +0 -217
  164. package/examples/test-nested-tuple-conversion.ts +0 -143
  165. package/examples/test-type-bytes-parser.ts +0 -70
  166. package/src/abi/ABITypeABI.ts +0 -379
  167. package/src/abi/RegistryABI.ts +0 -459
  168. package/src/tag/address.ts +0 -48
  169. package/src/tag/array.ts +0 -80
  170. package/src/tag/bool.ts +0 -43
  171. package/src/tag/bytes.ts +0 -38
  172. package/src/tag/flarray.ts +0 -99
  173. package/src/tag/flbytes.ts +0 -48
  174. package/src/tag/index.ts +0 -170
  175. package/src/tag/int.ts +0 -51
  176. package/src/tag/string.ts +0 -38
  177. package/src/tag/tag.ts +0 -229
  178. package/src/tag/tuple.ts +0 -193
  179. package/src/tag/uint.ts +0 -51
  180. package/src/test/did.ts +0 -346
  181. package/src/utils/tag-abi-codec.ts +0 -158
@@ -0,0 +1,140 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.isTransferEvent = isTransferEvent;
7
+ exports.isMintEvent = isMintEvent;
8
+ exports.isTagAddedEvent = isTagAddedEvent;
9
+ exports.isTagRemovedEvent = isTagRemovedEvent;
10
+ exports.isTagElemUpdatedEvent = isTagElemUpdatedEvent;
11
+ exports.isTagElemPushedEvent = isTagElemPushedEvent;
12
+ exports.isTagElemPoppedEvent = isTagElemPoppedEvent;
13
+ exports.isNewTagTypeEvent = isNewTagTypeEvent;
14
+ exports.parseEvents = parseEvents;
15
+ const ethers_1 = require("ethers");
16
+ const TerminusDIDABI_1 = __importDefault(require("../abi/TerminusDIDABI"));
17
+ // ============================================================
18
+ // Type Guards
19
+ // ============================================================
20
+ function isTransferEvent(event) {
21
+ return event.eventName === 'Transfer';
22
+ }
23
+ function isMintEvent(event) {
24
+ return (event.eventName === 'Transfer' &&
25
+ event.args.from === '0x0000000000000000000000000000000000000000');
26
+ }
27
+ function isTagAddedEvent(event) {
28
+ return event.eventName === 'TagAdded';
29
+ }
30
+ function isTagRemovedEvent(event) {
31
+ return event.eventName === 'TagRemoved';
32
+ }
33
+ function isTagElemUpdatedEvent(event) {
34
+ return event.eventName === 'TagElemUpdated';
35
+ }
36
+ function isTagElemPushedEvent(event) {
37
+ return event.eventName === 'TagElemPushed';
38
+ }
39
+ function isTagElemPoppedEvent(event) {
40
+ return event.eventName === 'TagElemPopped';
41
+ }
42
+ function isNewTagTypeEvent(event) {
43
+ return event.eventName === 'NewTagType';
44
+ }
45
+ // ============================================================
46
+ // Parser
47
+ // ============================================================
48
+ const _iface = new ethers_1.ethers.Interface(TerminusDIDABI_1.default.abi);
49
+ /**
50
+ * Derive tokenId from a domain name, matching the on-chain formula:
51
+ * uint256(keccak256(bytes(domain)))
52
+ */
53
+ function domainToTokenId(domain) {
54
+ return BigInt(ethers_1.ethers.keccak256(ethers_1.ethers.toUtf8Bytes(domain)));
55
+ }
56
+ /**
57
+ * Extract tokenId from event args.
58
+ *
59
+ * ✅ directly in args: Transfer, TransferByParentOwner, TransferBySuperAdmin
60
+ * ✅ derived locally: NewTagType (args.domain), Tag* events (args.to)
61
+ * ❌ not applicable: Approval, ApprovalForAll, Initialized, Upgraded,
62
+ * OwnershipTransferred*, OffchainStringArray
63
+ */
64
+ function extractTokenId(eventName, args) {
65
+ switch (eventName) {
66
+ case 'Transfer':
67
+ case 'TransferByParentOwner':
68
+ case 'TransferBySuperAdmin':
69
+ return args['tokenId'];
70
+ case 'NewTagType':
71
+ return domainToTokenId(args['domain']);
72
+ case 'TagAdded':
73
+ case 'TagRemoved':
74
+ case 'TagElemUpdated':
75
+ case 'TagElemPushed':
76
+ case 'TagElemPopped':
77
+ return domainToTokenId(args['to']);
78
+ default:
79
+ return undefined;
80
+ }
81
+ }
82
+ /**
83
+ * Parse raw eth_getLogs entries using the TerminusDID contract ABI.
84
+ *
85
+ * Logs that don't match any known event (e.g. from a different contract)
86
+ * are silently skipped.
87
+ *
88
+ * @example
89
+ * ```typescript
90
+ * const logs = await provider.getLogs({ address: CONTRACT_ADDRESS, fromBlock, toBlock });
91
+ * const events = parseEvents(logs);
92
+ * for (const event of events) {
93
+ * if (isTransferEvent(event)) {
94
+ * console.log('Transfer:', event.args.from, '->', event.args.to, event.args.tokenId);
95
+ * }
96
+ * }
97
+ * ```
98
+ */
99
+ function parseEvents(logs) {
100
+ const result = [];
101
+ for (const log of logs) {
102
+ try {
103
+ const parsed = _iface.parseLog({
104
+ topics: log.topics,
105
+ data: log.data
106
+ });
107
+ if (!parsed) {
108
+ console.warn('[event-parser] parseLog returned null, matching event cannot be found', {
109
+ tx: log.transactionHash,
110
+ logIndex: log.logIndex
111
+ });
112
+ continue;
113
+ }
114
+ const args = {};
115
+ parsed.fragment.inputs.forEach((input, idx) => {
116
+ args[input.name] = parsed.args[idx];
117
+ });
118
+ const eventName = parsed.name;
119
+ result.push({
120
+ eventName,
121
+ blockNumber: parseInt(log.blockNumber, 16),
122
+ transactionHash: log.transactionHash,
123
+ logIndex: parseInt(log.logIndex, 16),
124
+ tokenId: extractTokenId(eventName, args),
125
+ args: args,
126
+ raw: log
127
+ });
128
+ }
129
+ catch (err) {
130
+ console.error('[event-parser] failed to parse log', {
131
+ tx: log.transactionHash,
132
+ logIndex: log.logIndex,
133
+ err
134
+ });
135
+ throw err;
136
+ }
137
+ }
138
+ return result;
139
+ }
140
+ //# sourceMappingURL=event-parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-parser.js","sourceRoot":"","sources":["../../src/utils/event-parser.ts"],"names":[],"mappings":"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"}
@@ -145,6 +145,49 @@ export declare class TagTypeBuilder {
145
145
  static addressArray(): TagTypeBuilder;
146
146
  static stringArray(): TagTypeBuilder;
147
147
  static uint256Array(): TagTypeBuilder;
148
+ /**
149
+ * Convert object to array for tuple encoding
150
+ * Recursively handles nested tuples and tuple arrays
151
+ *
152
+ * @param abiType ABI type string (e.g., "tuple(string,uint8)")
153
+ * @param value Value to convert (object or array)
154
+ * @returns Array representation suitable for ABI encoding
155
+ *
156
+ * @example
157
+ * // Simple tuple
158
+ * convertObjectToArray(
159
+ * "tuple(string,uint8)",
160
+ * {name: "Alice", age: 30}
161
+ * ) // → ["Alice", 30]
162
+ *
163
+ * // Nested tuple
164
+ * convertObjectToArray(
165
+ * "tuple(string,tuple(uint8,bool))",
166
+ * {name: "Bob", profile: {age: 25, active: true}}
167
+ * ) // → ["Bob", [25, true]]
168
+ *
169
+ * // Tuple array
170
+ * convertObjectToArray(
171
+ * "tuple(uint8,address)[]",
172
+ * [{algorithm: 0, addr: "0x123..."}, {algorithm: 1, addr: "0x456..."}]
173
+ * ) // → [[0, "0x123..."], [1, "0x456..."]]
174
+ */
175
+ static convertObjectToArray(abiType: string, value: any): any;
176
+ /**
177
+ * Parse tuple field types from ABI type string
178
+ * Handles nested tuples correctly
179
+ *
180
+ * @param abiType Tuple ABI type string
181
+ * @returns Array of field type strings
182
+ *
183
+ * @example
184
+ * parseTupleFieldTypes("tuple(string,uint8)")
185
+ * // → ["string", "uint8"]
186
+ *
187
+ * parseTupleFieldTypes("tuple(string,tuple(uint8,bool))")
188
+ * // → ["string", "tuple(uint8,bool)"]
189
+ */
190
+ static parseTupleFieldTypes(abiType: string): string[];
148
191
  }
149
192
  /**
150
193
  * Tuple Type Builder (supports field names and object encoding)
@@ -1 +1 @@
1
- {"version":3,"file":"tag-type-builder.d.ts","sourceRoot":"","sources":["../../src/utils/tag-type-builder.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,qBAAa,cAAc;IAC1B,OAAO,CAAC,SAAS,CAAc;IAC/B,OAAO,CAAC,aAAa,CAAc;IAEnC,SAAS,aAAa,SAAS,EAAE,MAAM,EAAE,aAAa,GAAE,MAAW;IAKnE;;OAEG;IACH,YAAY,IAAI,MAAM;IAItB;;OAEG;IACH,gBAAgB,IAAI,MAAM;IAI1B;;;;;OAKG;IACH,MAAM,CAAC,yBAAyB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;IAsF3D;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,kBAAkB;IAgDjC;;;OAGG;IACH,aAAa,IAAI,MAAM,EAAE,EAAE;IAS3B;;;;;;OAMG;IACH,MAAM,CAAC,IAAI,CAAC,IAAI,GAAE,MAAY,GAAG,cAAc;IAS/C;;;;;;OAMG;IACH,MAAM,CAAC,GAAG,CAAC,IAAI,GAAE,MAAY,GAAG,cAAc;IAS9C;;;;OAIG;IACH,MAAM,CAAC,IAAI,IAAI,cAAc;IAI7B;;;;OAIG;IACH,MAAM,CAAC,MAAM,IAAI,cAAc;IAI/B;;;;OAIG;IACH,MAAM,CAAC,OAAO,IAAI,cAAc;IAIhC;;;;OAIG;IACH,MAAM,CAAC,KAAK,IAAI,cAAc;IAI9B;;;;;OAKG;IACH,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc;IAY/C;;;;;OAKG;IACH,MAAM,CAAC,KAAK,CAAC,WAAW,EAAE,cAAc,GAAG,cAAc;IAYzD;;;;;;OAMG;IACH,MAAM,CAAC,UAAU,CAChB,WAAW,EAAE,cAAc,EAC3B,MAAM,EAAE,MAAM,GACZ,cAAc;IAoBjB;;;;;;;;;;;;;;;;;;;;;OAqBG;IACH,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,GAAG,gBAAgB;IAyCtE,MAAM,CAAC,KAAK;IAGZ,MAAM,CAAC,MAAM;IAGb,MAAM,CAAC,MAAM;IAGb,MAAM,CAAC,MAAM;IAGb,MAAM,CAAC,OAAO;IAGd,MAAM,CAAC,OAAO;IAId,MAAM,CAAC,IAAI;IAGX,MAAM,CAAC,KAAK;IAGZ,MAAM,CAAC,KAAK;IAGZ,MAAM,CAAC,KAAK;IAGZ,MAAM,CAAC,MAAM;IAGb,MAAM,CAAC,MAAM;IAIb,MAAM,CAAC,OAAO;IAId,MAAM,CAAC,YAAY;IAGnB,MAAM,CAAC,WAAW;IAGlB,MAAM,CAAC,YAAY;CAGnB;AAED;;GAEG;AACH,qBAAa,gBAAiB,SAAQ,cAAc;IACnD,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,UAAU,CAAC,CAAiC;gBAGnD,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAAE,EAAE,EACtB,aAAa,GAAE,MAAW,EAC1B,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC;IAO5C,aAAa,IAAI,MAAM,EAAE,EAAE;CAG3B"}
1
+ {"version":3,"file":"tag-type-builder.d.ts","sourceRoot":"","sources":["../../src/utils/tag-type-builder.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,qBAAa,cAAc;IAC1B,OAAO,CAAC,SAAS,CAAc;IAC/B,OAAO,CAAC,aAAa,CAAc;IAEnC,SAAS,aAAa,SAAS,EAAE,MAAM,EAAE,aAAa,GAAE,MAAW;IAKnE;;OAEG;IACH,YAAY,IAAI,MAAM;IAItB;;OAEG;IACH,gBAAgB,IAAI,MAAM;IAI1B;;;;;OAKG;IACH,MAAM,CAAC,yBAAyB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;IAsF3D;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,kBAAkB;IAgDjC;;;OAGG;IACH,aAAa,IAAI,MAAM,EAAE,EAAE;IAS3B;;;;;;OAMG;IACH,MAAM,CAAC,IAAI,CAAC,IAAI,GAAE,MAAY,GAAG,cAAc;IAS/C;;;;;;OAMG;IACH,MAAM,CAAC,GAAG,CAAC,IAAI,GAAE,MAAY,GAAG,cAAc;IAS9C;;;;OAIG;IACH,MAAM,CAAC,IAAI,IAAI,cAAc;IAI7B;;;;OAIG;IACH,MAAM,CAAC,MAAM,IAAI,cAAc;IAI/B;;;;OAIG;IACH,MAAM,CAAC,OAAO,IAAI,cAAc;IAIhC;;;;OAIG;IACH,MAAM,CAAC,KAAK,IAAI,cAAc;IAI9B;;;;;OAKG;IACH,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc;IAY/C;;;;;OAKG;IACH,MAAM,CAAC,KAAK,CAAC,WAAW,EAAE,cAAc,GAAG,cAAc;IAYzD;;;;;;OAMG;IACH,MAAM,CAAC,UAAU,CAChB,WAAW,EAAE,cAAc,EAC3B,MAAM,EAAE,MAAM,GACZ,cAAc;IAoBjB;;;;;;;;;;;;;;;;;;;;;OAqBG;IACH,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,GAAG,gBAAgB;IAyCtE,MAAM,CAAC,KAAK;IAGZ,MAAM,CAAC,MAAM;IAGb,MAAM,CAAC,MAAM;IAGb,MAAM,CAAC,MAAM;IAGb,MAAM,CAAC,OAAO;IAGd,MAAM,CAAC,OAAO;IAId,MAAM,CAAC,IAAI;IAGX,MAAM,CAAC,KAAK;IAGZ,MAAM,CAAC,KAAK;IAGZ,MAAM,CAAC,KAAK;IAGZ,MAAM,CAAC,MAAM;IAGb,MAAM,CAAC,MAAM;IAIb,MAAM,CAAC,OAAO;IAId,MAAM,CAAC,YAAY;IAGnB,MAAM,CAAC,WAAW;IAGlB,MAAM,CAAC,YAAY;IAQnB;;;;;;;;;;;;;;;;;;;;;;;;;;OA0BG;IACH,MAAM,CAAC,oBAAoB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,GAAG;IA2D7D;;;;;;;;;;;;;OAaG;IACH,MAAM,CAAC,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE;CAiCtD;AAED;;GAEG;AACH,qBAAa,gBAAiB,SAAQ,cAAc;IACnD,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,UAAU,CAAC,CAAiC;gBAGnD,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAAE,EAAE,EACtB,aAAa,GAAE,MAAW,EAC1B,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC;IAO5C,aAAa,IAAI,MAAM,EAAE,EAAE;CAG3B"}
@@ -391,6 +391,128 @@ class TagTypeBuilder {
391
391
  static uint256Array() {
392
392
  return this.array(this.uint256());
393
393
  }
394
+ // ========================================
395
+ // Object to Array Conversion (for encoding)
396
+ // ========================================
397
+ /**
398
+ * Convert object to array for tuple encoding
399
+ * Recursively handles nested tuples and tuple arrays
400
+ *
401
+ * @param abiType ABI type string (e.g., "tuple(string,uint8)")
402
+ * @param value Value to convert (object or array)
403
+ * @returns Array representation suitable for ABI encoding
404
+ *
405
+ * @example
406
+ * // Simple tuple
407
+ * convertObjectToArray(
408
+ * "tuple(string,uint8)",
409
+ * {name: "Alice", age: 30}
410
+ * ) // → ["Alice", 30]
411
+ *
412
+ * // Nested tuple
413
+ * convertObjectToArray(
414
+ * "tuple(string,tuple(uint8,bool))",
415
+ * {name: "Bob", profile: {age: 25, active: true}}
416
+ * ) // → ["Bob", [25, true]]
417
+ *
418
+ * // Tuple array
419
+ * convertObjectToArray(
420
+ * "tuple(uint8,address)[]",
421
+ * [{algorithm: 0, addr: "0x123..."}, {algorithm: 1, addr: "0x456..."}]
422
+ * ) // → [[0, "0x123..."], [1, "0x456..."]]
423
+ */
424
+ static convertObjectToArray(abiType, value) {
425
+ // Handle null and primitives
426
+ if (value === null || typeof value !== 'object') {
427
+ return value;
428
+ }
429
+ // Handle tuple[] type (array of tuples)
430
+ // Check if it ends with [] and starts with tuple
431
+ if (abiType.startsWith('tuple(') && abiType.endsWith('[]')) {
432
+ if (Array.isArray(value)) {
433
+ // Remove [] suffix to get element type: "tuple(uint8,address)[]" → "tuple(uint8,address)"
434
+ const elementType = abiType.slice(0, -2);
435
+ // Recursively convert each element
436
+ return value.map((item) => this.convertObjectToArray(elementType, item));
437
+ }
438
+ // If not an array but type is tuple[], return as-is
439
+ return value;
440
+ }
441
+ // If already an array (but not tuple[]), return as-is
442
+ if (Array.isArray(value)) {
443
+ return value;
444
+ }
445
+ // If not a tuple type, return as-is
446
+ if (!abiType.startsWith('tuple(')) {
447
+ return value;
448
+ }
449
+ // Parse tuple field types
450
+ const fieldTypes = this.parseTupleFieldTypes(abiType);
451
+ const fieldNames = Object.keys(value);
452
+ if (fieldNames.length !== fieldTypes.length) {
453
+ throw new Error(`Tuple field count mismatch: expected ${fieldTypes.length} fields, got ${fieldNames.length}`);
454
+ }
455
+ // Convert object to array, recursively handling nested tuples
456
+ const result = [];
457
+ for (let i = 0; i < fieldNames.length; i++) {
458
+ const fieldName = fieldNames[i];
459
+ const fieldType = fieldTypes[i];
460
+ const fieldValue = value[fieldName];
461
+ // Recursively convert nested tuples (including nested tuple arrays)
462
+ if (fieldType.startsWith('tuple(')) {
463
+ result.push(this.convertObjectToArray(fieldType, fieldValue));
464
+ }
465
+ else {
466
+ result.push(fieldValue);
467
+ }
468
+ }
469
+ return result;
470
+ }
471
+ /**
472
+ * Parse tuple field types from ABI type string
473
+ * Handles nested tuples correctly
474
+ *
475
+ * @param abiType Tuple ABI type string
476
+ * @returns Array of field type strings
477
+ *
478
+ * @example
479
+ * parseTupleFieldTypes("tuple(string,uint8)")
480
+ * // → ["string", "uint8"]
481
+ *
482
+ * parseTupleFieldTypes("tuple(string,tuple(uint8,bool))")
483
+ * // → ["string", "tuple(uint8,bool)"]
484
+ */
485
+ static parseTupleFieldTypes(abiType) {
486
+ if (!abiType.startsWith('tuple(')) {
487
+ return [];
488
+ }
489
+ const innerTypes = abiType.slice(6, -1); // Remove "tuple(" and ")"
490
+ const fields = [];
491
+ let depth = 0;
492
+ let currentField = '';
493
+ for (let i = 0; i < innerTypes.length; i++) {
494
+ const char = innerTypes[i];
495
+ if (char === '(') {
496
+ depth++;
497
+ currentField += char;
498
+ }
499
+ else if (char === ')') {
500
+ depth--;
501
+ currentField += char;
502
+ }
503
+ else if (char === ',' && depth === 0) {
504
+ fields.push(currentField.trim());
505
+ currentField = '';
506
+ }
507
+ else {
508
+ currentField += char;
509
+ }
510
+ }
511
+ if (currentField) {
512
+ fields.push(currentField.trim());
513
+ }
514
+ return fields;
515
+ }
394
516
  }
395
517
  exports.TagTypeBuilder = TagTypeBuilder;
396
518
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"tag-type-builder.js","sourceRoot":"","sources":["../../src/utils/tag-type-builder.ts"],"names":[],"mappings":";;;AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,MAAa,cAAc;IAI1B,YAAsB,SAAiB,EAAE,gBAAwB,EAAE;QAH3D,cAAS,GAAW,EAAE,CAAC;QACvB,kBAAa,GAAW,EAAE,CAAC;QAGlC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;IACpC,CAAC;IAED;;OAEG;IACH,YAAY;QACX,OAAO,IAAI,CAAC,SAAS,CAAC;IACvB,CAAC;IAED;;OAEG;IACH,gBAAgB;QACf,OAAO,IAAI,CAAC,aAAa,CAAC;IAC3B,CAAC;IAED;;;;;OAKG;IACH,MAAM,CAAC,yBAAyB,CAAC,SAAiB;QACjD,8BAA8B;QAC9B,MAAM,KAAK,GAAG,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC;YACvC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;YACpB,CAAC,CAAC,SAAS,CAAC;QACb,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxB,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;QACrC,CAAC;QAED,MAAM,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAEjD,QAAQ,QAAQ,EAAE,CAAC;YAClB,KAAK,IAAI,CAAC,CAAC,CAAC;gBACX,MAAM;gBACN,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBAC7C,OAAO,MAAM,IAAI,GAAG,CAAC,EAAE,CAAC;YACzB,CAAC;YACD,KAAK,IAAI,CAAC,CAAC,CAAC;gBACX,OAAO;gBACP,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBAC7C,OAAO,OAAO,IAAI,GAAG,CAAC,EAAE,CAAC;YAC1B,CAAC;YACD,KAAK,IAAI,CAAC,CAAC,CAAC;gBACX,OAAO;gBACP,OAAO,MAAM,CAAC;YACf,CAAC;YACD,KAAK,IAAI,CAAC,CAAC,CAAC;gBACX,SAAS;gBACT,OAAO,QAAQ,CAAC;YACjB,CAAC;YACD,KAAK,IAAI,CAAC,CAAC,CAAC;gBACX,QAAQ;gBACR,MAAM,gBAAgB,GAAG,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBAC/C,MAAM,WAAW,GAChB,IAAI,CAAC,yBAAyB,CAAC,gBAAgB,CAAC,CAAC;gBAClD,OAAO,GAAG,WAAW,IAAI,CAAC;YAC3B,CAAC;YACD,KAAK,IAAI,CAAC,CAAC,CAAC;gBACX,aAAa;gBACb,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBAC/C,MAAM,gBAAgB,GAAG,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBAC/C,MAAM,WAAW,GAChB,IAAI,CAAC,yBAAyB,CAAC,gBAAgB,CAAC,CAAC;gBAClD,OAAO,GAAG,WAAW,IAAI,MAAM,GAAG,CAAC;YACpC,CAAC;YACD,KAAK,IAAI,CAAC,CAAC,CAAC;gBACX,QAAQ;gBACR,MAAM,UAAU,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBACnD,IAAI,MAAM,GAAG,CAAC,CAAC;gBACf,MAAM,UAAU,GAAa,EAAE,CAAC;gBAEhC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC;oBACrC,sCAAsC;oBACtC,MAAM,cAAc,GAAG,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;oBAClD,MAAM,SAAS,GACd,IAAI,CAAC,yBAAyB,CAAC,cAAc,CAAC,CAAC;oBAChD,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;oBAE3B,kDAAkD;oBAClD,MAAM,oBAAoB,GACzB,IAAI,CAAC,kBAAkB,CAAC,cAAc,CAAC,CAAC;oBACzC,MAAM,IAAI,oBAAoB,CAAC;gBAChC,CAAC;gBAED,OAAO,SAAS,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;YACzC,CAAC;YACD,KAAK,IAAI,CAAC,CAAC,CAAC;gBACX,UAAU;gBACV,OAAO,SAAS,CAAC;YAClB,CAAC;YACD,KAAK,IAAI,CAAC,CAAC,CAAC;gBACX,aAAa;gBACb,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBAC7C,OAAO,QAAQ,IAAI,EAAE,CAAC;YACvB,CAAC;YACD,KAAK,IAAI,CAAC,CAAC,CAAC;gBACX,QAAQ;gBACR,OAAO,OAAO,CAAC;YAChB,CAAC;YACD;gBACC,MAAM,IAAI,KAAK,CACd,wBAAwB,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAC/C,CAAC;QACJ,CAAC;IACF,CAAC;IAED;;;OAGG;IACK,MAAM,CAAC,kBAAkB,CAAC,SAAiB;QAClD,MAAM,KAAK,GAAG,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC;YACvC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;YACpB,CAAC,CAAC,SAAS,CAAC;QACb,MAAM,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAEjD,QAAQ,QAAQ,EAAE,CAAC;YAClB,KAAK,IAAI,CAAC,CAAC,MAAM;YACjB,KAAK,IAAI,CAAC,CAAC,OAAO;YAClB,KAAK,IAAI,EAAE,aAAa;gBACvB,OAAO,CAAC,CAAC,CAAC,4BAA4B;YACvC,KAAK,IAAI,CAAC,CAAC,OAAO;YAClB,KAAK,IAAI,CAAC,CAAC,SAAS;YACpB,KAAK,IAAI,CAAC,CAAC,UAAU;YACrB,KAAK,IAAI,EAAE,QAAQ;gBAClB,OAAO,CAAC,CAAC,CAAC,mBAAmB;YAC9B,KAAK,IAAI,CAAC,CAAC,CAAC;gBACX,QAAQ;gBACR,MAAM,gBAAgB,GAAG,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBAC/C,OAAO,CAAC,GAAG,IAAI,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,CAAC;YACtD,CAAC;YACD,KAAK,IAAI,CAAC,CAAC,CAAC;gBACX,aAAa;gBACb,MAAM,gBAAgB,GAAG,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBAC/C,OAAO,CAAC,GAAG,IAAI,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,CAAC,CAAC,yCAAyC;YAChG,CAAC;YACD,KAAK,IAAI,CAAC,CAAC,CAAC;gBACX,QAAQ;gBACR,MAAM,UAAU,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBACnD,IAAI,MAAM,GAAG,CAAC,CAAC,CAAC,+BAA+B;gBAC/C,IAAI,MAAM,GAAG,CAAC,CAAC;gBAEf,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC;oBACrC,MAAM,cAAc,GAAG,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;oBAClD,MAAM,WAAW,GAAG,IAAI,CAAC,kBAAkB,CAAC,cAAc,CAAC,CAAC;oBAC5D,MAAM,IAAI,WAAW,CAAC;oBACtB,MAAM,IAAI,WAAW,CAAC;gBACvB,CAAC;gBAED,OAAO,MAAM,CAAC;YACf,CAAC;YACD;gBACC,MAAM,IAAI,KAAK,CACd,wBAAwB,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAC/C,CAAC;QACJ,CAAC;IACF,CAAC;IAED;;;OAGG;IACH,aAAa;QACZ,oEAAoE;QACpE,OAAO,EAAE,CAAC;IACX,CAAC;IAED,2CAA2C;IAC3C,cAAc;IACd,2CAA2C;IAE3C;;;;;;OAMG;IACH,MAAM,CAAC,IAAI,CAAC,OAAe,GAAG;QAC7B,IAAI,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;YAC9C,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;QAC/D,CAAC;QACD,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,CAAC;QACtB,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QACnD,OAAO,IAAI,cAAc,CAAC,KAAK,OAAO,EAAE,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC;IAC1D,CAAC;IAED;;;;;;OAMG;IACH,MAAM,CAAC,GAAG,CAAC,OAAe,GAAG;QAC5B,IAAI,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;YAC9C,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;QAC9D,CAAC;QACD,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,CAAC;QACtB,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QACnD,OAAO,IAAI,cAAc,CAAC,KAAK,OAAO,EAAE,EAAE,MAAM,IAAI,EAAE,CAAC,CAAC;IACzD,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,IAAI;QACV,OAAO,IAAI,cAAc,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACzC,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,MAAM;QACZ,OAAO,IAAI,cAAc,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC3C,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,OAAO;QACb,OAAO,IAAI,cAAc,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAC5C,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,KAAK;QACX,OAAO,IAAI,cAAc,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC1C,CAAC;IAED;;;;;OAKG;IACH,MAAM,CAAC,UAAU,CAAC,IAAY;QAC7B,IAAI,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,EAAE,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;QAC9D,CAAC;QACD,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QACnD,OAAO,IAAI,cAAc,CAAC,KAAK,OAAO,EAAE,EAAE,QAAQ,IAAI,EAAE,CAAC,CAAC;IAC3D,CAAC;IAED,2CAA2C;IAC3C,cAAc;IACd,2CAA2C;IAE3C;;;;;OAKG;IACH,MAAM,CAAC,KAAK,CAAC,WAA2B;QACvC,MAAM,SAAS,GAAG,KAAK,WAAW,CAAC,YAAY,EAAE,EAAE,CAAC;QACpD,MAAM,aAAa,GAAG,GAAG,WAAW,CAAC,gBAAgB,EAAE,IAAI,CAAC;QAC5D,MAAM,UAAU,GAAG,WAAW,CAAC,aAAa,EAAE,CAAC;QAE/C,gEAAgE;QAChE,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3B,OAAO,IAAI,gBAAgB,CAAC,SAAS,EAAE,UAAU,EAAE,aAAa,CAAC,CAAC;QACnE,CAAC;QACD,OAAO,IAAI,cAAc,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;IACrD,CAAC;IAED;;;;;;OAMG;IACH,MAAM,CAAC,UAAU,CAChB,WAA2B,EAC3B,MAAc;QAEd,IAAI,MAAM,GAAG,CAAC,IAAI,MAAM,GAAG,KAAK,EAAE,CAAC;YAClC,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;QACnE,CAAC;QACD,MAAM,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QACvD,MAAM,SAAS,GAAG,KAAK,SAAS,GAAG,WAAW,CAAC,YAAY,EAAE,EAAE,CAAC;QAChE,MAAM,aAAa,GAAG,GAAG,WAAW,CAAC,gBAAgB,EAAE,IAAI,MAAM,GAAG,CAAC;QACrE,MAAM,UAAU,GAAG,WAAW,CAAC,aAAa,EAAE,CAAC;QAE/C,gEAAgE;QAChE,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3B,OAAO,IAAI,gBAAgB,CAAC,SAAS,EAAE,UAAU,EAAE,aAAa,CAAC,CAAC;QACnE,CAAC;QACD,OAAO,IAAI,cAAc,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;IACrD,CAAC;IAED,2CAA2C;IAC3C,iBAAiB;IACjB,2CAA2C;IAE3C;;;;;;;;;;;;;;;;;;;;;OAqBG;IACH,MAAM,CAAC,KAAK,CAAC,MAAsC;QAClD,MAAM,UAAU,GAAa,EAAE,CAAC;QAChC,MAAM,UAAU,GAAa,EAAE,CAAC;QAChC,MAAM,aAAa,GAAa,EAAE,CAAC;QACnC,MAAM,aAAa,GAAe,EAAE,CAAC;QAErC,yCAAyC;QACzC,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;YACxC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvB,CAAC;QACD,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAE/B,0EAA0E;QAC1E,KAAK,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YACpD,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;YACrC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC;YAE5C,+CAA+C;YAC/C,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;YACpC,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACvB,aAAa,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC;YAC/B,CAAC;QACF,CAAC;QAED,MAAM,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC;QACrC,MAAM,aAAa,GAAG,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QAC/D,MAAM,SAAS,GAAG,KAAK,aAAa,GAAG,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;QAC7D,MAAM,aAAa,GAAG,SAAS,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;QAE1D,OAAO,IAAI,gBAAgB,CAC1B,SAAS,EACT,aAAa,EACb,aAAa,EACb,MAAM,CACN,CAAC;IACH,CAAC;IAED,2CAA2C;IAC3C,wBAAwB;IACxB,2CAA2C;IAE3C,MAAM,CAAC,KAAK;QACX,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACrB,CAAC;IACD,MAAM,CAAC,MAAM;QACZ,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACtB,CAAC;IACD,MAAM,CAAC,MAAM;QACZ,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACtB,CAAC;IACD,MAAM,CAAC,MAAM;QACZ,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACtB,CAAC;IACD,MAAM,CAAC,OAAO;QACb,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACvB,CAAC;IACD,MAAM,CAAC,OAAO;QACb,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACvB,CAAC;IAED,MAAM,CAAC,IAAI;QACV,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;IACD,MAAM,CAAC,KAAK;QACX,OAAO,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACrB,CAAC;IACD,MAAM,CAAC,KAAK;QACX,OAAO,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACrB,CAAC;IACD,MAAM,CAAC,KAAK;QACX,OAAO,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACrB,CAAC;IACD,MAAM,CAAC,MAAM;QACZ,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACtB,CAAC;IACD,MAAM,CAAC,MAAM;QACZ,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACtB,CAAC;IAED,MAAM,CAAC,OAAO;QACb,OAAO,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;IAC5B,CAAC;IAED,MAAM,CAAC,YAAY;QAClB,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;IACnC,CAAC;IACD,MAAM,CAAC,WAAW;QACjB,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;IAClC,CAAC;IACD,MAAM,CAAC,YAAY;QAClB,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;IACnC,CAAC;CACD;AA5aD,wCA4aC;AAED;;GAEG;AACH,MAAa,gBAAiB,SAAQ,cAAc;IAInD,YACC,SAAiB,EACjB,UAAsB,EACtB,gBAAwB,EAAE,EAC1B,UAA2C;QAE3C,KAAK,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;QAChC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC9B,CAAC;IAED,aAAa;QACZ,OAAO,IAAI,CAAC,UAAU,CAAC;IACxB,CAAC;CACD;AAlBD,4CAkBC"}
1
+ {"version":3,"file":"tag-type-builder.js","sourceRoot":"","sources":["../../src/utils/tag-type-builder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,70 @@
1
+ import { AbiCoder } from 'ethers';
2
+ import { RawTagData, Tag } from '../domain/types';
3
+ /**
4
+ * Tag Type Parser
5
+ * Parse and decode Tag values with field name support
6
+ *
7
+ * Pair with TagTypeBuilder:
8
+ * - TagTypeBuilder: Encoding (build types, object → array)
9
+ * - TagTypeParser: Decoding (parse types, array → object, parse tags)
10
+ */
11
+ export declare class TagTypeParser {
12
+ /**
13
+ * Parse a raw tag into a formatted Tag object
14
+ * Handles all types including nested tuples
15
+ *
16
+ * @param rawTag Raw tag data from contract
17
+ * @param fieldNamesMap Map of field name hashes to field names
18
+ * @param abiCoder AbiCoder instance for decoding
19
+ * @returns Formatted Tag object
20
+ */
21
+ static parseTag(rawTag: RawTagData, fieldNamesMap: Map<string, string[]>, abiCoder: AbiCoder): Tag;
22
+ /**
23
+ * Convert decoded tuple array to object using field names
24
+ * Recursively handles nested tuples
25
+ *
26
+ * @param value Decoded tuple value (array form)
27
+ * @param abiType ABI type string of the tuple
28
+ * @param allFieldNames All field names in pre-order traversal
29
+ * @param context Context to track which field name array we're using
30
+ * @returns Object representation with field names
31
+ *
32
+ * @example
33
+ * // Simple tuple
34
+ * convertTupleToObject(
35
+ * ["Alice", 30],
36
+ * "tuple(string,uint8)",
37
+ * [["name", "age"]],
38
+ * { fieldNameIndex: 0 }
39
+ * ) // → { name: "Alice", age: 30 }
40
+ *
41
+ * // Nested tuple
42
+ * convertTupleToObject(
43
+ * ["Bob", [25, true]],
44
+ * "tuple(string,tuple(uint8,bool))",
45
+ * [["name", "profile"], ["age", "verified"]],
46
+ * { fieldNameIndex: 0 }
47
+ * ) // → { name: "Bob", profile: { age: 25, verified: true } }
48
+ */
49
+ static convertTupleToObject(value: any, abiType: string, allFieldNames: string[][], context: {
50
+ fieldNameIndex: number;
51
+ }): any;
52
+ /**
53
+ * Recursively convert BigInt values to strings
54
+ * Handles primitives, arrays, and objects
55
+ *
56
+ * @param value Value to convert
57
+ * @returns Value with all BigInts converted to strings
58
+ */
59
+ static convertBigIntToString(value: any): any;
60
+ /**
61
+ * Get all field names for a tag from the field names map
62
+ * Returns all field name arrays in pre-order (for nested tuples)
63
+ *
64
+ * @param fieldNamesHashes Array of field name hashes
65
+ * @param fieldNamesMap Map of hash to field names
66
+ * @returns Array of field name arrays in pre-order
67
+ */
68
+ private static getAllFieldNames;
69
+ }
70
+ //# sourceMappingURL=tag-type-parser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tag-type-parser.d.ts","sourceRoot":"","sources":["../../src/utils/tag-type-parser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAElC,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAC;AAElD;;;;;;;GAOG;AACH,qBAAa,aAAa;IACzB;;;;;;;;OAQG;IACH,MAAM,CAAC,QAAQ,CACd,MAAM,EAAE,UAAU,EAClB,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,EACpC,QAAQ,EAAE,QAAQ,GAChB,GAAG;IAkGN;;;;;;;;;;;;;;;;;;;;;;;;;;OA0BG;IACH,MAAM,CAAC,oBAAoB,CAC1B,KAAK,EAAE,GAAG,EACV,OAAO,EAAE,MAAM,EACf,aAAa,EAAE,MAAM,EAAE,EAAE,EACzB,OAAO,EAAE;QAAE,cAAc,EAAE,MAAM,CAAA;KAAE,GACjC,GAAG;IA0CN;;;;;;OAMG;IACH,MAAM,CAAC,qBAAqB,CAAC,KAAK,EAAE,GAAG,GAAG,GAAG;IAiB7C;;;;;;;OAOG;IACH,OAAO,CAAC,MAAM,CAAC,gBAAgB;CAe/B"}
@@ -0,0 +1,190 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TagTypeParser = void 0;
4
+ const tag_type_builder_1 = require("./tag-type-builder");
5
+ /**
6
+ * Tag Type Parser
7
+ * Parse and decode Tag values with field name support
8
+ *
9
+ * Pair with TagTypeBuilder:
10
+ * - TagTypeBuilder: Encoding (build types, object → array)
11
+ * - TagTypeParser: Decoding (parse types, array → object, parse tags)
12
+ */
13
+ class TagTypeParser {
14
+ /**
15
+ * Parse a raw tag into a formatted Tag object
16
+ * Handles all types including nested tuples
17
+ *
18
+ * @param rawTag Raw tag data from contract
19
+ * @param fieldNamesMap Map of field name hashes to field names
20
+ * @param abiCoder AbiCoder instance for decoding
21
+ * @returns Formatted Tag object
22
+ */
23
+ static parseTag(rawTag, fieldNamesMap, abiCoder) {
24
+ // Step 1: Parse type bytes to ABI type string
25
+ const abiTypeString = tag_type_builder_1.TagTypeBuilder.parseTypeBytesToAbiString(rawTag.abiType);
26
+ // If the tag has no value (defined but not set), return it with null formatted value
27
+ if (!rawTag.value || rawTag.value === '0x' || rawTag.value === '') {
28
+ return {
29
+ from: rawTag.from,
30
+ name: rawTag.name,
31
+ abiType: abiTypeString,
32
+ value: rawTag.value,
33
+ fieldNamesHash: rawTag.fieldNamesHash,
34
+ valueFormatted: null
35
+ };
36
+ }
37
+ // Step 2: Decode value
38
+ const decoded = abiCoder.decode([abiTypeString], rawTag.value);
39
+ let decodedValue = decoded[0];
40
+ // Step 3: Convert to user-friendly format
41
+ let formattedValue = decodedValue;
42
+ // Handle tuple types (including tuple arrays and nested tuples)
43
+ if (abiTypeString.includes('tuple')) {
44
+ // Get all field names in pre-order (for nested tuples)
45
+ const allFieldNames = this.getAllFieldNames(rawTag.fieldNamesHash, fieldNamesMap);
46
+ if (allFieldNames.length > 0) {
47
+ // Use a counter to track which field name array we're using
48
+ const context = { fieldNameIndex: 0 };
49
+ // Check if it's an array of tuples
50
+ if (abiTypeString.startsWith('tuple(') &&
51
+ abiTypeString.endsWith('[]')) {
52
+ // Array of tuples: convert each element
53
+ if (Array.isArray(decodedValue)) {
54
+ formattedValue = decodedValue.map((item) => {
55
+ // Reset field name index for each array element
56
+ const itemContext = { fieldNameIndex: 0 };
57
+ return this.convertTupleToObject(item, abiTypeString.slice(0, -2), allFieldNames, itemContext);
58
+ });
59
+ }
60
+ }
61
+ else if (abiTypeString.startsWith('tuple(')) {
62
+ // Single tuple: convert to object (with nested tuple support)
63
+ formattedValue = this.convertTupleToObject(decodedValue, abiTypeString, allFieldNames, context);
64
+ }
65
+ }
66
+ else {
67
+ // Log warning if field names not found for tuple
68
+ if (rawTag.fieldNamesHash.length > 0 &&
69
+ rawTag.fieldNamesHash[0] !==
70
+ '0x0000000000000000000000000000000000000000000000000000000000000000') {
71
+ console.warn(`⚠️ Field names not found for tag "${rawTag.name}" with hash(es): ${rawTag.fieldNamesHash.join(', ')}`);
72
+ }
73
+ }
74
+ }
75
+ // Convert BigInt to string for serialization
76
+ formattedValue = this.convertBigIntToString(formattedValue);
77
+ // Serialize objects/arrays to JSON string for did-support compatibility
78
+ if (formattedValue !== null && typeof formattedValue === 'object') {
79
+ formattedValue = JSON.stringify(formattedValue);
80
+ }
81
+ return {
82
+ from: rawTag.from,
83
+ name: rawTag.name,
84
+ abiType: abiTypeString,
85
+ value: rawTag.value,
86
+ fieldNamesHash: rawTag.fieldNamesHash,
87
+ valueFormatted: formattedValue
88
+ };
89
+ }
90
+ /**
91
+ * Convert decoded tuple array to object using field names
92
+ * Recursively handles nested tuples
93
+ *
94
+ * @param value Decoded tuple value (array form)
95
+ * @param abiType ABI type string of the tuple
96
+ * @param allFieldNames All field names in pre-order traversal
97
+ * @param context Context to track which field name array we're using
98
+ * @returns Object representation with field names
99
+ *
100
+ * @example
101
+ * // Simple tuple
102
+ * convertTupleToObject(
103
+ * ["Alice", 30],
104
+ * "tuple(string,uint8)",
105
+ * [["name", "age"]],
106
+ * { fieldNameIndex: 0 }
107
+ * ) // → { name: "Alice", age: 30 }
108
+ *
109
+ * // Nested tuple
110
+ * convertTupleToObject(
111
+ * ["Bob", [25, true]],
112
+ * "tuple(string,tuple(uint8,bool))",
113
+ * [["name", "profile"], ["age", "verified"]],
114
+ * { fieldNameIndex: 0 }
115
+ * ) // → { name: "Bob", profile: { age: 25, verified: true } }
116
+ */
117
+ static convertTupleToObject(value, abiType, allFieldNames, context) {
118
+ if (!Array.isArray(value) || !abiType.startsWith('tuple(')) {
119
+ return value;
120
+ }
121
+ // Get field names for current tuple level
122
+ if (context.fieldNameIndex >= allFieldNames.length) {
123
+ return value;
124
+ }
125
+ const fieldNames = allFieldNames[context.fieldNameIndex];
126
+ context.fieldNameIndex++;
127
+ if (fieldNames.length !== value.length) {
128
+ return value;
129
+ }
130
+ // Parse field types to determine which fields are nested tuples
131
+ const fieldTypes = tag_type_builder_1.TagTypeBuilder.parseTupleFieldTypes(abiType);
132
+ const obj = {};
133
+ for (let i = 0; i < fieldNames.length; i++) {
134
+ const fieldName = fieldNames[i];
135
+ const fieldValue = value[i];
136
+ const fieldType = fieldTypes[i];
137
+ // Recursively convert nested tuples
138
+ if (fieldType.startsWith('tuple(')) {
139
+ obj[fieldName] = this.convertTupleToObject(fieldValue, fieldType, allFieldNames, context);
140
+ }
141
+ else {
142
+ obj[fieldName] = fieldValue;
143
+ }
144
+ }
145
+ return obj;
146
+ }
147
+ /**
148
+ * Recursively convert BigInt values to strings
149
+ * Handles primitives, arrays, and objects
150
+ *
151
+ * @param value Value to convert
152
+ * @returns Value with all BigInts converted to strings
153
+ */
154
+ static convertBigIntToString(value) {
155
+ if (typeof value === 'bigint') {
156
+ return value.toString();
157
+ }
158
+ if (Array.isArray(value)) {
159
+ return value.map((v) => this.convertBigIntToString(v));
160
+ }
161
+ if (value !== null && typeof value === 'object') {
162
+ const result = {};
163
+ for (const key in value) {
164
+ result[key] = this.convertBigIntToString(value[key]);
165
+ }
166
+ return result;
167
+ }
168
+ return value;
169
+ }
170
+ /**
171
+ * Get all field names for a tag from the field names map
172
+ * Returns all field name arrays in pre-order (for nested tuples)
173
+ *
174
+ * @param fieldNamesHashes Array of field name hashes
175
+ * @param fieldNamesMap Map of hash to field names
176
+ * @returns Array of field name arrays in pre-order
177
+ */
178
+ static getAllFieldNames(fieldNamesHashes, fieldNamesMap) {
179
+ const allFieldNames = [];
180
+ for (const hash of fieldNamesHashes) {
181
+ const names = fieldNamesMap.get(hash);
182
+ if (names) {
183
+ allFieldNames.push(names);
184
+ }
185
+ }
186
+ return allFieldNames;
187
+ }
188
+ }
189
+ exports.TagTypeParser = TagTypeParser;
190
+ //# sourceMappingURL=tag-type-parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tag-type-parser.js","sourceRoot":"","sources":["../../src/utils/tag-type-parser.ts"],"names":[],"mappings":"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"}