@hashgraphonline/standards-sdk 0.1.157 → 0.1.158

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 (263) hide show
  1. package/dist/cjs/hcs-12/validation/schemas.d.ts +2 -2
  2. package/dist/cjs/hcs-17/types.d.ts +4 -4
  3. package/dist/cjs/hcs-2/types.d.ts +20 -20
  4. package/dist/cjs/hcs-20/types.d.ts +8 -8
  5. package/dist/cjs/hcs-26/base-client.d.ts +83 -0
  6. package/dist/cjs/hcs-26/base-client.d.ts.map +1 -0
  7. package/dist/cjs/hcs-26/browser.d.ts +11 -0
  8. package/dist/cjs/hcs-26/browser.d.ts.map +1 -0
  9. package/dist/cjs/hcs-26/index.d.ts +7 -0
  10. package/dist/cjs/hcs-26/index.d.ts.map +1 -0
  11. package/dist/cjs/hcs-26/memos.d.ts +28 -0
  12. package/dist/cjs/hcs-26/memos.d.ts.map +1 -0
  13. package/dist/cjs/hcs-26/resolver.d.ts +60 -0
  14. package/dist/cjs/hcs-26/resolver.d.ts.map +1 -0
  15. package/dist/cjs/hcs-26/sdk.d.ts +10 -0
  16. package/dist/cjs/hcs-26/sdk.d.ts.map +1 -0
  17. package/dist/cjs/hcs-26/types.d.ts +2752 -0
  18. package/dist/cjs/hcs-26/types.d.ts.map +1 -0
  19. package/dist/cjs/index.d.ts +1 -0
  20. package/dist/cjs/index.d.ts.map +1 -1
  21. package/dist/cjs/inscribe/inscriber.d.ts.map +1 -1
  22. package/dist/cjs/services/registry-broker/client/base-client.d.ts +19 -1
  23. package/dist/cjs/services/registry-broker/client/base-client.d.ts.map +1 -1
  24. package/dist/cjs/services/registry-broker/client/skills.d.ts +20 -1
  25. package/dist/cjs/services/registry-broker/client/skills.d.ts.map +1 -1
  26. package/dist/cjs/services/registry-broker/schemas.d.ts +2515 -86
  27. package/dist/cjs/services/registry-broker/schemas.d.ts.map +1 -1
  28. package/dist/cjs/services/registry-broker/types.d.ts +21 -3
  29. package/dist/cjs/services/registry-broker/types.d.ts.map +1 -1
  30. package/dist/cjs/services/types.d.ts +2 -1
  31. package/dist/cjs/services/types.d.ts.map +1 -1
  32. package/dist/cjs/standards-sdk.cjs +2 -2
  33. package/dist/cjs/standards-sdk.cjs.map +1 -1
  34. package/dist/cjs/utils/crypto-abstraction.d.ts.map +1 -1
  35. package/dist/es/hcs-12/validation/schemas.d.ts +2 -2
  36. package/dist/es/hcs-17/types.d.ts +4 -4
  37. package/dist/es/hcs-2/types.d.ts +20 -20
  38. package/dist/es/hcs-20/types.d.ts +8 -8
  39. package/dist/es/hcs-26/base-client.d.ts +83 -0
  40. package/dist/es/hcs-26/base-client.d.ts.map +1 -0
  41. package/dist/es/hcs-26/browser.d.ts +11 -0
  42. package/dist/es/hcs-26/browser.d.ts.map +1 -0
  43. package/dist/es/hcs-26/index.d.ts +7 -0
  44. package/dist/es/hcs-26/index.d.ts.map +1 -0
  45. package/dist/es/hcs-26/memos.d.ts +28 -0
  46. package/dist/es/hcs-26/memos.d.ts.map +1 -0
  47. package/dist/es/hcs-26/resolver.d.ts +60 -0
  48. package/dist/es/hcs-26/resolver.d.ts.map +1 -0
  49. package/dist/es/hcs-26/sdk.d.ts +10 -0
  50. package/dist/es/hcs-26/sdk.d.ts.map +1 -0
  51. package/dist/es/hcs-26/types.d.ts +2752 -0
  52. package/dist/es/hcs-26/types.d.ts.map +1 -0
  53. package/dist/es/index.d.ts +1 -0
  54. package/dist/es/index.d.ts.map +1 -1
  55. package/dist/es/inscribe/inscriber.d.ts.map +1 -1
  56. package/dist/es/services/registry-broker/client/base-client.d.ts +19 -1
  57. package/dist/es/services/registry-broker/client/base-client.d.ts.map +1 -1
  58. package/dist/es/services/registry-broker/client/skills.d.ts +20 -1
  59. package/dist/es/services/registry-broker/client/skills.d.ts.map +1 -1
  60. package/dist/es/services/registry-broker/schemas.d.ts +2515 -86
  61. package/dist/es/services/registry-broker/schemas.d.ts.map +1 -1
  62. package/dist/es/services/registry-broker/types.d.ts +21 -3
  63. package/dist/es/services/registry-broker/types.d.ts.map +1 -1
  64. package/dist/es/services/types.d.ts +2 -1
  65. package/dist/es/services/types.d.ts.map +1 -1
  66. package/dist/es/standards-sdk.es.js +70 -32
  67. package/dist/es/standards-sdk.es.js.map +1 -1
  68. package/dist/es/standards-sdk.es101.js +2 -2
  69. package/dist/es/standards-sdk.es103.js +1 -1
  70. package/dist/es/standards-sdk.es104.js +2 -2
  71. package/dist/es/standards-sdk.es105.js +247 -137
  72. package/dist/es/standards-sdk.es105.js.map +1 -1
  73. package/dist/es/standards-sdk.es106.js +477 -28
  74. package/dist/es/standards-sdk.es106.js.map +1 -1
  75. package/dist/es/standards-sdk.es107.js +103 -20
  76. package/dist/es/standards-sdk.es107.js.map +1 -1
  77. package/dist/es/standards-sdk.es108.js +141 -141
  78. package/dist/es/standards-sdk.es108.js.map +1 -1
  79. package/dist/es/standards-sdk.es109.js +31 -200
  80. package/dist/es/standards-sdk.es109.js.map +1 -1
  81. package/dist/es/standards-sdk.es11.js +1 -1
  82. package/dist/es/standards-sdk.es110.js +9 -787
  83. package/dist/es/standards-sdk.es110.js.map +1 -1
  84. package/dist/es/standards-sdk.es111.js +140 -11
  85. package/dist/es/standards-sdk.es111.js.map +1 -1
  86. package/dist/es/standards-sdk.es112.js +29 -567
  87. package/dist/es/standards-sdk.es112.js.map +1 -1
  88. package/dist/es/standards-sdk.es113.js +17 -597
  89. package/dist/es/standards-sdk.es113.js.map +1 -1
  90. package/dist/es/standards-sdk.es114.js +159 -12
  91. package/dist/es/standards-sdk.es114.js.map +1 -1
  92. package/dist/es/standards-sdk.es115.js +203 -2
  93. package/dist/es/standards-sdk.es115.js.map +1 -1
  94. package/dist/es/standards-sdk.es116.js +774 -71
  95. package/dist/es/standards-sdk.es116.js.map +1 -1
  96. package/dist/es/standards-sdk.es117.js +11 -38
  97. package/dist/es/standards-sdk.es117.js.map +1 -1
  98. package/dist/es/standards-sdk.es118.js +567 -2
  99. package/dist/es/standards-sdk.es118.js.map +1 -1
  100. package/dist/es/standards-sdk.es119.js +576 -205
  101. package/dist/es/standards-sdk.es119.js.map +1 -1
  102. package/dist/es/standards-sdk.es12.js +1 -1
  103. package/dist/es/standards-sdk.es120.js +12 -1139
  104. package/dist/es/standards-sdk.es120.js.map +1 -1
  105. package/dist/es/standards-sdk.es121.js +2 -306
  106. package/dist/es/standards-sdk.es121.js.map +1 -1
  107. package/dist/es/standards-sdk.es122.js +83 -418
  108. package/dist/es/standards-sdk.es122.js.map +1 -1
  109. package/dist/es/standards-sdk.es123.js +36 -351
  110. package/dist/es/standards-sdk.es123.js.map +1 -1
  111. package/dist/es/standards-sdk.es124.js +2 -1117
  112. package/dist/es/standards-sdk.es124.js.map +1 -1
  113. package/dist/es/standards-sdk.es125.js +215 -188
  114. package/dist/es/standards-sdk.es125.js.map +1 -1
  115. package/dist/es/standards-sdk.es126.js +1055 -1482
  116. package/dist/es/standards-sdk.es126.js.map +1 -1
  117. package/dist/es/standards-sdk.es127.js +306 -1138
  118. package/dist/es/standards-sdk.es127.js.map +1 -1
  119. package/dist/es/standards-sdk.es128.js +419 -14
  120. package/dist/es/standards-sdk.es128.js.map +1 -1
  121. package/dist/es/standards-sdk.es129.js +350 -82
  122. package/dist/es/standards-sdk.es129.js.map +1 -1
  123. package/dist/es/standards-sdk.es13.js +1 -1
  124. package/dist/es/standards-sdk.es130.js +1119 -72
  125. package/dist/es/standards-sdk.es130.js.map +1 -1
  126. package/dist/es/standards-sdk.es131.js +181 -845
  127. package/dist/es/standards-sdk.es131.js.map +1 -1
  128. package/dist/es/standards-sdk.es132.js +1558 -51
  129. package/dist/es/standards-sdk.es132.js.map +1 -1
  130. package/dist/es/standards-sdk.es133.js +1236 -159
  131. package/dist/es/standards-sdk.es133.js.map +1 -1
  132. package/dist/es/standards-sdk.es134.js +17 -7
  133. package/dist/es/standards-sdk.es134.js.map +1 -1
  134. package/dist/es/standards-sdk.es135.js +79 -78
  135. package/dist/es/standards-sdk.es135.js.map +1 -1
  136. package/dist/es/standards-sdk.es136.js +75 -59
  137. package/dist/es/standards-sdk.es136.js.map +1 -1
  138. package/dist/es/standards-sdk.es137.js +893 -30
  139. package/dist/es/standards-sdk.es137.js.map +1 -1
  140. package/dist/es/standards-sdk.es138.js +60 -34
  141. package/dist/es/standards-sdk.es138.js.map +1 -1
  142. package/dist/es/standards-sdk.es139.js +159 -28
  143. package/dist/es/standards-sdk.es139.js.map +1 -1
  144. package/dist/es/standards-sdk.es14.js +1 -1
  145. package/dist/es/standards-sdk.es140.js +7 -138
  146. package/dist/es/standards-sdk.es140.js.map +1 -1
  147. package/dist/es/standards-sdk.es141.js +80 -36
  148. package/dist/es/standards-sdk.es141.js.map +1 -1
  149. package/dist/es/standards-sdk.es142.js +58 -49
  150. package/dist/es/standards-sdk.es142.js.map +1 -1
  151. package/dist/es/standards-sdk.es143.js +30 -84
  152. package/dist/es/standards-sdk.es143.js.map +1 -1
  153. package/dist/es/standards-sdk.es144.js +34 -12320
  154. package/dist/es/standards-sdk.es144.js.map +1 -1
  155. package/dist/es/standards-sdk.es145.js +28 -17
  156. package/dist/es/standards-sdk.es145.js.map +1 -1
  157. package/dist/es/standards-sdk.es146.js +118 -152
  158. package/dist/es/standards-sdk.es146.js.map +1 -1
  159. package/dist/es/standards-sdk.es147.js +34 -314
  160. package/dist/es/standards-sdk.es147.js.map +1 -1
  161. package/dist/es/standards-sdk.es148.js +12266 -292
  162. package/dist/es/standards-sdk.es148.js.map +1 -1
  163. package/dist/es/standards-sdk.es149.js +55 -452
  164. package/dist/es/standards-sdk.es149.js.map +1 -1
  165. package/dist/es/standards-sdk.es15.js +1 -1
  166. package/dist/es/standards-sdk.es150.js +70 -317
  167. package/dist/es/standards-sdk.es150.js.map +1 -1
  168. package/dist/es/standards-sdk.es151.js +15 -74
  169. package/dist/es/standards-sdk.es151.js.map +1 -1
  170. package/dist/es/standards-sdk.es152.js +220 -150
  171. package/dist/es/standards-sdk.es152.js.map +1 -1
  172. package/dist/es/standards-sdk.es153.js +164 -214
  173. package/dist/es/standards-sdk.es153.js.map +1 -1
  174. package/dist/es/standards-sdk.es154.js +302 -219
  175. package/dist/es/standards-sdk.es154.js.map +1 -1
  176. package/dist/es/standards-sdk.es155.js +339 -112
  177. package/dist/es/standards-sdk.es155.js.map +1 -1
  178. package/dist/es/standards-sdk.es156.js +442 -115
  179. package/dist/es/standards-sdk.es156.js.map +1 -1
  180. package/dist/es/standards-sdk.es157.js +322 -152
  181. package/dist/es/standards-sdk.es157.js.map +1 -1
  182. package/dist/es/standards-sdk.es158.js +61 -170
  183. package/dist/es/standards-sdk.es158.js.map +1 -1
  184. package/dist/es/standards-sdk.es159.js +153 -120
  185. package/dist/es/standards-sdk.es159.js.map +1 -1
  186. package/dist/es/standards-sdk.es16.js +5 -5
  187. package/dist/es/standards-sdk.es160.js +178 -287
  188. package/dist/es/standards-sdk.es160.js.map +1 -1
  189. package/dist/es/standards-sdk.es161.js +218 -238
  190. package/dist/es/standards-sdk.es161.js.map +1 -1
  191. package/dist/es/standards-sdk.es162.js +75 -72
  192. package/dist/es/standards-sdk.es162.js.map +1 -1
  193. package/dist/es/standards-sdk.es163.js +105 -92
  194. package/dist/es/standards-sdk.es163.js.map +1 -1
  195. package/dist/es/standards-sdk.es164.js +164 -0
  196. package/dist/es/standards-sdk.es164.js.map +1 -0
  197. package/dist/es/standards-sdk.es165.js +188 -0
  198. package/dist/es/standards-sdk.es165.js.map +1 -0
  199. package/dist/es/standards-sdk.es166.js +142 -0
  200. package/dist/es/standards-sdk.es166.js.map +1 -0
  201. package/dist/es/standards-sdk.es167.js +334 -0
  202. package/dist/es/standards-sdk.es167.js.map +1 -0
  203. package/dist/es/standards-sdk.es168.js +262 -0
  204. package/dist/es/standards-sdk.es168.js.map +1 -0
  205. package/dist/es/standards-sdk.es169.js +119 -0
  206. package/dist/es/standards-sdk.es169.js.map +1 -0
  207. package/dist/es/standards-sdk.es18.js +12 -12
  208. package/dist/es/standards-sdk.es19.js +9 -9
  209. package/dist/es/standards-sdk.es2.js +2 -2
  210. package/dist/es/standards-sdk.es20.js +1 -1
  211. package/dist/es/standards-sdk.es21.js +1 -1
  212. package/dist/es/standards-sdk.es22.js +1 -1
  213. package/dist/es/standards-sdk.es23.js +1 -1
  214. package/dist/es/standards-sdk.es24.js +1 -1
  215. package/dist/es/standards-sdk.es25.js +1 -1
  216. package/dist/es/standards-sdk.es26.js +1 -1
  217. package/dist/es/standards-sdk.es27.js +12 -12
  218. package/dist/es/standards-sdk.es30.js +2 -2
  219. package/dist/es/standards-sdk.es31.js +4 -4
  220. package/dist/es/standards-sdk.es32.js +1 -1
  221. package/dist/es/standards-sdk.es35.js +6 -6
  222. package/dist/es/standards-sdk.es36.js +4 -4
  223. package/dist/es/standards-sdk.es37.js +2 -2
  224. package/dist/es/standards-sdk.es38.js +2 -2
  225. package/dist/es/standards-sdk.es39.js +1 -1
  226. package/dist/es/standards-sdk.es4.js +2 -2
  227. package/dist/es/standards-sdk.es40.js +1 -1
  228. package/dist/es/standards-sdk.es41.js +2 -2
  229. package/dist/es/standards-sdk.es46.js +1 -1
  230. package/dist/es/standards-sdk.es5.js +2 -2
  231. package/dist/es/standards-sdk.es51.js +1 -1
  232. package/dist/es/standards-sdk.es53.js +1 -1
  233. package/dist/es/standards-sdk.es56.js +2 -2
  234. package/dist/es/standards-sdk.es58.js +1 -1
  235. package/dist/es/standards-sdk.es59.js +1 -1
  236. package/dist/es/standards-sdk.es6.js +2 -2
  237. package/dist/es/standards-sdk.es60.js +7 -7
  238. package/dist/es/standards-sdk.es62.js +1 -1
  239. package/dist/es/standards-sdk.es64.js +2 -2
  240. package/dist/es/standards-sdk.es65.js +3 -3
  241. package/dist/es/standards-sdk.es68.js +2 -2
  242. package/dist/es/standards-sdk.es69.js +3 -3
  243. package/dist/es/standards-sdk.es7.js +1 -1
  244. package/dist/es/standards-sdk.es70.js +2 -2
  245. package/dist/es/standards-sdk.es71.js +1 -1
  246. package/dist/es/standards-sdk.es74.js +2 -2
  247. package/dist/es/standards-sdk.es76.js +2 -2
  248. package/dist/es/standards-sdk.es77.js +4 -4
  249. package/dist/es/standards-sdk.es78.js +1 -1
  250. package/dist/es/standards-sdk.es81.js +1 -1
  251. package/dist/es/standards-sdk.es82.js +2 -2
  252. package/dist/es/standards-sdk.es83.js +4 -4
  253. package/dist/es/standards-sdk.es87.js +3 -3
  254. package/dist/es/standards-sdk.es89.js +2 -2
  255. package/dist/es/standards-sdk.es9.js +2 -2
  256. package/dist/es/standards-sdk.es91.js +1 -1
  257. package/dist/es/standards-sdk.es92.js +3 -3
  258. package/dist/es/standards-sdk.es94.js +2 -2
  259. package/dist/es/standards-sdk.es96.js +2 -2
  260. package/dist/es/standards-sdk.es97.js +1 -1
  261. package/dist/es/standards-sdk.es99.js +1 -1
  262. package/dist/es/utils/crypto-abstraction.d.ts.map +1 -1
  263. package/package.json +4 -3
@@ -1,20 +1,31 @@
1
- import { Logger } from "./standards-sdk.es105.js";
2
- import { HederaMirrorNode } from "./standards-sdk.es126.js";
3
- class HCS5BaseClient {
4
- /**
5
- * Create a new HCS-5 base client
6
- */
7
- constructor(config) {
8
- this.network = config.network;
9
- this.logger = config.logger || Logger.getInstance({
10
- level: config.logLevel || "info",
11
- module: "HCS5Client",
12
- silent: config.silent
13
- });
14
- this.mirrorNode = new HederaMirrorNode(this.network, this.logger);
15
- }
16
- }
1
+ import { CanonicalAgentDataSchema, HCS14_PROTOCOL_REGEX } from "./standards-sdk.es54.js";
2
+ import { canonicalizeAgentData } from "./standards-sdk.es55.js";
3
+ import { createUaid, parseHcs14Did } from "./standards-sdk.es56.js";
4
+ import { isEip155Caip10, isHederaCaip10, isHederaNetwork, parseHederaCaip10, toEip155Caip10, toHederaCaip10 } from "./standards-sdk.es57.js";
5
+ import { ResolverRegistry, defaultResolverRegistry, registerDefaultResolvers } from "./standards-sdk.es58.js";
6
+ import { HieroDidResolver } from "./standards-sdk.es59.js";
7
+ import { HCS14Client } from "./standards-sdk.es60.js";
8
+ import { IssuerRegistry, defaultIssuerRegistry } from "./standards-sdk.es61.js";
9
+ import { HederaHieroIssuer } from "./standards-sdk.es62.js";
17
10
  export {
18
- HCS5BaseClient
11
+ CanonicalAgentDataSchema,
12
+ HCS14Client,
13
+ HCS14_PROTOCOL_REGEX,
14
+ HederaHieroIssuer,
15
+ HieroDidResolver,
16
+ IssuerRegistry,
17
+ ResolverRegistry,
18
+ canonicalizeAgentData,
19
+ createUaid,
20
+ defaultIssuerRegistry,
21
+ defaultResolverRegistry,
22
+ isEip155Caip10,
23
+ isHederaCaip10,
24
+ isHederaNetwork,
25
+ parseHcs14Did,
26
+ parseHederaCaip10,
27
+ registerDefaultResolvers,
28
+ toEip155Caip10,
29
+ toHederaCaip10
19
30
  };
20
31
  //# sourceMappingURL=standards-sdk.es145.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"standards-sdk.es145.js","sources":["../../src/hcs-5/base-client.ts"],"sourcesContent":["import { Logger, ILogger } from '../utils/logger';\nimport { HederaMirrorNode } from '../services/mirror-node';\nimport { HCS5ClientConfig } from './types';\nimport { NetworkType } from '../utils/types';\n\n/**\n * Base client for HCS-5 operations\n */\nexport abstract class HCS5BaseClient {\n protected logger: ILogger;\n protected mirrorNode: HederaMirrorNode;\n protected network: NetworkType;\n\n /**\n * Create a new HCS-5 base client\n */\n constructor(config: HCS5ClientConfig) {\n this.network = config.network;\n this.logger =\n config.logger ||\n Logger.getInstance({\n level: config.logLevel || 'info',\n module: 'HCS5Client',\n silent: config.silent,\n });\n\n this.mirrorNode = new HederaMirrorNode(this.network, this.logger);\n }\n}\n"],"names":[],"mappings":";;AAQO,MAAe,eAAe;AAAA;AAAA;AAAA;AAAA,EAQnC,YAAY,QAA0B;AACpC,SAAK,UAAU,OAAO;AACtB,SAAK,SACH,OAAO,UACP,OAAO,YAAY;AAAA,MACjB,OAAO,OAAO,YAAY;AAAA,MAC1B,QAAQ;AAAA,MACR,QAAQ,OAAO;AAAA,IAAA,CAChB;AAEH,SAAK,aAAa,IAAI,iBAAiB,KAAK,SAAS,KAAK,MAAM;AAAA,EAClE;AACF;"}
1
+ {"version":3,"file":"standards-sdk.es145.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;"}
@@ -1,175 +1,141 @@
1
- import { Long, AccountId } from "@hashgraph/sdk";
2
- import { parseKey } from "./standards-sdk.es151.js";
3
- import { Buffer } from "buffer";
4
- class HCSParser {
5
- static parseConsensusCreateTopic(body) {
6
- if (!body) return void 0;
7
- const data = {};
8
- if (body.memo) {
9
- data.memo = body.memo;
10
- }
11
- data.adminKey = parseKey(body.adminKey);
12
- data.submitKey = parseKey(body.submitKey);
13
- if (body.autoRenewPeriod?.seconds) {
14
- data.autoRenewPeriod = Long.fromValue(
15
- body.autoRenewPeriod.seconds
16
- ).toString();
17
- }
18
- if (body.autoRenewAccount) {
19
- data.autoRenewAccountId = new AccountId(
20
- body.autoRenewAccount.shardNum ?? 0,
21
- body.autoRenewAccount.realmNum ?? 0,
22
- body.autoRenewAccount.accountNum ?? 0
23
- ).toString();
24
- }
25
- return data;
1
+ import { AccountId, Client, PrivateKey } from "@hashgraph/sdk";
2
+ import { detectKeyTypeFromString } from "./standards-sdk.es119.js";
3
+ class NodeOperatorResolver {
4
+ constructor(params) {
5
+ this.mirror = params.mirrorNode;
6
+ this.logger = params.logger;
26
7
  }
27
- static parseConsensusSubmitMessage(body) {
28
- if (!body) return void 0;
29
- const data = {};
30
- if (body.topicID) {
31
- data.topicId = `${body.topicID.shardNum ?? 0}.${body.topicID.realmNum ?? 0}.${body.topicID.topicNum ?? 0}`;
8
+ /**
9
+ * Best-guess parsing for an operator key without network calls.
10
+ * - If PrivateKey: returns immediately with provided or fallback type.
11
+ * - If string with explicitType: parse directly.
12
+ * - If string without type: detect format; fallback to ECDSA.
13
+ */
14
+ bestGuessOperatorKey(operatorKeyInput, explicitType) {
15
+ if (typeof operatorKeyInput !== "string") {
16
+ return { keyType: explicitType || "ecdsa", privateKey: operatorKeyInput };
32
17
  }
33
- if (body.message?.length > 0) {
34
- const messageBuffer = Buffer.from(body.message);
35
- const utf8String = messageBuffer.toString("utf8");
36
- if (/[\x00-\x08\x0B\x0E-\x1F\x7F]/.test(utf8String) || utf8String.includes("�")) {
37
- data.message = messageBuffer.toString("base64");
38
- data.messageEncoding = "base64";
39
- } else {
40
- data.message = utf8String;
41
- data.messageEncoding = "utf8";
42
- }
18
+ if (explicitType) {
19
+ const pk = explicitType === "ed25519" ? PrivateKey.fromStringED25519(operatorKeyInput) : PrivateKey.fromStringECDSA(operatorKeyInput);
20
+ return { keyType: explicitType, privateKey: pk };
43
21
  }
44
- if (body.chunkInfo) {
45
- if (body.chunkInfo.initialTransactionID) {
46
- const txId = body.chunkInfo.initialTransactionID.accountID;
47
- const taValidStart = body.chunkInfo.initialTransactionID.transactionValidStart;
48
- if (txId && taValidStart) {
49
- data.chunkInfoInitialTransactionID = `${txId.shardNum ?? 0}.${txId.realmNum ?? 0}.${txId.accountNum ?? 0}@${taValidStart.seconds ?? 0}.${taValidStart.nanos ?? 0}`;
50
- }
51
- }
52
- if (body.chunkInfo.number !== void 0 && body.chunkInfo.number !== null) {
53
- data.chunkInfoNumber = body.chunkInfo.number;
54
- }
55
- if (body.chunkInfo.total !== void 0 && body.chunkInfo.total !== null) {
56
- data.chunkInfoTotal = body.chunkInfo.total;
57
- }
22
+ try {
23
+ const detected = detectKeyTypeFromString(operatorKeyInput);
24
+ return {
25
+ keyType: detected.detectedType,
26
+ privateKey: detected.privateKey
27
+ };
28
+ } catch {
29
+ return {
30
+ keyType: "ecdsa",
31
+ privateKey: PrivateKey.fromStringECDSA(operatorKeyInput)
32
+ };
58
33
  }
59
- return data;
60
34
  }
61
- static parseConsensusUpdateTopic(body) {
62
- if (!body) return void 0;
63
- const data = {};
64
- if (body.topicID) {
65
- data.topicId = `${body.topicID.shardNum}.${body.topicID.realmNum}.${body.topicID.topicNum}`;
66
- }
67
- if (body.memo?.value !== void 0) {
68
- data.memo = body.memo.value;
69
- }
70
- if (body.adminKey === null) {
71
- data.clearAdminKey = true;
72
- data.adminKey = void 0;
73
- } else if (body.adminKey) {
74
- data.adminKey = parseKey(body.adminKey);
75
- } else {
76
- data.adminKey = void 0;
77
- }
78
- if (body.submitKey === null) {
79
- data.clearSubmitKey = true;
80
- data.submitKey = void 0;
81
- } else if (body.submitKey) {
82
- data.submitKey = parseKey(body.submitKey);
83
- } else {
84
- data.submitKey = void 0;
85
- }
86
- if (body.autoRenewPeriod?.seconds) {
87
- data.autoRenewPeriod = Long.fromValue(
88
- body.autoRenewPeriod.seconds
89
- ).toString();
35
+ /**
36
+ * Resolve an operator key using Mirror Node for key type when possible.
37
+ * - If PrivateKey: return immediately.
38
+ * - If explicitType: parse directly.
39
+ * - Else: query Mirror Node; fallback to local detection.
40
+ */
41
+ async resolveOperatorKey(operatorId, operatorKeyInput, explicitType) {
42
+ if (typeof operatorKeyInput !== "string") {
43
+ return { keyType: explicitType || "ecdsa", privateKey: operatorKeyInput };
90
44
  }
91
- if (body.autoRenewAccount) {
92
- data.autoRenewAccountId = new AccountId(
93
- body.autoRenewAccount.shardNum ?? 0,
94
- body.autoRenewAccount.realmNum ?? 0,
95
- body.autoRenewAccount.accountNum ?? 0
96
- ).toString();
45
+ if (explicitType) {
46
+ const pk = explicitType === "ed25519" ? PrivateKey.fromStringED25519(operatorKeyInput) : PrivateKey.fromStringECDSA(operatorKeyInput);
47
+ return { keyType: explicitType, privateKey: pk };
97
48
  }
98
- return data;
99
- }
100
- static parseConsensusDeleteTopic(body) {
101
- if (!body) return void 0;
102
- const data = {};
103
- if (body.topicID) {
104
- data.topicId = `${body.topicID.shardNum}.${body.topicID.realmNum ?? 0}.${body.topicID.topicNum ?? 0}`;
49
+ const account = typeof operatorId === "string" ? operatorId : operatorId.toString();
50
+ try {
51
+ const info = await this.mirror.requestAccount(account);
52
+ const t = info?.key?._type || "";
53
+ const keyType = t.includes("ED25519") ? "ed25519" : "ecdsa";
54
+ const privateKey = keyType === "ed25519" ? PrivateKey.fromStringED25519(operatorKeyInput) : PrivateKey.fromStringECDSA(operatorKeyInput);
55
+ return { keyType, privateKey };
56
+ } catch {
57
+ this.logger.warn(
58
+ "Mirror node key detection failed; using local detection or default ECDSA"
59
+ );
60
+ return this.bestGuessOperatorKey(operatorKeyInput);
105
61
  }
106
- return data;
107
62
  }
108
63
  /**
109
- * Parse HCS transaction from Transaction object with comprehensive extraction
110
- * This is the unified entry point that handles both protobuf and internal field extraction
64
+ * Resolve a supply key for the given token using Mirror Node token supply_key._type when possible.
111
65
  */
112
- static parseFromTransactionObject(transaction) {
66
+ async resolveSupplyKey(tokenId, keyInput, fallbackType, explicitType) {
113
67
  try {
114
- const transactionBody = transaction._transactionBody;
115
- if (!transactionBody) {
116
- return {};
68
+ const info = await this.mirror.getTokenInfo(tokenId);
69
+ const t = info?.supply_key?._type || "";
70
+ if (typeof keyInput !== "string") {
71
+ return keyInput;
117
72
  }
118
- if (transactionBody.consensusCreateTopic) {
119
- const consensusCreateTopic = this.parseConsensusCreateTopic(
120
- transactionBody.consensusCreateTopic
121
- );
122
- if (consensusCreateTopic) {
123
- return {
124
- type: "TOPICCREATE",
125
- humanReadableType: "Topic Create",
126
- consensusCreateTopic
127
- };
128
- }
73
+ if (explicitType) {
74
+ return explicitType === "ed25519" ? PrivateKey.fromStringED25519(keyInput) : PrivateKey.fromStringECDSA(keyInput);
129
75
  }
130
- if (transactionBody.consensusSubmitMessage) {
131
- const consensusSubmitMessage = this.parseConsensusSubmitMessage(
132
- transactionBody.consensusSubmitMessage
133
- );
134
- if (consensusSubmitMessage) {
135
- return {
136
- type: "CONSENSUSSUBMITMESSAGE",
137
- humanReadableType: "Submit Message",
138
- consensusSubmitMessage
139
- };
140
- }
76
+ if (t.includes("ED25519")) {
77
+ return PrivateKey.fromStringED25519(keyInput);
141
78
  }
142
- if (transactionBody.consensusUpdateTopic) {
143
- const consensusUpdateTopic = this.parseConsensusUpdateTopic(
144
- transactionBody.consensusUpdateTopic
145
- );
146
- if (consensusUpdateTopic) {
147
- return {
148
- type: "TOPICUPDATE",
149
- humanReadableType: "Topic Update",
150
- consensusUpdateTopic
151
- };
152
- }
79
+ if (t.includes("ECDSA")) {
80
+ return PrivateKey.fromStringECDSA(keyInput);
153
81
  }
154
- if (transactionBody.consensusDeleteTopic) {
155
- const consensusDeleteTopic = this.parseConsensusDeleteTopic(
156
- transactionBody.consensusDeleteTopic
157
- );
158
- if (consensusDeleteTopic) {
159
- return {
160
- type: "TOPICDELETE",
161
- humanReadableType: "Topic Delete",
162
- consensusDeleteTopic
163
- };
164
- }
82
+ return fallbackType === "ed25519" ? PrivateKey.fromStringED25519(keyInput) : PrivateKey.fromStringECDSA(keyInput);
83
+ } catch {
84
+ if (typeof keyInput !== "string") {
85
+ return keyInput;
165
86
  }
166
- return {};
167
- } catch (error) {
168
- return {};
87
+ if (explicitType) {
88
+ return explicitType === "ed25519" ? PrivateKey.fromStringED25519(keyInput) : PrivateKey.fromStringECDSA(keyInput);
89
+ }
90
+ return fallbackType === "ed25519" ? PrivateKey.fromStringED25519(keyInput) : PrivateKey.fromStringECDSA(keyInput);
169
91
  }
170
92
  }
171
93
  }
94
+ function createNodeOperatorContext(params) {
95
+ const operatorId = typeof params.operatorId === "string" ? AccountId.fromString(params.operatorId) : params.operatorId;
96
+ const client = params.client ? params.client : params.network === "mainnet" ? Client.forMainnet() : Client.forTestnet();
97
+ const resolver = new NodeOperatorResolver({
98
+ mirrorNode: params.mirrorNode,
99
+ logger: params.logger
100
+ });
101
+ let currentKeyType;
102
+ let currentPrivateKey;
103
+ const guess = resolver.bestGuessOperatorKey(
104
+ params.operatorKey,
105
+ params.keyType
106
+ );
107
+ currentKeyType = guess.keyType;
108
+ currentPrivateKey = guess.privateKey;
109
+ client.setOperator(operatorId.toString(), currentPrivateKey);
110
+ const initPromise = (async () => {
111
+ try {
112
+ const resolved = await resolver.resolveOperatorKey(
113
+ operatorId,
114
+ params.operatorKey,
115
+ params.keyType
116
+ );
117
+ currentKeyType = resolved.keyType;
118
+ currentPrivateKey = resolved.privateKey;
119
+ client.setOperator(operatorId.toString(), currentPrivateKey);
120
+ } catch {
121
+ }
122
+ })();
123
+ return {
124
+ client,
125
+ operatorId,
126
+ get operatorKey() {
127
+ return currentPrivateKey;
128
+ },
129
+ get keyType() {
130
+ return currentKeyType;
131
+ },
132
+ ensureInitialized: async () => {
133
+ await initPromise;
134
+ }
135
+ };
136
+ }
172
137
  export {
173
- HCSParser
138
+ NodeOperatorResolver,
139
+ createNodeOperatorContext
174
140
  };
175
141
  //# sourceMappingURL=standards-sdk.es146.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"standards-sdk.es146.js","sources":["../../src/utils/parsers/hcs-parser.ts"],"sourcesContent":["import { proto } from '@hashgraph/proto';\nimport { AccountId, Long, Transaction } from '@hashgraph/sdk';\nimport {\n ConsensusCreateTopicData,\n ConsensusSubmitMessageData,\n ConsensusUpdateTopicData,\n ConsensusDeleteTopicData,\n} from '../transaction-parser-types';\nimport { parseKey } from './parser-utils';\nimport { Buffer } from 'buffer';\n\nexport class HCSParser {\n static parseConsensusCreateTopic(\n body: proto.IConsensusCreateTopicTransactionBody,\n ): ConsensusCreateTopicData | undefined {\n if (!body) return undefined;\n const data: ConsensusCreateTopicData = {};\n if (body.memo) {\n data.memo = body.memo;\n }\n data.adminKey = parseKey(body.adminKey);\n data.submitKey = parseKey(body.submitKey);\n if (body.autoRenewPeriod?.seconds) {\n data.autoRenewPeriod = Long.fromValue(\n body.autoRenewPeriod.seconds,\n ).toString();\n }\n if (body.autoRenewAccount) {\n data.autoRenewAccountId = new AccountId(\n body.autoRenewAccount.shardNum ?? 0,\n body.autoRenewAccount.realmNum ?? 0,\n body.autoRenewAccount.accountNum ?? 0,\n ).toString();\n }\n return data;\n }\n\n static parseConsensusSubmitMessage(\n body: proto.IConsensusSubmitMessageTransactionBody,\n ): ConsensusSubmitMessageData | undefined {\n if (!body) return undefined;\n const data: ConsensusSubmitMessageData = {};\n if (body.topicID) {\n data.topicId = `${body.topicID.shardNum ?? 0}.${\n body.topicID.realmNum ?? 0\n }.${body.topicID.topicNum ?? 0}`;\n }\n if (body.message?.length > 0) {\n const messageBuffer = Buffer.from(body.message);\n const utf8String = messageBuffer.toString('utf8');\n if (\n /[\\x00-\\x08\\x0B\\x0E-\\x1F\\x7F]/.test(utf8String) ||\n utf8String.includes('\\uFFFD')\n ) {\n data.message = messageBuffer.toString('base64');\n data.messageEncoding = 'base64';\n } else {\n data.message = utf8String;\n data.messageEncoding = 'utf8';\n }\n }\n if (body.chunkInfo) {\n if (body.chunkInfo.initialTransactionID) {\n const txId = body.chunkInfo.initialTransactionID.accountID;\n const taValidStart =\n body.chunkInfo.initialTransactionID.transactionValidStart;\n if (txId && taValidStart) {\n data.chunkInfoInitialTransactionID = `${txId.shardNum ?? 0}.${\n txId.realmNum ?? 0\n }.${txId.accountNum ?? 0}@${taValidStart.seconds ?? 0}.${\n taValidStart.nanos ?? 0\n }`;\n }\n }\n if (\n body.chunkInfo.number !== undefined &&\n body.chunkInfo.number !== null\n ) {\n data.chunkInfoNumber = body.chunkInfo.number;\n }\n if (body.chunkInfo.total !== undefined && body.chunkInfo.total !== null) {\n data.chunkInfoTotal = body.chunkInfo.total;\n }\n }\n return data;\n }\n\n static parseConsensusUpdateTopic(\n body: proto.IConsensusUpdateTopicTransactionBody,\n ): ConsensusUpdateTopicData | undefined {\n if (!body) return undefined;\n const data: ConsensusUpdateTopicData = {};\n if (body.topicID) {\n data.topicId = `${body.topicID.shardNum}.${body.topicID.realmNum}.${body.topicID.topicNum}`;\n }\n if (body.memo?.value !== undefined) {\n data.memo = body.memo.value;\n }\n if (body.adminKey === null) {\n data.clearAdminKey = true;\n data.adminKey = undefined;\n } else if (body.adminKey) {\n data.adminKey = parseKey(body.adminKey);\n } else {\n data.adminKey = undefined;\n }\n if (body.submitKey === null) {\n data.clearSubmitKey = true;\n data.submitKey = undefined;\n } else if (body.submitKey) {\n data.submitKey = parseKey(body.submitKey);\n } else {\n data.submitKey = undefined;\n }\n if (body.autoRenewPeriod?.seconds) {\n data.autoRenewPeriod = Long.fromValue(\n body.autoRenewPeriod.seconds,\n ).toString();\n }\n if (body.autoRenewAccount) {\n data.autoRenewAccountId = new AccountId(\n body.autoRenewAccount.shardNum ?? 0,\n body.autoRenewAccount.realmNum ?? 0,\n body.autoRenewAccount.accountNum ?? 0,\n ).toString();\n }\n return data;\n }\n\n static parseConsensusDeleteTopic(\n body: proto.IConsensusDeleteTopicTransactionBody,\n ): ConsensusDeleteTopicData | undefined {\n if (!body) return undefined;\n const data: ConsensusDeleteTopicData = {};\n if (body.topicID) {\n data.topicId = `${body.topicID.shardNum}.${body.topicID.realmNum ?? 0}.${\n body.topicID.topicNum ?? 0\n }`;\n }\n return data;\n }\n\n /**\n * Parse HCS transaction from Transaction object with comprehensive extraction\n * This is the unified entry point that handles both protobuf and internal field extraction\n */\n static parseFromTransactionObject(transaction: Transaction): {\n type?: string;\n humanReadableType?: string;\n [key: string]: unknown;\n } {\n try {\n const transactionBody = (\n transaction as unknown as { _transactionBody?: unknown }\n )._transactionBody as proto.ITransactionBody | undefined;\n\n if (!transactionBody) {\n return {};\n }\n\n if (transactionBody.consensusCreateTopic) {\n const consensusCreateTopic = this.parseConsensusCreateTopic(\n transactionBody.consensusCreateTopic,\n );\n if (consensusCreateTopic) {\n return {\n type: 'TOPICCREATE',\n humanReadableType: 'Topic Create',\n consensusCreateTopic,\n };\n }\n }\n\n if (transactionBody.consensusSubmitMessage) {\n const consensusSubmitMessage = this.parseConsensusSubmitMessage(\n transactionBody.consensusSubmitMessage,\n );\n if (consensusSubmitMessage) {\n return {\n type: 'CONSENSUSSUBMITMESSAGE',\n humanReadableType: 'Submit Message',\n consensusSubmitMessage,\n };\n }\n }\n\n if (transactionBody.consensusUpdateTopic) {\n const consensusUpdateTopic = this.parseConsensusUpdateTopic(\n transactionBody.consensusUpdateTopic,\n );\n if (consensusUpdateTopic) {\n return {\n type: 'TOPICUPDATE',\n humanReadableType: 'Topic Update',\n consensusUpdateTopic,\n };\n }\n }\n\n if (transactionBody.consensusDeleteTopic) {\n const consensusDeleteTopic = this.parseConsensusDeleteTopic(\n transactionBody.consensusDeleteTopic,\n );\n if (consensusDeleteTopic) {\n return {\n type: 'TOPICDELETE',\n humanReadableType: 'Topic Delete',\n consensusDeleteTopic,\n };\n }\n }\n\n return {};\n } catch (error) {\n return {};\n }\n }\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"standards-sdk.es146.js","sources":["../../src/common/node-operator-resolver.ts"],"sourcesContent":["import { AccountId, Client, PrivateKey } from '@hashgraph/sdk';\nimport { HederaMirrorNode } from '../services/mirror-node';\nimport { ILogger } from '../utils/logger';\nimport { detectKeyTypeFromString } from '../utils/key-type-detector';\nimport { NetworkType } from '../utils/types';\n\n/**\n * Resolves operator and supply private keys using Mirror Node as source of truth\n * with format-detection fallbacks for string keys.\n */\nexport class NodeOperatorResolver {\n private readonly mirror: HederaMirrorNode;\n private readonly logger: ILogger;\n\n constructor(params: { mirrorNode: HederaMirrorNode; logger: ILogger }) {\n this.mirror = params.mirrorNode;\n this.logger = params.logger;\n }\n\n /**\n * Best-guess parsing for an operator key without network calls.\n * - If PrivateKey: returns immediately with provided or fallback type.\n * - If string with explicitType: parse directly.\n * - If string without type: detect format; fallback to ECDSA.\n */\n bestGuessOperatorKey(\n operatorKeyInput: string | PrivateKey,\n explicitType?: 'ed25519' | 'ecdsa',\n ): { keyType: 'ed25519' | 'ecdsa'; privateKey: PrivateKey } {\n if (typeof operatorKeyInput !== 'string') {\n return { keyType: explicitType || 'ecdsa', privateKey: operatorKeyInput };\n }\n if (explicitType) {\n const pk =\n explicitType === 'ed25519'\n ? PrivateKey.fromStringED25519(operatorKeyInput)\n : PrivateKey.fromStringECDSA(operatorKeyInput);\n return { keyType: explicitType, privateKey: pk };\n }\n try {\n const detected = detectKeyTypeFromString(operatorKeyInput);\n return {\n keyType: detected.detectedType,\n privateKey: detected.privateKey,\n };\n } catch {\n return {\n keyType: 'ecdsa',\n privateKey: PrivateKey.fromStringECDSA(operatorKeyInput),\n };\n }\n }\n\n /**\n * Resolve an operator key using Mirror Node for key type when possible.\n * - If PrivateKey: return immediately.\n * - If explicitType: parse directly.\n * - Else: query Mirror Node; fallback to local detection.\n */\n async resolveOperatorKey(\n operatorId: string | AccountId,\n operatorKeyInput: string | PrivateKey,\n explicitType?: 'ed25519' | 'ecdsa',\n ): Promise<{ keyType: 'ed25519' | 'ecdsa'; privateKey: PrivateKey }> {\n if (typeof operatorKeyInput !== 'string') {\n return { keyType: explicitType || 'ecdsa', privateKey: operatorKeyInput };\n }\n if (explicitType) {\n const pk =\n explicitType === 'ed25519'\n ? PrivateKey.fromStringED25519(operatorKeyInput)\n : PrivateKey.fromStringECDSA(operatorKeyInput);\n return { keyType: explicitType, privateKey: pk };\n }\n const account =\n typeof operatorId === 'string' ? operatorId : operatorId.toString();\n try {\n const info = await this.mirror.requestAccount(account);\n const t = info?.key?._type || '';\n const keyType: 'ed25519' | 'ecdsa' = t.includes('ED25519')\n ? 'ed25519'\n : 'ecdsa';\n const privateKey =\n keyType === 'ed25519'\n ? PrivateKey.fromStringED25519(operatorKeyInput)\n : PrivateKey.fromStringECDSA(operatorKeyInput);\n return { keyType, privateKey };\n } catch {\n this.logger.warn(\n 'Mirror node key detection failed; using local detection or default ECDSA',\n );\n return this.bestGuessOperatorKey(operatorKeyInput);\n }\n }\n\n /**\n * Resolve a supply key for the given token using Mirror Node token supply_key._type when possible.\n */\n async resolveSupplyKey(\n tokenId: string,\n keyInput: string | PrivateKey,\n fallbackType: 'ed25519' | 'ecdsa',\n explicitType?: 'ed25519' | 'ecdsa',\n ): Promise<PrivateKey> {\n try {\n const info = await this.mirror.getTokenInfo(tokenId);\n const t = info?.supply_key?._type || '';\n if (typeof keyInput !== 'string') {\n return keyInput;\n }\n if (explicitType) {\n return explicitType === 'ed25519'\n ? PrivateKey.fromStringED25519(keyInput)\n : PrivateKey.fromStringECDSA(keyInput);\n }\n if (t.includes('ED25519')) {\n return PrivateKey.fromStringED25519(keyInput);\n }\n if (t.includes('ECDSA')) {\n return PrivateKey.fromStringECDSA(keyInput);\n }\n return fallbackType === 'ed25519'\n ? PrivateKey.fromStringED25519(keyInput)\n : PrivateKey.fromStringECDSA(keyInput);\n } catch {\n if (typeof keyInput !== 'string') {\n return keyInput;\n }\n if (explicitType) {\n return explicitType === 'ed25519'\n ? PrivateKey.fromStringED25519(keyInput)\n : PrivateKey.fromStringECDSA(keyInput);\n }\n return fallbackType === 'ed25519'\n ? PrivateKey.fromStringED25519(keyInput)\n : PrivateKey.fromStringECDSA(keyInput);\n }\n }\n}\n\nexport interface NodeOperatorInitParams {\n network: NetworkType;\n operatorId: string | AccountId;\n operatorKey: string | PrivateKey;\n keyType?: 'ed25519' | 'ecdsa';\n mirrorNode: HederaMirrorNode;\n logger: ILogger;\n client?: Client;\n}\n\nexport interface NodeOperatorContext {\n client: Client;\n operatorId: AccountId;\n readonly operatorKey: PrivateKey;\n readonly keyType: 'ed25519' | 'ecdsa';\n ensureInitialized(): Promise<void>;\n}\n\nexport function createNodeOperatorContext(\n params: NodeOperatorInitParams,\n): NodeOperatorContext {\n const operatorId: AccountId =\n typeof params.operatorId === 'string'\n ? AccountId.fromString(params.operatorId)\n : params.operatorId;\n\n const client: Client = params.client\n ? params.client\n : params.network === 'mainnet'\n ? Client.forMainnet()\n : Client.forTestnet();\n\n const resolver = new NodeOperatorResolver({\n mirrorNode: params.mirrorNode,\n logger: params.logger,\n });\n\n let currentKeyType: 'ed25519' | 'ecdsa';\n let currentPrivateKey: PrivateKey;\n\n const guess = resolver.bestGuessOperatorKey(\n params.operatorKey,\n params.keyType,\n );\n currentKeyType = guess.keyType;\n currentPrivateKey = guess.privateKey;\n client.setOperator(operatorId.toString(), currentPrivateKey);\n\n const initPromise = (async () => {\n try {\n const resolved = await resolver.resolveOperatorKey(\n operatorId,\n params.operatorKey,\n params.keyType,\n );\n currentKeyType = resolved.keyType;\n currentPrivateKey = resolved.privateKey;\n client.setOperator(operatorId.toString(), currentPrivateKey);\n } catch {}\n })();\n\n return {\n client,\n operatorId,\n get operatorKey() {\n return currentPrivateKey;\n },\n get keyType() {\n return currentKeyType;\n },\n ensureInitialized: async () => {\n await initPromise;\n },\n };\n}\n"],"names":[],"mappings":"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"}