@hashgraphonline/standards-sdk 0.1.184 → 0.1.185

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 (262) hide show
  1. package/dist/browser/hcs-25/identifiers.d.ts +24 -0
  2. package/dist/browser/hcs-25/identifiers.d.ts.map +1 -0
  3. package/dist/browser/hcs-25/index.d.ts +4 -0
  4. package/dist/browser/hcs-25/index.d.ts.map +1 -0
  5. package/dist/browser/hcs-25/scoring.d.ts +32 -0
  6. package/dist/browser/hcs-25/scoring.d.ts.map +1 -0
  7. package/dist/browser/hcs-25/types.d.ts +363 -0
  8. package/dist/browser/hcs-25/types.d.ts.map +1 -0
  9. package/dist/browser/index.d.ts +1 -0
  10. package/dist/browser/index.d.ts.map +1 -1
  11. package/dist/browser-root/hcs-25/identifiers.d.ts +24 -0
  12. package/dist/browser-root/hcs-25/identifiers.d.ts.map +1 -0
  13. package/dist/browser-root/hcs-25/index.d.ts +4 -0
  14. package/dist/browser-root/hcs-25/index.d.ts.map +1 -0
  15. package/dist/browser-root/hcs-25/scoring.d.ts +32 -0
  16. package/dist/browser-root/hcs-25/scoring.d.ts.map +1 -0
  17. package/dist/browser-root/hcs-25/types.d.ts +363 -0
  18. package/dist/browser-root/hcs-25/types.d.ts.map +1 -0
  19. package/dist/browser-root/index.d.ts +1 -0
  20. package/dist/browser-root/index.d.ts.map +1 -1
  21. package/dist/cjs/hcs-25/identifiers.d.ts +24 -0
  22. package/dist/cjs/hcs-25/identifiers.d.ts.map +1 -0
  23. package/dist/cjs/hcs-25/index.d.ts +4 -0
  24. package/dist/cjs/hcs-25/index.d.ts.map +1 -0
  25. package/dist/cjs/hcs-25/scoring.d.ts +32 -0
  26. package/dist/cjs/hcs-25/scoring.d.ts.map +1 -0
  27. package/dist/cjs/hcs-25/types.d.ts +363 -0
  28. package/dist/cjs/hcs-25/types.d.ts.map +1 -0
  29. package/dist/cjs/index.d.ts +1 -0
  30. package/dist/cjs/index.d.ts.map +1 -1
  31. package/dist/cjs/standards-sdk.cjs +1 -1
  32. package/dist/cjs/standards-sdk.cjs.map +1 -1
  33. package/dist/es/hcs-25/identifiers.d.ts +24 -0
  34. package/dist/es/hcs-25/identifiers.d.ts.map +1 -0
  35. package/dist/es/hcs-25/index.d.ts +4 -0
  36. package/dist/es/hcs-25/index.d.ts.map +1 -0
  37. package/dist/es/hcs-25/scoring.d.ts +32 -0
  38. package/dist/es/hcs-25/scoring.d.ts.map +1 -0
  39. package/dist/es/hcs-25/types.d.ts +363 -0
  40. package/dist/es/hcs-25/types.d.ts.map +1 -0
  41. package/dist/es/index.d.ts +1 -0
  42. package/dist/es/index.d.ts.map +1 -1
  43. package/dist/es/standards-sdk.es.js +62 -40
  44. package/dist/es/standards-sdk.es.js.map +1 -1
  45. package/dist/es/standards-sdk.es101.js +2 -2
  46. package/dist/es/standards-sdk.es103.js +2 -2
  47. package/dist/es/standards-sdk.es104.js +1 -1
  48. package/dist/es/standards-sdk.es106.js +1 -1
  49. package/dist/es/standards-sdk.es108.js +2 -2
  50. package/dist/es/standards-sdk.es11.js +1 -1
  51. package/dist/es/standards-sdk.es110.js +1 -1
  52. package/dist/es/standards-sdk.es111.js +2 -2
  53. package/dist/es/standards-sdk.es115.js +3 -3
  54. package/dist/es/standards-sdk.es116.js +4 -4
  55. package/dist/es/standards-sdk.es117.js +19 -251
  56. package/dist/es/standards-sdk.es117.js.map +1 -1
  57. package/dist/es/standards-sdk.es118.js +60 -475
  58. package/dist/es/standards-sdk.es118.js.map +1 -1
  59. package/dist/es/standards-sdk.es119.js +217 -86
  60. package/dist/es/standards-sdk.es119.js.map +1 -1
  61. package/dist/es/standards-sdk.es12.js +1 -1
  62. package/dist/es/standards-sdk.es120.js +242 -150
  63. package/dist/es/standards-sdk.es120.js.map +1 -1
  64. package/dist/es/standards-sdk.es121.js +470 -26
  65. package/dist/es/standards-sdk.es121.js.map +1 -1
  66. package/dist/es/standards-sdk.es122.js +103 -10
  67. package/dist/es/standards-sdk.es122.js.map +1 -1
  68. package/dist/es/standards-sdk.es123.js +145 -167
  69. package/dist/es/standards-sdk.es123.js.map +1 -1
  70. package/dist/es/standards-sdk.es124.js +30 -25
  71. package/dist/es/standards-sdk.es124.js.map +1 -1
  72. package/dist/es/standards-sdk.es125.js +10 -20
  73. package/dist/es/standards-sdk.es125.js.map +1 -1
  74. package/dist/es/standards-sdk.es126.js +159 -137
  75. package/dist/es/standards-sdk.es126.js.map +1 -1
  76. package/dist/es/standards-sdk.es127.js +27 -199
  77. package/dist/es/standards-sdk.es127.js.map +1 -1
  78. package/dist/es/standards-sdk.es128.js +15 -783
  79. package/dist/es/standards-sdk.es128.js.map +1 -1
  80. package/dist/es/standards-sdk.es129.js +157 -10
  81. package/dist/es/standards-sdk.es129.js.map +1 -1
  82. package/dist/es/standards-sdk.es13.js +1 -1
  83. package/dist/es/standards-sdk.es130.js +198 -564
  84. package/dist/es/standards-sdk.es130.js.map +1 -1
  85. package/dist/es/standards-sdk.es131.js +703 -539
  86. package/dist/es/standards-sdk.es131.js.map +1 -1
  87. package/dist/es/standards-sdk.es132.js +12 -12
  88. package/dist/es/standards-sdk.es132.js.map +1 -1
  89. package/dist/es/standards-sdk.es133.js +567 -2
  90. package/dist/es/standards-sdk.es133.js.map +1 -1
  91. package/dist/es/standards-sdk.es134.js +610 -71
  92. package/dist/es/standards-sdk.es134.js.map +1 -1
  93. package/dist/es/standards-sdk.es135.js +12 -39
  94. package/dist/es/standards-sdk.es135.js.map +1 -1
  95. package/dist/es/standards-sdk.es136.js +2 -2
  96. package/dist/es/standards-sdk.es136.js.map +1 -1
  97. package/dist/es/standards-sdk.es137.js +42 -190
  98. package/dist/es/standards-sdk.es137.js.map +1 -1
  99. package/dist/es/standards-sdk.es138.js +39 -1139
  100. package/dist/es/standards-sdk.es138.js.map +1 -1
  101. package/dist/es/standards-sdk.es139.js +2 -306
  102. package/dist/es/standards-sdk.es139.js.map +1 -1
  103. package/dist/es/standards-sdk.es14.js +1 -1
  104. package/dist/es/standards-sdk.es140.js +231 -418
  105. package/dist/es/standards-sdk.es140.js.map +1 -1
  106. package/dist/es/standards-sdk.es141.js +1135 -350
  107. package/dist/es/standards-sdk.es141.js.map +1 -1
  108. package/dist/es/standards-sdk.es142.js +268 -1084
  109. package/dist/es/standards-sdk.es142.js.map +1 -1
  110. package/dist/es/standards-sdk.es143.js +418 -204
  111. package/dist/es/standards-sdk.es143.js.map +1 -1
  112. package/dist/es/standards-sdk.es144.js +350 -1562
  113. package/dist/es/standards-sdk.es144.js.map +1 -1
  114. package/dist/es/standards-sdk.es145.js +1061 -1096
  115. package/dist/es/standards-sdk.es145.js.map +1 -1
  116. package/dist/es/standards-sdk.es146.js +204 -13
  117. package/dist/es/standards-sdk.es146.js.map +1 -1
  118. package/dist/es/standards-sdk.es147.js +1541 -233
  119. package/dist/es/standards-sdk.es147.js.map +1 -1
  120. package/dist/es/standards-sdk.es148.js +1157 -4
  121. package/dist/es/standards-sdk.es148.js.map +1 -1
  122. package/dist/es/standards-sdk.es149.js +15 -79
  123. package/dist/es/standards-sdk.es149.js.map +1 -1
  124. package/dist/es/standards-sdk.es15.js +1 -1
  125. package/dist/es/standards-sdk.es150.js +250 -78
  126. package/dist/es/standards-sdk.es150.js.map +1 -1
  127. package/dist/es/standards-sdk.es151.js +4 -60
  128. package/dist/es/standards-sdk.es151.js.map +1 -1
  129. package/dist/es/standards-sdk.es152.js +80 -2546
  130. package/dist/es/standards-sdk.es152.js.map +1 -1
  131. package/dist/es/standards-sdk.es153.js +80 -152
  132. package/dist/es/standards-sdk.es153.js.map +1 -1
  133. package/dist/es/standards-sdk.es154.js +60 -7
  134. package/dist/es/standards-sdk.es154.js.map +1 -1
  135. package/dist/es/standards-sdk.es155.js +2547 -86
  136. package/dist/es/standards-sdk.es155.js.map +1 -1
  137. package/dist/es/standards-sdk.es156.js +144 -50
  138. package/dist/es/standards-sdk.es156.js.map +1 -1
  139. package/dist/es/standards-sdk.es157.js +7 -30
  140. package/dist/es/standards-sdk.es157.js.map +1 -1
  141. package/dist/es/standards-sdk.es158.js +86 -34
  142. package/dist/es/standards-sdk.es158.js.map +1 -1
  143. package/dist/es/standards-sdk.es159.js +65 -48
  144. package/dist/es/standards-sdk.es159.js.map +1 -1
  145. package/dist/es/standards-sdk.es16.js +5 -5
  146. package/dist/es/standards-sdk.es160.js +30 -138
  147. package/dist/es/standards-sdk.es160.js.map +1 -1
  148. package/dist/es/standards-sdk.es161.js +34 -42
  149. package/dist/es/standards-sdk.es161.js.map +1 -1
  150. package/dist/es/standards-sdk.es162.js +48 -12482
  151. package/dist/es/standards-sdk.es162.js.map +1 -1
  152. package/dist/es/standards-sdk.es163.js +12479 -53
  153. package/dist/es/standards-sdk.es163.js.map +1 -1
  154. package/dist/es/standards-sdk.es164.js +124 -97
  155. package/dist/es/standards-sdk.es164.js.map +1 -1
  156. package/dist/es/standards-sdk.es165.js +35 -74
  157. package/dist/es/standards-sdk.es165.js.map +1 -1
  158. package/dist/es/standards-sdk.es166.js +14 -197
  159. package/dist/es/standards-sdk.es166.js.map +1 -1
  160. package/dist/es/standards-sdk.es167.js +54 -15
  161. package/dist/es/standards-sdk.es167.js.map +1 -1
  162. package/dist/es/standards-sdk.es168.js +90 -651
  163. package/dist/es/standards-sdk.es168.js.map +1 -1
  164. package/dist/es/standards-sdk.es169.js +70 -161
  165. package/dist/es/standards-sdk.es169.js.map +1 -1
  166. package/dist/es/standards-sdk.es170.js +187 -309
  167. package/dist/es/standards-sdk.es170.js.map +1 -1
  168. package/dist/es/standards-sdk.es171.js +661 -335
  169. package/dist/es/standards-sdk.es171.js.map +1 -1
  170. package/dist/es/standards-sdk.es172.js +64 -444
  171. package/dist/es/standards-sdk.es172.js.map +1 -1
  172. package/dist/es/standards-sdk.es173.js +142 -301
  173. package/dist/es/standards-sdk.es173.js.map +1 -1
  174. package/dist/es/standards-sdk.es174.js +310 -64
  175. package/dist/es/standards-sdk.es174.js.map +1 -1
  176. package/dist/es/standards-sdk.es175.js +337 -64
  177. package/dist/es/standards-sdk.es175.js.map +1 -1
  178. package/dist/es/standards-sdk.es176.js +438 -124
  179. package/dist/es/standards-sdk.es176.js.map +1 -1
  180. package/dist/es/standards-sdk.es177.js +310 -496
  181. package/dist/es/standards-sdk.es177.js.map +1 -1
  182. package/dist/es/standards-sdk.es178.js +60 -243
  183. package/dist/es/standards-sdk.es178.js.map +1 -1
  184. package/dist/es/standards-sdk.es179.js +118 -175
  185. package/dist/es/standards-sdk.es179.js.map +1 -1
  186. package/dist/es/standards-sdk.es18.js +12 -12
  187. package/dist/es/standards-sdk.es180.js +465 -67
  188. package/dist/es/standards-sdk.es180.js.map +1 -1
  189. package/dist/es/standards-sdk.es181.js +250 -143
  190. package/dist/es/standards-sdk.es181.js.map +1 -1
  191. package/dist/es/standards-sdk.es182.js +172 -160
  192. package/dist/es/standards-sdk.es182.js.map +1 -1
  193. package/dist/es/standards-sdk.es183.js +65 -630
  194. package/dist/es/standards-sdk.es183.js.map +1 -1
  195. package/dist/es/standards-sdk.es184.js +128 -161
  196. package/dist/es/standards-sdk.es184.js.map +1 -1
  197. package/dist/es/standards-sdk.es185.js +144 -195
  198. package/dist/es/standards-sdk.es185.js.map +1 -1
  199. package/dist/es/standards-sdk.es186.js +668 -223
  200. package/dist/es/standards-sdk.es186.js.map +1 -1
  201. package/dist/es/standards-sdk.es187.js +188 -0
  202. package/dist/es/standards-sdk.es187.js.map +1 -0
  203. package/dist/es/standards-sdk.es188.js +238 -0
  204. package/dist/es/standards-sdk.es188.js.map +1 -0
  205. package/dist/es/standards-sdk.es189.js +242 -0
  206. package/dist/es/standards-sdk.es189.js.map +1 -0
  207. package/dist/es/standards-sdk.es19.js +9 -9
  208. package/dist/es/standards-sdk.es2.js +2 -2
  209. package/dist/es/standards-sdk.es20.js +1 -1
  210. package/dist/es/standards-sdk.es21.js +1 -1
  211. package/dist/es/standards-sdk.es22.js +1 -1
  212. package/dist/es/standards-sdk.es23.js +1 -1
  213. package/dist/es/standards-sdk.es24.js +1 -1
  214. package/dist/es/standards-sdk.es25.js +1 -1
  215. package/dist/es/standards-sdk.es26.js +1 -1
  216. package/dist/es/standards-sdk.es27.js +12 -12
  217. package/dist/es/standards-sdk.es30.js +2 -2
  218. package/dist/es/standards-sdk.es31.js +4 -4
  219. package/dist/es/standards-sdk.es32.js +1 -1
  220. package/dist/es/standards-sdk.es35.js +6 -6
  221. package/dist/es/standards-sdk.es36.js +4 -4
  222. package/dist/es/standards-sdk.es37.js +2 -2
  223. package/dist/es/standards-sdk.es38.js +2 -2
  224. package/dist/es/standards-sdk.es39.js +1 -1
  225. package/dist/es/standards-sdk.es4.js +2 -2
  226. package/dist/es/standards-sdk.es40.js +1 -1
  227. package/dist/es/standards-sdk.es41.js +2 -2
  228. package/dist/es/standards-sdk.es46.js +1 -1
  229. package/dist/es/standards-sdk.es5.js +2 -2
  230. package/dist/es/standards-sdk.es51.js +1 -1
  231. package/dist/es/standards-sdk.es53.js +1 -1
  232. package/dist/es/standards-sdk.es56.js +2 -2
  233. package/dist/es/standards-sdk.es59.js +1 -1
  234. package/dist/es/standards-sdk.es6.js +2 -2
  235. package/dist/es/standards-sdk.es60.js +1 -1
  236. package/dist/es/standards-sdk.es62.js +1 -1
  237. package/dist/es/standards-sdk.es63.js +2 -2
  238. package/dist/es/standards-sdk.es64.js +1 -1
  239. package/dist/es/standards-sdk.es65.js +1 -1
  240. package/dist/es/standards-sdk.es66.js +1 -1
  241. package/dist/es/standards-sdk.es67.js +7 -7
  242. package/dist/es/standards-sdk.es69.js +1 -1
  243. package/dist/es/standards-sdk.es7.js +1 -1
  244. package/dist/es/standards-sdk.es71.js +2 -2
  245. package/dist/es/standards-sdk.es72.js +3 -3
  246. package/dist/es/standards-sdk.es75.js +5 -5
  247. package/dist/es/standards-sdk.es76.js +3 -3
  248. package/dist/es/standards-sdk.es77.js +2 -2
  249. package/dist/es/standards-sdk.es78.js +1 -1
  250. package/dist/es/standards-sdk.es81.js +2 -2
  251. package/dist/es/standards-sdk.es83.js +2 -2
  252. package/dist/es/standards-sdk.es84.js +4 -4
  253. package/dist/es/standards-sdk.es85.js +1 -1
  254. package/dist/es/standards-sdk.es88.js +1 -1
  255. package/dist/es/standards-sdk.es89.js +2 -2
  256. package/dist/es/standards-sdk.es9.js +2 -2
  257. package/dist/es/standards-sdk.es90.js +4 -4
  258. package/dist/es/standards-sdk.es94.js +3 -3
  259. package/dist/es/standards-sdk.es96.js +2 -2
  260. package/dist/es/standards-sdk.es98.js +1 -1
  261. package/dist/es/standards-sdk.es99.js +3 -3
  262. package/package.json +1 -1
@@ -1,570 +1,204 @@
1
- const getNested = (tx, path) => {
2
- const parts = path.split(".");
3
- let current = tx;
4
- for (const p of parts) {
5
- if (current == null) {
6
- return void 0;
7
- }
8
- current = current[p];
9
- }
10
- return current;
11
- };
12
- const renderTemplate = (template, tx) => {
13
- return template.replace(/\{([^}]+)\}/g, (_m, path) => {
14
- const value = getNested(tx, String(path).trim());
15
- if (value === null || value === void 0) {
16
- return "(Unknown)";
17
- }
18
- return String(value);
19
- });
20
- };
21
- const summarizeCryptoTransfer = (tx) => {
22
- const senders = [];
23
- const receivers = [];
24
- if (Array.isArray(tx.transfers)) {
25
- for (const transfer of tx.transfers) {
26
- const originalAmountFloat = parseFloat(transfer.amount);
27
- let displayStr = transfer.amount;
28
- if (displayStr.startsWith("-")) {
29
- displayStr = displayStr.substring(1);
1
+ import axios from "axios";
2
+ import { Logger } from "./standards-sdk.es126.js";
3
+ import { HederaMirrorNode } from "./standards-sdk.es147.js";
4
+ import "buffer";
5
+ import "@noble/curves/secp256k1.js";
6
+ import "zod";
7
+ import "./standards-sdk.es155.js";
8
+ import "./standards-sdk.es153.js";
9
+ class HRLResolver {
10
+ constructor(logLevel = "info") {
11
+ this.defaultEndpoint = "https://kiloscribe.com/api/inscription-cdn";
12
+ this.logger = Logger.getInstance({
13
+ level: logLevel,
14
+ module: "HRLResolver"
15
+ });
16
+ }
17
+ /**
18
+ * Determines if a MIME type represents binary content
19
+ */
20
+ isBinaryContentType(mimeType) {
21
+ const binaryTypes = [
22
+ "image/",
23
+ "audio/",
24
+ "video/",
25
+ "application/octet-stream",
26
+ "application/pdf",
27
+ "application/zip",
28
+ "application/gzip",
29
+ "application/x-binary",
30
+ "application/vnd.ms-",
31
+ "application/x-msdownload",
32
+ "application/x-shockwave-flash",
33
+ "font/",
34
+ "application/wasm"
35
+ ];
36
+ return binaryTypes.some((prefix) => mimeType.startsWith(prefix));
37
+ }
38
+ /**
39
+ * Parses an HRL string into its components
40
+ */
41
+ parseHRL(hrl) {
42
+ if (!hrl) {
43
+ return null;
44
+ }
45
+ const hrlPattern = /^hcs:\/\/(\d+)\/([0-9]+\.[0-9]+\.[0-9]+)$/;
46
+ const match = hrl.match(hrlPattern);
47
+ if (!match) {
48
+ return null;
49
+ }
50
+ return {
51
+ standard: match[1],
52
+ topicId: match[2]
53
+ };
54
+ }
55
+ /**
56
+ * Validates if a string is a valid HRL
57
+ */
58
+ isValidHRL(hrl) {
59
+ if (!hrl || typeof hrl !== "string") {
60
+ return false;
61
+ }
62
+ const parsed = this.parseHRL(hrl);
63
+ if (!parsed) {
64
+ return false;
65
+ }
66
+ const topicIdPattern = /^[0-9]+\.[0-9]+\.[0-9]+$/;
67
+ if (!topicIdPattern.test(parsed.topicId)) {
68
+ return false;
69
+ }
70
+ return true;
71
+ }
72
+ /**
73
+ * Validates if a string is a valid topic ID
74
+ */
75
+ isValidTopicId(topicId) {
76
+ const topicIdPattern = /^[0-9]+\.[0-9]+\.[0-9]+$/;
77
+ return topicIdPattern.test(topicId);
78
+ }
79
+ /**
80
+ * Resolves content from either an HRL or a topic ID
81
+ * If a topic ID is provided, it queries the topic memo to determine the HCS standard
82
+ */
83
+ async resolve(hrlOrTopicId, options) {
84
+ if (this.isValidHRL(hrlOrTopicId)) {
85
+ return this.resolveHRL(hrlOrTopicId, options);
86
+ }
87
+ if (!this.isValidTopicId(hrlOrTopicId)) {
88
+ throw new Error(`Invalid HRL or topic ID format: ${hrlOrTopicId}`);
89
+ }
90
+ try {
91
+ const mirrorNode = new HederaMirrorNode(options.network, this.logger);
92
+ const topicInfo = await mirrorNode.getTopicInfo(hrlOrTopicId);
93
+ const memo = topicInfo?.memo || "";
94
+ let standard = "1";
95
+ if (memo) {
96
+ const hcsMatch = memo.match(/^hcs-(\d+)/);
97
+ if (hcsMatch && hcsMatch[1]) {
98
+ standard = hcsMatch[1];
99
+ }
30
100
  }
31
- displayStr = displayStr.replace(/\s*ℏ$/, "");
32
- if (originalAmountFloat < 0) {
33
- senders.push(`${transfer.accountId} (${displayStr} ℏ)`);
34
- } else if (originalAmountFloat > 0) {
35
- receivers.push(`${transfer.accountId} (${displayStr} ℏ)`);
101
+ const hrl = `hcs://${standard}/${hrlOrTopicId}`;
102
+ return this.resolveHRL(hrl, options);
103
+ } catch (error) {
104
+ this.logger.error(
105
+ `Failed to get topic info for ${hrlOrTopicId}: ${error.message}`
106
+ );
107
+ const hrl = `hcs://1/${hrlOrTopicId}`;
108
+ return this.resolveHRL(hrl, options);
109
+ }
110
+ }
111
+ async getContentWithType(hrl, options) {
112
+ if (!this.isValidHRL(hrl)) {
113
+ return {
114
+ content: hrl,
115
+ contentType: "text/plain",
116
+ isBinary: false
117
+ };
118
+ }
119
+ try {
120
+ const result = await this.resolveHRL(hrl, options);
121
+ return {
122
+ content: result.content,
123
+ contentType: result.contentType,
124
+ isBinary: result.isBinary
125
+ };
126
+ } catch (e) {
127
+ const error = e;
128
+ const logMessage = `Error resolving HRL for content and type: ${error.message}`;
129
+ this.logger.error(logMessage);
130
+ throw new Error(logMessage);
131
+ }
132
+ }
133
+ /**
134
+ * Resolves HRL content with proper content type detection
135
+ */
136
+ async resolveHRL(hrl, options) {
137
+ const parsed = this.parseHRL(hrl);
138
+ if (!parsed) {
139
+ throw new Error(`Invalid HRL format: ${hrl}`);
140
+ }
141
+ const { standard, topicId } = parsed;
142
+ this.logger.debug(
143
+ `Resolving HRL reference: standard=${standard}, topicId=${topicId}`
144
+ );
145
+ try {
146
+ const cdnEndpoint = options.cdnEndpoint || this.defaultEndpoint;
147
+ const cdnUrl = `${cdnEndpoint}/${topicId}?network=${options.network}`;
148
+ this.logger.debug(`Fetching content from CDN: ${cdnUrl}`);
149
+ const headResponse = await axios.head(cdnUrl);
150
+ const contentType = headResponse.headers["content-type"] || "";
151
+ const isBinary = this.isBinaryContentType(contentType);
152
+ if (isBinary || options.returnRaw) {
153
+ const response2 = await axios.get(cdnUrl, {
154
+ responseType: "arraybuffer"
155
+ });
156
+ return {
157
+ content: response2.data,
158
+ contentType,
159
+ topicId,
160
+ isBinary: true
161
+ };
36
162
  }
37
- }
38
- }
39
- if (senders.length > 0 && receivers.length > 0) {
40
- return `Transfer of HBAR from ${senders.join(", ")} to ${receivers.join(", ")}`;
41
- }
42
- return tx.humanReadableType;
43
- };
44
- const groupTokenTransfers = (tokenTransfers) => {
45
- const groups = {};
46
- for (const t of tokenTransfers) {
47
- if (!groups[t.tokenId]) {
48
- groups[t.tokenId] = [];
49
- }
50
- groups[t.tokenId].push(t);
51
- }
52
- return groups;
53
- };
54
- const summarizeTokenTransfers = (tx) => {
55
- const tokenSummaries = [];
56
- const groups = groupTokenTransfers(tx.tokenTransfers || []);
57
- for (const [tokenId, transfers] of Object.entries(groups)) {
58
- const tokenSenders = [];
59
- const tokenReceivers = [];
60
- for (const t of transfers) {
61
- const amt = parseFloat(String(t.amount));
62
- if (amt < 0) {
63
- tokenSenders.push(`${t.accountId} (${Math.abs(amt)})`);
64
- } else if (amt > 0) {
65
- tokenReceivers.push(`${t.accountId} (${amt})`);
163
+ if (contentType === "application/json") {
164
+ const response2 = await axios.get(cdnUrl, {
165
+ responseType: "json"
166
+ });
167
+ if (!response2.data) {
168
+ throw new Error(`Failed to fetch content from topic: ${topicId}`);
169
+ }
170
+ return {
171
+ content: response2.data,
172
+ contentType,
173
+ topicId,
174
+ isBinary: false
175
+ };
66
176
  }
67
- }
68
- if (tokenSenders.length > 0 && tokenReceivers.length > 0) {
69
- tokenSummaries.push(
70
- `Transfer of token ${tokenId} from ${tokenSenders.join(", ")} to ${tokenReceivers.join(", ")}`
71
- );
72
- }
73
- }
74
- if (tokenSummaries.length > 0) {
75
- return tokenSummaries.join("; ");
76
- }
77
- return tx.humanReadableType;
78
- };
79
- const summarizeContractCall = (tx) => {
80
- if (!tx.contractCall) {
81
- return tx.humanReadableType;
82
- }
83
- let summary = `Contract call to ${tx.contractCall.contractId} with ${tx.contractCall.gas} gas`;
84
- if (tx.contractCall.amount > 0) {
85
- summary += ` and ${tx.contractCall.amount} HBAR`;
86
- }
87
- if (tx.contractCall.functionName) {
88
- summary += ` calling function ${tx.contractCall.functionName}`;
89
- }
90
- return summary;
91
- };
92
- const summarizeTokenMint = (tx) => {
93
- if (tx.tokenMint) {
94
- return `Mint ${tx.tokenMint.amount} tokens for token ${tx.tokenMint.tokenId}`;
95
- }
96
- return tx.humanReadableType;
97
- };
98
- const summarizeTokenBurn = (tx) => {
99
- if (tx.tokenBurn) {
100
- return `Burn ${tx.tokenBurn.amount} tokens for token ${tx.tokenBurn.tokenId}`;
101
- }
102
- return tx.humanReadableType;
103
- };
104
- const summarizeTokenCreate = (tx) => {
105
- if (!tx.tokenCreation) {
106
- return tx.humanReadableType;
107
- }
108
- let summary = `Create token ${tx.tokenCreation.tokenName || "(No Name)"} (${tx.tokenCreation.tokenSymbol || "(No Symbol)"})`;
109
- if (tx.tokenCreation.initialSupply) {
110
- summary += ` with initial supply ${tx.tokenCreation.initialSupply}`;
111
- }
112
- if (tx.tokenCreation.customFees && tx.tokenCreation.customFees.length > 0) {
113
- summary += ` including ${tx.tokenCreation.customFees.length} custom fee(s)`;
114
- }
115
- return summary;
116
- };
117
- const summarizeConsensusCreateTopic = (tx) => {
118
- if (!tx.consensusCreateTopic) {
119
- return tx.humanReadableType;
120
- }
121
- let summary = "Create new topic";
122
- if (tx.consensusCreateTopic.memo) {
123
- summary += ` with memo "${tx.consensusCreateTopic.memo}"`;
124
- }
125
- if (tx.consensusCreateTopic.autoRenewAccountId) {
126
- summary += `, auto-renew by ${tx.consensusCreateTopic.autoRenewAccountId}`;
127
- }
128
- return summary;
129
- };
130
- const summarizeConsensusSubmitMessage = (tx) => {
131
- if (!tx.consensusSubmitMessage) {
132
- return tx.humanReadableType;
133
- }
134
- let summary = "Submit message";
135
- if (tx.consensusSubmitMessage.topicId) {
136
- summary += ` to topic ${tx.consensusSubmitMessage.topicId}`;
137
- }
138
- if (tx.consensusSubmitMessage.message) {
139
- if (tx.consensusSubmitMessage.messageEncoding === "utf8") {
140
- const preview = tx.consensusSubmitMessage.message.substring(0, 70);
141
- const needsEllipsis = tx.consensusSubmitMessage.message.length > 70;
142
- summary += `: "${preview}${needsEllipsis ? "..." : ""}"`;
143
- } else {
144
- const byteLength = Buffer.from(
145
- tx.consensusSubmitMessage.message,
146
- "base64"
147
- ).length;
148
- summary += ` (binary message data, length: ${byteLength} bytes)`;
149
- }
150
- }
151
- if (tx.consensusSubmitMessage.chunkInfoNumber && tx.consensusSubmitMessage.chunkInfoTotal) {
152
- summary += ` (chunk ${tx.consensusSubmitMessage.chunkInfoNumber}/${tx.consensusSubmitMessage.chunkInfoTotal})`;
153
- }
154
- return summary;
155
- };
156
- const summarizeFileCreate = (tx) => {
157
- if (!tx.fileCreate) {
158
- return tx.humanReadableType;
159
- }
160
- let summary = "Create File";
161
- if (tx.fileCreate.memo) {
162
- summary += ` with memo "${tx.fileCreate.memo}"`;
163
- }
164
- if (tx.fileCreate.contents) {
165
- summary += " (includes content)";
166
- }
167
- return summary;
168
- };
169
- const summarizeFileAppend = (tx) => {
170
- if (tx.fileAppend) {
171
- return `Append to File ${tx.fileAppend.fileId || "(Unknown ID)"}`;
172
- }
173
- return tx.humanReadableType;
174
- };
175
- const summarizeFileUpdate = (tx) => {
176
- if (tx.fileUpdate) {
177
- return `Update File ${tx.fileUpdate.fileId || "(Unknown ID)"}`;
178
- }
179
- return tx.humanReadableType;
180
- };
181
- const summarizeFileDelete = (tx) => {
182
- if (tx.fileDelete) {
183
- return `Delete File ${tx.fileDelete.fileId || "(Unknown ID)"}`;
184
- }
185
- return tx.humanReadableType;
186
- };
187
- const summarizeConsensusUpdateTopic = (tx) => {
188
- if (tx.consensusUpdateTopic) {
189
- return `Update Topic ${tx.consensusUpdateTopic.topicId || "(Unknown ID)"}`;
190
- }
191
- return tx.humanReadableType;
192
- };
193
- const summarizeConsensusDeleteTopic = (tx) => {
194
- if (tx.consensusDeleteTopic) {
195
- return `Delete Topic ${tx.consensusDeleteTopic.topicId || "(Unknown ID)"}`;
196
- }
197
- return tx.humanReadableType;
198
- };
199
- const summarizeTokenFreeze = (tx) => {
200
- if (tx.tokenFreeze) {
201
- return `Freeze Token ${tx.tokenFreeze.tokenId} for Account ${tx.tokenFreeze.accountId}`;
202
- }
203
- return tx.humanReadableType;
204
- };
205
- const summarizeTokenUnfreeze = (tx) => {
206
- if (tx.tokenUnfreeze) {
207
- return `Unfreeze Token ${tx.tokenUnfreeze.tokenId} for Account ${tx.tokenUnfreeze.accountId}`;
208
- }
209
- return tx.humanReadableType;
210
- };
211
- const summarizeTokenGrantKyc = (tx) => {
212
- if (tx.tokenGrantKyc) {
213
- return `Grant KYC for Token ${tx.tokenGrantKyc.tokenId} to Account ${tx.tokenGrantKyc.accountId}`;
214
- }
215
- return tx.humanReadableType;
216
- };
217
- const summarizeTokenRevokeKyc = (tx) => {
218
- if (tx.tokenRevokeKyc) {
219
- return `Revoke KYC for Token ${tx.tokenRevokeKyc.tokenId} from Account ${tx.tokenRevokeKyc.accountId}`;
220
- }
221
- return tx.humanReadableType;
222
- };
223
- const summarizeTokenPause = (tx) => {
224
- if (tx.tokenPause) {
225
- return `Pause Token ${tx.tokenPause.tokenId}`;
226
- }
227
- return tx.humanReadableType;
228
- };
229
- const summarizeTokenUnpause = (tx) => {
230
- if (tx.tokenUnpause) {
231
- return `Unpause Token ${tx.tokenUnpause.tokenId}`;
232
- }
233
- return tx.humanReadableType;
234
- };
235
- const summarizeTokenWipe = (tx) => {
236
- if (tx.tokenWipeAccount) {
237
- let summary = `Wipe Token ${tx.tokenWipeAccount.tokenId} from Account ${tx.tokenWipeAccount.accountId}`;
238
- if (tx.tokenWipeAccount.serialNumbers && tx.tokenWipeAccount.serialNumbers.length > 0) {
239
- summary += ` (Serials: ${tx.tokenWipeAccount.serialNumbers.join(", ")})`;
240
- }
241
- if (tx.tokenWipeAccount.amount) {
242
- summary += ` (Amount: ${tx.tokenWipeAccount.amount})`;
243
- }
244
- return summary;
245
- }
246
- return tx.humanReadableType;
247
- };
248
- const summarizeTokenDelete = (tx) => {
249
- if (tx.tokenDelete) {
250
- return `Delete Token ${tx.tokenDelete.tokenId}`;
251
- }
252
- return tx.humanReadableType;
253
- };
254
- const summarizeTokenAssociate = (tx) => {
255
- if (tx.tokenAssociate) {
256
- return `Associate Account ${tx.tokenAssociate.accountId} with Tokens: ${(tx.tokenAssociate.tokenIds || []).join(", ")}`;
257
- }
258
- return tx.humanReadableType;
259
- };
260
- const summarizeTokenDissociate = (tx) => {
261
- if (tx.tokenDissociate) {
262
- return `Dissociate Account ${tx.tokenDissociate.accountId} from Tokens: ${(tx.tokenDissociate.tokenIds || []).join(", ")}`;
263
- }
264
- return tx.humanReadableType;
265
- };
266
- const summarizeAccountDelete = (tx) => {
267
- if (tx.cryptoDelete) {
268
- return `Delete Account ${tx.cryptoDelete.deleteAccountId}`;
269
- }
270
- return tx.humanReadableType;
271
- };
272
- const summarizeAccountCreate = (tx) => {
273
- if (!tx.cryptoCreateAccount) {
274
- return tx.humanReadableType;
275
- }
276
- let summary = "Create Account";
277
- if (tx.cryptoCreateAccount.initialBalance && tx.cryptoCreateAccount.initialBalance !== "0") {
278
- summary += ` with balance ${tx.cryptoCreateAccount.initialBalance}`;
279
- }
280
- if (tx.cryptoCreateAccount.alias) {
281
- summary += ` (Alias: ${tx.cryptoCreateAccount.alias})`;
282
- }
283
- return summary;
284
- };
285
- const summarizeAccountUpdate = (tx) => {
286
- if (tx.cryptoUpdateAccount) {
287
- return `Update Account ${tx.cryptoUpdateAccount.accountIdToUpdate || "(Unknown ID)"}`;
288
- }
289
- return tx.humanReadableType;
290
- };
291
- const summarizeApproveAllowance = (tx) => {
292
- if (tx.cryptoApproveAllowance) {
293
- let count = 0;
294
- if (tx.cryptoApproveAllowance.hbarAllowances) {
295
- count += tx.cryptoApproveAllowance.hbarAllowances.length;
296
- }
297
- if (tx.cryptoApproveAllowance.tokenAllowances) {
298
- count += tx.cryptoApproveAllowance.tokenAllowances.length;
299
- }
300
- if (tx.cryptoApproveAllowance.nftAllowances) {
301
- count += tx.cryptoApproveAllowance.nftAllowances.length;
302
- }
303
- return `Approve ${count} Crypto Allowance(s)`;
304
- }
305
- return tx.humanReadableType;
306
- };
307
- const summarizeDeleteAllowance = (tx) => {
308
- if (tx.cryptoDeleteAllowance) {
309
- const count = (tx.cryptoDeleteAllowance.nftAllowancesToRemove || []).length;
310
- return `Delete ${count} NFT Crypto Allowance(s)`;
311
- }
312
- return tx.humanReadableType;
313
- };
314
- const summarizeContractCreate = (tx) => {
315
- if (tx.contractCreate) {
316
- let summary = "Create Contract";
317
- if (tx.contractCreate.memo) {
318
- summary += ` (Memo: ${tx.contractCreate.memo})`;
319
- }
320
- return summary;
321
- }
322
- return tx.humanReadableType;
323
- };
324
- const summarizeContractUpdate = (tx) => {
325
- if (tx.contractUpdate) {
326
- return `Update Contract ${tx.contractUpdate.contractIdToUpdate || "(Unknown ID)"}`;
327
- }
328
- return tx.humanReadableType;
329
- };
330
- const summarizeContractDelete = (tx) => {
331
- if (tx.contractDelete) {
332
- let summary = `Delete Contract ${tx.contractDelete.contractIdToDelete || "(Unknown ID)"}`;
333
- if (tx.contractDelete.transferAccountId) {
334
- summary += ` (Transfer to Account: ${tx.contractDelete.transferAccountId})`;
335
- } else if (tx.contractDelete.transferContractId) {
336
- summary += ` (Transfer to Contract: ${tx.contractDelete.transferContractId})`;
337
- }
338
- return summary;
339
- }
340
- return tx.humanReadableType;
341
- };
342
- const summarizeTokenUpdate = (tx) => {
343
- if (tx.tokenUpdate) {
344
- return `Update Token ${tx.tokenUpdate.tokenId || "(Unknown ID)"}`;
345
- }
346
- return tx.humanReadableType;
347
- };
348
- const summarizeTokenFeeScheduleUpdate = (tx) => {
349
- if (tx.tokenFeeScheduleUpdate) {
350
- return `Update Fee Schedule for Token ${tx.tokenFeeScheduleUpdate.tokenId || "(Unknown ID)"}`;
351
- }
352
- return tx.humanReadableType;
353
- };
354
- const summarizeTokenAirdrop = (tx) => {
355
- if (!tx.tokenAirdrop || !tx.tokenAirdrop.tokenTransfers) {
356
- return tx.humanReadableType;
357
- }
358
- let tokenTypes = 0;
359
- let totalTransfers = 0;
360
- for (const t of tx.tokenAirdrop.tokenTransfers) {
361
- tokenTypes += 1;
362
- totalTransfers += Array.isArray(t.transfers) ? t.transfers.length : 0;
363
- }
364
- return `Token Airdrop across ${tokenTypes} token(s), ${totalTransfers} transfer(s)`;
365
- };
366
- const summarizeScheduleCreate = (tx) => {
367
- if (!tx.scheduleCreate) {
368
- return tx.humanReadableType;
369
- }
370
- let summary = "Create Schedule";
371
- if (tx.scheduleCreate.memo) {
372
- summary += ` (Memo: ${tx.scheduleCreate.memo})`;
373
- }
374
- return summary;
375
- };
376
- const summarizeScheduleSign = (tx) => {
377
- if (tx.scheduleSign) {
378
- return "Sign Schedule";
379
- }
380
- return tx.humanReadableType;
381
- };
382
- const summarizeScheduleDelete = (tx) => {
383
- if (tx.scheduleDelete) {
384
- return "Delete Schedule";
385
- }
386
- return tx.humanReadableType;
387
- };
388
- const summarizeSystemDelete = (tx) => {
389
- if (!tx.systemDelete) {
390
- return tx.humanReadableType;
391
- }
392
- if (tx.systemDelete.fileId) {
393
- return `System Delete File ${tx.systemDelete.fileId}`;
394
- }
395
- if (tx.systemDelete.contractId) {
396
- return `System Delete Contract ${tx.systemDelete.contractId}`;
397
- }
398
- return "System Delete";
399
- };
400
- const summarizeSystemUndelete = (tx) => {
401
- if (!tx.systemUndelete) {
402
- return tx.humanReadableType;
403
- }
404
- if (tx.systemUndelete.fileId) {
405
- return `System Undelete File ${tx.systemUndelete.fileId}`;
406
- }
407
- if (tx.systemUndelete.contractId) {
408
- return `System Undelete Contract ${tx.systemUndelete.contractId}`;
409
- }
410
- return "System Undelete";
411
- };
412
- const summarizeFreeze = (tx) => {
413
- return "Network Freeze";
414
- };
415
- const summarizeEthereumTransaction = (tx) => {
416
- return "Ethereum Transaction";
417
- };
418
- const summarizeUncheckedSubmit = (tx) => {
419
- if (tx.uncheckedSubmit && tx.uncheckedSubmit.topicId) {
420
- return `Unchecked Submit to topic ${tx.uncheckedSubmit.topicId}`;
421
- }
422
- return "Unchecked Submit";
423
- };
424
- const summarizeNodeCreate = (tx) => {
425
- return "Create Node";
426
- };
427
- const summarizeNodeUpdate = (tx) => {
428
- return "Update Node";
429
- };
430
- const summarizeNodeDelete = (tx) => {
431
- return "Delete Node";
432
- };
433
- const summarizeAtomicBatch = (tx) => {
434
- const count = Array.isArray(tx.atomicBatch?.transactions) ? tx.atomicBatch.transactions.length : 0;
435
- return `Atomic Batch (${count} transaction(s))`;
436
- };
437
- const transactionSummaryRegistry = {
438
- CRYPTOTRANSFER: { fn: summarizeCryptoTransfer },
439
- cryptoTransfer: { fn: summarizeCryptoTransfer },
440
- CONTRACTCALL: { fn: summarizeContractCall },
441
- contractCall: { fn: summarizeContractCall },
442
- TOKENMINT: { fn: summarizeTokenMint },
443
- tokenMint: { fn: summarizeTokenMint },
444
- TOKENBURN: { fn: summarizeTokenBurn },
445
- tokenBurn: { fn: summarizeTokenBurn },
446
- TOKENCREATE: { fn: summarizeTokenCreate },
447
- tokenCreation: { fn: summarizeTokenCreate },
448
- TOPICCREATE: { fn: summarizeConsensusCreateTopic },
449
- consensusCreateTopic: { fn: summarizeConsensusCreateTopic },
450
- CONSENSUSSUBMITMESSAGE: { fn: summarizeConsensusSubmitMessage },
451
- consensusSubmitMessage: { fn: summarizeConsensusSubmitMessage },
452
- TOPICUPDATE: { fn: summarizeConsensusUpdateTopic },
453
- consensusUpdateTopic: { fn: summarizeConsensusUpdateTopic },
454
- TOPICDELETE: { fn: summarizeConsensusDeleteTopic },
455
- consensusDeleteTopic: { fn: summarizeConsensusDeleteTopic },
456
- FILECREATE: { fn: summarizeFileCreate },
457
- fileCreate: { fn: summarizeFileCreate },
458
- FILEAPPEND: { fn: summarizeFileAppend },
459
- fileAppend: { fn: summarizeFileAppend },
460
- FILEUPDATE: { fn: summarizeFileUpdate },
461
- fileUpdate: { fn: summarizeFileUpdate },
462
- FILEDELETE: { fn: summarizeFileDelete },
463
- fileDelete: { fn: summarizeFileDelete },
464
- TOKENUPDATE: { fn: summarizeTokenUpdate },
465
- tokenUpdate: { fn: summarizeTokenUpdate },
466
- TOKENFEESCHEDULEUPDATE: { fn: summarizeTokenFeeScheduleUpdate },
467
- tokenFeeScheduleUpdate: { fn: summarizeTokenFeeScheduleUpdate },
468
- TOKENFREEZE: { fn: summarizeTokenFreeze },
469
- tokenFreeze: { fn: summarizeTokenFreeze },
470
- TOKENUNFREEZE: { fn: summarizeTokenUnfreeze },
471
- tokenUnfreeze: { fn: summarizeTokenUnfreeze },
472
- TOKENGRANTKYC: { fn: summarizeTokenGrantKyc },
473
- tokenGrantKyc: { fn: summarizeTokenGrantKyc },
474
- TOKENREVOKEKYC: { fn: summarizeTokenRevokeKyc },
475
- tokenRevokeKyc: { fn: summarizeTokenRevokeKyc },
476
- TOKENPAUSE: { fn: summarizeTokenPause },
477
- tokenPause: { fn: summarizeTokenPause },
478
- TOKENUNPAUSE: { fn: summarizeTokenUnpause },
479
- tokenUnpause: { fn: summarizeTokenUnpause },
480
- TOKENWIPE: { fn: summarizeTokenWipe },
481
- TOKENWIPEACCOUNT: { fn: summarizeTokenWipe },
482
- tokenWipe: { fn: summarizeTokenWipe },
483
- tokenWipeAccount: { fn: summarizeTokenWipe },
484
- TOKENDELETE: { fn: summarizeTokenDelete },
485
- tokenDelete: { fn: summarizeTokenDelete },
486
- TOKENASSOCIATE: { fn: summarizeTokenAssociate },
487
- tokenAssociate: { fn: summarizeTokenAssociate },
488
- TOKENDISSOCIATE: { fn: summarizeTokenDissociate },
489
- tokenDissociate: { fn: summarizeTokenDissociate },
490
- ACCOUNTDELETE: { fn: summarizeAccountDelete },
491
- cryptoDelete: { fn: summarizeAccountDelete },
492
- ACCOUNTCREATE: { fn: summarizeAccountCreate },
493
- cryptoCreateAccount: { fn: summarizeAccountCreate },
494
- ACCOUNTUPDATE: { fn: summarizeAccountUpdate },
495
- cryptoUpdateAccount: { fn: summarizeAccountUpdate },
496
- APPROVEALLOWANCE: { fn: summarizeApproveAllowance },
497
- cryptoApproveAllowance: { fn: summarizeApproveAllowance },
498
- DELETEALLOWANCE: { fn: summarizeDeleteAllowance },
499
- cryptoDeleteAllowance: { fn: summarizeDeleteAllowance },
500
- CONTRACTCREATE: { fn: summarizeContractCreate },
501
- contractCreate: { fn: summarizeContractCreate },
502
- CONTRACTUPDATE: { fn: summarizeContractUpdate },
503
- contractUpdate: { fn: summarizeContractUpdate },
504
- CONTRACTDELETE: { fn: summarizeContractDelete },
505
- contractDelete: { fn: summarizeContractDelete },
506
- TOKENAIRDROP: { fn: summarizeTokenAirdrop },
507
- tokenAirdrop: { fn: summarizeTokenAirdrop },
508
- SCHEDULECREATE: { fn: summarizeScheduleCreate },
509
- scheduleCreate: { fn: summarizeScheduleCreate },
510
- SCHEDULESIGN: { fn: summarizeScheduleSign },
511
- scheduleSign: { fn: summarizeScheduleSign },
512
- SCHEDULEDELETE: { fn: summarizeScheduleDelete },
513
- scheduleDelete: { fn: summarizeScheduleDelete },
514
- SYSTEMDELETE: { fn: summarizeSystemDelete },
515
- systemDelete: { fn: summarizeSystemDelete },
516
- SYSTEMUNDELETE: { fn: summarizeSystemUndelete },
517
- systemUndelete: { fn: summarizeSystemUndelete },
518
- FREEZE: { fn: summarizeFreeze },
519
- freeze: { fn: summarizeFreeze },
520
- ETHEREUMTRANSACTION: { fn: summarizeEthereumTransaction },
521
- ethereumTransaction: { fn: summarizeEthereumTransaction },
522
- UNCHECKEDSUBMIT: { fn: summarizeUncheckedSubmit },
523
- uncheckedSubmit: { fn: summarizeUncheckedSubmit },
524
- NODECREATE: { fn: summarizeNodeCreate },
525
- nodeCreate: { fn: summarizeNodeCreate },
526
- NODEUPDATE: { fn: summarizeNodeUpdate },
527
- nodeUpdate: { fn: summarizeNodeUpdate },
528
- NODEDELETE: { fn: summarizeNodeDelete },
529
- nodeDelete: { fn: summarizeNodeDelete },
530
- ATOMICBATCH: { fn: summarizeAtomicBatch },
531
- atomicBatch: { fn: summarizeAtomicBatch }
532
- };
533
- const resolveTransactionSummary = (tx) => {
534
- const spec = transactionSummaryRegistry[tx.type];
535
- if (spec) {
536
- if (spec.fn) {
537
- return spec.fn(tx);
538
- }
539
- if (spec.template) {
540
- return renderTemplate(spec.template, tx);
541
- }
542
- }
543
- const hrSpec = transactionSummaryRegistry[tx.humanReadableType];
544
- if (hrSpec) {
545
- if (hrSpec.fn) {
546
- return hrSpec.fn(tx);
547
- }
548
- if (hrSpec.template) {
549
- return renderTemplate(hrSpec.template, tx);
550
- }
551
- }
552
- if (tx.type === "cryptoTransfer" || tx.type === "CRYPTOTRANSFER") {
553
- return summarizeCryptoTransfer(tx);
554
- }
555
- if (tx.contractCall) {
556
- return summarizeContractCall(tx);
557
- }
558
- if (Array.isArray(tx.tokenTransfers) && tx.tokenTransfers.length > 0) {
559
- return summarizeTokenTransfers(tx);
560
- }
561
- if (tx.humanReadableType && tx.humanReadableType !== "Unknown Transaction") {
562
- return tx.humanReadableType;
563
- }
564
- return "Unknown Transaction";
565
- };
177
+ const response = await axios.get(cdnUrl);
178
+ if (!response.data) {
179
+ throw new Error(`Failed to fetch content from topic: ${topicId}`);
180
+ }
181
+ let content;
182
+ if (typeof response.data === "object") {
183
+ content = response.data.content || response.data.text || JSON.stringify(response.data);
184
+ } else {
185
+ content = response.data;
186
+ }
187
+ return {
188
+ content,
189
+ contentType,
190
+ topicId,
191
+ isBinary: false
192
+ };
193
+ } catch (e) {
194
+ const error = e;
195
+ const logMessage = `Error resolving HRL reference: ${error.message}`;
196
+ this.logger.error(logMessage);
197
+ throw new Error(logMessage);
198
+ }
199
+ }
200
+ }
566
201
  export {
567
- resolveTransactionSummary,
568
- transactionSummaryRegistry
202
+ HRLResolver
569
203
  };
570
204
  //# sourceMappingURL=standards-sdk.es130.js.map