@hashgraphonline/standards-sdk 0.1.141-canary.9 → 0.1.141-feat-hcs-21-flora-adapter.canary.b569177.46

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 (261) hide show
  1. package/README.md +13 -1
  2. package/dist/cjs/hcs-16/base-client.d.ts.map +1 -1
  3. package/dist/cjs/hcs-17/types.d.ts.map +1 -1
  4. package/dist/cjs/hcs-20/sdk.d.ts.map +1 -1
  5. package/dist/cjs/hcs-20/types.d.ts +9 -8
  6. package/dist/cjs/hcs-20/types.d.ts.map +1 -1
  7. package/dist/cjs/hcs-21/base-client.d.ts +5 -3
  8. package/dist/cjs/hcs-21/base-client.d.ts.map +1 -1
  9. package/dist/cjs/hcs-21/browser.d.ts +17 -7
  10. package/dist/cjs/hcs-21/browser.d.ts.map +1 -1
  11. package/dist/cjs/hcs-21/index.d.ts +1 -0
  12. package/dist/cjs/hcs-21/index.d.ts.map +1 -1
  13. package/dist/cjs/hcs-21/sdk.d.ts +62 -0
  14. package/dist/cjs/hcs-21/sdk.d.ts.map +1 -1
  15. package/dist/cjs/hcs-21/tx.d.ts.map +1 -1
  16. package/dist/cjs/hcs-21/types.d.ts +146 -65
  17. package/dist/cjs/hcs-21/types.d.ts.map +1 -1
  18. package/dist/cjs/hcs-21/verify.d.ts +6 -0
  19. package/dist/cjs/hcs-21/verify.d.ts.map +1 -0
  20. package/dist/cjs/inscribe/inscriber.d.ts +1 -0
  21. package/dist/cjs/inscribe/inscriber.d.ts.map +1 -1
  22. package/dist/cjs/inscribe/quote-cache.d.ts.map +1 -1
  23. package/dist/cjs/services/registry-broker/client.d.ts +4 -3
  24. package/dist/cjs/services/registry-broker/client.d.ts.map +1 -1
  25. package/dist/cjs/services/registry-broker/private-key-signer.d.ts.map +1 -1
  26. package/dist/cjs/services/registry-broker/schemas.d.ts +16 -16
  27. package/dist/cjs/services/types.d.ts +1 -0
  28. package/dist/cjs/services/types.d.ts.map +1 -1
  29. package/dist/cjs/standards-sdk.cjs +2 -2
  30. package/dist/cjs/standards-sdk.cjs.map +1 -1
  31. package/dist/cjs/utils/dynamic-import.d.ts +1 -0
  32. package/dist/cjs/utils/dynamic-import.d.ts.map +1 -1
  33. package/dist/es/hcs-16/base-client.d.ts.map +1 -1
  34. package/dist/es/hcs-17/types.d.ts.map +1 -1
  35. package/dist/es/hcs-20/sdk.d.ts.map +1 -1
  36. package/dist/es/hcs-20/types.d.ts +9 -8
  37. package/dist/es/hcs-20/types.d.ts.map +1 -1
  38. package/dist/es/hcs-21/base-client.d.ts +5 -3
  39. package/dist/es/hcs-21/base-client.d.ts.map +1 -1
  40. package/dist/es/hcs-21/browser.d.ts +17 -7
  41. package/dist/es/hcs-21/browser.d.ts.map +1 -1
  42. package/dist/es/hcs-21/index.d.ts +1 -0
  43. package/dist/es/hcs-21/index.d.ts.map +1 -1
  44. package/dist/es/hcs-21/sdk.d.ts +62 -0
  45. package/dist/es/hcs-21/sdk.d.ts.map +1 -1
  46. package/dist/es/hcs-21/tx.d.ts.map +1 -1
  47. package/dist/es/hcs-21/types.d.ts +146 -65
  48. package/dist/es/hcs-21/types.d.ts.map +1 -1
  49. package/dist/es/hcs-21/verify.d.ts +6 -0
  50. package/dist/es/hcs-21/verify.d.ts.map +1 -0
  51. package/dist/es/inscribe/inscriber.d.ts +1 -0
  52. package/dist/es/inscribe/inscriber.d.ts.map +1 -1
  53. package/dist/es/inscribe/quote-cache.d.ts.map +1 -1
  54. package/dist/es/services/registry-broker/client.d.ts +4 -3
  55. package/dist/es/services/registry-broker/client.d.ts.map +1 -1
  56. package/dist/es/services/registry-broker/private-key-signer.d.ts.map +1 -1
  57. package/dist/es/services/registry-broker/schemas.d.ts +16 -16
  58. package/dist/es/services/types.d.ts +1 -0
  59. package/dist/es/services/types.d.ts.map +1 -1
  60. package/dist/es/standards-sdk.es.js +58 -50
  61. package/dist/es/standards-sdk.es.js.map +1 -1
  62. package/dist/es/standards-sdk.es10.js +2 -2
  63. package/dist/es/standards-sdk.es100.js +26 -229
  64. package/dist/es/standards-sdk.es100.js.map +1 -1
  65. package/dist/es/standards-sdk.es101.js +228 -109
  66. package/dist/es/standards-sdk.es101.js.map +1 -1
  67. package/dist/es/standards-sdk.es102.js +94 -15
  68. package/dist/es/standards-sdk.es102.js.map +1 -1
  69. package/dist/es/standards-sdk.es103.js +30 -80
  70. package/dist/es/standards-sdk.es103.js.map +1 -1
  71. package/dist/es/standards-sdk.es104.js +80 -27
  72. package/dist/es/standards-sdk.es104.js.map +1 -1
  73. package/dist/es/standards-sdk.es105.js +25 -136
  74. package/dist/es/standards-sdk.es105.js.map +1 -1
  75. package/dist/es/standards-sdk.es106.js +140 -27
  76. package/dist/es/standards-sdk.es106.js.map +1 -1
  77. package/dist/es/standards-sdk.es107.js +27 -20
  78. package/dist/es/standards-sdk.es107.js.map +1 -1
  79. package/dist/es/standards-sdk.es108.js +18 -156
  80. package/dist/es/standards-sdk.es108.js.map +1 -1
  81. package/dist/es/standards-sdk.es109.js +148 -196
  82. package/dist/es/standards-sdk.es109.js.map +1 -1
  83. package/dist/es/standards-sdk.es110.js +160 -747
  84. package/dist/es/standards-sdk.es110.js.map +1 -1
  85. package/dist/es/standards-sdk.es111.js +786 -9
  86. package/dist/es/standards-sdk.es111.js.map +1 -1
  87. package/dist/es/standards-sdk.es112.js +13 -567
  88. package/dist/es/standards-sdk.es112.js.map +1 -1
  89. package/dist/es/standards-sdk.es113.js +541 -576
  90. package/dist/es/standards-sdk.es113.js.map +1 -1
  91. package/dist/es/standards-sdk.es114.js +601 -12
  92. package/dist/es/standards-sdk.es114.js.map +1 -1
  93. package/dist/es/standards-sdk.es115.js +13 -2
  94. package/dist/es/standards-sdk.es115.js.map +1 -1
  95. package/dist/es/standards-sdk.es116.js +2 -83
  96. package/dist/es/standards-sdk.es116.js.map +1 -1
  97. package/dist/es/standards-sdk.es117.js +80 -36
  98. package/dist/es/standards-sdk.es117.js.map +1 -1
  99. package/dist/es/standards-sdk.es118.js +39 -2
  100. package/dist/es/standards-sdk.es118.js.map +1 -1
  101. package/dist/es/standards-sdk.es119.js +2 -223
  102. package/dist/es/standards-sdk.es119.js.map +1 -1
  103. package/dist/es/standards-sdk.es12.js +1 -1
  104. package/dist/es/standards-sdk.es120.js +193 -1110
  105. package/dist/es/standards-sdk.es120.js.map +1 -1
  106. package/dist/es/standards-sdk.es121.js +1059 -225
  107. package/dist/es/standards-sdk.es121.js.map +1 -1
  108. package/dist/es/standards-sdk.es122.js +303 -419
  109. package/dist/es/standards-sdk.es122.js.map +1 -1
  110. package/dist/es/standards-sdk.es123.js +418 -351
  111. package/dist/es/standards-sdk.es123.js.map +1 -1
  112. package/dist/es/standards-sdk.es124.js +348 -785
  113. package/dist/es/standards-sdk.es124.js.map +1 -1
  114. package/dist/es/standards-sdk.es125.js +767 -183
  115. package/dist/es/standards-sdk.es125.js.map +1 -1
  116. package/dist/es/standards-sdk.es126.js +153 -1512
  117. package/dist/es/standards-sdk.es126.js.map +1 -1
  118. package/dist/es/standards-sdk.es127.js +1373 -1987
  119. package/dist/es/standards-sdk.es127.js.map +1 -1
  120. package/dist/es/standards-sdk.es128.js +2208 -67
  121. package/dist/es/standards-sdk.es128.js.map +1 -1
  122. package/dist/es/standards-sdk.es129.js +59 -79
  123. package/dist/es/standards-sdk.es129.js.map +1 -1
  124. package/dist/es/standards-sdk.es13.js +1 -1
  125. package/dist/es/standards-sdk.es130.js +80 -152
  126. package/dist/es/standards-sdk.es130.js.map +1 -1
  127. package/dist/es/standards-sdk.es131.js +159 -7
  128. package/dist/es/standards-sdk.es131.js.map +1 -1
  129. package/dist/es/standards-sdk.es132.js +7 -86
  130. package/dist/es/standards-sdk.es132.js.map +1 -1
  131. package/dist/es/standards-sdk.es133.js +65 -44
  132. package/dist/es/standards-sdk.es133.js.map +1 -1
  133. package/dist/es/standards-sdk.es134.js +65 -28
  134. package/dist/es/standards-sdk.es134.js.map +1 -1
  135. package/dist/es/standards-sdk.es135.js +69 -125
  136. package/dist/es/standards-sdk.es135.js.map +1 -1
  137. package/dist/es/standards-sdk.es136.js +28 -42
  138. package/dist/es/standards-sdk.es136.js.map +1 -1
  139. package/dist/es/standards-sdk.es137.js +132 -50
  140. package/dist/es/standards-sdk.es137.js.map +1 -1
  141. package/dist/es/standards-sdk.es138.js +36 -58
  142. package/dist/es/standards-sdk.es138.js.map +1 -1
  143. package/dist/es/standards-sdk.es139.js +12254 -746
  144. package/dist/es/standards-sdk.es139.js.map +1 -1
  145. package/dist/es/standards-sdk.es14.js +1 -1
  146. package/dist/es/standards-sdk.es140.js +746 -12254
  147. package/dist/es/standards-sdk.es140.js.map +1 -1
  148. package/dist/es/standards-sdk.es141.js +13 -168
  149. package/dist/es/standards-sdk.es141.js.map +1 -1
  150. package/dist/es/standards-sdk.es142.js +139 -289
  151. package/dist/es/standards-sdk.es142.js.map +1 -1
  152. package/dist/es/standards-sdk.es143.js +274 -298
  153. package/dist/es/standards-sdk.es143.js.map +1 -1
  154. package/dist/es/standards-sdk.es144.js +262 -369
  155. package/dist/es/standards-sdk.es144.js.map +1 -1
  156. package/dist/es/standards-sdk.es145.js +316 -194
  157. package/dist/es/standards-sdk.es145.js.map +1 -1
  158. package/dist/es/standards-sdk.es146.js +319 -64
  159. package/dist/es/standards-sdk.es146.js.map +1 -1
  160. package/dist/es/standards-sdk.es147.js +74 -15
  161. package/dist/es/standards-sdk.es147.js.map +1 -1
  162. package/dist/es/standards-sdk.es148.js +59 -0
  163. package/dist/es/standards-sdk.es148.js.map +1 -0
  164. package/dist/es/standards-sdk.es15.js +1 -1
  165. package/dist/es/standards-sdk.es16.js +1 -1
  166. package/dist/es/standards-sdk.es17.js +5 -11
  167. package/dist/es/standards-sdk.es17.js.map +1 -1
  168. package/dist/es/standards-sdk.es19.js +12 -17
  169. package/dist/es/standards-sdk.es19.js.map +1 -1
  170. package/dist/es/standards-sdk.es2.js +26 -72
  171. package/dist/es/standards-sdk.es2.js.map +1 -1
  172. package/dist/es/standards-sdk.es20.js +9 -14
  173. package/dist/es/standards-sdk.es20.js.map +1 -1
  174. package/dist/es/standards-sdk.es21.js +1 -1
  175. package/dist/es/standards-sdk.es22.js +1 -1
  176. package/dist/es/standards-sdk.es23.js +1 -1
  177. package/dist/es/standards-sdk.es24.js +1 -1
  178. package/dist/es/standards-sdk.es25.js +1 -1
  179. package/dist/es/standards-sdk.es26.js +1 -1
  180. package/dist/es/standards-sdk.es27.js +1 -1
  181. package/dist/es/standards-sdk.es28.js +12 -17
  182. package/dist/es/standards-sdk.es28.js.map +1 -1
  183. package/dist/es/standards-sdk.es3.js +2 -2
  184. package/dist/es/standards-sdk.es31.js +2 -2
  185. package/dist/es/standards-sdk.es32.js +4 -4
  186. package/dist/es/standards-sdk.es33.js +1 -1
  187. package/dist/es/standards-sdk.es36.js +6 -12
  188. package/dist/es/standards-sdk.es36.js.map +1 -1
  189. package/dist/es/standards-sdk.es37.js +4 -4
  190. package/dist/es/standards-sdk.es38.js +2 -2
  191. package/dist/es/standards-sdk.es39.js +2 -2
  192. package/dist/es/standards-sdk.es40.js +1 -1
  193. package/dist/es/standards-sdk.es41.js +1 -1
  194. package/dist/es/standards-sdk.es42.js +2 -2
  195. package/dist/es/standards-sdk.es47.js +1 -1
  196. package/dist/es/standards-sdk.es5.js +2 -2
  197. package/dist/es/standards-sdk.es52.js +1 -1
  198. package/dist/es/standards-sdk.es54.js +1 -1
  199. package/dist/es/standards-sdk.es57.js +2 -2
  200. package/dist/es/standards-sdk.es59.js +1 -1
  201. package/dist/es/standards-sdk.es6.js +2 -2
  202. package/dist/es/standards-sdk.es60.js +1 -1
  203. package/dist/es/standards-sdk.es61.js +7 -12
  204. package/dist/es/standards-sdk.es61.js.map +1 -1
  205. package/dist/es/standards-sdk.es63.js +1 -1
  206. package/dist/es/standards-sdk.es65.js +2 -2
  207. package/dist/es/standards-sdk.es66.js +3 -3
  208. package/dist/es/standards-sdk.es69.js +2 -2
  209. package/dist/es/standards-sdk.es7.js +2 -2
  210. package/dist/es/standards-sdk.es70.js +3 -3
  211. package/dist/es/standards-sdk.es71.js +2 -2
  212. package/dist/es/standards-sdk.es72.js +1 -1
  213. package/dist/es/standards-sdk.es73.js.map +1 -1
  214. package/dist/es/standards-sdk.es75.js +2 -2
  215. package/dist/es/standards-sdk.es77.js +5 -3
  216. package/dist/es/standards-sdk.es77.js.map +1 -1
  217. package/dist/es/standards-sdk.es78.js +4 -10
  218. package/dist/es/standards-sdk.es78.js.map +1 -1
  219. package/dist/es/standards-sdk.es79.js +1 -1
  220. package/dist/es/standards-sdk.es8.js +1 -1
  221. package/dist/es/standards-sdk.es80.js +27 -15
  222. package/dist/es/standards-sdk.es80.js.map +1 -1
  223. package/dist/es/standards-sdk.es82.js +12 -4
  224. package/dist/es/standards-sdk.es82.js.map +1 -1
  225. package/dist/es/standards-sdk.es83.js +31 -6
  226. package/dist/es/standards-sdk.es83.js.map +1 -1
  227. package/dist/es/standards-sdk.es84.js +179 -6
  228. package/dist/es/standards-sdk.es84.js.map +1 -1
  229. package/dist/es/standards-sdk.es85.js +258 -9
  230. package/dist/es/standards-sdk.es85.js.map +1 -1
  231. package/dist/es/standards-sdk.es86.js +55 -21
  232. package/dist/es/standards-sdk.es86.js.map +1 -1
  233. package/dist/es/standards-sdk.es87.js +22 -75
  234. package/dist/es/standards-sdk.es87.js.map +1 -1
  235. package/dist/es/standards-sdk.es88.js +45 -30
  236. package/dist/es/standards-sdk.es88.js.map +1 -1
  237. package/dist/es/standards-sdk.es89.js +57 -22
  238. package/dist/es/standards-sdk.es89.js.map +1 -1
  239. package/dist/es/standards-sdk.es90.js +28 -23
  240. package/dist/es/standards-sdk.es90.js.map +1 -1
  241. package/dist/es/standards-sdk.es91.js +23 -167
  242. package/dist/es/standards-sdk.es91.js.map +1 -1
  243. package/dist/es/standards-sdk.es92.js +158 -119
  244. package/dist/es/standards-sdk.es92.js.map +1 -1
  245. package/dist/es/standards-sdk.es93.js +68 -95
  246. package/dist/es/standards-sdk.es93.js.map +1 -1
  247. package/dist/es/standards-sdk.es94.js +136 -119
  248. package/dist/es/standards-sdk.es94.js.map +1 -1
  249. package/dist/es/standards-sdk.es95.js +139 -39
  250. package/dist/es/standards-sdk.es95.js.map +1 -1
  251. package/dist/es/standards-sdk.es96.js +42 -257
  252. package/dist/es/standards-sdk.es96.js.map +1 -1
  253. package/dist/es/standards-sdk.es97.js +243 -80
  254. package/dist/es/standards-sdk.es97.js.map +1 -1
  255. package/dist/es/standards-sdk.es98.js +47 -48
  256. package/dist/es/standards-sdk.es98.js.map +1 -1
  257. package/dist/es/standards-sdk.es99.js +100 -28
  258. package/dist/es/standards-sdk.es99.js.map +1 -1
  259. package/dist/es/utils/dynamic-import.d.ts +1 -0
  260. package/dist/es/utils/dynamic-import.d.ts.map +1 -1
  261. package/package.json +63 -65
@@ -1,175 +1,20 @@
1
- import { Long, AccountId } from "@hashgraph/sdk";
2
- import { parseKey } from "./standards-sdk.es146.js";
3
- import { Buffer } from "buffer";
4
- class HCSParser {
5
- static parseConsensusCreateTopic(body) {
6
- if (!body) return void 0;
7
- const data = {};
8
- if (body.memo) {
9
- data.memo = body.memo;
10
- }
11
- data.adminKey = parseKey(body.adminKey);
12
- data.submitKey = parseKey(body.submitKey);
13
- if (body.autoRenewPeriod?.seconds) {
14
- data.autoRenewPeriod = Long.fromValue(
15
- body.autoRenewPeriod.seconds
16
- ).toString();
17
- }
18
- if (body.autoRenewAccount) {
19
- data.autoRenewAccountId = new AccountId(
20
- body.autoRenewAccount.shardNum ?? 0,
21
- body.autoRenewAccount.realmNum ?? 0,
22
- body.autoRenewAccount.accountNum ?? 0
23
- ).toString();
24
- }
25
- return data;
26
- }
27
- static parseConsensusSubmitMessage(body) {
28
- if (!body) return void 0;
29
- const data = {};
30
- if (body.topicID) {
31
- data.topicId = `${body.topicID.shardNum ?? 0}.${body.topicID.realmNum ?? 0}.${body.topicID.topicNum ?? 0}`;
32
- }
33
- if (body.message?.length > 0) {
34
- const messageBuffer = Buffer.from(body.message);
35
- const utf8String = messageBuffer.toString("utf8");
36
- if (/[\x00-\x08\x0B\x0E-\x1F\x7F]/.test(utf8String) || utf8String.includes("�")) {
37
- data.message = messageBuffer.toString("base64");
38
- data.messageEncoding = "base64";
39
- } else {
40
- data.message = utf8String;
41
- data.messageEncoding = "utf8";
42
- }
43
- }
44
- if (body.chunkInfo) {
45
- if (body.chunkInfo.initialTransactionID) {
46
- const txId = body.chunkInfo.initialTransactionID.accountID;
47
- const taValidStart = body.chunkInfo.initialTransactionID.transactionValidStart;
48
- if (txId && taValidStart) {
49
- data.chunkInfoInitialTransactionID = `${txId.shardNum ?? 0}.${txId.realmNum ?? 0}.${txId.accountNum ?? 0}@${taValidStart.seconds ?? 0}.${taValidStart.nanos ?? 0}`;
50
- }
51
- }
52
- if (body.chunkInfo.number !== void 0 && body.chunkInfo.number !== null) {
53
- data.chunkInfoNumber = body.chunkInfo.number;
54
- }
55
- if (body.chunkInfo.total !== void 0 && body.chunkInfo.total !== null) {
56
- data.chunkInfoTotal = body.chunkInfo.total;
57
- }
58
- }
59
- return data;
60
- }
61
- static parseConsensusUpdateTopic(body) {
62
- if (!body) return void 0;
63
- const data = {};
64
- if (body.topicID) {
65
- data.topicId = `${body.topicID.shardNum}.${body.topicID.realmNum}.${body.topicID.topicNum}`;
66
- }
67
- if (body.memo?.value !== void 0) {
68
- data.memo = body.memo.value;
69
- }
70
- if (body.adminKey === null) {
71
- data.clearAdminKey = true;
72
- data.adminKey = void 0;
73
- } else if (body.adminKey) {
74
- data.adminKey = parseKey(body.adminKey);
75
- } else {
76
- data.adminKey = void 0;
77
- }
78
- if (body.submitKey === null) {
79
- data.clearSubmitKey = true;
80
- data.submitKey = void 0;
81
- } else if (body.submitKey) {
82
- data.submitKey = parseKey(body.submitKey);
83
- } else {
84
- data.submitKey = void 0;
85
- }
86
- if (body.autoRenewPeriod?.seconds) {
87
- data.autoRenewPeriod = Long.fromValue(
88
- body.autoRenewPeriod.seconds
89
- ).toString();
90
- }
91
- if (body.autoRenewAccount) {
92
- data.autoRenewAccountId = new AccountId(
93
- body.autoRenewAccount.shardNum ?? 0,
94
- body.autoRenewAccount.realmNum ?? 0,
95
- body.autoRenewAccount.accountNum ?? 0
96
- ).toString();
97
- }
98
- return data;
99
- }
100
- static parseConsensusDeleteTopic(body) {
101
- if (!body) return void 0;
102
- const data = {};
103
- if (body.topicID) {
104
- data.topicId = `${body.topicID.shardNum}.${body.topicID.realmNum ?? 0}.${body.topicID.topicNum ?? 0}`;
105
- }
106
- return data;
107
- }
1
+ import { Logger } from "./standards-sdk.es106.js";
2
+ import { HederaMirrorNode } from "./standards-sdk.es127.js";
3
+ class HCS5BaseClient {
108
4
  /**
109
- * Parse HCS transaction from Transaction object with comprehensive extraction
110
- * This is the unified entry point that handles both protobuf and internal field extraction
5
+ * Create a new HCS-5 base client
111
6
  */
112
- static parseFromTransactionObject(transaction) {
113
- try {
114
- const transactionBody = transaction._transactionBody;
115
- if (!transactionBody) {
116
- return {};
117
- }
118
- if (transactionBody.consensusCreateTopic) {
119
- const consensusCreateTopic = this.parseConsensusCreateTopic(
120
- transactionBody.consensusCreateTopic
121
- );
122
- if (consensusCreateTopic) {
123
- return {
124
- type: "TOPICCREATE",
125
- humanReadableType: "Topic Create",
126
- consensusCreateTopic
127
- };
128
- }
129
- }
130
- if (transactionBody.consensusSubmitMessage) {
131
- const consensusSubmitMessage = this.parseConsensusSubmitMessage(
132
- transactionBody.consensusSubmitMessage
133
- );
134
- if (consensusSubmitMessage) {
135
- return {
136
- type: "CONSENSUSSUBMITMESSAGE",
137
- humanReadableType: "Submit Message",
138
- consensusSubmitMessage
139
- };
140
- }
141
- }
142
- if (transactionBody.consensusUpdateTopic) {
143
- const consensusUpdateTopic = this.parseConsensusUpdateTopic(
144
- transactionBody.consensusUpdateTopic
145
- );
146
- if (consensusUpdateTopic) {
147
- return {
148
- type: "TOPICUPDATE",
149
- humanReadableType: "Topic Update",
150
- consensusUpdateTopic
151
- };
152
- }
153
- }
154
- if (transactionBody.consensusDeleteTopic) {
155
- const consensusDeleteTopic = this.parseConsensusDeleteTopic(
156
- transactionBody.consensusDeleteTopic
157
- );
158
- if (consensusDeleteTopic) {
159
- return {
160
- type: "TOPICDELETE",
161
- humanReadableType: "Topic Delete",
162
- consensusDeleteTopic
163
- };
164
- }
165
- }
166
- return {};
167
- } catch (error) {
168
- return {};
169
- }
7
+ constructor(config) {
8
+ this.network = config.network;
9
+ this.logger = config.logger || Logger.getInstance({
10
+ level: config.logLevel || "info",
11
+ module: "HCS5Client",
12
+ silent: config.silent
13
+ });
14
+ this.mirrorNode = new HederaMirrorNode(this.network, this.logger);
170
15
  }
171
16
  }
172
17
  export {
173
- HCSParser
18
+ HCS5BaseClient
174
19
  };
175
20
  //# sourceMappingURL=standards-sdk.es141.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"standards-sdk.es141.js","sources":["../../src/utils/parsers/hcs-parser.ts"],"sourcesContent":["import { proto } from '@hashgraph/proto';\nimport { AccountId, Long, Transaction } from '@hashgraph/sdk';\nimport {\n ConsensusCreateTopicData,\n ConsensusSubmitMessageData,\n ConsensusUpdateTopicData,\n ConsensusDeleteTopicData,\n} from '../transaction-parser-types';\nimport { parseKey } from './parser-utils';\nimport { Buffer } from 'buffer';\n\nexport class HCSParser {\n static parseConsensusCreateTopic(\n body: proto.IConsensusCreateTopicTransactionBody,\n ): ConsensusCreateTopicData | undefined {\n if (!body) return undefined;\n const data: ConsensusCreateTopicData = {};\n if (body.memo) {\n data.memo = body.memo;\n }\n data.adminKey = parseKey(body.adminKey);\n data.submitKey = parseKey(body.submitKey);\n if (body.autoRenewPeriod?.seconds) {\n data.autoRenewPeriod = Long.fromValue(\n body.autoRenewPeriod.seconds,\n ).toString();\n }\n if (body.autoRenewAccount) {\n data.autoRenewAccountId = new AccountId(\n body.autoRenewAccount.shardNum ?? 0,\n body.autoRenewAccount.realmNum ?? 0,\n body.autoRenewAccount.accountNum ?? 0,\n ).toString();\n }\n return data;\n }\n\n static parseConsensusSubmitMessage(\n body: proto.IConsensusSubmitMessageTransactionBody,\n ): ConsensusSubmitMessageData | undefined {\n if (!body) return undefined;\n const data: ConsensusSubmitMessageData = {};\n if (body.topicID) {\n data.topicId = `${body.topicID.shardNum ?? 0}.${\n body.topicID.realmNum ?? 0\n }.${body.topicID.topicNum ?? 0}`;\n }\n if (body.message?.length > 0) {\n const messageBuffer = Buffer.from(body.message);\n const utf8String = messageBuffer.toString('utf8');\n if (\n /[\\x00-\\x08\\x0B\\x0E-\\x1F\\x7F]/.test(utf8String) ||\n utf8String.includes('\\uFFFD')\n ) {\n data.message = messageBuffer.toString('base64');\n data.messageEncoding = 'base64';\n } else {\n data.message = utf8String;\n data.messageEncoding = 'utf8';\n }\n }\n if (body.chunkInfo) {\n if (body.chunkInfo.initialTransactionID) {\n const txId = body.chunkInfo.initialTransactionID.accountID;\n const taValidStart =\n body.chunkInfo.initialTransactionID.transactionValidStart;\n if (txId && taValidStart) {\n data.chunkInfoInitialTransactionID = `${txId.shardNum ?? 0}.${\n txId.realmNum ?? 0\n }.${txId.accountNum ?? 0}@${taValidStart.seconds ?? 0}.${\n taValidStart.nanos ?? 0\n }`;\n }\n }\n if (\n body.chunkInfo.number !== undefined &&\n body.chunkInfo.number !== null\n ) {\n data.chunkInfoNumber = body.chunkInfo.number;\n }\n if (body.chunkInfo.total !== undefined && body.chunkInfo.total !== null) {\n data.chunkInfoTotal = body.chunkInfo.total;\n }\n }\n return data;\n }\n\n static parseConsensusUpdateTopic(\n body: proto.IConsensusUpdateTopicTransactionBody,\n ): ConsensusUpdateTopicData | undefined {\n if (!body) return undefined;\n const data: ConsensusUpdateTopicData = {};\n if (body.topicID) {\n data.topicId = `${body.topicID.shardNum}.${body.topicID.realmNum}.${body.topicID.topicNum}`;\n }\n if (body.memo?.value !== undefined) {\n data.memo = body.memo.value;\n }\n if (body.adminKey === null) {\n data.clearAdminKey = true;\n data.adminKey = undefined;\n } else if (body.adminKey) {\n data.adminKey = parseKey(body.adminKey);\n } else {\n data.adminKey = undefined;\n }\n if (body.submitKey === null) {\n data.clearSubmitKey = true;\n data.submitKey = undefined;\n } else if (body.submitKey) {\n data.submitKey = parseKey(body.submitKey);\n } else {\n data.submitKey = undefined;\n }\n if (body.autoRenewPeriod?.seconds) {\n data.autoRenewPeriod = Long.fromValue(\n body.autoRenewPeriod.seconds,\n ).toString();\n }\n if (body.autoRenewAccount) {\n data.autoRenewAccountId = new AccountId(\n body.autoRenewAccount.shardNum ?? 0,\n body.autoRenewAccount.realmNum ?? 0,\n body.autoRenewAccount.accountNum ?? 0,\n ).toString();\n }\n return data;\n }\n\n static parseConsensusDeleteTopic(\n body: proto.IConsensusDeleteTopicTransactionBody,\n ): ConsensusDeleteTopicData | undefined {\n if (!body) return undefined;\n const data: ConsensusDeleteTopicData = {};\n if (body.topicID) {\n data.topicId = `${body.topicID.shardNum}.${body.topicID.realmNum ?? 0}.${\n body.topicID.topicNum ?? 0\n }`;\n }\n return data;\n }\n\n /**\n * Parse HCS transaction from Transaction object with comprehensive extraction\n * This is the unified entry point that handles both protobuf and internal field extraction\n */\n static parseFromTransactionObject(transaction: Transaction): {\n type?: string;\n humanReadableType?: string;\n [key: string]: unknown;\n } {\n try {\n const transactionBody = (\n transaction as unknown as { _transactionBody?: unknown }\n )._transactionBody as proto.ITransactionBody | undefined;\n\n if (!transactionBody) {\n return {};\n }\n\n if (transactionBody.consensusCreateTopic) {\n const consensusCreateTopic = this.parseConsensusCreateTopic(\n transactionBody.consensusCreateTopic,\n );\n if (consensusCreateTopic) {\n return {\n type: 'TOPICCREATE',\n humanReadableType: 'Topic Create',\n consensusCreateTopic,\n };\n }\n }\n\n if (transactionBody.consensusSubmitMessage) {\n const consensusSubmitMessage = this.parseConsensusSubmitMessage(\n transactionBody.consensusSubmitMessage,\n );\n if (consensusSubmitMessage) {\n return {\n type: 'CONSENSUSSUBMITMESSAGE',\n humanReadableType: 'Submit Message',\n consensusSubmitMessage,\n };\n }\n }\n\n if (transactionBody.consensusUpdateTopic) {\n const consensusUpdateTopic = this.parseConsensusUpdateTopic(\n transactionBody.consensusUpdateTopic,\n );\n if (consensusUpdateTopic) {\n return {\n type: 'TOPICUPDATE',\n humanReadableType: 'Topic Update',\n consensusUpdateTopic,\n };\n }\n }\n\n if (transactionBody.consensusDeleteTopic) {\n const consensusDeleteTopic = this.parseConsensusDeleteTopic(\n transactionBody.consensusDeleteTopic,\n );\n if (consensusDeleteTopic) {\n return {\n type: 'TOPICDELETE',\n humanReadableType: 'Topic Delete',\n consensusDeleteTopic,\n };\n }\n }\n\n return {};\n } catch (error) {\n return {};\n }\n }\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"standards-sdk.es141.js","sources":["../../src/hcs-5/base-client.ts"],"sourcesContent":["import { Logger, ILogger } from '../utils/logger';\nimport { HederaMirrorNode } from '../services/mirror-node';\nimport { HCS5ClientConfig } from './types';\nimport { NetworkType } from '../utils/types';\n\n/**\n * Base client for HCS-5 operations\n */\nexport abstract class HCS5BaseClient {\n protected logger: ILogger;\n protected mirrorNode: HederaMirrorNode;\n protected network: NetworkType;\n\n /**\n * Create a new HCS-5 base client\n */\n constructor(config: HCS5ClientConfig) {\n this.network = config.network;\n this.logger =\n config.logger ||\n Logger.getInstance({\n level: config.logLevel || 'info',\n module: 'HCS5Client',\n silent: config.silent,\n });\n\n this.mirrorNode = new HederaMirrorNode(this.network, this.logger);\n }\n}\n"],"names":[],"mappings":";;AAQO,MAAe,eAAe;AAAA;AAAA;AAAA;AAAA,EAQnC,YAAY,QAA0B;AACpC,SAAK,UAAU,OAAO;AACtB,SAAK,SACH,OAAO,UACP,OAAO,YAAY;AAAA,MACjB,OAAO,OAAO,YAAY;AAAA,MAC1B,QAAQ;AAAA,MACR,QAAQ,OAAO;AAAA,IAAA,CAChB;AAEH,SAAK,aAAa,IAAI,iBAAiB,KAAK,SAAS,KAAK,MAAM;AAAA,EAClE;AACF;"}
@@ -1,325 +1,175 @@
1
- import { proto } from "@hashgraph/proto";
2
- import { Long } from "@hashgraph/sdk";
3
- import { hasTransactionType, parseKey } from "./standards-sdk.es146.js";
1
+ import { Long, AccountId } from "@hashgraph/sdk";
2
+ import { parseKey } from "./standards-sdk.es147.js";
4
3
  import { Buffer } from "buffer";
5
- class FileParser {
6
- /**
7
- * Parse File Service transaction using unified dual-branch approach
8
- * This handles both regular transactions and signed transaction variants
9
- */
10
- static parseFileTransaction(transaction, originalBytes) {
11
- try {
12
- if (originalBytes || transaction.toBytes) {
13
- try {
14
- const bytesToParse = originalBytes || transaction.toBytes();
15
- const decoded = proto.TransactionList.decode(bytesToParse);
16
- if (decoded.transactionList && decoded.transactionList.length > 0) {
17
- const tx = decoded.transactionList[0];
18
- let txBody = null;
19
- if (tx.bodyBytes && tx.bodyBytes.length > 0) {
20
- txBody = proto.TransactionBody.decode(tx.bodyBytes);
21
- } else if (tx.signedTransactionBytes && tx.signedTransactionBytes.length > 0) {
22
- const signedTx = proto.SignedTransaction.decode(
23
- tx.signedTransactionBytes
24
- );
25
- if (signedTx.bodyBytes) {
26
- txBody = proto.TransactionBody.decode(signedTx.bodyBytes);
27
- }
28
- }
29
- if (txBody) {
30
- const protoResult = this.parseFromProtobufTxBody(txBody);
31
- if (protoResult.type && protoResult.type !== "UNKNOWN") {
32
- return protoResult;
33
- }
34
- }
35
- }
36
- } catch (protoError) {
37
- }
38
- }
39
- return this.parseFromTransactionInternals(transaction);
40
- } catch (error) {
41
- return { type: "UNKNOWN", humanReadableType: "Unknown File Transaction" };
42
- }
43
- }
44
- /**
45
- * Parse file transaction from protobuf TransactionBody
46
- * Handles all file operations from decoded protobuf data
47
- */
48
- static parseFromProtobufTxBody(txBody) {
49
- if (txBody.fileCreate) {
50
- const fileCreate = this.parseFileCreate(txBody.fileCreate);
51
- if (fileCreate) {
52
- return {
53
- type: "FILECREATE",
54
- humanReadableType: "File Create",
55
- fileCreate
56
- };
57
- }
58
- }
59
- if (txBody.fileAppend) {
60
- const fileAppend = this.parseFileAppend(txBody.fileAppend);
61
- if (fileAppend) {
62
- return {
63
- type: "FILEAPPEND",
64
- humanReadableType: "File Append",
65
- fileAppend
66
- };
67
- }
68
- }
69
- if (txBody.fileUpdate) {
70
- const fileUpdate = this.parseFileUpdate(txBody.fileUpdate);
71
- if (fileUpdate) {
72
- return {
73
- type: "FILEUPDATE",
74
- humanReadableType: "File Update",
75
- fileUpdate
76
- };
77
- }
78
- }
79
- if (txBody.fileDelete) {
80
- const fileDelete = this.parseFileDelete(txBody.fileDelete);
81
- if (fileDelete) {
82
- return {
83
- type: "FILEDELETE",
84
- humanReadableType: "File Delete",
85
- fileDelete
86
- };
87
- }
88
- }
89
- return {};
90
- }
91
- /**
92
- * Extract file data from Transaction internal fields
93
- * This handles cases where data is stored in Transaction object internals
94
- */
95
- static parseFromTransactionInternals(transaction) {
96
- try {
97
- const tx = transaction;
98
- if (hasTransactionType(transaction, "fileCreate")) {
99
- const fileCreate = {};
100
- if (tx._contents) {
101
- const contentInfo = this.analyzeContent(tx._contents);
102
- fileCreate.contents = contentInfo.encoded;
103
- if (contentInfo.contentType) {
104
- fileCreate.contentType = contentInfo.contentType;
105
- }
106
- if (contentInfo.size) {
107
- fileCreate.contentSize = contentInfo.size;
108
- }
109
- }
110
- if (tx._keys && tx._keys.length > 0) {
111
- const keyList = {
112
- keys: tx._keys
113
- };
114
- fileCreate.keys = parseKey({ keyList });
115
- }
116
- if (tx._expirationTime) {
117
- fileCreate.expirationTime = tx._expirationTime.toString();
118
- }
119
- if (tx._memo) {
120
- fileCreate.memo = tx._memo;
121
- }
122
- return {
123
- type: "FILECREATE",
124
- humanReadableType: "File Create",
125
- fileCreate
126
- };
127
- }
128
- if (hasTransactionType(transaction, "fileAppend")) {
129
- const fileAppend = {
130
- fileId: tx._fileId.toString()
131
- };
132
- if (tx._contents) {
133
- const contentInfo = this.analyzeContent(tx._contents);
134
- fileAppend.contents = contentInfo.encoded;
135
- if (contentInfo.size) {
136
- fileAppend.contentSize = contentInfo.size;
137
- }
138
- }
139
- return {
140
- type: "FILEAPPEND",
141
- humanReadableType: "File Append",
142
- fileAppend
143
- };
144
- }
145
- if (hasTransactionType(transaction, "fileUpdate")) {
146
- const fileUpdate = {
147
- fileId: tx._fileId.toString()
148
- };
149
- if (tx._contents) {
150
- const contentInfo = this.analyzeContent(tx._contents);
151
- fileUpdate.contents = contentInfo.encoded;
152
- if (contentInfo.size) {
153
- fileUpdate.contentSize = contentInfo.size;
154
- }
155
- }
156
- if (tx._keys && tx._keys.length > 0) {
157
- const keyList = {
158
- keys: tx._keys
159
- };
160
- fileUpdate.keys = parseKey({ keyList });
161
- }
162
- if (tx._expirationTime) {
163
- fileUpdate.expirationTime = tx._expirationTime.toString();
164
- }
165
- if (tx._memo) {
166
- fileUpdate.memo = tx._memo;
167
- }
168
- return {
169
- type: "FILEUPDATE",
170
- humanReadableType: "File Update",
171
- fileUpdate
172
- };
173
- }
174
- if (hasTransactionType(transaction, "fileDelete")) {
175
- const fileDelete = {
176
- fileId: tx._fileId.toString()
177
- };
178
- return {
179
- type: "FILEDELETE",
180
- humanReadableType: "File Delete",
181
- fileDelete
182
- };
183
- }
184
- return {};
185
- } catch (error) {
186
- return {};
187
- }
188
- }
189
- /**
190
- * Enhanced content analysis with type detection and metadata
191
- */
192
- static analyzeContent(contents) {
193
- const size = contents.length;
194
- const contentBuffer = Buffer.from(contents);
195
- let contentType;
196
- if (size >= 4) {
197
- const header = contentBuffer.subarray(0, 4);
198
- const headerHex = header.toString("hex");
199
- const signatures = {
200
- "89504e47": "image/png",
201
- ffd8ffe0: "image/jpeg",
202
- ffd8ffe1: "image/jpeg",
203
- "47494638": "image/gif",
204
- "25504446": "application/pdf",
205
- "504b0304": "application/zip",
206
- "7f454c46": "application/x-executable",
207
- d0cf11e0: "application/msoffice"
208
- };
209
- contentType = signatures[headerHex.toLowerCase()];
210
- }
211
- if (!contentType) {
212
- try {
213
- const textContent = contentBuffer.toString("utf8");
214
- const hasControlChars = /[\x00-\x08\x0B\x0E-\x1F\x7F]/.test(
215
- textContent
216
- );
217
- const hasReplacementChars = textContent.includes("�");
218
- if (!hasControlChars && !hasReplacementChars) {
219
- if (textContent.trim().startsWith("{") && textContent.trim().endsWith("}")) {
220
- contentType = "application/json";
221
- } else if (textContent.includes("<?xml") || textContent.includes("<html")) {
222
- contentType = "text/xml";
223
- } else if (textContent.includes("<!DOCTYPE html")) {
224
- contentType = "text/html";
225
- } else {
226
- contentType = "text/plain";
227
- }
228
- } else {
229
- contentType = "application/octet-stream";
230
- }
231
- } catch {
232
- contentType = "application/octet-stream";
233
- }
234
- }
235
- let encoded;
236
- if (contentType?.startsWith("text/") || contentType === "application/json") {
237
- try {
238
- encoded = contentBuffer.toString("utf8");
239
- if (encoded.includes("�") || /[\x00-\x08\x0B\x0E-\x1F\x7F]/.test(encoded)) {
240
- encoded = contentBuffer.toString("base64");
241
- }
242
- } catch {
243
- encoded = contentBuffer.toString("base64");
244
- }
245
- } else {
246
- encoded = contentBuffer.toString("base64");
247
- }
248
- return {
249
- encoded,
250
- contentType,
251
- size
252
- };
253
- }
254
- static parseFileCreate(body) {
4
+ class HCSParser {
5
+ static parseConsensusCreateTopic(body) {
255
6
  if (!body) return void 0;
256
7
  const data = {};
257
- if (body.expirationTime?.seconds) {
258
- data.expirationTime = `${Long.fromValue(
259
- body.expirationTime.seconds
260
- ).toString()}.${body.expirationTime.nanos}`;
261
- }
262
- if (body.keys) {
263
- data.keys = parseKey({ keyList: body.keys });
264
- }
265
- if (body.contents) {
266
- data.contents = Buffer.from(body.contents).toString("base64");
267
- }
268
8
  if (body.memo) {
269
9
  data.memo = body.memo;
270
10
  }
11
+ data.adminKey = parseKey(body.adminKey);
12
+ data.submitKey = parseKey(body.submitKey);
13
+ if (body.autoRenewPeriod?.seconds) {
14
+ data.autoRenewPeriod = Long.fromValue(
15
+ body.autoRenewPeriod.seconds
16
+ ).toString();
17
+ }
18
+ if (body.autoRenewAccount) {
19
+ data.autoRenewAccountId = new AccountId(
20
+ body.autoRenewAccount.shardNum ?? 0,
21
+ body.autoRenewAccount.realmNum ?? 0,
22
+ body.autoRenewAccount.accountNum ?? 0
23
+ ).toString();
24
+ }
271
25
  return data;
272
26
  }
273
- static parseFileAppend(body) {
27
+ static parseConsensusSubmitMessage(body) {
274
28
  if (!body) return void 0;
275
29
  const data = {};
276
- if (body.fileID) {
277
- data.fileId = `${body.fileID.shardNum ?? 0}.${body.fileID.realmNum ?? 0}.${body.fileID.fileNum ?? 0}`;
30
+ if (body.topicID) {
31
+ data.topicId = `${body.topicID.shardNum ?? 0}.${body.topicID.realmNum ?? 0}.${body.topicID.topicNum ?? 0}`;
32
+ }
33
+ if (body.message?.length > 0) {
34
+ const messageBuffer = Buffer.from(body.message);
35
+ const utf8String = messageBuffer.toString("utf8");
36
+ if (/[\x00-\x08\x0B\x0E-\x1F\x7F]/.test(utf8String) || utf8String.includes("�")) {
37
+ data.message = messageBuffer.toString("base64");
38
+ data.messageEncoding = "base64";
39
+ } else {
40
+ data.message = utf8String;
41
+ data.messageEncoding = "utf8";
42
+ }
278
43
  }
279
- if (body.contents) {
280
- data.contents = Buffer.from(body.contents).toString("base64");
44
+ if (body.chunkInfo) {
45
+ if (body.chunkInfo.initialTransactionID) {
46
+ const txId = body.chunkInfo.initialTransactionID.accountID;
47
+ const taValidStart = body.chunkInfo.initialTransactionID.transactionValidStart;
48
+ if (txId && taValidStart) {
49
+ data.chunkInfoInitialTransactionID = `${txId.shardNum ?? 0}.${txId.realmNum ?? 0}.${txId.accountNum ?? 0}@${taValidStart.seconds ?? 0}.${taValidStart.nanos ?? 0}`;
50
+ }
51
+ }
52
+ if (body.chunkInfo.number !== void 0 && body.chunkInfo.number !== null) {
53
+ data.chunkInfoNumber = body.chunkInfo.number;
54
+ }
55
+ if (body.chunkInfo.total !== void 0 && body.chunkInfo.total !== null) {
56
+ data.chunkInfoTotal = body.chunkInfo.total;
57
+ }
281
58
  }
282
59
  return data;
283
60
  }
284
- static parseFileUpdate(body) {
61
+ static parseConsensusUpdateTopic(body) {
285
62
  if (!body) return void 0;
286
63
  const data = {};
287
- if (body.fileID) {
288
- data.fileId = `${body.fileID.shardNum ?? 0}.${body.fileID.realmNum ?? 0}.${body.fileID.fileNum ?? 0}`;
64
+ if (body.topicID) {
65
+ data.topicId = `${body.topicID.shardNum}.${body.topicID.realmNum}.${body.topicID.topicNum}`;
289
66
  }
290
- if (body.expirationTime?.seconds) {
291
- data.expirationTime = `${Long.fromValue(
292
- body.expirationTime.seconds
293
- ).toString()}.${body.expirationTime.nanos}`;
67
+ if (body.memo?.value !== void 0) {
68
+ data.memo = body.memo.value;
294
69
  }
295
- if (body.keys) {
296
- data.keys = parseKey({ keyList: body.keys });
70
+ if (body.adminKey === null) {
71
+ data.clearAdminKey = true;
72
+ data.adminKey = void 0;
73
+ } else if (body.adminKey) {
74
+ data.adminKey = parseKey(body.adminKey);
75
+ } else {
76
+ data.adminKey = void 0;
297
77
  }
298
- if (body.contents) {
299
- data.contents = Buffer.from(body.contents).toString("base64");
78
+ if (body.submitKey === null) {
79
+ data.clearSubmitKey = true;
80
+ data.submitKey = void 0;
81
+ } else if (body.submitKey) {
82
+ data.submitKey = parseKey(body.submitKey);
83
+ } else {
84
+ data.submitKey = void 0;
300
85
  }
301
- if (body.memo?.value !== void 0) {
302
- data.memo = body.memo.value;
86
+ if (body.autoRenewPeriod?.seconds) {
87
+ data.autoRenewPeriod = Long.fromValue(
88
+ body.autoRenewPeriod.seconds
89
+ ).toString();
90
+ }
91
+ if (body.autoRenewAccount) {
92
+ data.autoRenewAccountId = new AccountId(
93
+ body.autoRenewAccount.shardNum ?? 0,
94
+ body.autoRenewAccount.realmNum ?? 0,
95
+ body.autoRenewAccount.accountNum ?? 0
96
+ ).toString();
303
97
  }
304
98
  return data;
305
99
  }
306
- static parseFileDelete(body) {
100
+ static parseConsensusDeleteTopic(body) {
307
101
  if (!body) return void 0;
308
102
  const data = {};
309
- if (body.fileID) {
310
- data.fileId = `${body.fileID.shardNum ?? 0}.${body.fileID.realmNum ?? 0}.${body.fileID.fileNum ?? 0}`;
103
+ if (body.topicID) {
104
+ data.topicId = `${body.topicID.shardNum}.${body.topicID.realmNum ?? 0}.${body.topicID.topicNum ?? 0}`;
311
105
  }
312
106
  return data;
313
107
  }
314
108
  /**
315
- * Parse File Service transaction from Transaction object
316
- * This is the unified entry point that delegates to the comprehensive parsing logic
109
+ * Parse HCS transaction from Transaction object with comprehensive extraction
110
+ * This is the unified entry point that handles both protobuf and internal field extraction
317
111
  */
318
112
  static parseFromTransactionObject(transaction) {
319
- return this.parseFileTransaction(transaction);
113
+ try {
114
+ const transactionBody = transaction._transactionBody;
115
+ if (!transactionBody) {
116
+ return {};
117
+ }
118
+ if (transactionBody.consensusCreateTopic) {
119
+ const consensusCreateTopic = this.parseConsensusCreateTopic(
120
+ transactionBody.consensusCreateTopic
121
+ );
122
+ if (consensusCreateTopic) {
123
+ return {
124
+ type: "TOPICCREATE",
125
+ humanReadableType: "Topic Create",
126
+ consensusCreateTopic
127
+ };
128
+ }
129
+ }
130
+ if (transactionBody.consensusSubmitMessage) {
131
+ const consensusSubmitMessage = this.parseConsensusSubmitMessage(
132
+ transactionBody.consensusSubmitMessage
133
+ );
134
+ if (consensusSubmitMessage) {
135
+ return {
136
+ type: "CONSENSUSSUBMITMESSAGE",
137
+ humanReadableType: "Submit Message",
138
+ consensusSubmitMessage
139
+ };
140
+ }
141
+ }
142
+ if (transactionBody.consensusUpdateTopic) {
143
+ const consensusUpdateTopic = this.parseConsensusUpdateTopic(
144
+ transactionBody.consensusUpdateTopic
145
+ );
146
+ if (consensusUpdateTopic) {
147
+ return {
148
+ type: "TOPICUPDATE",
149
+ humanReadableType: "Topic Update",
150
+ consensusUpdateTopic
151
+ };
152
+ }
153
+ }
154
+ if (transactionBody.consensusDeleteTopic) {
155
+ const consensusDeleteTopic = this.parseConsensusDeleteTopic(
156
+ transactionBody.consensusDeleteTopic
157
+ );
158
+ if (consensusDeleteTopic) {
159
+ return {
160
+ type: "TOPICDELETE",
161
+ humanReadableType: "Topic Delete",
162
+ consensusDeleteTopic
163
+ };
164
+ }
165
+ }
166
+ return {};
167
+ } catch (error) {
168
+ return {};
169
+ }
320
170
  }
321
171
  }
322
172
  export {
323
- FileParser
173
+ HCSParser
324
174
  };
325
175
  //# sourceMappingURL=standards-sdk.es142.js.map