@hashgraphonline/standards-sdk 0.0.112 → 0.0.114

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 (145) hide show
  1. package/dist/cjs/hcs-10/base-client.d.ts +2 -0
  2. package/dist/cjs/hcs-10/base-client.d.ts.map +1 -1
  3. package/dist/cjs/hcs-10/browser.d.ts +2 -0
  4. package/dist/cjs/hcs-10/browser.d.ts.map +1 -1
  5. package/dist/cjs/hcs-10/connections-manager.d.ts +1 -0
  6. package/dist/cjs/hcs-10/connections-manager.d.ts.map +1 -1
  7. package/dist/cjs/hcs-10/errors.d.ts.map +1 -1
  8. package/dist/cjs/hcs-10/registrations.d.ts.map +1 -1
  9. package/dist/cjs/hcs-10/sdk.d.ts.map +1 -1
  10. package/dist/cjs/hcs-10/types.d.ts +2 -0
  11. package/dist/cjs/hcs-10/types.d.ts.map +1 -1
  12. package/dist/cjs/hcs-11/client.d.ts.map +1 -1
  13. package/dist/cjs/hcs-11/types.d.ts +1 -0
  14. package/dist/cjs/hcs-11/types.d.ts.map +1 -1
  15. package/dist/cjs/hcs-3/src/index.d.ts.map +1 -1
  16. package/dist/cjs/hcs-7/evm-bridge.d.ts.map +1 -1
  17. package/dist/cjs/hcs-7/redis-cache.d.ts.map +1 -1
  18. package/dist/cjs/hcs-7/wasm-bridge.d.ts.map +1 -1
  19. package/dist/cjs/index-C8CnOC88.cjs +11 -0
  20. package/dist/cjs/index-C8CnOC88.cjs.map +1 -0
  21. package/dist/cjs/{index-CHar8dVv-SclbHQNq.cjs → index-CHar8dVv-CO7x6bkg.cjs} +2 -2
  22. package/dist/cjs/{index-CHar8dVv-SclbHQNq.cjs.map → index-CHar8dVv-CO7x6bkg.cjs.map} +1 -1
  23. package/dist/cjs/services/mirror-node.d.ts +1 -1
  24. package/dist/cjs/services/mirror-node.d.ts.map +1 -1
  25. package/dist/cjs/standards-sdk.cjs +1 -1
  26. package/dist/cjs/utils/logger.d.ts +1 -1
  27. package/dist/cjs/utils/logger.d.ts.map +1 -1
  28. package/dist/cjs/utils/parsers/hts-parser.d.ts.map +1 -1
  29. package/dist/cjs/utils/parsers/scs-parser.d.ts.map +1 -1
  30. package/dist/cjs/utils/progress-reporter.d.ts.map +1 -1
  31. package/dist/cjs/utils/sleep.d.ts.map +1 -1
  32. package/dist/cjs/utils/transaction-parser-types.d.ts.map +1 -1
  33. package/dist/es/hcs-10/base-client.d.ts +2 -0
  34. package/dist/es/hcs-10/base-client.d.ts.map +1 -1
  35. package/dist/es/hcs-10/browser.d.ts +2 -0
  36. package/dist/es/hcs-10/browser.d.ts.map +1 -1
  37. package/dist/es/hcs-10/connections-manager.d.ts +1 -0
  38. package/dist/es/hcs-10/connections-manager.d.ts.map +1 -1
  39. package/dist/es/hcs-10/errors.d.ts.map +1 -1
  40. package/dist/es/hcs-10/registrations.d.ts.map +1 -1
  41. package/dist/es/hcs-10/sdk.d.ts.map +1 -1
  42. package/dist/es/hcs-10/types.d.ts +2 -0
  43. package/dist/es/hcs-10/types.d.ts.map +1 -1
  44. package/dist/es/hcs-11/client.d.ts.map +1 -1
  45. package/dist/es/hcs-11/types.d.ts +1 -0
  46. package/dist/es/hcs-11/types.d.ts.map +1 -1
  47. package/dist/es/hcs-3/src/index.d.ts.map +1 -1
  48. package/dist/es/hcs-7/evm-bridge.d.ts.map +1 -1
  49. package/dist/es/hcs-7/redis-cache.d.ts.map +1 -1
  50. package/dist/es/hcs-7/wasm-bridge.d.ts.map +1 -1
  51. package/dist/es/services/mirror-node.d.ts +1 -1
  52. package/dist/es/services/mirror-node.d.ts.map +1 -1
  53. package/dist/es/standards-sdk.es10.js +7 -16
  54. package/dist/es/standards-sdk.es10.js.map +1 -1
  55. package/dist/es/standards-sdk.es12.js.map +1 -1
  56. package/dist/es/standards-sdk.es13.js +5 -4
  57. package/dist/es/standards-sdk.es13.js.map +1 -1
  58. package/dist/es/standards-sdk.es14.js.map +1 -1
  59. package/dist/es/standards-sdk.es15.js +13 -3
  60. package/dist/es/standards-sdk.es15.js.map +1 -1
  61. package/dist/es/standards-sdk.es16.js.map +1 -1
  62. package/dist/es/standards-sdk.es17.js.map +1 -1
  63. package/dist/es/standards-sdk.es18.js.map +1 -1
  64. package/dist/es/standards-sdk.es19.js +6 -6
  65. package/dist/es/standards-sdk.es19.js.map +1 -1
  66. package/dist/es/standards-sdk.es2.js +5 -1
  67. package/dist/es/standards-sdk.es2.js.map +1 -1
  68. package/dist/es/standards-sdk.es20.js +1 -1
  69. package/dist/es/standards-sdk.es20.js.map +1 -1
  70. package/dist/es/standards-sdk.es21.js +9 -27
  71. package/dist/es/standards-sdk.es21.js.map +1 -1
  72. package/dist/es/standards-sdk.es22.js.map +1 -1
  73. package/dist/es/standards-sdk.es23.js.map +1 -1
  74. package/dist/es/standards-sdk.es24.js +7139 -450
  75. package/dist/es/standards-sdk.es24.js.map +1 -1
  76. package/dist/es/standards-sdk.es25.js +2 -109
  77. package/dist/es/standards-sdk.es25.js.map +1 -1
  78. package/dist/es/standards-sdk.es26.js +469 -34
  79. package/dist/es/standards-sdk.es26.js.map +1 -1
  80. package/dist/es/standards-sdk.es27.js +74 -221
  81. package/dist/es/standards-sdk.es27.js.map +1 -1
  82. package/dist/es/standards-sdk.es28.js +34 -141
  83. package/dist/es/standards-sdk.es28.js.map +1 -1
  84. package/dist/es/standards-sdk.es29.js +250 -5
  85. package/dist/es/standards-sdk.es29.js.map +1 -1
  86. package/dist/es/standards-sdk.es3.js +17 -9
  87. package/dist/es/standards-sdk.es3.js.map +1 -1
  88. package/dist/es/standards-sdk.es30.js +154 -7171
  89. package/dist/es/standards-sdk.es30.js.map +1 -1
  90. package/dist/es/standards-sdk.es31.js +11 -2
  91. package/dist/es/standards-sdk.es31.js.map +1 -1
  92. package/dist/es/standards-sdk.es32.js +7134 -41
  93. package/dist/es/standards-sdk.es32.js.map +1 -1
  94. package/dist/es/standards-sdk.es33.js +41 -7134
  95. package/dist/es/standards-sdk.es33.js.map +1 -1
  96. package/dist/es/standards-sdk.es4.js +4 -1
  97. package/dist/es/standards-sdk.es4.js.map +1 -1
  98. package/dist/es/standards-sdk.es5.js +4 -7
  99. package/dist/es/standards-sdk.es5.js.map +1 -1
  100. package/dist/es/standards-sdk.es6.js.map +1 -1
  101. package/dist/es/standards-sdk.es7.js +8 -7
  102. package/dist/es/standards-sdk.es7.js.map +1 -1
  103. package/dist/es/standards-sdk.es8.js +9 -10
  104. package/dist/es/standards-sdk.es8.js.map +1 -1
  105. package/dist/es/standards-sdk.es9.js +2 -4
  106. package/dist/es/standards-sdk.es9.js.map +1 -1
  107. package/dist/es/utils/logger.d.ts +1 -1
  108. package/dist/es/utils/logger.d.ts.map +1 -1
  109. package/dist/es/utils/parsers/hts-parser.d.ts.map +1 -1
  110. package/dist/es/utils/parsers/scs-parser.d.ts.map +1 -1
  111. package/dist/es/utils/progress-reporter.d.ts.map +1 -1
  112. package/dist/es/utils/sleep.d.ts.map +1 -1
  113. package/dist/es/utils/transaction-parser-types.d.ts.map +1 -1
  114. package/dist/umd/hcs-10/base-client.d.ts +2 -0
  115. package/dist/umd/hcs-10/base-client.d.ts.map +1 -1
  116. package/dist/umd/hcs-10/browser.d.ts +2 -0
  117. package/dist/umd/hcs-10/browser.d.ts.map +1 -1
  118. package/dist/umd/hcs-10/connections-manager.d.ts +1 -0
  119. package/dist/umd/hcs-10/connections-manager.d.ts.map +1 -1
  120. package/dist/umd/hcs-10/errors.d.ts.map +1 -1
  121. package/dist/umd/hcs-10/registrations.d.ts.map +1 -1
  122. package/dist/umd/hcs-10/sdk.d.ts.map +1 -1
  123. package/dist/umd/hcs-10/types.d.ts +2 -0
  124. package/dist/umd/hcs-10/types.d.ts.map +1 -1
  125. package/dist/umd/hcs-11/client.d.ts.map +1 -1
  126. package/dist/umd/hcs-11/types.d.ts +1 -0
  127. package/dist/umd/hcs-11/types.d.ts.map +1 -1
  128. package/dist/umd/hcs-3/src/index.d.ts.map +1 -1
  129. package/dist/umd/hcs-7/evm-bridge.d.ts.map +1 -1
  130. package/dist/umd/hcs-7/redis-cache.d.ts.map +1 -1
  131. package/dist/umd/hcs-7/wasm-bridge.d.ts.map +1 -1
  132. package/dist/umd/services/mirror-node.d.ts +1 -1
  133. package/dist/umd/services/mirror-node.d.ts.map +1 -1
  134. package/dist/umd/standards-sdk.umd.js +6 -6
  135. package/dist/umd/standards-sdk.umd.js.map +1 -1
  136. package/dist/umd/utils/logger.d.ts +1 -1
  137. package/dist/umd/utils/logger.d.ts.map +1 -1
  138. package/dist/umd/utils/parsers/hts-parser.d.ts.map +1 -1
  139. package/dist/umd/utils/parsers/scs-parser.d.ts.map +1 -1
  140. package/dist/umd/utils/progress-reporter.d.ts.map +1 -1
  141. package/dist/umd/utils/sleep.d.ts.map +1 -1
  142. package/dist/umd/utils/transaction-parser-types.d.ts.map +1 -1
  143. package/package.json +8 -3
  144. package/dist/cjs/index-CcE0yY9g.cjs +0 -11
  145. package/dist/cjs/index-CcE0yY9g.cjs.map +0 -1
@@ -1,12 +1,15 @@
1
1
  import pino from "pino";
2
2
  const _Logger = class _Logger {
3
3
  constructor(options = {}) {
4
- const level = options.level || "info";
4
+ const globalDisable = process.env.DISABLE_LOGS === "true";
5
+ const shouldSilence = options.silent || globalDisable;
6
+ const level = shouldSilence ? "silent" : options.level || "info";
5
7
  this.moduleContext = options.module || "app";
8
+ const shouldEnablePrettyPrint = !shouldSilence && options.prettyPrint !== false;
6
9
  const pinoOptions = {
7
10
  level,
8
- enabled: !options.silent,
9
- transport: options.prettyPrint !== false ? {
11
+ enabled: !shouldSilence,
12
+ transport: shouldEnablePrettyPrint ? {
10
13
  target: "pino-pretty",
11
14
  options: {
12
15
  colorize: true,
@@ -19,6 +22,13 @@ const _Logger = class _Logger {
19
22
  }
20
23
  static getInstance(options = {}) {
21
24
  const moduleKey = options.module || "default";
25
+ const globalDisable = process.env.DISABLE_LOGS === "true";
26
+ if (globalDisable && _Logger.instances.has(moduleKey)) {
27
+ const existingLogger = _Logger.instances.get(moduleKey);
28
+ if (existingLogger.getLevel() !== "silent") {
29
+ _Logger.instances.delete(moduleKey);
30
+ }
31
+ }
22
32
  if (!_Logger.instances.has(moduleKey)) {
23
33
  _Logger.instances.set(moduleKey, new _Logger(options));
24
34
  }
@@ -1 +1 @@
1
- {"version":3,"file":"standards-sdk.es15.js","sources":["../../src/utils/logger.ts"],"sourcesContent":["import pino from 'pino';\n\nexport type LogLevel = 'debug' | 'info' | 'warn' | 'error';\n\nexport interface LoggerOptions {\n level?: LogLevel;\n module?: string;\n prettyPrint?: boolean;\n silent?: boolean;\n}\n\nexport class Logger {\n private static instances: Map<string, Logger> = new Map();\n private logger: pino.Logger;\n private moduleContext: string;\n\n constructor(options: LoggerOptions = {}) {\n const level = options.level || 'info';\n this.moduleContext = options.module || 'app';\n\n const pinoOptions: pino.LoggerOptions = {\n level,\n enabled: !options.silent,\n transport:\n options.prettyPrint !== false\n ? {\n target: 'pino-pretty',\n options: {\n colorize: true,\n translateTime: 'SYS:standard',\n ignore: 'pid,hostname',\n },\n }\n : undefined,\n };\n\n this.logger = pino(pinoOptions);\n }\n\n static getInstance(options: LoggerOptions = {}): Logger {\n const moduleKey = options.module || 'default';\n\n if (!Logger.instances.has(moduleKey)) {\n Logger.instances.set(moduleKey, new Logger(options));\n }\n\n return Logger.instances.get(moduleKey)!;\n }\n\n setLogLevel(level: LogLevel): void {\n this.logger.level = level;\n }\n\n getLevel(): LogLevel {\n return this.logger.level as LogLevel;\n }\n\n setSilent(silent: boolean): void {\n if (silent) {\n this.logger.level = 'silent';\n }\n }\n\n setModule(module: string): void {\n this.moduleContext = module;\n }\n\n debug(...args: any[]): void {\n this.logger.debug({ module: this.moduleContext }, ...args);\n }\n\n info(...args: any[]): void {\n this.logger.info({ module: this.moduleContext }, ...args);\n }\n\n warn(...args: any[]): void {\n this.logger.warn({ module: this.moduleContext }, ...args);\n }\n\n error(...args: any[]): void {\n this.logger.error({ module: this.moduleContext }, ...args);\n }\n\n trace(...args: any[]): void {\n this.logger.trace({ module: this.moduleContext }, ...args);\n }\n}\n"],"names":[],"mappings":";AAWO,MAAM,UAAN,MAAM,QAAO;AAAA,EAKlB,YAAY,UAAyB,IAAI;AACjC,UAAA,QAAQ,QAAQ,SAAS;AAC1B,SAAA,gBAAgB,QAAQ,UAAU;AAEvC,UAAM,cAAkC;AAAA,MACtC;AAAA,MACA,SAAS,CAAC,QAAQ;AAAA,MAClB,WACE,QAAQ,gBAAgB,QACpB;AAAA,QACE,QAAQ;AAAA,QACR,SAAS;AAAA,UACP,UAAU;AAAA,UACV,eAAe;AAAA,UACf,QAAQ;AAAA,QAAA;AAAA,MACV,IAEF;AAAA,IACR;AAEK,SAAA,SAAS,KAAK,WAAW;AAAA,EAAA;AAAA,EAGhC,OAAO,YAAY,UAAyB,IAAY;AAChD,UAAA,YAAY,QAAQ,UAAU;AAEpC,QAAI,CAAC,QAAO,UAAU,IAAI,SAAS,GAAG;AACpC,cAAO,UAAU,IAAI,WAAW,IAAI,QAAO,OAAO,CAAC;AAAA,IAAA;AAG9C,WAAA,QAAO,UAAU,IAAI,SAAS;AAAA,EAAA;AAAA,EAGvC,YAAY,OAAuB;AACjC,SAAK,OAAO,QAAQ;AAAA,EAAA;AAAA,EAGtB,WAAqB;AACnB,WAAO,KAAK,OAAO;AAAA,EAAA;AAAA,EAGrB,UAAU,QAAuB;AAC/B,QAAI,QAAQ;AACV,WAAK,OAAO,QAAQ;AAAA,IAAA;AAAA,EACtB;AAAA,EAGF,UAAU,QAAsB;AAC9B,SAAK,gBAAgB;AAAA,EAAA;AAAA,EAGvB,SAAS,MAAmB;AACrB,SAAA,OAAO,MAAM,EAAE,QAAQ,KAAK,cAAc,GAAG,GAAG,IAAI;AAAA,EAAA;AAAA,EAG3D,QAAQ,MAAmB;AACpB,SAAA,OAAO,KAAK,EAAE,QAAQ,KAAK,cAAc,GAAG,GAAG,IAAI;AAAA,EAAA;AAAA,EAG1D,QAAQ,MAAmB;AACpB,SAAA,OAAO,KAAK,EAAE,QAAQ,KAAK,cAAc,GAAG,GAAG,IAAI;AAAA,EAAA;AAAA,EAG1D,SAAS,MAAmB;AACrB,SAAA,OAAO,MAAM,EAAE,QAAQ,KAAK,cAAc,GAAG,GAAG,IAAI;AAAA,EAAA;AAAA,EAG3D,SAAS,MAAmB;AACrB,SAAA,OAAO,MAAM,EAAE,QAAQ,KAAK,cAAc,GAAG,GAAG,IAAI;AAAA,EAAA;AAE7D;AA1EiB,QAAA,gCAAqC,IAAI;AADnD,IAAM,SAAN;"}
1
+ {"version":3,"file":"standards-sdk.es15.js","sources":["../../src/utils/logger.ts"],"sourcesContent":["import pino from 'pino';\n\nexport type LogLevel = 'debug' | 'info' | 'warn' | 'error' | 'silent';\n\nexport interface LoggerOptions {\n level?: LogLevel;\n module?: string;\n prettyPrint?: boolean;\n silent?: boolean;\n}\nexport class Logger {\n private static instances: Map<string, Logger> = new Map();\n private logger: pino.Logger;\n private moduleContext: string;\n\n constructor(options: LoggerOptions = {}) {\n const globalDisable = process.env.DISABLE_LOGS === 'true';\n\n const shouldSilence = options.silent || globalDisable;\n const level = shouldSilence ? 'silent' : options.level || 'info';\n this.moduleContext = options.module || 'app';\n\n const shouldEnablePrettyPrint =\n !shouldSilence && options.prettyPrint !== false;\n const pinoOptions: pino.LoggerOptions = {\n level,\n enabled: !shouldSilence,\n transport: shouldEnablePrettyPrint\n ? {\n target: 'pino-pretty',\n options: {\n colorize: true,\n translateTime: 'SYS:standard',\n ignore: 'pid,hostname',\n },\n }\n : undefined,\n };\n\n this.logger = pino(pinoOptions);\n }\n\n static getInstance(options: LoggerOptions = {}): Logger {\n const moduleKey = options.module || 'default';\n\n const globalDisable = process.env.DISABLE_LOGS === 'true';\n\n if (globalDisable && Logger.instances.has(moduleKey)) {\n const existingLogger = Logger.instances.get(moduleKey)!;\n if (existingLogger.getLevel() !== 'silent') {\n Logger.instances.delete(moduleKey);\n }\n }\n\n if (!Logger.instances.has(moduleKey)) {\n Logger.instances.set(moduleKey, new Logger(options));\n }\n\n return Logger.instances.get(moduleKey)!;\n }\n\n setLogLevel(level: LogLevel): void {\n this.logger.level = level;\n }\n\n getLevel(): LogLevel {\n return this.logger.level as LogLevel;\n }\n\n setSilent(silent: boolean): void {\n if (silent) {\n this.logger.level = 'silent';\n }\n }\n\n setModule(module: string): void {\n this.moduleContext = module;\n }\n\n debug(...args: any[]): void {\n this.logger.debug({ module: this.moduleContext }, ...args);\n }\n\n info(...args: any[]): void {\n this.logger.info({ module: this.moduleContext }, ...args);\n }\n\n warn(...args: any[]): void {\n this.logger.warn({ module: this.moduleContext }, ...args);\n }\n\n error(...args: any[]): void {\n this.logger.error({ module: this.moduleContext }, ...args);\n }\n\n trace(...args: any[]): void {\n this.logger.trace({ module: this.moduleContext }, ...args);\n }\n}\n"],"names":[],"mappings":";AAUO,MAAM,UAAN,MAAM,QAAO;AAAA,EAKlB,YAAY,UAAyB,IAAI;AACjC,UAAA,gBAAgB,QAAQ,IAAI,iBAAiB;AAE7C,UAAA,gBAAgB,QAAQ,UAAU;AACxC,UAAM,QAAQ,gBAAgB,WAAW,QAAQ,SAAS;AACrD,SAAA,gBAAgB,QAAQ,UAAU;AAEvC,UAAM,0BACJ,CAAC,iBAAiB,QAAQ,gBAAgB;AAC5C,UAAM,cAAkC;AAAA,MACtC;AAAA,MACA,SAAS,CAAC;AAAA,MACV,WAAW,0BACP;AAAA,QACE,QAAQ;AAAA,QACR,SAAS;AAAA,UACP,UAAU;AAAA,UACV,eAAe;AAAA,UACf,QAAQ;AAAA,QAAA;AAAA,MACV,IAEF;AAAA,IACN;AAEK,SAAA,SAAS,KAAK,WAAW;AAAA,EAAA;AAAA,EAGhC,OAAO,YAAY,UAAyB,IAAY;AAChD,UAAA,YAAY,QAAQ,UAAU;AAE9B,UAAA,gBAAgB,QAAQ,IAAI,iBAAiB;AAEnD,QAAI,iBAAiB,QAAO,UAAU,IAAI,SAAS,GAAG;AACpD,YAAM,iBAAiB,QAAO,UAAU,IAAI,SAAS;AACjD,UAAA,eAAe,SAAS,MAAM,UAAU;AACnC,gBAAA,UAAU,OAAO,SAAS;AAAA,MAAA;AAAA,IACnC;AAGF,QAAI,CAAC,QAAO,UAAU,IAAI,SAAS,GAAG;AACpC,cAAO,UAAU,IAAI,WAAW,IAAI,QAAO,OAAO,CAAC;AAAA,IAAA;AAG9C,WAAA,QAAO,UAAU,IAAI,SAAS;AAAA,EAAA;AAAA,EAGvC,YAAY,OAAuB;AACjC,SAAK,OAAO,QAAQ;AAAA,EAAA;AAAA,EAGtB,WAAqB;AACnB,WAAO,KAAK,OAAO;AAAA,EAAA;AAAA,EAGrB,UAAU,QAAuB;AAC/B,QAAI,QAAQ;AACV,WAAK,OAAO,QAAQ;AAAA,IAAA;AAAA,EACtB;AAAA,EAGF,UAAU,QAAsB;AAC9B,SAAK,gBAAgB;AAAA,EAAA;AAAA,EAGvB,SAAS,MAAmB;AACrB,SAAA,OAAO,MAAM,EAAE,QAAQ,KAAK,cAAc,GAAG,GAAG,IAAI;AAAA,EAAA;AAAA,EAG3D,QAAQ,MAAmB;AACpB,SAAA,OAAO,KAAK,EAAE,QAAQ,KAAK,cAAc,GAAG,GAAG,IAAI;AAAA,EAAA;AAAA,EAG1D,QAAQ,MAAmB;AACpB,SAAA,OAAO,KAAK,EAAE,QAAQ,KAAK,cAAc,GAAG,GAAG,IAAI;AAAA,EAAA;AAAA,EAG1D,SAAS,MAAmB;AACrB,SAAA,OAAO,MAAM,EAAE,QAAQ,KAAK,cAAc,GAAG,GAAG,IAAI;AAAA,EAAA;AAAA,EAG3D,SAAS,MAAmB;AACrB,SAAA,OAAO,MAAM,EAAE,QAAQ,KAAK,cAAc,GAAG,GAAG,IAAI;AAAA,EAAA;AAE7D;AAvFiB,QAAA,gCAAqC,IAAI;AADnD,IAAM,SAAN;"}
@@ -1 +1 @@
1
- {"version":3,"file":"standards-sdk.es16.js","sources":["../../src/utils/topic-fee-utils.ts"],"sourcesContent":["import { PublicKey } from '@hashgraph/sdk';\nimport { Logger } from './logger';\nimport { HederaMirrorNode } from '../services/mirror-node';\n\n/**\n * Converts account IDs to public keys for fee exemption\n * @param client Hedera client instance\n * @param accountIds Array of account IDs to convert to public keys\n * @param network The network to use for retrieving public keys\n * @param logger Optional logger instance\n * @returns Array of public keys\n */\nexport async function accountIdsToExemptKeys(\n accountIds: string[],\n network: string,\n logger?: Logger\n): Promise<PublicKey[]> {\n const mirrorNode = new HederaMirrorNode(\n network as 'mainnet' | 'testnet',\n logger\n );\n const exemptKeys: PublicKey[] = [];\n\n for (const accountId of accountIds) {\n try {\n const publicKey = await mirrorNode.getPublicKey(accountId);\n exemptKeys.push(publicKey);\n } catch (error) {\n if (logger) {\n logger.warn(\n `Could not get public key for account ${accountId}: ${error}`\n );\n }\n }\n }\n\n return exemptKeys;\n}\n"],"names":[],"mappings":";AAYsB,eAAA,uBACpB,YACA,SACA,QACsB;AACtB,QAAM,aAAa,IAAI;AAAA,IACrB;AAAA,IACA;AAAA,EACF;AACA,QAAM,aAA0B,CAAC;AAEjC,aAAW,aAAa,YAAY;AAC9B,QAAA;AACF,YAAM,YAAY,MAAM,WAAW,aAAa,SAAS;AACzD,iBAAW,KAAK,SAAS;AAAA,aAClB,OAAO;AACd,UAAI,QAAQ;AACH,eAAA;AAAA,UACL,wCAAwC,SAAS,KAAK,KAAK;AAAA,QAC7D;AAAA,MAAA;AAAA,IACF;AAAA,EACF;AAGK,SAAA;AACT;"}
1
+ {"version":3,"file":"standards-sdk.es16.js","sources":["../../src/utils/topic-fee-utils.ts"],"sourcesContent":["import { PublicKey } from '@hashgraph/sdk';\nimport { Logger } from './logger';\nimport { HederaMirrorNode } from '../services/mirror-node';\n\n/**\n * Converts account IDs to public keys for fee exemption\n * @param client Hedera client instance\n * @param accountIds Array of account IDs to convert to public keys\n * @param network The network to use for retrieving public keys\n * @param logger Optional logger instance\n * @returns Array of public keys\n */\nexport async function accountIdsToExemptKeys(\n accountIds: string[],\n network: string,\n logger?: Logger,\n): Promise<PublicKey[]> {\n const mirrorNode = new HederaMirrorNode(\n network as 'mainnet' | 'testnet',\n logger,\n );\n const exemptKeys: PublicKey[] = [];\n\n for (const accountId of accountIds) {\n try {\n const publicKey = await mirrorNode.getPublicKey(accountId);\n exemptKeys.push(publicKey);\n } catch (error) {\n if (logger) {\n logger.warn(\n `Could not get public key for account ${accountId}: ${error}`,\n );\n }\n }\n }\n\n return exemptKeys;\n}\n"],"names":[],"mappings":";AAYsB,eAAA,uBACpB,YACA,SACA,QACsB;AACtB,QAAM,aAAa,IAAI;AAAA,IACrB;AAAA,IACA;AAAA,EACF;AACA,QAAM,aAA0B,CAAC;AAEjC,aAAW,aAAa,YAAY;AAC9B,QAAA;AACF,YAAM,YAAY,MAAM,WAAW,aAAa,SAAS;AACzD,iBAAW,KAAK,SAAS;AAAA,aAClB,OAAO;AACd,UAAI,QAAQ;AACH,eAAA;AAAA,UACL,wCAAwC,SAAS,KAAK,KAAK;AAAA,QAC7D;AAAA,MAAA;AAAA,IACF;AAAA,EACF;AAGK,SAAA;AACT;"}
@@ -1 +1 @@
1
- {"version":3,"file":"standards-sdk.es17.js","sources":["../../src/utils/progress-reporter.ts"],"sourcesContent":["import { Logger } from './logger';\n\nexport type ProgressStage =\n | 'preparing'\n | 'submitting'\n | 'confirming'\n | 'verifying'\n | 'completed'\n | 'failed';\n\nexport interface ProgressData {\n stage: ProgressStage;\n message: string;\n progressPercent: number;\n details?: Record<string, any>;\n}\n\nexport type ProgressCallback = (data: ProgressData) => void;\n\nexport interface ProgressReporterOptions {\n module?: string;\n callback?: ProgressCallback;\n logger?: Logger;\n logProgress?: boolean;\n minPercent?: number;\n maxPercent?: number;\n}\n\n/**\n * ProgressReporter is a singleton class that reports progress of a task.\n * Can be used in a generalized fashion.\n */\nexport class ProgressReporter {\n private static instance: ProgressReporter;\n private module: string;\n private callback?: ProgressCallback;\n private logger: Logger;\n private logProgress: boolean;\n private minPercent: number;\n private maxPercent: number;\n private lastReportedPercent: number;\n private lastReportedTime: number;\n private throttleMs: number;\n\n constructor(options: ProgressReporterOptions = {}) {\n this.module = options.module || 'Progress';\n this.callback = options.callback;\n this.logger = options.logger || new Logger({\n level: 'info',\n module: 'ProgressReporter',\n });\n this.logProgress = options.logProgress ?? true;\n this.minPercent = options.minPercent ?? 0;\n this.maxPercent = options.maxPercent ?? 100;\n this.lastReportedPercent = -1;\n this.lastReportedTime = 0;\n this.throttleMs = 100;\n }\n\n static getInstance(options: ProgressReporterOptions = {}): ProgressReporter {\n if (!ProgressReporter.instance) {\n ProgressReporter.instance = new ProgressReporter(options);\n } else {\n if (options.callback) {\n ProgressReporter.instance.setCallback(options.callback);\n }\n if (options.module) {\n ProgressReporter.instance.setModule(options.module);\n }\n if (options.logger) {\n ProgressReporter.instance.setLogger(options.logger);\n }\n if (options.minPercent !== undefined) {\n ProgressReporter.instance.setMinPercent(options.minPercent);\n }\n if (options.maxPercent !== undefined) {\n ProgressReporter.instance.setMaxPercent(options.maxPercent);\n }\n }\n return ProgressReporter.instance;\n }\n\n setCallback(callback: ProgressCallback): void {\n this.callback = callback;\n }\n\n setModule(module: string): void {\n this.module = module;\n }\n\n setLogger(logger: Logger): void {\n this.logger = logger;\n }\n\n setMinPercent(minPercent: number): void {\n this.minPercent = minPercent;\n }\n\n setMaxPercent(maxPercent: number): void {\n this.maxPercent = maxPercent;\n }\n\n createSubProgress(options: {\n minPercent: number;\n maxPercent: number;\n logPrefix?: string;\n }): ProgressReporter {\n const subReporter = new ProgressReporter({\n module: this.module,\n logger: this.logger,\n logProgress: this.logProgress,\n minPercent: options.minPercent,\n maxPercent: options.maxPercent,\n });\n\n const logPrefix = options.logPrefix || '';\n\n subReporter.setCallback((data) => {\n const scaledPercent = this.scalePercent(\n data.progressPercent,\n options.minPercent,\n options.maxPercent\n );\n\n let formattedMessage = data.message;\n if (logPrefix && !formattedMessage.startsWith(logPrefix)) {\n formattedMessage = `${logPrefix}: ${formattedMessage}`;\n }\n\n this.report({\n stage: data.stage,\n message: formattedMessage,\n progressPercent: scaledPercent,\n details: data.details,\n });\n });\n\n return subReporter;\n }\n\n report(data: ProgressData): void {\n const rawPercent = data.progressPercent;\n const percent = Math.max(0, Math.min(100, rawPercent));\n\n const scaledPercent = this.scalePercent(percent, 0, 100);\n\n const now = Date.now();\n if (\n scaledPercent === this.lastReportedPercent &&\n now - this.lastReportedTime < this.throttleMs &&\n data.stage !== 'completed' &&\n data.stage !== 'failed'\n ) {\n return;\n }\n\n this.lastReportedPercent = scaledPercent;\n this.lastReportedTime = now;\n\n const progressData = {\n ...data,\n progressPercent: scaledPercent,\n };\n\n if (this.logProgress) {\n this.logger.debug(\n `[${this.module}] [${data.stage.toUpperCase()}] ${\n data.message\n } (${scaledPercent.toFixed(1)}%)`,\n data.details\n );\n }\n\n if (this.callback) {\n try {\n this.callback(progressData);\n } catch (err) {\n this.logger.warn(`Error in progress callback: ${err}`);\n }\n }\n }\n\n private scalePercent(\n percent: number,\n sourceMin: number,\n sourceMax: number\n ): number {\n const range = this.maxPercent - this.minPercent;\n const sourceRange = sourceMax - sourceMin;\n const scaleFactor = range / sourceRange;\n\n return this.minPercent + (percent - sourceMin) * scaleFactor;\n }\n\n preparing(\n message: string,\n percent: number,\n details?: Record<string, any>\n ): void {\n this.report({\n stage: 'preparing',\n message,\n progressPercent: percent,\n details,\n });\n }\n\n submitting(\n message: string,\n percent: number,\n details?: Record<string, any>\n ): void {\n this.report({\n stage: 'submitting',\n message,\n progressPercent: percent,\n details,\n });\n }\n\n confirming(\n message: string,\n percent: number,\n details?: Record<string, any>\n ): void {\n this.report({\n stage: 'confirming',\n message,\n progressPercent: percent,\n details,\n });\n }\n\n verifying(\n message: string,\n percent: number,\n details?: Record<string, any>\n ): void {\n this.report({\n stage: 'verifying',\n message,\n progressPercent: percent,\n details,\n });\n }\n\n completed(message: string, details?: Record<string, any>): void {\n this.report({ stage: 'completed', message, progressPercent: 100, details });\n }\n\n failed(message: string, details?: Record<string, any>): void {\n this.report({\n stage: 'failed',\n message,\n progressPercent: this.lastReportedPercent,\n details,\n });\n }\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"standards-sdk.es17.js","sources":["../../src/utils/progress-reporter.ts"],"sourcesContent":["import { Logger } from './logger';\n\nexport type ProgressStage =\n | 'preparing'\n | 'submitting'\n | 'confirming'\n | 'verifying'\n | 'completed'\n | 'failed';\n\nexport interface ProgressData {\n stage: ProgressStage;\n message: string;\n progressPercent: number;\n details?: Record<string, any>;\n}\n\nexport type ProgressCallback = (data: ProgressData) => void;\n\nexport interface ProgressReporterOptions {\n module?: string;\n callback?: ProgressCallback;\n logger?: Logger;\n logProgress?: boolean;\n minPercent?: number;\n maxPercent?: number;\n}\n\n/**\n * ProgressReporter is a singleton class that reports progress of a task.\n * Can be used in a generalized fashion.\n */\nexport class ProgressReporter {\n private static instance: ProgressReporter;\n private module: string;\n private callback?: ProgressCallback;\n private logger: Logger;\n private logProgress: boolean;\n private minPercent: number;\n private maxPercent: number;\n private lastReportedPercent: number;\n private lastReportedTime: number;\n private throttleMs: number;\n\n constructor(options: ProgressReporterOptions = {}) {\n this.module = options.module || 'Progress';\n this.callback = options.callback;\n this.logger =\n options.logger ||\n new Logger({\n level: 'info',\n module: 'ProgressReporter',\n });\n this.logProgress = options.logProgress ?? true;\n this.minPercent = options.minPercent ?? 0;\n this.maxPercent = options.maxPercent ?? 100;\n this.lastReportedPercent = -1;\n this.lastReportedTime = 0;\n this.throttleMs = 100;\n }\n\n static getInstance(options: ProgressReporterOptions = {}): ProgressReporter {\n if (!ProgressReporter.instance) {\n ProgressReporter.instance = new ProgressReporter(options);\n } else {\n if (options.callback) {\n ProgressReporter.instance.setCallback(options.callback);\n }\n if (options.module) {\n ProgressReporter.instance.setModule(options.module);\n }\n if (options.logger) {\n ProgressReporter.instance.setLogger(options.logger);\n }\n if (options.minPercent !== undefined) {\n ProgressReporter.instance.setMinPercent(options.minPercent);\n }\n if (options.maxPercent !== undefined) {\n ProgressReporter.instance.setMaxPercent(options.maxPercent);\n }\n }\n return ProgressReporter.instance;\n }\n\n setCallback(callback: ProgressCallback): void {\n this.callback = callback;\n }\n\n setModule(module: string): void {\n this.module = module;\n }\n\n setLogger(logger: Logger): void {\n this.logger = logger;\n }\n\n setMinPercent(minPercent: number): void {\n this.minPercent = minPercent;\n }\n\n setMaxPercent(maxPercent: number): void {\n this.maxPercent = maxPercent;\n }\n\n createSubProgress(options: {\n minPercent: number;\n maxPercent: number;\n logPrefix?: string;\n }): ProgressReporter {\n const subReporter = new ProgressReporter({\n module: this.module,\n logger: this.logger,\n logProgress: this.logProgress,\n minPercent: options.minPercent,\n maxPercent: options.maxPercent,\n });\n\n const logPrefix = options.logPrefix || '';\n\n subReporter.setCallback(data => {\n const scaledPercent = this.scalePercent(\n data.progressPercent,\n options.minPercent,\n options.maxPercent,\n );\n\n let formattedMessage = data.message;\n if (logPrefix && !formattedMessage.startsWith(logPrefix)) {\n formattedMessage = `${logPrefix}: ${formattedMessage}`;\n }\n\n this.report({\n stage: data.stage,\n message: formattedMessage,\n progressPercent: scaledPercent,\n details: data.details,\n });\n });\n\n return subReporter;\n }\n\n report(data: ProgressData): void {\n const rawPercent = data.progressPercent;\n const percent = Math.max(0, Math.min(100, rawPercent));\n\n const scaledPercent = this.scalePercent(percent, 0, 100);\n\n const now = Date.now();\n if (\n scaledPercent === this.lastReportedPercent &&\n now - this.lastReportedTime < this.throttleMs &&\n data.stage !== 'completed' &&\n data.stage !== 'failed'\n ) {\n return;\n }\n\n this.lastReportedPercent = scaledPercent;\n this.lastReportedTime = now;\n\n const progressData = {\n ...data,\n progressPercent: scaledPercent,\n };\n\n if (this.logProgress) {\n this.logger.debug(\n `[${this.module}] [${data.stage.toUpperCase()}] ${\n data.message\n } (${scaledPercent.toFixed(1)}%)`,\n data.details,\n );\n }\n\n if (this.callback) {\n try {\n this.callback(progressData);\n } catch (err) {\n this.logger.warn(`Error in progress callback: ${err}`);\n }\n }\n }\n\n private scalePercent(\n percent: number,\n sourceMin: number,\n sourceMax: number,\n ): number {\n const range = this.maxPercent - this.minPercent;\n const sourceRange = sourceMax - sourceMin;\n const scaleFactor = range / sourceRange;\n\n return this.minPercent + (percent - sourceMin) * scaleFactor;\n }\n\n preparing(\n message: string,\n percent: number,\n details?: Record<string, any>,\n ): void {\n this.report({\n stage: 'preparing',\n message,\n progressPercent: percent,\n details,\n });\n }\n\n submitting(\n message: string,\n percent: number,\n details?: Record<string, any>,\n ): void {\n this.report({\n stage: 'submitting',\n message,\n progressPercent: percent,\n details,\n });\n }\n\n confirming(\n message: string,\n percent: number,\n details?: Record<string, any>,\n ): void {\n this.report({\n stage: 'confirming',\n message,\n progressPercent: percent,\n details,\n });\n }\n\n verifying(\n message: string,\n percent: number,\n details?: Record<string, any>,\n ): void {\n this.report({\n stage: 'verifying',\n message,\n progressPercent: percent,\n details,\n });\n }\n\n completed(message: string, details?: Record<string, any>): void {\n this.report({ stage: 'completed', message, progressPercent: 100, details });\n }\n\n failed(message: string, details?: Record<string, any>): void {\n this.report({\n stage: 'failed',\n message,\n progressPercent: this.lastReportedPercent,\n details,\n });\n }\n}\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"standards-sdk.es18.js","sources":["../../src/utils/hrl-resolver.ts"],"sourcesContent":["import axios from 'axios';\nimport { Logger, LogLevel } from './logger';\nimport { NetworkType } from './types';\n\n/**\n * Options for HRL resolution\n */\nexport interface HRLResolutionOptions {\n network: NetworkType;\n returnRaw?: boolean;\n cdnEndpoint?: string;\n}\n\n/**\n * Result of an HRL resolution operation\n */\nexport interface HRLResolutionResult {\n content: string | ArrayBuffer;\n contentType: string;\n topicId: string;\n isBinary: boolean;\n}\n\nexport interface ContentWithType {\n content: string | ArrayBuffer;\n contentType: string;\n isBinary: boolean;\n}\n\n/**\n * Utility class for resolving Hedera Resource Locators across the SDK\n */\nexport class HRLResolver {\n private logger: Logger;\n private defaultEndpoint = 'https://kiloscribe.com/api/inscription-cdn';\n\n constructor(logLevel: LogLevel = 'info') {\n this.logger = Logger.getInstance({\n level: logLevel,\n module: 'HRLResolver',\n });\n }\n\n /**\n * Determines if a MIME type represents binary content\n */\n private isBinaryContentType(mimeType: string): boolean {\n const binaryTypes = [\n 'image/',\n 'audio/',\n 'video/',\n 'application/octet-stream',\n 'application/pdf',\n 'application/zip',\n 'application/gzip',\n 'application/x-binary',\n 'application/vnd.ms-',\n 'application/x-msdownload',\n 'application/x-shockwave-flash',\n 'font/',\n 'application/wasm',\n ];\n\n return binaryTypes.some((prefix) => mimeType.startsWith(prefix));\n }\n\n /**\n * Parses an HRL string into its components\n */\n public parseHRL(hrl: string): { standard: string; topicId: string } | null {\n if (!hrl) {\n return null;\n }\n\n const hrlPattern = /^hcs:\\/\\/(\\d+)\\/([0-9]+\\.[0-9]+\\.[0-9]+)$/;\n const match = hrl.match(hrlPattern);\n\n if (!match) {\n return null;\n }\n\n return {\n standard: match[1],\n topicId: match[2],\n };\n }\n\n /**\n * Validates if a string is a valid HRL\n */\n public isValidHRL(hrl: string): boolean {\n if (!hrl || typeof hrl !== 'string') {\n return false;\n }\n\n const parsed = this.parseHRL(hrl);\n if (!parsed) {\n return false;\n }\n\n const topicIdPattern = /^[0-9]+\\.[0-9]+\\.[0-9]+$/;\n if (!topicIdPattern.test(parsed.topicId)) {\n return false;\n }\n\n return true;\n }\n\n public async getContentWithType(\n hrl: string,\n options: HRLResolutionOptions\n ): Promise<ContentWithType> {\n if (!this.isValidHRL(hrl)) {\n return {\n content: hrl,\n contentType: 'text/plain',\n isBinary: false,\n };\n }\n\n try {\n const result = await this.resolveHRL(hrl, options);\n return {\n content: result.content,\n contentType: result.contentType,\n isBinary: result.isBinary,\n };\n } catch (e: any) {\n const error = e as Error;\n const logMessage = `Error resolving HRL for content and type: ${error.message}`;\n this.logger.error(logMessage);\n throw new Error(logMessage);\n }\n }\n\n /**\n * Resolves HRL content with proper content type detection\n */\n public async resolveHRL(\n hrl: string,\n options: HRLResolutionOptions\n ): Promise<HRLResolutionResult> {\n const parsed = this.parseHRL(hrl);\n\n if (!parsed) {\n throw new Error(`Invalid HRL format: ${hrl}`);\n }\n\n const { standard, topicId } = parsed;\n\n this.logger.debug(\n `Resolving HRL reference: standard=${standard}, topicId=${topicId}`\n );\n\n try {\n const cdnEndpoint = options.cdnEndpoint || this.defaultEndpoint;\n const cdnUrl = `${cdnEndpoint}/${topicId}?network=${options.network}`;\n\n this.logger.debug(`Fetching content from CDN: ${cdnUrl}`);\n const headResponse = await axios.head(cdnUrl);\n const contentType = headResponse.headers['content-type'] || '';\n const isBinary = this.isBinaryContentType(contentType);\n\n if (isBinary || options.returnRaw) {\n const response = await axios.get(cdnUrl, {\n responseType: 'arraybuffer',\n });\n\n return {\n content: response.data,\n contentType,\n topicId,\n isBinary: true,\n };\n }\n\n if (contentType === 'application/json') {\n const response = await axios.get(cdnUrl, {\n responseType: 'json',\n });\n\n if (!response.data) {\n throw new Error(`Failed to fetch content from topic: ${topicId}`);\n }\n\n return {\n content: response.data,\n contentType,\n topicId,\n isBinary: false,\n };\n }\n\n const response = await axios.get(cdnUrl);\n\n if (!response.data) {\n throw new Error(`Failed to fetch content from topic: ${topicId}`);\n }\n\n let content: string;\n\n if (typeof response.data === 'object') {\n content =\n response.data.content ||\n response.data.text ||\n JSON.stringify(response.data);\n } else {\n content = response.data;\n }\n\n return {\n content,\n contentType,\n topicId,\n isBinary: false,\n };\n } catch (e: any) {\n const error = e as Error;\n const logMessage = `Error resolving HRL reference: ${error.message}`;\n this.logger.error(logMessage);\n throw new Error(logMessage);\n }\n }\n}\n"],"names":["response"],"mappings":"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"}
1
+ {"version":3,"file":"standards-sdk.es18.js","sources":["../../src/utils/hrl-resolver.ts"],"sourcesContent":["import axios from 'axios';\nimport { Logger, LogLevel } from './logger';\nimport { NetworkType } from './types';\n\n/**\n * Options for HRL resolution\n */\nexport interface HRLResolutionOptions {\n network: NetworkType;\n returnRaw?: boolean;\n cdnEndpoint?: string;\n}\n\n/**\n * Result of an HRL resolution operation\n */\nexport interface HRLResolutionResult {\n content: string | ArrayBuffer;\n contentType: string;\n topicId: string;\n isBinary: boolean;\n}\n\nexport interface ContentWithType {\n content: string | ArrayBuffer;\n contentType: string;\n isBinary: boolean;\n}\n\n/**\n * Utility class for resolving Hedera Resource Locators across the SDK\n */\nexport class HRLResolver {\n private logger: Logger;\n private defaultEndpoint = 'https://kiloscribe.com/api/inscription-cdn';\n\n constructor(logLevel: LogLevel = 'info') {\n this.logger = Logger.getInstance({\n level: logLevel,\n module: 'HRLResolver',\n });\n }\n\n /**\n * Determines if a MIME type represents binary content\n */\n private isBinaryContentType(mimeType: string): boolean {\n const binaryTypes = [\n 'image/',\n 'audio/',\n 'video/',\n 'application/octet-stream',\n 'application/pdf',\n 'application/zip',\n 'application/gzip',\n 'application/x-binary',\n 'application/vnd.ms-',\n 'application/x-msdownload',\n 'application/x-shockwave-flash',\n 'font/',\n 'application/wasm',\n ];\n\n return binaryTypes.some(prefix => mimeType.startsWith(prefix));\n }\n\n /**\n * Parses an HRL string into its components\n */\n public parseHRL(hrl: string): { standard: string; topicId: string } | null {\n if (!hrl) {\n return null;\n }\n\n const hrlPattern = /^hcs:\\/\\/(\\d+)\\/([0-9]+\\.[0-9]+\\.[0-9]+)$/;\n const match = hrl.match(hrlPattern);\n\n if (!match) {\n return null;\n }\n\n return {\n standard: match[1],\n topicId: match[2],\n };\n }\n\n /**\n * Validates if a string is a valid HRL\n */\n public isValidHRL(hrl: string): boolean {\n if (!hrl || typeof hrl !== 'string') {\n return false;\n }\n\n const parsed = this.parseHRL(hrl);\n if (!parsed) {\n return false;\n }\n\n const topicIdPattern = /^[0-9]+\\.[0-9]+\\.[0-9]+$/;\n if (!topicIdPattern.test(parsed.topicId)) {\n return false;\n }\n\n return true;\n }\n\n public async getContentWithType(\n hrl: string,\n options: HRLResolutionOptions,\n ): Promise<ContentWithType> {\n if (!this.isValidHRL(hrl)) {\n return {\n content: hrl,\n contentType: 'text/plain',\n isBinary: false,\n };\n }\n\n try {\n const result = await this.resolveHRL(hrl, options);\n return {\n content: result.content,\n contentType: result.contentType,\n isBinary: result.isBinary,\n };\n } catch (e: any) {\n const error = e as Error;\n const logMessage = `Error resolving HRL for content and type: ${error.message}`;\n this.logger.error(logMessage);\n throw new Error(logMessage);\n }\n }\n\n /**\n * Resolves HRL content with proper content type detection\n */\n public async resolveHRL(\n hrl: string,\n options: HRLResolutionOptions,\n ): Promise<HRLResolutionResult> {\n const parsed = this.parseHRL(hrl);\n\n if (!parsed) {\n throw new Error(`Invalid HRL format: ${hrl}`);\n }\n\n const { standard, topicId } = parsed;\n\n this.logger.debug(\n `Resolving HRL reference: standard=${standard}, topicId=${topicId}`,\n );\n\n try {\n const cdnEndpoint = options.cdnEndpoint || this.defaultEndpoint;\n const cdnUrl = `${cdnEndpoint}/${topicId}?network=${options.network}`;\n\n this.logger.debug(`Fetching content from CDN: ${cdnUrl}`);\n const headResponse = await axios.head(cdnUrl);\n const contentType = headResponse.headers['content-type'] || '';\n const isBinary = this.isBinaryContentType(contentType);\n\n if (isBinary || options.returnRaw) {\n const response = await axios.get(cdnUrl, {\n responseType: 'arraybuffer',\n });\n\n return {\n content: response.data,\n contentType,\n topicId,\n isBinary: true,\n };\n }\n\n if (contentType === 'application/json') {\n const response = await axios.get(cdnUrl, {\n responseType: 'json',\n });\n\n if (!response.data) {\n throw new Error(`Failed to fetch content from topic: ${topicId}`);\n }\n\n return {\n content: response.data,\n contentType,\n topicId,\n isBinary: false,\n };\n }\n\n const response = await axios.get(cdnUrl);\n\n if (!response.data) {\n throw new Error(`Failed to fetch content from topic: ${topicId}`);\n }\n\n let content: string;\n\n if (typeof response.data === 'object') {\n content =\n response.data.content ||\n response.data.text ||\n JSON.stringify(response.data);\n } else {\n content = response.data;\n }\n\n return {\n content,\n contentType,\n topicId,\n isBinary: false,\n };\n } catch (e: any) {\n const error = e as Error;\n const logMessage = `Error resolving HRL reference: ${error.message}`;\n this.logger.error(logMessage);\n throw new Error(logMessage);\n }\n }\n}\n"],"names":["response"],"mappings":"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"}
@@ -2,12 +2,12 @@ import { proto } from "@hashgraph/proto";
2
2
  import { Buffer } from "buffer";
3
3
  import { Hbar, Long, HbarUnit } from "@hashgraph/sdk";
4
4
  import { ethers } from "ethers";
5
- import { HTSParser } from "./standards-sdk.es24.js";
6
- import { HCSParser } from "./standards-sdk.es25.js";
7
- import { FileParser } from "./standards-sdk.es26.js";
8
- import { CryptoParser } from "./standards-sdk.es27.js";
9
- import { SCSParser } from "./standards-sdk.es28.js";
10
- import { UtilParser } from "./standards-sdk.es29.js";
5
+ import { HTSParser } from "./standards-sdk.es26.js";
6
+ import { HCSParser } from "./standards-sdk.es27.js";
7
+ import { FileParser } from "./standards-sdk.es28.js";
8
+ import { CryptoParser } from "./standards-sdk.es29.js";
9
+ import { SCSParser } from "./standards-sdk.es30.js";
10
+ import { UtilParser } from "./standards-sdk.es31.js";
11
11
  class TransactionParser {
12
12
  /**
13
13
  * Parse a base64 encoded transaction body and return structured data
@@ -1 +1 @@
1
- {"version":3,"file":"standards-sdk.es19.js","sources":["../../src/utils/transaction-parser.ts"],"sourcesContent":["import { proto } from '@hashgraph/proto';\nimport { Buffer } from 'buffer';\nimport { Hbar, HbarUnit, Long } from '@hashgraph/sdk';\nimport { ethers } from 'ethers';\nimport { TokenAmount, ParsedTransaction } from './transaction-parser-types'; // Import all types\nimport { HTSParser } from './parsers/hts-parser'; // Import HTSParser\nimport { HCSParser } from './parsers/hcs-parser'; // Import HCSParser\nimport { FileParser } from './parsers/file-parser'; // Import FileParser\nimport { CryptoParser } from './parsers/crypto-parser'; // Import CryptoParser\nimport { SCSParser } from './parsers/scs-parser'; // Import SCSParser\nimport { UtilParser } from './parsers/util-parser'; // Import UtilParser\n\n/**\n * Types for transaction parsing results\n */\n\nexport class TransactionParser {\n /**\n * Parse a base64 encoded transaction body and return structured data\n * @param transactionBodyBase64 - The base64 encoded transaction body\n * @returns The parsed transaction\n */\n static parseTransactionBody(\n transactionBodyBase64: string\n ): ParsedTransaction {\n try {\n const buffer = ethers.decodeBase64(transactionBodyBase64);\n const txBody = proto.SchedulableTransactionBody.decode(buffer);\n\n const transactionType = this.getTransactionType(txBody);\n\n const result: ParsedTransaction = {\n type: transactionType,\n humanReadableType: this.getHumanReadableType(transactionType),\n transfers: [],\n tokenTransfers: [],\n raw: txBody,\n };\n\n if (txBody.memo) {\n result.memo = txBody.memo;\n }\n\n if (txBody.transactionFee) {\n const hbarAmount = Hbar.fromTinybars(\n Long.fromValue(txBody.transactionFee)\n );\n result.transactionFee = hbarAmount.toString(HbarUnit.Hbar);\n }\n\n if (txBody.cryptoTransfer) {\n CryptoParser.parseCryptoTransfers(txBody.cryptoTransfer, result);\n }\n\n if (txBody.cryptoDelete) {\n result.cryptoDelete = CryptoParser.parseCryptoDelete(\n txBody.cryptoDelete\n );\n }\n\n if (txBody.cryptoCreateAccount) {\n result.cryptoCreateAccount = CryptoParser.parseCryptoCreateAccount(\n txBody.cryptoCreateAccount\n );\n }\n\n if (txBody.cryptoUpdateAccount) {\n result.cryptoUpdateAccount = CryptoParser.parseCryptoUpdateAccount(\n txBody.cryptoUpdateAccount\n );\n }\n\n if (txBody.cryptoApproveAllowance) {\n result.cryptoApproveAllowance =\n CryptoParser.parseCryptoApproveAllowance(\n txBody.cryptoApproveAllowance\n );\n }\n\n if (txBody.cryptoDeleteAllowance) {\n result.cryptoDeleteAllowance = CryptoParser.parseCryptoDeleteAllowance(\n txBody.cryptoDeleteAllowance\n );\n }\n\n if (txBody.contractCall) {\n result.contractCall = SCSParser.parseContractCall(txBody.contractCall);\n }\n\n if (txBody.contractCreateInstance) {\n result.contractCreate = SCSParser.parseContractCreate(\n txBody.contractCreateInstance\n );\n }\n\n if (txBody.contractUpdateInstance) {\n result.contractUpdate = SCSParser.parseContractUpdate(\n txBody.contractUpdateInstance\n );\n }\n\n if (txBody.contractDeleteInstance) {\n result.contractDelete = SCSParser.parseContractDelete(\n txBody.contractDeleteInstance\n );\n }\n\n if (txBody.tokenCreation) {\n result.tokenCreation = HTSParser.parseTokenCreate(txBody.tokenCreation);\n }\n\n if (txBody.tokenMint) {\n result.tokenMint = HTSParser.parseTokenMint(txBody.tokenMint);\n }\n\n if (txBody.tokenBurn) {\n result.tokenBurn = HTSParser.parseTokenBurn(txBody.tokenBurn);\n }\n\n if (txBody.tokenUpdate) {\n result.tokenUpdate = HTSParser.parseTokenUpdate(txBody.tokenUpdate);\n }\n\n if (txBody.tokenFeeScheduleUpdate) {\n result.tokenFeeScheduleUpdate = HTSParser.parseTokenFeeScheduleUpdate(\n txBody.tokenFeeScheduleUpdate\n );\n }\n\n if (txBody.tokenFreeze) {\n result.tokenFreeze = HTSParser.parseTokenFreeze(txBody.tokenFreeze);\n }\n\n if (txBody.tokenUnfreeze) {\n result.tokenUnfreeze = HTSParser.parseTokenUnfreeze(\n txBody.tokenUnfreeze\n );\n }\n\n if (txBody.tokenGrantKyc) {\n result.tokenGrantKyc = HTSParser.parseTokenGrantKyc(\n txBody.tokenGrantKyc\n );\n }\n\n if (txBody.tokenRevokeKyc) {\n result.tokenRevokeKyc = HTSParser.parseTokenRevokeKyc(\n txBody.tokenRevokeKyc\n );\n }\n\n if (txBody.tokenPause) {\n result.tokenPause = HTSParser.parseTokenPause(txBody.tokenPause);\n }\n\n if (txBody.tokenUnpause) {\n result.tokenUnpause = HTSParser.parseTokenUnpause(txBody.tokenUnpause);\n }\n\n if (txBody.tokenWipe) {\n result.tokenWipeAccount = HTSParser.parseTokenWipeAccount(\n txBody.tokenWipe\n );\n }\n\n if (txBody.tokenDeletion) {\n result.tokenDelete = HTSParser.parseTokenDelete(txBody.tokenDeletion);\n }\n\n if (txBody.tokenAssociate) {\n result.tokenAssociate = HTSParser.parseTokenAssociate(\n txBody.tokenAssociate\n );\n }\n\n if (txBody.tokenDissociate) {\n result.tokenDissociate = HTSParser.parseTokenDissociate(\n txBody.tokenDissociate\n );\n }\n\n if (txBody.consensusCreateTopic) {\n result.consensusCreateTopic = HCSParser.parseConsensusCreateTopic(\n txBody.consensusCreateTopic\n );\n }\n\n if (txBody.consensusSubmitMessage) {\n result.consensusSubmitMessage = HCSParser.parseConsensusSubmitMessage(\n txBody.consensusSubmitMessage\n );\n }\n\n if (txBody.consensusUpdateTopic) {\n result.consensusUpdateTopic = HCSParser.parseConsensusUpdateTopic(\n txBody.consensusUpdateTopic\n );\n }\n\n if (txBody.consensusDeleteTopic) {\n result.consensusDeleteTopic = HCSParser.parseConsensusDeleteTopic(\n txBody.consensusDeleteTopic\n );\n }\n\n if (txBody.fileCreate) {\n result.fileCreate = FileParser.parseFileCreate(txBody.fileCreate);\n }\n\n if (txBody.fileAppend) {\n result.fileAppend = FileParser.parseFileAppend(txBody.fileAppend);\n }\n\n if (txBody.fileUpdate) {\n result.fileUpdate = FileParser.parseFileUpdate(txBody.fileUpdate);\n }\n\n if (txBody.fileDelete) {\n result.fileDelete = FileParser.parseFileDelete(txBody.fileDelete);\n }\n\n if (txBody.utilPrng) {\n result.utilPrng = UtilParser.parseUtilPrng(txBody.utilPrng);\n }\n\n return result;\n } catch (error) {\n throw new Error(\n `Failed to parse transaction body: ${\n error instanceof Error ? error.message : String(error)\n }`\n );\n }\n }\n\n /**\n * Parse details from a complete schedule response\n * @param scheduleResponse - The schedule response to parse\n * @returns The parsed transaction\n */\n static parseScheduleResponse(scheduleResponse: {\n transaction_body: string;\n memo?: string;\n }): ParsedTransaction {\n if (!scheduleResponse.transaction_body) {\n throw new Error('Schedule response missing transaction_body');\n }\n\n const parsed = this.parseTransactionBody(scheduleResponse.transaction_body);\n\n if (scheduleResponse.memo) {\n parsed.memo = scheduleResponse.memo;\n }\n\n return parsed;\n }\n\n /**\n * Determine the transaction type\n * @param txBody - The transaction body to determine the type of\n * @returns The type of the transaction\n */\n private static getTransactionType(\n txBody: proto.SchedulableTransactionBody\n ): string {\n let transactionType = 'unknown';\n\n if (txBody.cryptoTransfer) {\n transactionType = 'cryptoTransfer';\n } else if (txBody.cryptoCreateAccount) {\n transactionType = 'cryptoCreateAccount';\n } else if (txBody.cryptoUpdateAccount) {\n transactionType = 'cryptoUpdateAccount';\n } else if (txBody.cryptoApproveAllowance) {\n transactionType = 'cryptoApproveAllowance';\n } else if (txBody.cryptoDeleteAllowance) {\n transactionType = 'cryptoDeleteAllowance';\n } else if (txBody.cryptoDelete) {\n transactionType = 'cryptoDelete';\n } else if (txBody.consensusCreateTopic) {\n transactionType = 'consensusCreateTopic';\n } else if (txBody.consensusUpdateTopic) {\n transactionType = 'consensusUpdateTopic';\n } else if (txBody.consensusSubmitMessage) {\n transactionType = 'consensusSubmitMessage';\n } else if (txBody.consensusDeleteTopic) {\n transactionType = 'consensusDeleteTopic';\n } else if (txBody.fileCreate) {\n transactionType = 'fileCreate';\n } else if (txBody.fileAppend) {\n transactionType = 'fileAppend';\n } else if (txBody.fileUpdate) {\n transactionType = 'fileUpdate';\n } else if (txBody.fileDelete) {\n transactionType = 'fileDelete';\n } else if (txBody.contractCall) {\n transactionType = 'contractCall';\n } else if (txBody.contractCreateInstance) {\n transactionType = 'contractCreate';\n } else if (txBody.contractUpdateInstance) {\n transactionType = 'contractUpdate';\n } else if (txBody.contractDeleteInstance) {\n transactionType = 'contractDelete';\n } else if (txBody.tokenCreation) {\n transactionType = 'tokenCreate';\n } else if (txBody.tokenUpdate) {\n transactionType = 'tokenUpdate';\n } else if (txBody.tokenDeletion) {\n transactionType = 'tokenDelete';\n } else if (txBody.tokenAssociate) {\n transactionType = 'tokenAssociate';\n } else if (txBody.tokenDissociate) {\n transactionType = 'tokenDissociate';\n } else if (txBody.tokenMint) {\n transactionType = 'tokenMint';\n } else if (txBody.tokenBurn) {\n transactionType = 'tokenBurn';\n } else if (txBody.tokenFeeScheduleUpdate) {\n transactionType = 'tokenFeeScheduleUpdate';\n } else if (txBody.tokenFreeze) {\n transactionType = 'tokenFreeze';\n } else if (txBody.tokenUnfreeze) {\n transactionType = 'tokenUnfreeze';\n } else if (txBody.tokenGrantKyc) {\n transactionType = 'tokenGrantKyc';\n } else if (txBody.tokenRevokeKyc) {\n transactionType = 'tokenRevokeKyc';\n } else if (txBody.tokenPause) {\n transactionType = 'tokenPause';\n } else if (txBody.tokenUnpause) {\n transactionType = 'tokenUnpause';\n } else if (txBody.tokenWipe) {\n transactionType = 'tokenWipe';\n } else if (txBody.utilPrng) {\n transactionType = 'utilPrng';\n }\n\n return transactionType;\n }\n\n /**\n * Convert technical transaction type to human-readable format\n * @param type - The technical transaction type\n * @returns The human-readable transaction type\n */\n private static getHumanReadableType(type: string): string {\n const typeMap: Record<string, string> = {\n cryptoTransfer: 'HBAR Transfer',\n cryptoCreateAccount: 'Create Account',\n cryptoUpdateAccount: 'Update Account',\n cryptoDeleteAccount: 'Delete Account',\n cryptoApproveAllowance: 'Approve Allowance',\n cryptoDeleteAllowance: 'Delete Allowance',\n cryptoDelete: 'Delete Account',\n\n consensusCreateTopic: 'Create Topic',\n consensusUpdateTopic: 'Update Topic',\n consensusSubmitMessage: 'Submit Message',\n consensusDeleteTopic: 'Delete Topic',\n\n fileCreate: 'Create File',\n fileAppend: 'Append File',\n fileUpdate: 'Update File',\n fileDelete: 'Delete File',\n\n contractCall: 'Contract Call',\n contractCreate: 'Create Contract',\n contractUpdate: 'Update Contract',\n contractDelete: 'Delete Contract',\n ethereumTransaction: 'Ethereum Transaction',\n\n tokenCreate: 'Create Token',\n tokenUpdate: 'Update Token',\n tokenDelete: 'Delete Token',\n tokenAssociate: 'Associate Token',\n tokenDissociate: 'Dissociate Token',\n tokenMint: 'Mint Token',\n tokenBurn: 'Burn Token',\n tokenFeeScheduleUpdate: 'Update Token Fee Schedule',\n tokenFreeze: 'Freeze Token',\n tokenUnfreeze: 'Unfreeze Token',\n tokenGrantKyc: 'Grant KYC',\n tokenRevokeKyc: 'Revoke KYC',\n tokenPause: 'Pause Token',\n tokenUnpause: 'Unpause Token',\n tokenWipe: 'Wipe Token',\n\n scheduleCreate: 'Create Schedule',\n scheduleSign: 'Sign Schedule',\n\n utilPrng: 'Generate Random Number',\n\n unknown: 'Unknown Transaction',\n };\n\n let result: string;\n if (typeMap[type]) {\n result = typeMap[type];\n } else {\n result = 'Unknown Transaction';\n }\n\n return result;\n }\n\n /**\n * Get a human-readable summary of the transaction\n * @param parsedTx - The parsed transaction\n * @returns The human-readable summary of the transaction\n */\n static getTransactionSummary(parsedTx: ParsedTransaction): string {\n if (parsedTx.type === 'cryptoTransfer') {\n const senders = [];\n const receivers = [];\n\n for (const transfer of parsedTx.transfers) {\n const originalAmountFloat = parseFloat(transfer.amount);\n\n let displayStr = transfer.amount;\n if (displayStr.startsWith('-')) {\n displayStr = displayStr.substring(1);\n }\n displayStr = displayStr.replace(/\\s*ℏ$/, '');\n\n if (originalAmountFloat < 0) {\n senders.push(`${transfer.accountId} (${displayStr} ℏ)`);\n } else if (originalAmountFloat > 0) {\n receivers.push(`${transfer.accountId} (${displayStr} ℏ)`);\n }\n }\n\n if (senders.length > 0 && receivers.length > 0) {\n return `Transfer of HBAR from ${senders.join(', ')} to ${receivers.join(\n ', '\n )}`;\n } else {\n return parsedTx.humanReadableType;\n }\n } else if (parsedTx.contractCall) {\n let contractCallSummary = `Contract call to ${parsedTx.contractCall.contractId} with ${parsedTx.contractCall.gas} gas`;\n\n if (parsedTx.contractCall.amount > 0) {\n contractCallSummary += ` and ${parsedTx.contractCall.amount} HBAR`;\n }\n\n if (parsedTx.contractCall.functionName) {\n contractCallSummary += ` calling function ${parsedTx.contractCall.functionName}`;\n }\n\n return contractCallSummary;\n } else if (parsedTx.tokenMint) {\n return `Mint ${parsedTx.tokenMint.amount} tokens for token ${parsedTx.tokenMint.tokenId}`;\n } else if (parsedTx.tokenBurn) {\n return `Burn ${parsedTx.tokenBurn.amount} tokens for token ${parsedTx.tokenBurn.tokenId}`;\n } else if (parsedTx.tokenCreation) {\n let summary = `Create token ${\n parsedTx.tokenCreation.tokenName || '(No Name)'\n } (${parsedTx.tokenCreation.tokenSymbol || '(No Symbol)'})`;\n if (parsedTx.tokenCreation.initialSupply) {\n summary += ` with initial supply ${parsedTx.tokenCreation.initialSupply}`;\n }\n if (parsedTx.tokenCreation.customFees?.length) {\n summary += ` including ${parsedTx.tokenCreation.customFees.length} custom fee(s)`;\n }\n return summary;\n } else if (parsedTx.tokenTransfers.length > 0) {\n const tokenGroups: Record<string, TokenAmount[]> = {};\n\n for (const transfer of parsedTx.tokenTransfers) {\n if (!tokenGroups[transfer.tokenId]) {\n tokenGroups[transfer.tokenId] = [];\n }\n tokenGroups[transfer.tokenId].push(transfer);\n }\n\n const tokenSummaries = [];\n\n for (const [tokenId, transfers] of Object.entries(tokenGroups)) {\n const tokenSenders = [];\n const tokenReceivers = [];\n\n for (const transfer of transfers) {\n const transferAmountValue = parseFloat(transfer.amount.toString());\n if (transferAmountValue < 0) {\n tokenSenders.push(\n `${transfer.accountId} (${Math.abs(transferAmountValue)})`\n );\n } else if (transferAmountValue > 0) {\n tokenReceivers.push(\n `${transfer.accountId} (${transferAmountValue})`\n );\n }\n }\n\n if (tokenSenders.length > 0 && tokenReceivers.length > 0) {\n tokenSummaries.push(\n `Transfer of token ${tokenId} from ${tokenSenders.join(\n ', '\n )} to ${tokenReceivers.join(', ')}`\n );\n }\n }\n\n if (tokenSummaries.length > 0) {\n return tokenSummaries.join('; ');\n } else {\n return parsedTx.humanReadableType;\n }\n } else if (parsedTx.consensusCreateTopic) {\n let summary = `Create new topic`;\n if (parsedTx.consensusCreateTopic.memo) {\n summary += ` with memo \"${parsedTx.consensusCreateTopic.memo}\"`;\n }\n if (parsedTx.consensusCreateTopic.autoRenewAccountId) {\n summary += `, auto-renew by ${parsedTx.consensusCreateTopic.autoRenewAccountId}`;\n }\n return summary;\n } else if (parsedTx.consensusSubmitMessage) {\n let summary = `Submit message`;\n if (parsedTx.consensusSubmitMessage.topicId) {\n summary += ` to topic ${parsedTx.consensusSubmitMessage.topicId}`;\n }\n if (parsedTx.consensusSubmitMessage.message) {\n if (parsedTx.consensusSubmitMessage.messageEncoding === 'utf8') {\n const messagePreview =\n parsedTx.consensusSubmitMessage.message.substring(0, 70);\n summary += `: \"${messagePreview}${\n parsedTx.consensusSubmitMessage.message.length > 70 ? '...' : ''\n }\"`;\n } else {\n summary += ` (binary message data, length: ${\n Buffer.from(parsedTx.consensusSubmitMessage.message, 'base64')\n .length\n } bytes)`;\n }\n }\n if (\n parsedTx.consensusSubmitMessage.chunkInfoNumber &&\n parsedTx.consensusSubmitMessage.chunkInfoTotal\n ) {\n summary += ` (chunk ${parsedTx.consensusSubmitMessage.chunkInfoNumber}/${parsedTx.consensusSubmitMessage.chunkInfoTotal})`;\n }\n return summary;\n } else if (parsedTx.fileCreate) {\n let summary = 'Create File';\n if (parsedTx.fileCreate.memo) {\n summary += ` with memo \"${parsedTx.fileCreate.memo}\"`;\n }\n if (parsedTx.fileCreate.contents) {\n summary += ` (includes content)`;\n }\n return summary;\n } else if (parsedTx.fileAppend) {\n return `Append to File ${parsedTx.fileAppend.fileId || '(Unknown ID)'}`;\n } else if (parsedTx.fileUpdate) {\n return `Update File ${parsedTx.fileUpdate.fileId || '(Unknown ID)'}`;\n } else if (parsedTx.fileDelete) {\n return `Delete File ${parsedTx.fileDelete.fileId || '(Unknown ID)'}`;\n } else if (parsedTx.consensusUpdateTopic) {\n return `Update Topic ${\n parsedTx.consensusUpdateTopic.topicId || '(Unknown ID)'\n }`;\n } else if (parsedTx.consensusDeleteTopic) {\n return `Delete Topic ${\n parsedTx.consensusDeleteTopic.topicId || '(Unknown ID)'\n }`;\n } else if (parsedTx.tokenUpdate) {\n return `Update Token ${parsedTx.tokenUpdate.tokenId || '(Unknown ID)'}`;\n } else if (parsedTx.tokenFeeScheduleUpdate) {\n return `Update Fee Schedule for Token ${\n parsedTx.tokenFeeScheduleUpdate.tokenId || '(Unknown ID)'\n }`;\n } else if (parsedTx.utilPrng) {\n let summary = 'Generate Random Number';\n if (parsedTx.utilPrng.range && parsedTx.utilPrng.range > 0) {\n summary += ` (range up to ${parsedTx.utilPrng.range - 1})`;\n }\n return summary;\n } else if (parsedTx.tokenFreeze) {\n return `Freeze Token ${parsedTx.tokenFreeze.tokenId} for Account ${parsedTx.tokenFreeze.accountId}`;\n } else if (parsedTx.tokenUnfreeze) {\n return `Unfreeze Token ${parsedTx.tokenUnfreeze.tokenId} for Account ${parsedTx.tokenUnfreeze.accountId}`;\n } else if (parsedTx.tokenGrantKyc) {\n return `Grant KYC for Token ${parsedTx.tokenGrantKyc.tokenId} to Account ${parsedTx.tokenGrantKyc.accountId}`;\n } else if (parsedTx.tokenRevokeKyc) {\n return `Revoke KYC for Token ${parsedTx.tokenRevokeKyc.tokenId} from Account ${parsedTx.tokenRevokeKyc.accountId}`;\n } else if (parsedTx.tokenPause) {\n return `Pause Token ${parsedTx.tokenPause.tokenId}`;\n } else if (parsedTx.tokenUnpause) {\n return `Unpause Token ${parsedTx.tokenUnpause.tokenId}`;\n } else if (parsedTx.tokenWipeAccount) {\n let summary = `Wipe Token ${parsedTx.tokenWipeAccount.tokenId} from Account ${parsedTx.tokenWipeAccount.accountId}`;\n if (parsedTx.tokenWipeAccount.serialNumbers?.length) {\n summary += ` (Serials: ${parsedTx.tokenWipeAccount.serialNumbers.join(\n ', '\n )})`;\n }\n if (parsedTx.tokenWipeAccount.amount) {\n summary += ` (Amount: ${parsedTx.tokenWipeAccount.amount})`;\n }\n return summary;\n } else if (parsedTx.tokenDelete) {\n return `Delete Token ${parsedTx.tokenDelete.tokenId}`;\n } else if (parsedTx.tokenAssociate) {\n return `Associate Account ${\n parsedTx.tokenAssociate.accountId\n } with Tokens: ${parsedTx.tokenAssociate.tokenIds?.join(', ')}`;\n } else if (parsedTx.tokenDissociate) {\n return `Dissociate Account ${\n parsedTx.tokenDissociate.accountId\n } from Tokens: ${parsedTx.tokenDissociate.tokenIds?.join(', ')}`;\n } else if (parsedTx.cryptoDelete) {\n return `Delete Account ${parsedTx.cryptoDelete.deleteAccountId}`;\n }\n if (parsedTx.cryptoCreateAccount) {\n let summary = 'Create Account';\n if (\n parsedTx.cryptoCreateAccount.initialBalance &&\n parsedTx.cryptoCreateAccount.initialBalance !== '0'\n ) {\n summary += ` with balance ${parsedTx.cryptoCreateAccount.initialBalance}`;\n }\n if (parsedTx.cryptoCreateAccount.alias) {\n summary += ` (Alias: ${parsedTx.cryptoCreateAccount.alias})`;\n }\n return summary;\n }\n if (parsedTx.cryptoUpdateAccount) {\n return `Update Account ${\n parsedTx.cryptoUpdateAccount.accountIdToUpdate || '(Unknown ID)'\n }`;\n }\n if (parsedTx.cryptoApproveAllowance) {\n let count =\n (parsedTx.cryptoApproveAllowance.hbarAllowances?.length || 0) +\n (parsedTx.cryptoApproveAllowance.tokenAllowances?.length || 0) +\n (parsedTx.cryptoApproveAllowance.nftAllowances?.length || 0);\n return `Approve ${count} Crypto Allowance(s)`;\n }\n if (parsedTx.cryptoDeleteAllowance) {\n return `Delete ${\n parsedTx.cryptoDeleteAllowance.nftAllowancesToRemove?.length || 0\n } NFT Crypto Allowance(s)`;\n }\n if (parsedTx.contractCreate) {\n let summary = 'Create Contract';\n if (parsedTx.contractCreate.memo) {\n summary += ` (Memo: ${parsedTx.contractCreate.memo})`;\n }\n return summary;\n }\n if (parsedTx.contractUpdate) {\n return `Update Contract ${\n parsedTx.contractUpdate.contractIdToUpdate || '(Unknown ID)'\n }`;\n }\n if (parsedTx.contractDelete) {\n let summary = `Delete Contract ${\n parsedTx.contractDelete.contractIdToDelete || '(Unknown ID)'\n }`;\n if (parsedTx.contractDelete.transferAccountId) {\n summary += ` (Transfer to Account: ${parsedTx.contractDelete.transferAccountId})`;\n } else if (parsedTx.contractDelete.transferContractId) {\n summary += ` (Transfer to Contract: ${parsedTx.contractDelete.transferContractId})`;\n }\n return summary;\n }\n if (\n parsedTx.humanReadableType &&\n parsedTx.humanReadableType !== 'Unknown Transaction'\n ) {\n return parsedTx.humanReadableType;\n }\n if (parsedTx.tokenTransfers.length > 0) {\n const tokenGroups: Record<string, TokenAmount[]> = {};\n for (const transfer of parsedTx.tokenTransfers) {\n if (!tokenGroups[transfer.tokenId]) {\n tokenGroups[transfer.tokenId] = [];\n }\n tokenGroups[transfer.tokenId].push(transfer);\n }\n const tokenSummaries = [];\n for (const [tokenId, transfers] of Object.entries(tokenGroups)) {\n const tokenSenders = transfers\n .filter((t) => t.amount < 0)\n .map((t) => `${t.accountId} (${Math.abs(t.amount)})`);\n const tokenReceivers = transfers\n .filter((t) => t.amount > 0)\n .map((t) => `${t.accountId} (${t.amount})`);\n if (tokenSenders.length > 0 && tokenReceivers.length > 0) {\n tokenSummaries.push(\n `Transfer of token ${tokenId} from ${tokenSenders.join(\n ', '\n )} to ${tokenReceivers.join(', ')}`\n );\n } else if (tokenReceivers.length > 0) {\n tokenSummaries.push(\n `Token ${tokenId} received by ${tokenReceivers.join(', ')}`\n );\n } else if (tokenSenders.length > 0) {\n tokenSummaries.push(\n `Token ${tokenId} sent from ${tokenSenders.join(', ')}`\n );\n }\n }\n if (tokenSummaries.length > 0) return tokenSummaries.join('; ');\n }\n\n return 'Unknown Transaction';\n }\n}\n"],"names":[],"mappings":";;;;;;;;;;AAgBO,MAAM,kBAAkB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAM7B,OAAO,qBACL,uBACmB;AACf,QAAA;AACI,YAAA,SAAS,OAAO,aAAa,qBAAqB;AACxD,YAAM,SAAS,MAAM,2BAA2B,OAAO,MAAM;AAEvD,YAAA,kBAAkB,KAAK,mBAAmB,MAAM;AAEtD,YAAM,SAA4B;AAAA,QAChC,MAAM;AAAA,QACN,mBAAmB,KAAK,qBAAqB,eAAe;AAAA,QAC5D,WAAW,CAAC;AAAA,QACZ,gBAAgB,CAAC;AAAA,QACjB,KAAK;AAAA,MACP;AAEA,UAAI,OAAO,MAAM;AACf,eAAO,OAAO,OAAO;AAAA,MAAA;AAGvB,UAAI,OAAO,gBAAgB;AACzB,cAAM,aAAa,KAAK;AAAA,UACtB,KAAK,UAAU,OAAO,cAAc;AAAA,QACtC;AACA,eAAO,iBAAiB,WAAW,SAAS,SAAS,IAAI;AAAA,MAAA;AAG3D,UAAI,OAAO,gBAAgB;AACZ,qBAAA,qBAAqB,OAAO,gBAAgB,MAAM;AAAA,MAAA;AAGjE,UAAI,OAAO,cAAc;AACvB,eAAO,eAAe,aAAa;AAAA,UACjC,OAAO;AAAA,QACT;AAAA,MAAA;AAGF,UAAI,OAAO,qBAAqB;AAC9B,eAAO,sBAAsB,aAAa;AAAA,UACxC,OAAO;AAAA,QACT;AAAA,MAAA;AAGF,UAAI,OAAO,qBAAqB;AAC9B,eAAO,sBAAsB,aAAa;AAAA,UACxC,OAAO;AAAA,QACT;AAAA,MAAA;AAGF,UAAI,OAAO,wBAAwB;AACjC,eAAO,yBACL,aAAa;AAAA,UACX,OAAO;AAAA,QACT;AAAA,MAAA;AAGJ,UAAI,OAAO,uBAAuB;AAChC,eAAO,wBAAwB,aAAa;AAAA,UAC1C,OAAO;AAAA,QACT;AAAA,MAAA;AAGF,UAAI,OAAO,cAAc;AACvB,eAAO,eAAe,UAAU,kBAAkB,OAAO,YAAY;AAAA,MAAA;AAGvE,UAAI,OAAO,wBAAwB;AACjC,eAAO,iBAAiB,UAAU;AAAA,UAChC,OAAO;AAAA,QACT;AAAA,MAAA;AAGF,UAAI,OAAO,wBAAwB;AACjC,eAAO,iBAAiB,UAAU;AAAA,UAChC,OAAO;AAAA,QACT;AAAA,MAAA;AAGF,UAAI,OAAO,wBAAwB;AACjC,eAAO,iBAAiB,UAAU;AAAA,UAChC,OAAO;AAAA,QACT;AAAA,MAAA;AAGF,UAAI,OAAO,eAAe;AACxB,eAAO,gBAAgB,UAAU,iBAAiB,OAAO,aAAa;AAAA,MAAA;AAGxE,UAAI,OAAO,WAAW;AACpB,eAAO,YAAY,UAAU,eAAe,OAAO,SAAS;AAAA,MAAA;AAG9D,UAAI,OAAO,WAAW;AACpB,eAAO,YAAY,UAAU,eAAe,OAAO,SAAS;AAAA,MAAA;AAG9D,UAAI,OAAO,aAAa;AACtB,eAAO,cAAc,UAAU,iBAAiB,OAAO,WAAW;AAAA,MAAA;AAGpE,UAAI,OAAO,wBAAwB;AACjC,eAAO,yBAAyB,UAAU;AAAA,UACxC,OAAO;AAAA,QACT;AAAA,MAAA;AAGF,UAAI,OAAO,aAAa;AACtB,eAAO,cAAc,UAAU,iBAAiB,OAAO,WAAW;AAAA,MAAA;AAGpE,UAAI,OAAO,eAAe;AACxB,eAAO,gBAAgB,UAAU;AAAA,UAC/B,OAAO;AAAA,QACT;AAAA,MAAA;AAGF,UAAI,OAAO,eAAe;AACxB,eAAO,gBAAgB,UAAU;AAAA,UAC/B,OAAO;AAAA,QACT;AAAA,MAAA;AAGF,UAAI,OAAO,gBAAgB;AACzB,eAAO,iBAAiB,UAAU;AAAA,UAChC,OAAO;AAAA,QACT;AAAA,MAAA;AAGF,UAAI,OAAO,YAAY;AACrB,eAAO,aAAa,UAAU,gBAAgB,OAAO,UAAU;AAAA,MAAA;AAGjE,UAAI,OAAO,cAAc;AACvB,eAAO,eAAe,UAAU,kBAAkB,OAAO,YAAY;AAAA,MAAA;AAGvE,UAAI,OAAO,WAAW;AACpB,eAAO,mBAAmB,UAAU;AAAA,UAClC,OAAO;AAAA,QACT;AAAA,MAAA;AAGF,UAAI,OAAO,eAAe;AACxB,eAAO,cAAc,UAAU,iBAAiB,OAAO,aAAa;AAAA,MAAA;AAGtE,UAAI,OAAO,gBAAgB;AACzB,eAAO,iBAAiB,UAAU;AAAA,UAChC,OAAO;AAAA,QACT;AAAA,MAAA;AAGF,UAAI,OAAO,iBAAiB;AAC1B,eAAO,kBAAkB,UAAU;AAAA,UACjC,OAAO;AAAA,QACT;AAAA,MAAA;AAGF,UAAI,OAAO,sBAAsB;AAC/B,eAAO,uBAAuB,UAAU;AAAA,UACtC,OAAO;AAAA,QACT;AAAA,MAAA;AAGF,UAAI,OAAO,wBAAwB;AACjC,eAAO,yBAAyB,UAAU;AAAA,UACxC,OAAO;AAAA,QACT;AAAA,MAAA;AAGF,UAAI,OAAO,sBAAsB;AAC/B,eAAO,uBAAuB,UAAU;AAAA,UACtC,OAAO;AAAA,QACT;AAAA,MAAA;AAGF,UAAI,OAAO,sBAAsB;AAC/B,eAAO,uBAAuB,UAAU;AAAA,UACtC,OAAO;AAAA,QACT;AAAA,MAAA;AAGF,UAAI,OAAO,YAAY;AACrB,eAAO,aAAa,WAAW,gBAAgB,OAAO,UAAU;AAAA,MAAA;AAGlE,UAAI,OAAO,YAAY;AACrB,eAAO,aAAa,WAAW,gBAAgB,OAAO,UAAU;AAAA,MAAA;AAGlE,UAAI,OAAO,YAAY;AACrB,eAAO,aAAa,WAAW,gBAAgB,OAAO,UAAU;AAAA,MAAA;AAGlE,UAAI,OAAO,YAAY;AACrB,eAAO,aAAa,WAAW,gBAAgB,OAAO,UAAU;AAAA,MAAA;AAGlE,UAAI,OAAO,UAAU;AACnB,eAAO,WAAW,WAAW,cAAc,OAAO,QAAQ;AAAA,MAAA;AAGrD,aAAA;AAAA,aACA,OAAO;AACd,YAAM,IAAI;AAAA,QACR,qCACE,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK,CACvD;AAAA,MACF;AAAA,IAAA;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQF,OAAO,sBAAsB,kBAGP;AAChB,QAAA,CAAC,iBAAiB,kBAAkB;AAChC,YAAA,IAAI,MAAM,4CAA4C;AAAA,IAAA;AAG9D,UAAM,SAAS,KAAK,qBAAqB,iBAAiB,gBAAgB;AAE1E,QAAI,iBAAiB,MAAM;AACzB,aAAO,OAAO,iBAAiB;AAAA,IAAA;AAG1B,WAAA;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQT,OAAe,mBACb,QACQ;AACR,QAAI,kBAAkB;AAEtB,QAAI,OAAO,gBAAgB;AACP,wBAAA;AAAA,IAAA,WACT,OAAO,qBAAqB;AACnB,wBAAA;AAAA,IAAA,WACT,OAAO,qBAAqB;AACnB,wBAAA;AAAA,IAAA,WACT,OAAO,wBAAwB;AACtB,wBAAA;AAAA,IAAA,WACT,OAAO,uBAAuB;AACrB,wBAAA;AAAA,IAAA,WACT,OAAO,cAAc;AACZ,wBAAA;AAAA,IAAA,WACT,OAAO,sBAAsB;AACpB,wBAAA;AAAA,IAAA,WACT,OAAO,sBAAsB;AACpB,wBAAA;AAAA,IAAA,WACT,OAAO,wBAAwB;AACtB,wBAAA;AAAA,IAAA,WACT,OAAO,sBAAsB;AACpB,wBAAA;AAAA,IAAA,WACT,OAAO,YAAY;AACV,wBAAA;AAAA,IAAA,WACT,OAAO,YAAY;AACV,wBAAA;AAAA,IAAA,WACT,OAAO,YAAY;AACV,wBAAA;AAAA,IAAA,WACT,OAAO,YAAY;AACV,wBAAA;AAAA,IAAA,WACT,OAAO,cAAc;AACZ,wBAAA;AAAA,IAAA,WACT,OAAO,wBAAwB;AACtB,wBAAA;AAAA,IAAA,WACT,OAAO,wBAAwB;AACtB,wBAAA;AAAA,IAAA,WACT,OAAO,wBAAwB;AACtB,wBAAA;AAAA,IAAA,WACT,OAAO,eAAe;AACb,wBAAA;AAAA,IAAA,WACT,OAAO,aAAa;AACX,wBAAA;AAAA,IAAA,WACT,OAAO,eAAe;AACb,wBAAA;AAAA,IAAA,WACT,OAAO,gBAAgB;AACd,wBAAA;AAAA,IAAA,WACT,OAAO,iBAAiB;AACf,wBAAA;AAAA,IAAA,WACT,OAAO,WAAW;AACT,wBAAA;AAAA,IAAA,WACT,OAAO,WAAW;AACT,wBAAA;AAAA,IAAA,WACT,OAAO,wBAAwB;AACtB,wBAAA;AAAA,IAAA,WACT,OAAO,aAAa;AACX,wBAAA;AAAA,IAAA,WACT,OAAO,eAAe;AACb,wBAAA;AAAA,IAAA,WACT,OAAO,eAAe;AACb,wBAAA;AAAA,IAAA,WACT,OAAO,gBAAgB;AACd,wBAAA;AAAA,IAAA,WACT,OAAO,YAAY;AACV,wBAAA;AAAA,IAAA,WACT,OAAO,cAAc;AACZ,wBAAA;AAAA,IAAA,WACT,OAAO,WAAW;AACT,wBAAA;AAAA,IAAA,WACT,OAAO,UAAU;AACR,wBAAA;AAAA,IAAA;AAGb,WAAA;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQT,OAAe,qBAAqB,MAAsB;AACxD,UAAM,UAAkC;AAAA,MACtC,gBAAgB;AAAA,MAChB,qBAAqB;AAAA,MACrB,qBAAqB;AAAA,MACrB,qBAAqB;AAAA,MACrB,wBAAwB;AAAA,MACxB,uBAAuB;AAAA,MACvB,cAAc;AAAA,MAEd,sBAAsB;AAAA,MACtB,sBAAsB;AAAA,MACtB,wBAAwB;AAAA,MACxB,sBAAsB;AAAA,MAEtB,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ,YAAY;AAAA,MAEZ,cAAc;AAAA,MACd,gBAAgB;AAAA,MAChB,gBAAgB;AAAA,MAChB,gBAAgB;AAAA,MAChB,qBAAqB;AAAA,MAErB,aAAa;AAAA,MACb,aAAa;AAAA,MACb,aAAa;AAAA,MACb,gBAAgB;AAAA,MAChB,iBAAiB;AAAA,MACjB,WAAW;AAAA,MACX,WAAW;AAAA,MACX,wBAAwB;AAAA,MACxB,aAAa;AAAA,MACb,eAAe;AAAA,MACf,eAAe;AAAA,MACf,gBAAgB;AAAA,MAChB,YAAY;AAAA,MACZ,cAAc;AAAA,MACd,WAAW;AAAA,MAEX,gBAAgB;AAAA,MAChB,cAAc;AAAA,MAEd,UAAU;AAAA,MAEV,SAAS;AAAA,IACX;AAEI,QAAA;AACA,QAAA,QAAQ,IAAI,GAAG;AACjB,eAAS,QAAQ,IAAI;AAAA,IAAA,OAChB;AACI,eAAA;AAAA,IAAA;AAGJ,WAAA;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQT,OAAO,sBAAsB,UAAqC;AAC5D,QAAA,SAAS,SAAS,kBAAkB;AACtC,YAAM,UAAU,CAAC;AACjB,YAAM,YAAY,CAAC;AAER,iBAAA,YAAY,SAAS,WAAW;AACnC,cAAA,sBAAsB,WAAW,SAAS,MAAM;AAEtD,YAAI,aAAa,SAAS;AACtB,YAAA,WAAW,WAAW,GAAG,GAAG;AACjB,uBAAA,WAAW,UAAU,CAAC;AAAA,QAAA;AAExB,qBAAA,WAAW,QAAQ,SAAS,EAAE;AAE3C,YAAI,sBAAsB,GAAG;AAC3B,kBAAQ,KAAK,GAAG,SAAS,SAAS,KAAK,UAAU,KAAK;AAAA,QAAA,WAC7C,sBAAsB,GAAG;AAClC,oBAAU,KAAK,GAAG,SAAS,SAAS,KAAK,UAAU,KAAK;AAAA,QAAA;AAAA,MAC1D;AAGF,UAAI,QAAQ,SAAS,KAAK,UAAU,SAAS,GAAG;AAC9C,eAAO,yBAAyB,QAAQ,KAAK,IAAI,CAAC,OAAO,UAAU;AAAA,UACjE;AAAA,QAAA,CACD;AAAA,MAAA,OACI;AACL,eAAO,SAAS;AAAA,MAAA;AAAA,IAClB,WACS,SAAS,cAAc;AAC5B,UAAA,sBAAsB,oBAAoB,SAAS,aAAa,UAAU,SAAS,SAAS,aAAa,GAAG;AAE5G,UAAA,SAAS,aAAa,SAAS,GAAG;AACb,+BAAA,QAAQ,SAAS,aAAa,MAAM;AAAA,MAAA;AAGzD,UAAA,SAAS,aAAa,cAAc;AACf,+BAAA,qBAAqB,SAAS,aAAa,YAAY;AAAA,MAAA;AAGzE,aAAA;AAAA,IAAA,WACE,SAAS,WAAW;AAC7B,aAAO,QAAQ,SAAS,UAAU,MAAM,qBAAqB,SAAS,UAAU,OAAO;AAAA,IAAA,WAC9E,SAAS,WAAW;AAC7B,aAAO,QAAQ,SAAS,UAAU,MAAM,qBAAqB,SAAS,UAAU,OAAO;AAAA,IAAA,WAC9E,SAAS,eAAe;AAC7B,UAAA,UAAU,gBACZ,SAAS,cAAc,aAAa,WACtC,KAAK,SAAS,cAAc,eAAe,aAAa;AACpD,UAAA,SAAS,cAAc,eAAe;AAC7B,mBAAA,wBAAwB,SAAS,cAAc,aAAa;AAAA,MAAA;AAErE,UAAA,SAAS,cAAc,YAAY,QAAQ;AAC7C,mBAAW,cAAc,SAAS,cAAc,WAAW,MAAM;AAAA,MAAA;AAE5D,aAAA;AAAA,IACE,WAAA,SAAS,eAAe,SAAS,GAAG;AAC7C,YAAM,cAA6C,CAAC;AAEzC,iBAAA,YAAY,SAAS,gBAAgB;AAC9C,YAAI,CAAC,YAAY,SAAS,OAAO,GAAG;AACtB,sBAAA,SAAS,OAAO,IAAI,CAAC;AAAA,QAAA;AAEnC,oBAAY,SAAS,OAAO,EAAE,KAAK,QAAQ;AAAA,MAAA;AAG7C,YAAM,iBAAiB,CAAC;AAExB,iBAAW,CAAC,SAAS,SAAS,KAAK,OAAO,QAAQ,WAAW,GAAG;AAC9D,cAAM,eAAe,CAAC;AACtB,cAAM,iBAAiB,CAAC;AAExB,mBAAW,YAAY,WAAW;AAChC,gBAAM,sBAAsB,WAAW,SAAS,OAAO,UAAU;AACjE,cAAI,sBAAsB,GAAG;AACd,yBAAA;AAAA,cACX,GAAG,SAAS,SAAS,KAAK,KAAK,IAAI,mBAAmB,CAAC;AAAA,YACzD;AAAA,UAAA,WACS,sBAAsB,GAAG;AACnB,2BAAA;AAAA,cACb,GAAG,SAAS,SAAS,KAAK,mBAAmB;AAAA,YAC/C;AAAA,UAAA;AAAA,QACF;AAGF,YAAI,aAAa,SAAS,KAAK,eAAe,SAAS,GAAG;AACzC,yBAAA;AAAA,YACb,qBAAqB,OAAO,SAAS,aAAa;AAAA,cAChD;AAAA,YACD,CAAA,OAAO,eAAe,KAAK,IAAI,CAAC;AAAA,UACnC;AAAA,QAAA;AAAA,MACF;AAGE,UAAA,eAAe,SAAS,GAAG;AACtB,eAAA,eAAe,KAAK,IAAI;AAAA,MAAA,OAC1B;AACL,eAAO,SAAS;AAAA,MAAA;AAAA,IAClB,WACS,SAAS,sBAAsB;AACxC,UAAI,UAAU;AACV,UAAA,SAAS,qBAAqB,MAAM;AAC3B,mBAAA,eAAe,SAAS,qBAAqB,IAAI;AAAA,MAAA;AAE1D,UAAA,SAAS,qBAAqB,oBAAoB;AACzC,mBAAA,mBAAmB,SAAS,qBAAqB,kBAAkB;AAAA,MAAA;AAEzE,aAAA;AAAA,IAAA,WACE,SAAS,wBAAwB;AAC1C,UAAI,UAAU;AACV,UAAA,SAAS,uBAAuB,SAAS;AAChC,mBAAA,aAAa,SAAS,uBAAuB,OAAO;AAAA,MAAA;AAE7D,UAAA,SAAS,uBAAuB,SAAS;AACvC,YAAA,SAAS,uBAAuB,oBAAoB,QAAQ;AAC9D,gBAAM,iBACJ,SAAS,uBAAuB,QAAQ,UAAU,GAAG,EAAE;AAC9C,qBAAA,MAAM,cAAc,GAC7B,SAAS,uBAAuB,QAAQ,SAAS,KAAK,QAAQ,EAChE;AAAA,QAAA,OACK;AACM,qBAAA,kCACT,OAAO,KAAK,SAAS,uBAAuB,SAAS,QAAQ,EAC1D,MACL;AAAA,QAAA;AAAA,MACF;AAEF,UACE,SAAS,uBAAuB,mBAChC,SAAS,uBAAuB,gBAChC;AACA,mBAAW,WAAW,SAAS,uBAAuB,eAAe,IAAI,SAAS,uBAAuB,cAAc;AAAA,MAAA;AAElH,aAAA;AAAA,IAAA,WACE,SAAS,YAAY;AAC9B,UAAI,UAAU;AACV,UAAA,SAAS,WAAW,MAAM;AACjB,mBAAA,eAAe,SAAS,WAAW,IAAI;AAAA,MAAA;AAEhD,UAAA,SAAS,WAAW,UAAU;AACrB,mBAAA;AAAA,MAAA;AAEN,aAAA;AAAA,IAAA,WACE,SAAS,YAAY;AAC9B,aAAO,kBAAkB,SAAS,WAAW,UAAU,cAAc;AAAA,IAAA,WAC5D,SAAS,YAAY;AAC9B,aAAO,eAAe,SAAS,WAAW,UAAU,cAAc;AAAA,IAAA,WACzD,SAAS,YAAY;AAC9B,aAAO,eAAe,SAAS,WAAW,UAAU,cAAc;AAAA,IAAA,WACzD,SAAS,sBAAsB;AACxC,aAAO,gBACL,SAAS,qBAAqB,WAAW,cAC3C;AAAA,IAAA,WACS,SAAS,sBAAsB;AACxC,aAAO,gBACL,SAAS,qBAAqB,WAAW,cAC3C;AAAA,IAAA,WACS,SAAS,aAAa;AAC/B,aAAO,gBAAgB,SAAS,YAAY,WAAW,cAAc;AAAA,IAAA,WAC5D,SAAS,wBAAwB;AAC1C,aAAO,iCACL,SAAS,uBAAuB,WAAW,cAC7C;AAAA,IAAA,WACS,SAAS,UAAU;AAC5B,UAAI,UAAU;AACd,UAAI,SAAS,SAAS,SAAS,SAAS,SAAS,QAAQ,GAAG;AAC1D,mBAAW,iBAAiB,SAAS,SAAS,QAAQ,CAAC;AAAA,MAAA;AAElD,aAAA;AAAA,IAAA,WACE,SAAS,aAAa;AAC/B,aAAO,gBAAgB,SAAS,YAAY,OAAO,gBAAgB,SAAS,YAAY,SAAS;AAAA,IAAA,WACxF,SAAS,eAAe;AACjC,aAAO,kBAAkB,SAAS,cAAc,OAAO,gBAAgB,SAAS,cAAc,SAAS;AAAA,IAAA,WAC9F,SAAS,eAAe;AACjC,aAAO,uBAAuB,SAAS,cAAc,OAAO,eAAe,SAAS,cAAc,SAAS;AAAA,IAAA,WAClG,SAAS,gBAAgB;AAClC,aAAO,wBAAwB,SAAS,eAAe,OAAO,iBAAiB,SAAS,eAAe,SAAS;AAAA,IAAA,WACvG,SAAS,YAAY;AACvB,aAAA,eAAe,SAAS,WAAW,OAAO;AAAA,IAAA,WACxC,SAAS,cAAc;AACzB,aAAA,iBAAiB,SAAS,aAAa,OAAO;AAAA,IAAA,WAC5C,SAAS,kBAAkB;AAChC,UAAA,UAAU,cAAc,SAAS,iBAAiB,OAAO,iBAAiB,SAAS,iBAAiB,SAAS;AAC7G,UAAA,SAAS,iBAAiB,eAAe,QAAQ;AACxC,mBAAA,cAAc,SAAS,iBAAiB,cAAc;AAAA,UAC/D;AAAA,QACD,CAAA;AAAA,MAAA;AAEC,UAAA,SAAS,iBAAiB,QAAQ;AACzB,mBAAA,aAAa,SAAS,iBAAiB,MAAM;AAAA,MAAA;AAEnD,aAAA;AAAA,IAAA,WACE,SAAS,aAAa;AACxB,aAAA,gBAAgB,SAAS,YAAY,OAAO;AAAA,IAAA,WAC1C,SAAS,gBAAgB;AAC3B,aAAA,qBACL,SAAS,eAAe,SAC1B,iBAAiB,SAAS,eAAe,UAAU,KAAK,IAAI,CAAC;AAAA,IAAA,WACpD,SAAS,iBAAiB;AAC5B,aAAA,sBACL,SAAS,gBAAgB,SAC3B,iBAAiB,SAAS,gBAAgB,UAAU,KAAK,IAAI,CAAC;AAAA,IAAA,WACrD,SAAS,cAAc;AACzB,aAAA,kBAAkB,SAAS,aAAa,eAAe;AAAA,IAAA;AAEhE,QAAI,SAAS,qBAAqB;AAChC,UAAI,UAAU;AACd,UACE,SAAS,oBAAoB,kBAC7B,SAAS,oBAAoB,mBAAmB,KAChD;AACW,mBAAA,iBAAiB,SAAS,oBAAoB,cAAc;AAAA,MAAA;AAErE,UAAA,SAAS,oBAAoB,OAAO;AAC3B,mBAAA,YAAY,SAAS,oBAAoB,KAAK;AAAA,MAAA;AAEpD,aAAA;AAAA,IAAA;AAET,QAAI,SAAS,qBAAqB;AAChC,aAAO,kBACL,SAAS,oBAAoB,qBAAqB,cACpD;AAAA,IAAA;AAEF,QAAI,SAAS,wBAAwB;AACnC,UAAI,SACD,SAAS,uBAAuB,gBAAgB,UAAU,MAC1D,SAAS,uBAAuB,iBAAiB,UAAU,MAC3D,SAAS,uBAAuB,eAAe,UAAU;AAC5D,aAAO,WAAW,KAAK;AAAA,IAAA;AAEzB,QAAI,SAAS,uBAAuB;AAClC,aAAO,UACL,SAAS,sBAAsB,uBAAuB,UAAU,CAClE;AAAA,IAAA;AAEF,QAAI,SAAS,gBAAgB;AAC3B,UAAI,UAAU;AACV,UAAA,SAAS,eAAe,MAAM;AACrB,mBAAA,WAAW,SAAS,eAAe,IAAI;AAAA,MAAA;AAE7C,aAAA;AAAA,IAAA;AAET,QAAI,SAAS,gBAAgB;AAC3B,aAAO,mBACL,SAAS,eAAe,sBAAsB,cAChD;AAAA,IAAA;AAEF,QAAI,SAAS,gBAAgB;AAC3B,UAAI,UAAU,mBACZ,SAAS,eAAe,sBAAsB,cAChD;AACI,UAAA,SAAS,eAAe,mBAAmB;AAClC,mBAAA,0BAA0B,SAAS,eAAe,iBAAiB;AAAA,MAAA,WACrE,SAAS,eAAe,oBAAoB;AAC1C,mBAAA,2BAA2B,SAAS,eAAe,kBAAkB;AAAA,MAAA;AAE3E,aAAA;AAAA,IAAA;AAET,QACE,SAAS,qBACT,SAAS,sBAAsB,uBAC/B;AACA,aAAO,SAAS;AAAA,IAAA;AAEd,QAAA,SAAS,eAAe,SAAS,GAAG;AACtC,YAAM,cAA6C,CAAC;AACzC,iBAAA,YAAY,SAAS,gBAAgB;AAC9C,YAAI,CAAC,YAAY,SAAS,OAAO,GAAG;AACtB,sBAAA,SAAS,OAAO,IAAI,CAAC;AAAA,QAAA;AAEnC,oBAAY,SAAS,OAAO,EAAE,KAAK,QAAQ;AAAA,MAAA;AAE7C,YAAM,iBAAiB,CAAC;AACxB,iBAAW,CAAC,SAAS,SAAS,KAAK,OAAO,QAAQ,WAAW,GAAG;AACxD,cAAA,eAAe,UAClB,OAAO,CAAC,MAAM,EAAE,SAAS,CAAC,EAC1B,IAAI,CAAC,MAAM,GAAG,EAAE,SAAS,KAAK,KAAK,IAAI,EAAE,MAAM,CAAC,GAAG;AACtD,cAAM,iBAAiB,UACpB,OAAO,CAAC,MAAM,EAAE,SAAS,CAAC,EAC1B,IAAI,CAAC,MAAM,GAAG,EAAE,SAAS,KAAK,EAAE,MAAM,GAAG;AAC5C,YAAI,aAAa,SAAS,KAAK,eAAe,SAAS,GAAG;AACzC,yBAAA;AAAA,YACb,qBAAqB,OAAO,SAAS,aAAa;AAAA,cAChD;AAAA,YACD,CAAA,OAAO,eAAe,KAAK,IAAI,CAAC;AAAA,UACnC;AAAA,QAAA,WACS,eAAe,SAAS,GAAG;AACrB,yBAAA;AAAA,YACb,SAAS,OAAO,gBAAgB,eAAe,KAAK,IAAI,CAAC;AAAA,UAC3D;AAAA,QAAA,WACS,aAAa,SAAS,GAAG;AACnB,yBAAA;AAAA,YACb,SAAS,OAAO,cAAc,aAAa,KAAK,IAAI,CAAC;AAAA,UACvD;AAAA,QAAA;AAAA,MACF;AAEF,UAAI,eAAe,SAAS,EAAU,QAAA,eAAe,KAAK,IAAI;AAAA,IAAA;AAGzD,WAAA;AAAA,EAAA;AAEX;"}
1
+ {"version":3,"file":"standards-sdk.es19.js","sources":["../../src/utils/transaction-parser.ts"],"sourcesContent":["import { proto } from '@hashgraph/proto';\nimport { Buffer } from 'buffer';\nimport { Hbar, HbarUnit, Long } from '@hashgraph/sdk';\nimport { ethers } from 'ethers';\nimport { TokenAmount, ParsedTransaction } from './transaction-parser-types'; // Import all types\nimport { HTSParser } from './parsers/hts-parser'; // Import HTSParser\nimport { HCSParser } from './parsers/hcs-parser'; // Import HCSParser\nimport { FileParser } from './parsers/file-parser'; // Import FileParser\nimport { CryptoParser } from './parsers/crypto-parser'; // Import CryptoParser\nimport { SCSParser } from './parsers/scs-parser'; // Import SCSParser\nimport { UtilParser } from './parsers/util-parser'; // Import UtilParser\n\n/**\n * Types for transaction parsing results\n */\n\nexport class TransactionParser {\n /**\n * Parse a base64 encoded transaction body and return structured data\n * @param transactionBodyBase64 - The base64 encoded transaction body\n * @returns The parsed transaction\n */\n static parseTransactionBody(\n transactionBodyBase64: string,\n ): ParsedTransaction {\n try {\n const buffer = ethers.decodeBase64(transactionBodyBase64);\n const txBody = proto.SchedulableTransactionBody.decode(buffer);\n\n const transactionType = this.getTransactionType(txBody);\n\n const result: ParsedTransaction = {\n type: transactionType,\n humanReadableType: this.getHumanReadableType(transactionType),\n transfers: [],\n tokenTransfers: [],\n raw: txBody,\n };\n\n if (txBody.memo) {\n result.memo = txBody.memo;\n }\n\n if (txBody.transactionFee) {\n const hbarAmount = Hbar.fromTinybars(\n Long.fromValue(txBody.transactionFee),\n );\n result.transactionFee = hbarAmount.toString(HbarUnit.Hbar);\n }\n\n if (txBody.cryptoTransfer) {\n CryptoParser.parseCryptoTransfers(txBody.cryptoTransfer, result);\n }\n\n if (txBody.cryptoDelete) {\n result.cryptoDelete = CryptoParser.parseCryptoDelete(\n txBody.cryptoDelete,\n );\n }\n\n if (txBody.cryptoCreateAccount) {\n result.cryptoCreateAccount = CryptoParser.parseCryptoCreateAccount(\n txBody.cryptoCreateAccount,\n );\n }\n\n if (txBody.cryptoUpdateAccount) {\n result.cryptoUpdateAccount = CryptoParser.parseCryptoUpdateAccount(\n txBody.cryptoUpdateAccount,\n );\n }\n\n if (txBody.cryptoApproveAllowance) {\n result.cryptoApproveAllowance =\n CryptoParser.parseCryptoApproveAllowance(\n txBody.cryptoApproveAllowance,\n );\n }\n\n if (txBody.cryptoDeleteAllowance) {\n result.cryptoDeleteAllowance = CryptoParser.parseCryptoDeleteAllowance(\n txBody.cryptoDeleteAllowance,\n );\n }\n\n if (txBody.contractCall) {\n result.contractCall = SCSParser.parseContractCall(txBody.contractCall);\n }\n\n if (txBody.contractCreateInstance) {\n result.contractCreate = SCSParser.parseContractCreate(\n txBody.contractCreateInstance,\n );\n }\n\n if (txBody.contractUpdateInstance) {\n result.contractUpdate = SCSParser.parseContractUpdate(\n txBody.contractUpdateInstance,\n );\n }\n\n if (txBody.contractDeleteInstance) {\n result.contractDelete = SCSParser.parseContractDelete(\n txBody.contractDeleteInstance,\n );\n }\n\n if (txBody.tokenCreation) {\n result.tokenCreation = HTSParser.parseTokenCreate(txBody.tokenCreation);\n }\n\n if (txBody.tokenMint) {\n result.tokenMint = HTSParser.parseTokenMint(txBody.tokenMint);\n }\n\n if (txBody.tokenBurn) {\n result.tokenBurn = HTSParser.parseTokenBurn(txBody.tokenBurn);\n }\n\n if (txBody.tokenUpdate) {\n result.tokenUpdate = HTSParser.parseTokenUpdate(txBody.tokenUpdate);\n }\n\n if (txBody.tokenFeeScheduleUpdate) {\n result.tokenFeeScheduleUpdate = HTSParser.parseTokenFeeScheduleUpdate(\n txBody.tokenFeeScheduleUpdate,\n );\n }\n\n if (txBody.tokenFreeze) {\n result.tokenFreeze = HTSParser.parseTokenFreeze(txBody.tokenFreeze);\n }\n\n if (txBody.tokenUnfreeze) {\n result.tokenUnfreeze = HTSParser.parseTokenUnfreeze(\n txBody.tokenUnfreeze,\n );\n }\n\n if (txBody.tokenGrantKyc) {\n result.tokenGrantKyc = HTSParser.parseTokenGrantKyc(\n txBody.tokenGrantKyc,\n );\n }\n\n if (txBody.tokenRevokeKyc) {\n result.tokenRevokeKyc = HTSParser.parseTokenRevokeKyc(\n txBody.tokenRevokeKyc,\n );\n }\n\n if (txBody.tokenPause) {\n result.tokenPause = HTSParser.parseTokenPause(txBody.tokenPause);\n }\n\n if (txBody.tokenUnpause) {\n result.tokenUnpause = HTSParser.parseTokenUnpause(txBody.tokenUnpause);\n }\n\n if (txBody.tokenWipe) {\n result.tokenWipeAccount = HTSParser.parseTokenWipeAccount(\n txBody.tokenWipe,\n );\n }\n\n if (txBody.tokenDeletion) {\n result.tokenDelete = HTSParser.parseTokenDelete(txBody.tokenDeletion);\n }\n\n if (txBody.tokenAssociate) {\n result.tokenAssociate = HTSParser.parseTokenAssociate(\n txBody.tokenAssociate,\n );\n }\n\n if (txBody.tokenDissociate) {\n result.tokenDissociate = HTSParser.parseTokenDissociate(\n txBody.tokenDissociate,\n );\n }\n\n if (txBody.consensusCreateTopic) {\n result.consensusCreateTopic = HCSParser.parseConsensusCreateTopic(\n txBody.consensusCreateTopic,\n );\n }\n\n if (txBody.consensusSubmitMessage) {\n result.consensusSubmitMessage = HCSParser.parseConsensusSubmitMessage(\n txBody.consensusSubmitMessage,\n );\n }\n\n if (txBody.consensusUpdateTopic) {\n result.consensusUpdateTopic = HCSParser.parseConsensusUpdateTopic(\n txBody.consensusUpdateTopic,\n );\n }\n\n if (txBody.consensusDeleteTopic) {\n result.consensusDeleteTopic = HCSParser.parseConsensusDeleteTopic(\n txBody.consensusDeleteTopic,\n );\n }\n\n if (txBody.fileCreate) {\n result.fileCreate = FileParser.parseFileCreate(txBody.fileCreate);\n }\n\n if (txBody.fileAppend) {\n result.fileAppend = FileParser.parseFileAppend(txBody.fileAppend);\n }\n\n if (txBody.fileUpdate) {\n result.fileUpdate = FileParser.parseFileUpdate(txBody.fileUpdate);\n }\n\n if (txBody.fileDelete) {\n result.fileDelete = FileParser.parseFileDelete(txBody.fileDelete);\n }\n\n if (txBody.utilPrng) {\n result.utilPrng = UtilParser.parseUtilPrng(txBody.utilPrng);\n }\n\n return result;\n } catch (error) {\n throw new Error(\n `Failed to parse transaction body: ${\n error instanceof Error ? error.message : String(error)\n }`,\n );\n }\n }\n\n /**\n * Parse details from a complete schedule response\n * @param scheduleResponse - The schedule response to parse\n * @returns The parsed transaction\n */\n static parseScheduleResponse(scheduleResponse: {\n transaction_body: string;\n memo?: string;\n }): ParsedTransaction {\n if (!scheduleResponse.transaction_body) {\n throw new Error('Schedule response missing transaction_body');\n }\n\n const parsed = this.parseTransactionBody(scheduleResponse.transaction_body);\n\n if (scheduleResponse.memo) {\n parsed.memo = scheduleResponse.memo;\n }\n\n return parsed;\n }\n\n /**\n * Determine the transaction type\n * @param txBody - The transaction body to determine the type of\n * @returns The type of the transaction\n */\n private static getTransactionType(\n txBody: proto.SchedulableTransactionBody,\n ): string {\n let transactionType = 'unknown';\n\n if (txBody.cryptoTransfer) {\n transactionType = 'cryptoTransfer';\n } else if (txBody.cryptoCreateAccount) {\n transactionType = 'cryptoCreateAccount';\n } else if (txBody.cryptoUpdateAccount) {\n transactionType = 'cryptoUpdateAccount';\n } else if (txBody.cryptoApproveAllowance) {\n transactionType = 'cryptoApproveAllowance';\n } else if (txBody.cryptoDeleteAllowance) {\n transactionType = 'cryptoDeleteAllowance';\n } else if (txBody.cryptoDelete) {\n transactionType = 'cryptoDelete';\n } else if (txBody.consensusCreateTopic) {\n transactionType = 'consensusCreateTopic';\n } else if (txBody.consensusUpdateTopic) {\n transactionType = 'consensusUpdateTopic';\n } else if (txBody.consensusSubmitMessage) {\n transactionType = 'consensusSubmitMessage';\n } else if (txBody.consensusDeleteTopic) {\n transactionType = 'consensusDeleteTopic';\n } else if (txBody.fileCreate) {\n transactionType = 'fileCreate';\n } else if (txBody.fileAppend) {\n transactionType = 'fileAppend';\n } else if (txBody.fileUpdate) {\n transactionType = 'fileUpdate';\n } else if (txBody.fileDelete) {\n transactionType = 'fileDelete';\n } else if (txBody.contractCall) {\n transactionType = 'contractCall';\n } else if (txBody.contractCreateInstance) {\n transactionType = 'contractCreate';\n } else if (txBody.contractUpdateInstance) {\n transactionType = 'contractUpdate';\n } else if (txBody.contractDeleteInstance) {\n transactionType = 'contractDelete';\n } else if (txBody.tokenCreation) {\n transactionType = 'tokenCreate';\n } else if (txBody.tokenUpdate) {\n transactionType = 'tokenUpdate';\n } else if (txBody.tokenDeletion) {\n transactionType = 'tokenDelete';\n } else if (txBody.tokenAssociate) {\n transactionType = 'tokenAssociate';\n } else if (txBody.tokenDissociate) {\n transactionType = 'tokenDissociate';\n } else if (txBody.tokenMint) {\n transactionType = 'tokenMint';\n } else if (txBody.tokenBurn) {\n transactionType = 'tokenBurn';\n } else if (txBody.tokenFeeScheduleUpdate) {\n transactionType = 'tokenFeeScheduleUpdate';\n } else if (txBody.tokenFreeze) {\n transactionType = 'tokenFreeze';\n } else if (txBody.tokenUnfreeze) {\n transactionType = 'tokenUnfreeze';\n } else if (txBody.tokenGrantKyc) {\n transactionType = 'tokenGrantKyc';\n } else if (txBody.tokenRevokeKyc) {\n transactionType = 'tokenRevokeKyc';\n } else if (txBody.tokenPause) {\n transactionType = 'tokenPause';\n } else if (txBody.tokenUnpause) {\n transactionType = 'tokenUnpause';\n } else if (txBody.tokenWipe) {\n transactionType = 'tokenWipe';\n } else if (txBody.utilPrng) {\n transactionType = 'utilPrng';\n }\n\n return transactionType;\n }\n\n /**\n * Convert technical transaction type to human-readable format\n * @param type - The technical transaction type\n * @returns The human-readable transaction type\n */\n private static getHumanReadableType(type: string): string {\n const typeMap: Record<string, string> = {\n cryptoTransfer: 'HBAR Transfer',\n cryptoCreateAccount: 'Create Account',\n cryptoUpdateAccount: 'Update Account',\n cryptoDeleteAccount: 'Delete Account',\n cryptoApproveAllowance: 'Approve Allowance',\n cryptoDeleteAllowance: 'Delete Allowance',\n cryptoDelete: 'Delete Account',\n\n consensusCreateTopic: 'Create Topic',\n consensusUpdateTopic: 'Update Topic',\n consensusSubmitMessage: 'Submit Message',\n consensusDeleteTopic: 'Delete Topic',\n\n fileCreate: 'Create File',\n fileAppend: 'Append File',\n fileUpdate: 'Update File',\n fileDelete: 'Delete File',\n\n contractCall: 'Contract Call',\n contractCreate: 'Create Contract',\n contractUpdate: 'Update Contract',\n contractDelete: 'Delete Contract',\n ethereumTransaction: 'Ethereum Transaction',\n\n tokenCreate: 'Create Token',\n tokenUpdate: 'Update Token',\n tokenDelete: 'Delete Token',\n tokenAssociate: 'Associate Token',\n tokenDissociate: 'Dissociate Token',\n tokenMint: 'Mint Token',\n tokenBurn: 'Burn Token',\n tokenFeeScheduleUpdate: 'Update Token Fee Schedule',\n tokenFreeze: 'Freeze Token',\n tokenUnfreeze: 'Unfreeze Token',\n tokenGrantKyc: 'Grant KYC',\n tokenRevokeKyc: 'Revoke KYC',\n tokenPause: 'Pause Token',\n tokenUnpause: 'Unpause Token',\n tokenWipe: 'Wipe Token',\n\n scheduleCreate: 'Create Schedule',\n scheduleSign: 'Sign Schedule',\n\n utilPrng: 'Generate Random Number',\n\n unknown: 'Unknown Transaction',\n };\n\n let result: string;\n if (typeMap[type]) {\n result = typeMap[type];\n } else {\n result = 'Unknown Transaction';\n }\n\n return result;\n }\n\n /**\n * Get a human-readable summary of the transaction\n * @param parsedTx - The parsed transaction\n * @returns The human-readable summary of the transaction\n */\n static getTransactionSummary(parsedTx: ParsedTransaction): string {\n if (parsedTx.type === 'cryptoTransfer') {\n const senders = [];\n const receivers = [];\n\n for (const transfer of parsedTx.transfers) {\n const originalAmountFloat = parseFloat(transfer.amount);\n\n let displayStr = transfer.amount;\n if (displayStr.startsWith('-')) {\n displayStr = displayStr.substring(1);\n }\n displayStr = displayStr.replace(/\\s*ℏ$/, '');\n\n if (originalAmountFloat < 0) {\n senders.push(`${transfer.accountId} (${displayStr} ℏ)`);\n } else if (originalAmountFloat > 0) {\n receivers.push(`${transfer.accountId} (${displayStr} ℏ)`);\n }\n }\n\n if (senders.length > 0 && receivers.length > 0) {\n return `Transfer of HBAR from ${senders.join(', ')} to ${receivers.join(\n ', ',\n )}`;\n } else {\n return parsedTx.humanReadableType;\n }\n } else if (parsedTx.contractCall) {\n let contractCallSummary = `Contract call to ${parsedTx.contractCall.contractId} with ${parsedTx.contractCall.gas} gas`;\n\n if (parsedTx.contractCall.amount > 0) {\n contractCallSummary += ` and ${parsedTx.contractCall.amount} HBAR`;\n }\n\n if (parsedTx.contractCall.functionName) {\n contractCallSummary += ` calling function ${parsedTx.contractCall.functionName}`;\n }\n\n return contractCallSummary;\n } else if (parsedTx.tokenMint) {\n return `Mint ${parsedTx.tokenMint.amount} tokens for token ${parsedTx.tokenMint.tokenId}`;\n } else if (parsedTx.tokenBurn) {\n return `Burn ${parsedTx.tokenBurn.amount} tokens for token ${parsedTx.tokenBurn.tokenId}`;\n } else if (parsedTx.tokenCreation) {\n let summary = `Create token ${\n parsedTx.tokenCreation.tokenName || '(No Name)'\n } (${parsedTx.tokenCreation.tokenSymbol || '(No Symbol)'})`;\n if (parsedTx.tokenCreation.initialSupply) {\n summary += ` with initial supply ${parsedTx.tokenCreation.initialSupply}`;\n }\n if (parsedTx.tokenCreation.customFees?.length) {\n summary += ` including ${parsedTx.tokenCreation.customFees.length} custom fee(s)`;\n }\n return summary;\n } else if (parsedTx.tokenTransfers.length > 0) {\n const tokenGroups: Record<string, TokenAmount[]> = {};\n\n for (const transfer of parsedTx.tokenTransfers) {\n if (!tokenGroups[transfer.tokenId]) {\n tokenGroups[transfer.tokenId] = [];\n }\n tokenGroups[transfer.tokenId].push(transfer);\n }\n\n const tokenSummaries = [];\n\n for (const [tokenId, transfers] of Object.entries(tokenGroups)) {\n const tokenSenders = [];\n const tokenReceivers = [];\n\n for (const transfer of transfers) {\n const transferAmountValue = parseFloat(transfer.amount.toString());\n if (transferAmountValue < 0) {\n tokenSenders.push(\n `${transfer.accountId} (${Math.abs(transferAmountValue)})`,\n );\n } else if (transferAmountValue > 0) {\n tokenReceivers.push(\n `${transfer.accountId} (${transferAmountValue})`,\n );\n }\n }\n\n if (tokenSenders.length > 0 && tokenReceivers.length > 0) {\n tokenSummaries.push(\n `Transfer of token ${tokenId} from ${tokenSenders.join(\n ', ',\n )} to ${tokenReceivers.join(', ')}`,\n );\n }\n }\n\n if (tokenSummaries.length > 0) {\n return tokenSummaries.join('; ');\n } else {\n return parsedTx.humanReadableType;\n }\n } else if (parsedTx.consensusCreateTopic) {\n let summary = `Create new topic`;\n if (parsedTx.consensusCreateTopic.memo) {\n summary += ` with memo \"${parsedTx.consensusCreateTopic.memo}\"`;\n }\n if (parsedTx.consensusCreateTopic.autoRenewAccountId) {\n summary += `, auto-renew by ${parsedTx.consensusCreateTopic.autoRenewAccountId}`;\n }\n return summary;\n } else if (parsedTx.consensusSubmitMessage) {\n let summary = `Submit message`;\n if (parsedTx.consensusSubmitMessage.topicId) {\n summary += ` to topic ${parsedTx.consensusSubmitMessage.topicId}`;\n }\n if (parsedTx.consensusSubmitMessage.message) {\n if (parsedTx.consensusSubmitMessage.messageEncoding === 'utf8') {\n const messagePreview =\n parsedTx.consensusSubmitMessage.message.substring(0, 70);\n summary += `: \"${messagePreview}${\n parsedTx.consensusSubmitMessage.message.length > 70 ? '...' : ''\n }\"`;\n } else {\n summary += ` (binary message data, length: ${\n Buffer.from(parsedTx.consensusSubmitMessage.message, 'base64')\n .length\n } bytes)`;\n }\n }\n if (\n parsedTx.consensusSubmitMessage.chunkInfoNumber &&\n parsedTx.consensusSubmitMessage.chunkInfoTotal\n ) {\n summary += ` (chunk ${parsedTx.consensusSubmitMessage.chunkInfoNumber}/${parsedTx.consensusSubmitMessage.chunkInfoTotal})`;\n }\n return summary;\n } else if (parsedTx.fileCreate) {\n let summary = 'Create File';\n if (parsedTx.fileCreate.memo) {\n summary += ` with memo \"${parsedTx.fileCreate.memo}\"`;\n }\n if (parsedTx.fileCreate.contents) {\n summary += ` (includes content)`;\n }\n return summary;\n } else if (parsedTx.fileAppend) {\n return `Append to File ${parsedTx.fileAppend.fileId || '(Unknown ID)'}`;\n } else if (parsedTx.fileUpdate) {\n return `Update File ${parsedTx.fileUpdate.fileId || '(Unknown ID)'}`;\n } else if (parsedTx.fileDelete) {\n return `Delete File ${parsedTx.fileDelete.fileId || '(Unknown ID)'}`;\n } else if (parsedTx.consensusUpdateTopic) {\n return `Update Topic ${\n parsedTx.consensusUpdateTopic.topicId || '(Unknown ID)'\n }`;\n } else if (parsedTx.consensusDeleteTopic) {\n return `Delete Topic ${\n parsedTx.consensusDeleteTopic.topicId || '(Unknown ID)'\n }`;\n } else if (parsedTx.tokenUpdate) {\n return `Update Token ${parsedTx.tokenUpdate.tokenId || '(Unknown ID)'}`;\n } else if (parsedTx.tokenFeeScheduleUpdate) {\n return `Update Fee Schedule for Token ${\n parsedTx.tokenFeeScheduleUpdate.tokenId || '(Unknown ID)'\n }`;\n } else if (parsedTx.utilPrng) {\n let summary = 'Generate Random Number';\n if (parsedTx.utilPrng.range && parsedTx.utilPrng.range > 0) {\n summary += ` (range up to ${parsedTx.utilPrng.range - 1})`;\n }\n return summary;\n } else if (parsedTx.tokenFreeze) {\n return `Freeze Token ${parsedTx.tokenFreeze.tokenId} for Account ${parsedTx.tokenFreeze.accountId}`;\n } else if (parsedTx.tokenUnfreeze) {\n return `Unfreeze Token ${parsedTx.tokenUnfreeze.tokenId} for Account ${parsedTx.tokenUnfreeze.accountId}`;\n } else if (parsedTx.tokenGrantKyc) {\n return `Grant KYC for Token ${parsedTx.tokenGrantKyc.tokenId} to Account ${parsedTx.tokenGrantKyc.accountId}`;\n } else if (parsedTx.tokenRevokeKyc) {\n return `Revoke KYC for Token ${parsedTx.tokenRevokeKyc.tokenId} from Account ${parsedTx.tokenRevokeKyc.accountId}`;\n } else if (parsedTx.tokenPause) {\n return `Pause Token ${parsedTx.tokenPause.tokenId}`;\n } else if (parsedTx.tokenUnpause) {\n return `Unpause Token ${parsedTx.tokenUnpause.tokenId}`;\n } else if (parsedTx.tokenWipeAccount) {\n let summary = `Wipe Token ${parsedTx.tokenWipeAccount.tokenId} from Account ${parsedTx.tokenWipeAccount.accountId}`;\n if (parsedTx.tokenWipeAccount.serialNumbers?.length) {\n summary += ` (Serials: ${parsedTx.tokenWipeAccount.serialNumbers.join(\n ', ',\n )})`;\n }\n if (parsedTx.tokenWipeAccount.amount) {\n summary += ` (Amount: ${parsedTx.tokenWipeAccount.amount})`;\n }\n return summary;\n } else if (parsedTx.tokenDelete) {\n return `Delete Token ${parsedTx.tokenDelete.tokenId}`;\n } else if (parsedTx.tokenAssociate) {\n return `Associate Account ${\n parsedTx.tokenAssociate.accountId\n } with Tokens: ${parsedTx.tokenAssociate.tokenIds?.join(', ')}`;\n } else if (parsedTx.tokenDissociate) {\n return `Dissociate Account ${\n parsedTx.tokenDissociate.accountId\n } from Tokens: ${parsedTx.tokenDissociate.tokenIds?.join(', ')}`;\n } else if (parsedTx.cryptoDelete) {\n return `Delete Account ${parsedTx.cryptoDelete.deleteAccountId}`;\n }\n if (parsedTx.cryptoCreateAccount) {\n let summary = 'Create Account';\n if (\n parsedTx.cryptoCreateAccount.initialBalance &&\n parsedTx.cryptoCreateAccount.initialBalance !== '0'\n ) {\n summary += ` with balance ${parsedTx.cryptoCreateAccount.initialBalance}`;\n }\n if (parsedTx.cryptoCreateAccount.alias) {\n summary += ` (Alias: ${parsedTx.cryptoCreateAccount.alias})`;\n }\n return summary;\n }\n if (parsedTx.cryptoUpdateAccount) {\n return `Update Account ${\n parsedTx.cryptoUpdateAccount.accountIdToUpdate || '(Unknown ID)'\n }`;\n }\n if (parsedTx.cryptoApproveAllowance) {\n let count =\n (parsedTx.cryptoApproveAllowance.hbarAllowances?.length || 0) +\n (parsedTx.cryptoApproveAllowance.tokenAllowances?.length || 0) +\n (parsedTx.cryptoApproveAllowance.nftAllowances?.length || 0);\n return `Approve ${count} Crypto Allowance(s)`;\n }\n if (parsedTx.cryptoDeleteAllowance) {\n return `Delete ${\n parsedTx.cryptoDeleteAllowance.nftAllowancesToRemove?.length || 0\n } NFT Crypto Allowance(s)`;\n }\n if (parsedTx.contractCreate) {\n let summary = 'Create Contract';\n if (parsedTx.contractCreate.memo) {\n summary += ` (Memo: ${parsedTx.contractCreate.memo})`;\n }\n return summary;\n }\n if (parsedTx.contractUpdate) {\n return `Update Contract ${\n parsedTx.contractUpdate.contractIdToUpdate || '(Unknown ID)'\n }`;\n }\n if (parsedTx.contractDelete) {\n let summary = `Delete Contract ${\n parsedTx.contractDelete.contractIdToDelete || '(Unknown ID)'\n }`;\n if (parsedTx.contractDelete.transferAccountId) {\n summary += ` (Transfer to Account: ${parsedTx.contractDelete.transferAccountId})`;\n } else if (parsedTx.contractDelete.transferContractId) {\n summary += ` (Transfer to Contract: ${parsedTx.contractDelete.transferContractId})`;\n }\n return summary;\n }\n if (\n parsedTx.humanReadableType &&\n parsedTx.humanReadableType !== 'Unknown Transaction'\n ) {\n return parsedTx.humanReadableType;\n }\n if (parsedTx.tokenTransfers.length > 0) {\n const tokenGroups: Record<string, TokenAmount[]> = {};\n for (const transfer of parsedTx.tokenTransfers) {\n if (!tokenGroups[transfer.tokenId]) {\n tokenGroups[transfer.tokenId] = [];\n }\n tokenGroups[transfer.tokenId].push(transfer);\n }\n const tokenSummaries = [];\n for (const [tokenId, transfers] of Object.entries(tokenGroups)) {\n const tokenSenders = transfers\n .filter(t => t.amount < 0)\n .map(t => `${t.accountId} (${Math.abs(t.amount)})`);\n const tokenReceivers = transfers\n .filter(t => t.amount > 0)\n .map(t => `${t.accountId} (${t.amount})`);\n if (tokenSenders.length > 0 && tokenReceivers.length > 0) {\n tokenSummaries.push(\n `Transfer of token ${tokenId} from ${tokenSenders.join(\n ', ',\n )} to ${tokenReceivers.join(', ')}`,\n );\n } else if (tokenReceivers.length > 0) {\n tokenSummaries.push(\n `Token ${tokenId} received by ${tokenReceivers.join(', ')}`,\n );\n } else if (tokenSenders.length > 0) {\n tokenSummaries.push(\n `Token ${tokenId} sent from ${tokenSenders.join(', ')}`,\n );\n }\n }\n if (tokenSummaries.length > 0) return tokenSummaries.join('; ');\n }\n\n return 'Unknown Transaction';\n }\n}\n"],"names":[],"mappings":";;;;;;;;;;AAgBO,MAAM,kBAAkB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAM7B,OAAO,qBACL,uBACmB;AACf,QAAA;AACI,YAAA,SAAS,OAAO,aAAa,qBAAqB;AACxD,YAAM,SAAS,MAAM,2BAA2B,OAAO,MAAM;AAEvD,YAAA,kBAAkB,KAAK,mBAAmB,MAAM;AAEtD,YAAM,SAA4B;AAAA,QAChC,MAAM;AAAA,QACN,mBAAmB,KAAK,qBAAqB,eAAe;AAAA,QAC5D,WAAW,CAAC;AAAA,QACZ,gBAAgB,CAAC;AAAA,QACjB,KAAK;AAAA,MACP;AAEA,UAAI,OAAO,MAAM;AACf,eAAO,OAAO,OAAO;AAAA,MAAA;AAGvB,UAAI,OAAO,gBAAgB;AACzB,cAAM,aAAa,KAAK;AAAA,UACtB,KAAK,UAAU,OAAO,cAAc;AAAA,QACtC;AACA,eAAO,iBAAiB,WAAW,SAAS,SAAS,IAAI;AAAA,MAAA;AAG3D,UAAI,OAAO,gBAAgB;AACZ,qBAAA,qBAAqB,OAAO,gBAAgB,MAAM;AAAA,MAAA;AAGjE,UAAI,OAAO,cAAc;AACvB,eAAO,eAAe,aAAa;AAAA,UACjC,OAAO;AAAA,QACT;AAAA,MAAA;AAGF,UAAI,OAAO,qBAAqB;AAC9B,eAAO,sBAAsB,aAAa;AAAA,UACxC,OAAO;AAAA,QACT;AAAA,MAAA;AAGF,UAAI,OAAO,qBAAqB;AAC9B,eAAO,sBAAsB,aAAa;AAAA,UACxC,OAAO;AAAA,QACT;AAAA,MAAA;AAGF,UAAI,OAAO,wBAAwB;AACjC,eAAO,yBACL,aAAa;AAAA,UACX,OAAO;AAAA,QACT;AAAA,MAAA;AAGJ,UAAI,OAAO,uBAAuB;AAChC,eAAO,wBAAwB,aAAa;AAAA,UAC1C,OAAO;AAAA,QACT;AAAA,MAAA;AAGF,UAAI,OAAO,cAAc;AACvB,eAAO,eAAe,UAAU,kBAAkB,OAAO,YAAY;AAAA,MAAA;AAGvE,UAAI,OAAO,wBAAwB;AACjC,eAAO,iBAAiB,UAAU;AAAA,UAChC,OAAO;AAAA,QACT;AAAA,MAAA;AAGF,UAAI,OAAO,wBAAwB;AACjC,eAAO,iBAAiB,UAAU;AAAA,UAChC,OAAO;AAAA,QACT;AAAA,MAAA;AAGF,UAAI,OAAO,wBAAwB;AACjC,eAAO,iBAAiB,UAAU;AAAA,UAChC,OAAO;AAAA,QACT;AAAA,MAAA;AAGF,UAAI,OAAO,eAAe;AACxB,eAAO,gBAAgB,UAAU,iBAAiB,OAAO,aAAa;AAAA,MAAA;AAGxE,UAAI,OAAO,WAAW;AACpB,eAAO,YAAY,UAAU,eAAe,OAAO,SAAS;AAAA,MAAA;AAG9D,UAAI,OAAO,WAAW;AACpB,eAAO,YAAY,UAAU,eAAe,OAAO,SAAS;AAAA,MAAA;AAG9D,UAAI,OAAO,aAAa;AACtB,eAAO,cAAc,UAAU,iBAAiB,OAAO,WAAW;AAAA,MAAA;AAGpE,UAAI,OAAO,wBAAwB;AACjC,eAAO,yBAAyB,UAAU;AAAA,UACxC,OAAO;AAAA,QACT;AAAA,MAAA;AAGF,UAAI,OAAO,aAAa;AACtB,eAAO,cAAc,UAAU,iBAAiB,OAAO,WAAW;AAAA,MAAA;AAGpE,UAAI,OAAO,eAAe;AACxB,eAAO,gBAAgB,UAAU;AAAA,UAC/B,OAAO;AAAA,QACT;AAAA,MAAA;AAGF,UAAI,OAAO,eAAe;AACxB,eAAO,gBAAgB,UAAU;AAAA,UAC/B,OAAO;AAAA,QACT;AAAA,MAAA;AAGF,UAAI,OAAO,gBAAgB;AACzB,eAAO,iBAAiB,UAAU;AAAA,UAChC,OAAO;AAAA,QACT;AAAA,MAAA;AAGF,UAAI,OAAO,YAAY;AACrB,eAAO,aAAa,UAAU,gBAAgB,OAAO,UAAU;AAAA,MAAA;AAGjE,UAAI,OAAO,cAAc;AACvB,eAAO,eAAe,UAAU,kBAAkB,OAAO,YAAY;AAAA,MAAA;AAGvE,UAAI,OAAO,WAAW;AACpB,eAAO,mBAAmB,UAAU;AAAA,UAClC,OAAO;AAAA,QACT;AAAA,MAAA;AAGF,UAAI,OAAO,eAAe;AACxB,eAAO,cAAc,UAAU,iBAAiB,OAAO,aAAa;AAAA,MAAA;AAGtE,UAAI,OAAO,gBAAgB;AACzB,eAAO,iBAAiB,UAAU;AAAA,UAChC,OAAO;AAAA,QACT;AAAA,MAAA;AAGF,UAAI,OAAO,iBAAiB;AAC1B,eAAO,kBAAkB,UAAU;AAAA,UACjC,OAAO;AAAA,QACT;AAAA,MAAA;AAGF,UAAI,OAAO,sBAAsB;AAC/B,eAAO,uBAAuB,UAAU;AAAA,UACtC,OAAO;AAAA,QACT;AAAA,MAAA;AAGF,UAAI,OAAO,wBAAwB;AACjC,eAAO,yBAAyB,UAAU;AAAA,UACxC,OAAO;AAAA,QACT;AAAA,MAAA;AAGF,UAAI,OAAO,sBAAsB;AAC/B,eAAO,uBAAuB,UAAU;AAAA,UACtC,OAAO;AAAA,QACT;AAAA,MAAA;AAGF,UAAI,OAAO,sBAAsB;AAC/B,eAAO,uBAAuB,UAAU;AAAA,UACtC,OAAO;AAAA,QACT;AAAA,MAAA;AAGF,UAAI,OAAO,YAAY;AACrB,eAAO,aAAa,WAAW,gBAAgB,OAAO,UAAU;AAAA,MAAA;AAGlE,UAAI,OAAO,YAAY;AACrB,eAAO,aAAa,WAAW,gBAAgB,OAAO,UAAU;AAAA,MAAA;AAGlE,UAAI,OAAO,YAAY;AACrB,eAAO,aAAa,WAAW,gBAAgB,OAAO,UAAU;AAAA,MAAA;AAGlE,UAAI,OAAO,YAAY;AACrB,eAAO,aAAa,WAAW,gBAAgB,OAAO,UAAU;AAAA,MAAA;AAGlE,UAAI,OAAO,UAAU;AACnB,eAAO,WAAW,WAAW,cAAc,OAAO,QAAQ;AAAA,MAAA;AAGrD,aAAA;AAAA,aACA,OAAO;AACd,YAAM,IAAI;AAAA,QACR,qCACE,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK,CACvD;AAAA,MACF;AAAA,IAAA;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQF,OAAO,sBAAsB,kBAGP;AAChB,QAAA,CAAC,iBAAiB,kBAAkB;AAChC,YAAA,IAAI,MAAM,4CAA4C;AAAA,IAAA;AAG9D,UAAM,SAAS,KAAK,qBAAqB,iBAAiB,gBAAgB;AAE1E,QAAI,iBAAiB,MAAM;AACzB,aAAO,OAAO,iBAAiB;AAAA,IAAA;AAG1B,WAAA;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQT,OAAe,mBACb,QACQ;AACR,QAAI,kBAAkB;AAEtB,QAAI,OAAO,gBAAgB;AACP,wBAAA;AAAA,IAAA,WACT,OAAO,qBAAqB;AACnB,wBAAA;AAAA,IAAA,WACT,OAAO,qBAAqB;AACnB,wBAAA;AAAA,IAAA,WACT,OAAO,wBAAwB;AACtB,wBAAA;AAAA,IAAA,WACT,OAAO,uBAAuB;AACrB,wBAAA;AAAA,IAAA,WACT,OAAO,cAAc;AACZ,wBAAA;AAAA,IAAA,WACT,OAAO,sBAAsB;AACpB,wBAAA;AAAA,IAAA,WACT,OAAO,sBAAsB;AACpB,wBAAA;AAAA,IAAA,WACT,OAAO,wBAAwB;AACtB,wBAAA;AAAA,IAAA,WACT,OAAO,sBAAsB;AACpB,wBAAA;AAAA,IAAA,WACT,OAAO,YAAY;AACV,wBAAA;AAAA,IAAA,WACT,OAAO,YAAY;AACV,wBAAA;AAAA,IAAA,WACT,OAAO,YAAY;AACV,wBAAA;AAAA,IAAA,WACT,OAAO,YAAY;AACV,wBAAA;AAAA,IAAA,WACT,OAAO,cAAc;AACZ,wBAAA;AAAA,IAAA,WACT,OAAO,wBAAwB;AACtB,wBAAA;AAAA,IAAA,WACT,OAAO,wBAAwB;AACtB,wBAAA;AAAA,IAAA,WACT,OAAO,wBAAwB;AACtB,wBAAA;AAAA,IAAA,WACT,OAAO,eAAe;AACb,wBAAA;AAAA,IAAA,WACT,OAAO,aAAa;AACX,wBAAA;AAAA,IAAA,WACT,OAAO,eAAe;AACb,wBAAA;AAAA,IAAA,WACT,OAAO,gBAAgB;AACd,wBAAA;AAAA,IAAA,WACT,OAAO,iBAAiB;AACf,wBAAA;AAAA,IAAA,WACT,OAAO,WAAW;AACT,wBAAA;AAAA,IAAA,WACT,OAAO,WAAW;AACT,wBAAA;AAAA,IAAA,WACT,OAAO,wBAAwB;AACtB,wBAAA;AAAA,IAAA,WACT,OAAO,aAAa;AACX,wBAAA;AAAA,IAAA,WACT,OAAO,eAAe;AACb,wBAAA;AAAA,IAAA,WACT,OAAO,eAAe;AACb,wBAAA;AAAA,IAAA,WACT,OAAO,gBAAgB;AACd,wBAAA;AAAA,IAAA,WACT,OAAO,YAAY;AACV,wBAAA;AAAA,IAAA,WACT,OAAO,cAAc;AACZ,wBAAA;AAAA,IAAA,WACT,OAAO,WAAW;AACT,wBAAA;AAAA,IAAA,WACT,OAAO,UAAU;AACR,wBAAA;AAAA,IAAA;AAGb,WAAA;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQT,OAAe,qBAAqB,MAAsB;AACxD,UAAM,UAAkC;AAAA,MACtC,gBAAgB;AAAA,MAChB,qBAAqB;AAAA,MACrB,qBAAqB;AAAA,MACrB,qBAAqB;AAAA,MACrB,wBAAwB;AAAA,MACxB,uBAAuB;AAAA,MACvB,cAAc;AAAA,MAEd,sBAAsB;AAAA,MACtB,sBAAsB;AAAA,MACtB,wBAAwB;AAAA,MACxB,sBAAsB;AAAA,MAEtB,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ,YAAY;AAAA,MAEZ,cAAc;AAAA,MACd,gBAAgB;AAAA,MAChB,gBAAgB;AAAA,MAChB,gBAAgB;AAAA,MAChB,qBAAqB;AAAA,MAErB,aAAa;AAAA,MACb,aAAa;AAAA,MACb,aAAa;AAAA,MACb,gBAAgB;AAAA,MAChB,iBAAiB;AAAA,MACjB,WAAW;AAAA,MACX,WAAW;AAAA,MACX,wBAAwB;AAAA,MACxB,aAAa;AAAA,MACb,eAAe;AAAA,MACf,eAAe;AAAA,MACf,gBAAgB;AAAA,MAChB,YAAY;AAAA,MACZ,cAAc;AAAA,MACd,WAAW;AAAA,MAEX,gBAAgB;AAAA,MAChB,cAAc;AAAA,MAEd,UAAU;AAAA,MAEV,SAAS;AAAA,IACX;AAEI,QAAA;AACA,QAAA,QAAQ,IAAI,GAAG;AACjB,eAAS,QAAQ,IAAI;AAAA,IAAA,OAChB;AACI,eAAA;AAAA,IAAA;AAGJ,WAAA;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQT,OAAO,sBAAsB,UAAqC;AAC5D,QAAA,SAAS,SAAS,kBAAkB;AACtC,YAAM,UAAU,CAAC;AACjB,YAAM,YAAY,CAAC;AAER,iBAAA,YAAY,SAAS,WAAW;AACnC,cAAA,sBAAsB,WAAW,SAAS,MAAM;AAEtD,YAAI,aAAa,SAAS;AACtB,YAAA,WAAW,WAAW,GAAG,GAAG;AACjB,uBAAA,WAAW,UAAU,CAAC;AAAA,QAAA;AAExB,qBAAA,WAAW,QAAQ,SAAS,EAAE;AAE3C,YAAI,sBAAsB,GAAG;AAC3B,kBAAQ,KAAK,GAAG,SAAS,SAAS,KAAK,UAAU,KAAK;AAAA,QAAA,WAC7C,sBAAsB,GAAG;AAClC,oBAAU,KAAK,GAAG,SAAS,SAAS,KAAK,UAAU,KAAK;AAAA,QAAA;AAAA,MAC1D;AAGF,UAAI,QAAQ,SAAS,KAAK,UAAU,SAAS,GAAG;AAC9C,eAAO,yBAAyB,QAAQ,KAAK,IAAI,CAAC,OAAO,UAAU;AAAA,UACjE;AAAA,QAAA,CACD;AAAA,MAAA,OACI;AACL,eAAO,SAAS;AAAA,MAAA;AAAA,IAClB,WACS,SAAS,cAAc;AAC5B,UAAA,sBAAsB,oBAAoB,SAAS,aAAa,UAAU,SAAS,SAAS,aAAa,GAAG;AAE5G,UAAA,SAAS,aAAa,SAAS,GAAG;AACb,+BAAA,QAAQ,SAAS,aAAa,MAAM;AAAA,MAAA;AAGzD,UAAA,SAAS,aAAa,cAAc;AACf,+BAAA,qBAAqB,SAAS,aAAa,YAAY;AAAA,MAAA;AAGzE,aAAA;AAAA,IAAA,WACE,SAAS,WAAW;AAC7B,aAAO,QAAQ,SAAS,UAAU,MAAM,qBAAqB,SAAS,UAAU,OAAO;AAAA,IAAA,WAC9E,SAAS,WAAW;AAC7B,aAAO,QAAQ,SAAS,UAAU,MAAM,qBAAqB,SAAS,UAAU,OAAO;AAAA,IAAA,WAC9E,SAAS,eAAe;AAC7B,UAAA,UAAU,gBACZ,SAAS,cAAc,aAAa,WACtC,KAAK,SAAS,cAAc,eAAe,aAAa;AACpD,UAAA,SAAS,cAAc,eAAe;AAC7B,mBAAA,wBAAwB,SAAS,cAAc,aAAa;AAAA,MAAA;AAErE,UAAA,SAAS,cAAc,YAAY,QAAQ;AAC7C,mBAAW,cAAc,SAAS,cAAc,WAAW,MAAM;AAAA,MAAA;AAE5D,aAAA;AAAA,IACE,WAAA,SAAS,eAAe,SAAS,GAAG;AAC7C,YAAM,cAA6C,CAAC;AAEzC,iBAAA,YAAY,SAAS,gBAAgB;AAC9C,YAAI,CAAC,YAAY,SAAS,OAAO,GAAG;AACtB,sBAAA,SAAS,OAAO,IAAI,CAAC;AAAA,QAAA;AAEnC,oBAAY,SAAS,OAAO,EAAE,KAAK,QAAQ;AAAA,MAAA;AAG7C,YAAM,iBAAiB,CAAC;AAExB,iBAAW,CAAC,SAAS,SAAS,KAAK,OAAO,QAAQ,WAAW,GAAG;AAC9D,cAAM,eAAe,CAAC;AACtB,cAAM,iBAAiB,CAAC;AAExB,mBAAW,YAAY,WAAW;AAChC,gBAAM,sBAAsB,WAAW,SAAS,OAAO,UAAU;AACjE,cAAI,sBAAsB,GAAG;AACd,yBAAA;AAAA,cACX,GAAG,SAAS,SAAS,KAAK,KAAK,IAAI,mBAAmB,CAAC;AAAA,YACzD;AAAA,UAAA,WACS,sBAAsB,GAAG;AACnB,2BAAA;AAAA,cACb,GAAG,SAAS,SAAS,KAAK,mBAAmB;AAAA,YAC/C;AAAA,UAAA;AAAA,QACF;AAGF,YAAI,aAAa,SAAS,KAAK,eAAe,SAAS,GAAG;AACzC,yBAAA;AAAA,YACb,qBAAqB,OAAO,SAAS,aAAa;AAAA,cAChD;AAAA,YACD,CAAA,OAAO,eAAe,KAAK,IAAI,CAAC;AAAA,UACnC;AAAA,QAAA;AAAA,MACF;AAGE,UAAA,eAAe,SAAS,GAAG;AACtB,eAAA,eAAe,KAAK,IAAI;AAAA,MAAA,OAC1B;AACL,eAAO,SAAS;AAAA,MAAA;AAAA,IAClB,WACS,SAAS,sBAAsB;AACxC,UAAI,UAAU;AACV,UAAA,SAAS,qBAAqB,MAAM;AAC3B,mBAAA,eAAe,SAAS,qBAAqB,IAAI;AAAA,MAAA;AAE1D,UAAA,SAAS,qBAAqB,oBAAoB;AACzC,mBAAA,mBAAmB,SAAS,qBAAqB,kBAAkB;AAAA,MAAA;AAEzE,aAAA;AAAA,IAAA,WACE,SAAS,wBAAwB;AAC1C,UAAI,UAAU;AACV,UAAA,SAAS,uBAAuB,SAAS;AAChC,mBAAA,aAAa,SAAS,uBAAuB,OAAO;AAAA,MAAA;AAE7D,UAAA,SAAS,uBAAuB,SAAS;AACvC,YAAA,SAAS,uBAAuB,oBAAoB,QAAQ;AAC9D,gBAAM,iBACJ,SAAS,uBAAuB,QAAQ,UAAU,GAAG,EAAE;AAC9C,qBAAA,MAAM,cAAc,GAC7B,SAAS,uBAAuB,QAAQ,SAAS,KAAK,QAAQ,EAChE;AAAA,QAAA,OACK;AACM,qBAAA,kCACT,OAAO,KAAK,SAAS,uBAAuB,SAAS,QAAQ,EAC1D,MACL;AAAA,QAAA;AAAA,MACF;AAEF,UACE,SAAS,uBAAuB,mBAChC,SAAS,uBAAuB,gBAChC;AACA,mBAAW,WAAW,SAAS,uBAAuB,eAAe,IAAI,SAAS,uBAAuB,cAAc;AAAA,MAAA;AAElH,aAAA;AAAA,IAAA,WACE,SAAS,YAAY;AAC9B,UAAI,UAAU;AACV,UAAA,SAAS,WAAW,MAAM;AACjB,mBAAA,eAAe,SAAS,WAAW,IAAI;AAAA,MAAA;AAEhD,UAAA,SAAS,WAAW,UAAU;AACrB,mBAAA;AAAA,MAAA;AAEN,aAAA;AAAA,IAAA,WACE,SAAS,YAAY;AAC9B,aAAO,kBAAkB,SAAS,WAAW,UAAU,cAAc;AAAA,IAAA,WAC5D,SAAS,YAAY;AAC9B,aAAO,eAAe,SAAS,WAAW,UAAU,cAAc;AAAA,IAAA,WACzD,SAAS,YAAY;AAC9B,aAAO,eAAe,SAAS,WAAW,UAAU,cAAc;AAAA,IAAA,WACzD,SAAS,sBAAsB;AACxC,aAAO,gBACL,SAAS,qBAAqB,WAAW,cAC3C;AAAA,IAAA,WACS,SAAS,sBAAsB;AACxC,aAAO,gBACL,SAAS,qBAAqB,WAAW,cAC3C;AAAA,IAAA,WACS,SAAS,aAAa;AAC/B,aAAO,gBAAgB,SAAS,YAAY,WAAW,cAAc;AAAA,IAAA,WAC5D,SAAS,wBAAwB;AAC1C,aAAO,iCACL,SAAS,uBAAuB,WAAW,cAC7C;AAAA,IAAA,WACS,SAAS,UAAU;AAC5B,UAAI,UAAU;AACd,UAAI,SAAS,SAAS,SAAS,SAAS,SAAS,QAAQ,GAAG;AAC1D,mBAAW,iBAAiB,SAAS,SAAS,QAAQ,CAAC;AAAA,MAAA;AAElD,aAAA;AAAA,IAAA,WACE,SAAS,aAAa;AAC/B,aAAO,gBAAgB,SAAS,YAAY,OAAO,gBAAgB,SAAS,YAAY,SAAS;AAAA,IAAA,WACxF,SAAS,eAAe;AACjC,aAAO,kBAAkB,SAAS,cAAc,OAAO,gBAAgB,SAAS,cAAc,SAAS;AAAA,IAAA,WAC9F,SAAS,eAAe;AACjC,aAAO,uBAAuB,SAAS,cAAc,OAAO,eAAe,SAAS,cAAc,SAAS;AAAA,IAAA,WAClG,SAAS,gBAAgB;AAClC,aAAO,wBAAwB,SAAS,eAAe,OAAO,iBAAiB,SAAS,eAAe,SAAS;AAAA,IAAA,WACvG,SAAS,YAAY;AACvB,aAAA,eAAe,SAAS,WAAW,OAAO;AAAA,IAAA,WACxC,SAAS,cAAc;AACzB,aAAA,iBAAiB,SAAS,aAAa,OAAO;AAAA,IAAA,WAC5C,SAAS,kBAAkB;AAChC,UAAA,UAAU,cAAc,SAAS,iBAAiB,OAAO,iBAAiB,SAAS,iBAAiB,SAAS;AAC7G,UAAA,SAAS,iBAAiB,eAAe,QAAQ;AACxC,mBAAA,cAAc,SAAS,iBAAiB,cAAc;AAAA,UAC/D;AAAA,QACD,CAAA;AAAA,MAAA;AAEC,UAAA,SAAS,iBAAiB,QAAQ;AACzB,mBAAA,aAAa,SAAS,iBAAiB,MAAM;AAAA,MAAA;AAEnD,aAAA;AAAA,IAAA,WACE,SAAS,aAAa;AACxB,aAAA,gBAAgB,SAAS,YAAY,OAAO;AAAA,IAAA,WAC1C,SAAS,gBAAgB;AAC3B,aAAA,qBACL,SAAS,eAAe,SAC1B,iBAAiB,SAAS,eAAe,UAAU,KAAK,IAAI,CAAC;AAAA,IAAA,WACpD,SAAS,iBAAiB;AAC5B,aAAA,sBACL,SAAS,gBAAgB,SAC3B,iBAAiB,SAAS,gBAAgB,UAAU,KAAK,IAAI,CAAC;AAAA,IAAA,WACrD,SAAS,cAAc;AACzB,aAAA,kBAAkB,SAAS,aAAa,eAAe;AAAA,IAAA;AAEhE,QAAI,SAAS,qBAAqB;AAChC,UAAI,UAAU;AACd,UACE,SAAS,oBAAoB,kBAC7B,SAAS,oBAAoB,mBAAmB,KAChD;AACW,mBAAA,iBAAiB,SAAS,oBAAoB,cAAc;AAAA,MAAA;AAErE,UAAA,SAAS,oBAAoB,OAAO;AAC3B,mBAAA,YAAY,SAAS,oBAAoB,KAAK;AAAA,MAAA;AAEpD,aAAA;AAAA,IAAA;AAET,QAAI,SAAS,qBAAqB;AAChC,aAAO,kBACL,SAAS,oBAAoB,qBAAqB,cACpD;AAAA,IAAA;AAEF,QAAI,SAAS,wBAAwB;AACnC,UAAI,SACD,SAAS,uBAAuB,gBAAgB,UAAU,MAC1D,SAAS,uBAAuB,iBAAiB,UAAU,MAC3D,SAAS,uBAAuB,eAAe,UAAU;AAC5D,aAAO,WAAW,KAAK;AAAA,IAAA;AAEzB,QAAI,SAAS,uBAAuB;AAClC,aAAO,UACL,SAAS,sBAAsB,uBAAuB,UAAU,CAClE;AAAA,IAAA;AAEF,QAAI,SAAS,gBAAgB;AAC3B,UAAI,UAAU;AACV,UAAA,SAAS,eAAe,MAAM;AACrB,mBAAA,WAAW,SAAS,eAAe,IAAI;AAAA,MAAA;AAE7C,aAAA;AAAA,IAAA;AAET,QAAI,SAAS,gBAAgB;AAC3B,aAAO,mBACL,SAAS,eAAe,sBAAsB,cAChD;AAAA,IAAA;AAEF,QAAI,SAAS,gBAAgB;AAC3B,UAAI,UAAU,mBACZ,SAAS,eAAe,sBAAsB,cAChD;AACI,UAAA,SAAS,eAAe,mBAAmB;AAClC,mBAAA,0BAA0B,SAAS,eAAe,iBAAiB;AAAA,MAAA,WACrE,SAAS,eAAe,oBAAoB;AAC1C,mBAAA,2BAA2B,SAAS,eAAe,kBAAkB;AAAA,MAAA;AAE3E,aAAA;AAAA,IAAA;AAET,QACE,SAAS,qBACT,SAAS,sBAAsB,uBAC/B;AACA,aAAO,SAAS;AAAA,IAAA;AAEd,QAAA,SAAS,eAAe,SAAS,GAAG;AACtC,YAAM,cAA6C,CAAC;AACzC,iBAAA,YAAY,SAAS,gBAAgB;AAC9C,YAAI,CAAC,YAAY,SAAS,OAAO,GAAG;AACtB,sBAAA,SAAS,OAAO,IAAI,CAAC;AAAA,QAAA;AAEnC,oBAAY,SAAS,OAAO,EAAE,KAAK,QAAQ;AAAA,MAAA;AAE7C,YAAM,iBAAiB,CAAC;AACxB,iBAAW,CAAC,SAAS,SAAS,KAAK,OAAO,QAAQ,WAAW,GAAG;AAC9D,cAAM,eAAe,UAClB,OAAO,OAAK,EAAE,SAAS,CAAC,EACxB,IAAI,OAAK,GAAG,EAAE,SAAS,KAAK,KAAK,IAAI,EAAE,MAAM,CAAC,GAAG;AACpD,cAAM,iBAAiB,UACpB,OAAO,CAAK,MAAA,EAAE,SAAS,CAAC,EACxB,IAAI,CAAA,MAAK,GAAG,EAAE,SAAS,KAAK,EAAE,MAAM,GAAG;AAC1C,YAAI,aAAa,SAAS,KAAK,eAAe,SAAS,GAAG;AACzC,yBAAA;AAAA,YACb,qBAAqB,OAAO,SAAS,aAAa;AAAA,cAChD;AAAA,YACD,CAAA,OAAO,eAAe,KAAK,IAAI,CAAC;AAAA,UACnC;AAAA,QAAA,WACS,eAAe,SAAS,GAAG;AACrB,yBAAA;AAAA,YACb,SAAS,OAAO,gBAAgB,eAAe,KAAK,IAAI,CAAC;AAAA,UAC3D;AAAA,QAAA,WACS,aAAa,SAAS,GAAG;AACnB,yBAAA;AAAA,YACb,SAAS,OAAO,cAAc,aAAa,KAAK,IAAI,CAAC;AAAA,UACvD;AAAA,QAAA;AAAA,MACF;AAEF,UAAI,eAAe,SAAS,EAAU,QAAA,eAAe,KAAK,IAAI;AAAA,IAAA;AAGzD,WAAA;AAAA,EAAA;AAEX;"}
@@ -472,7 +472,11 @@ class HCS {
472
472
  elements.forEach((element) => {
473
473
  const order = parseInt(element.getAttribute("data-load-order") || "") || Infinity;
474
474
  loadPromises.push(
475
- this.loadResource(element, type, order)
475
+ this.loadResource(
476
+ element,
477
+ type,
478
+ order
479
+ )
476
480
  );
477
481
  });
478
482
  });