@hashgraphonline/standards-sdk 0.0.109 → 0.0.112-canary.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (360) hide show
  1. package/dist/cjs/fees/fee-config-builder.d.ts +115 -0
  2. package/dist/cjs/fees/fee-config-builder.d.ts.map +1 -0
  3. package/dist/cjs/fees/index.d.ts +3 -0
  4. package/dist/cjs/fees/index.d.ts.map +1 -0
  5. package/dist/cjs/fees/types.d.ts +26 -0
  6. package/dist/cjs/fees/types.d.ts.map +1 -0
  7. package/dist/cjs/hcs-10/base-client.d.ts +289 -0
  8. package/dist/cjs/hcs-10/base-client.d.ts.map +1 -0
  9. package/dist/cjs/hcs-10/browser.d.ts +126 -0
  10. package/dist/cjs/hcs-10/browser.d.ts.map +1 -0
  11. package/dist/cjs/hcs-10/connections-manager.d.ts +357 -0
  12. package/dist/cjs/hcs-10/connections-manager.d.ts.map +1 -0
  13. package/dist/cjs/hcs-10/errors.d.ts +14 -0
  14. package/dist/cjs/hcs-10/errors.d.ts.map +1 -0
  15. package/dist/cjs/hcs-10/index.d.ts +8 -0
  16. package/dist/cjs/hcs-10/index.d.ts.map +1 -0
  17. package/dist/cjs/hcs-10/registrations.d.ts +49 -0
  18. package/dist/cjs/hcs-10/registrations.d.ts.map +1 -0
  19. package/dist/cjs/hcs-10/sdk.d.ts +193 -0
  20. package/dist/cjs/hcs-10/sdk.d.ts.map +1 -0
  21. package/dist/cjs/hcs-10/types.d.ts +205 -0
  22. package/dist/cjs/hcs-10/types.d.ts.map +1 -0
  23. package/dist/cjs/hcs-11/agent-builder.d.ts +53 -0
  24. package/dist/cjs/hcs-11/agent-builder.d.ts.map +1 -0
  25. package/dist/cjs/hcs-11/client.d.ts +82 -0
  26. package/dist/cjs/hcs-11/client.d.ts.map +1 -0
  27. package/dist/cjs/hcs-11/index.d.ts +5 -0
  28. package/dist/cjs/hcs-11/index.d.ts.map +1 -0
  29. package/dist/cjs/hcs-11/person-builder.d.ts +29 -0
  30. package/dist/cjs/hcs-11/person-builder.d.ts.map +1 -0
  31. package/dist/cjs/hcs-11/types.d.ts +165 -0
  32. package/dist/cjs/hcs-11/types.d.ts.map +1 -0
  33. package/dist/cjs/hcs-3/index.d.ts +2 -0
  34. package/dist/cjs/hcs-3/index.d.ts.map +1 -0
  35. package/dist/cjs/hcs-3/src/index.d.ts +47 -0
  36. package/dist/cjs/hcs-3/src/index.d.ts.map +1 -0
  37. package/dist/cjs/hcs-7/evm-bridge.d.ts +25 -0
  38. package/dist/cjs/hcs-7/evm-bridge.d.ts.map +1 -0
  39. package/dist/cjs/hcs-7/index.d.ts +3 -0
  40. package/dist/cjs/hcs-7/index.d.ts.map +1 -0
  41. package/dist/cjs/hcs-7/redis-cache.d.ts +26 -0
  42. package/dist/cjs/hcs-7/redis-cache.d.ts.map +1 -0
  43. package/dist/cjs/hcs-7/wasm-bridge.d.ts +72 -0
  44. package/dist/cjs/hcs-7/wasm-bridge.d.ts.map +1 -0
  45. package/dist/cjs/index-BmPzMkW9.cjs +11 -0
  46. package/dist/cjs/index-BmPzMkW9.cjs.map +1 -0
  47. package/dist/cjs/index-CHar8dVv-CUVf-if8.cjs +11 -0
  48. package/dist/cjs/index-CHar8dVv-CUVf-if8.cjs.map +1 -0
  49. package/dist/cjs/index.d.ts +9 -0
  50. package/dist/cjs/index.d.ts.map +1 -0
  51. package/dist/cjs/inscribe/index.d.ts +3 -0
  52. package/dist/cjs/inscribe/index.d.ts.map +1 -0
  53. package/dist/cjs/inscribe/inscriber.d.ts +34 -0
  54. package/dist/cjs/inscribe/inscriber.d.ts.map +1 -0
  55. package/dist/cjs/inscribe/types.d.ts +79 -0
  56. package/dist/cjs/inscribe/types.d.ts.map +1 -0
  57. package/dist/cjs/services/index.d.ts +3 -0
  58. package/dist/cjs/services/index.d.ts.map +1 -0
  59. package/dist/cjs/services/mirror-node.d.ts +444 -0
  60. package/dist/cjs/services/mirror-node.d.ts.map +1 -0
  61. package/dist/cjs/services/types.d.ts +573 -0
  62. package/dist/cjs/services/types.d.ts.map +1 -0
  63. package/dist/cjs/standards-sdk.cjs +2 -0
  64. package/dist/cjs/standards-sdk.cjs.map +1 -0
  65. package/dist/cjs/utils/hrl-resolver.d.ts +53 -0
  66. package/dist/cjs/utils/hrl-resolver.d.ts.map +1 -0
  67. package/dist/cjs/utils/index.d.ts +7 -0
  68. package/dist/cjs/utils/index.d.ts.map +1 -0
  69. package/dist/cjs/utils/logger.d.ts +24 -0
  70. package/dist/cjs/utils/logger.d.ts.map +1 -0
  71. package/dist/cjs/utils/parsers/crypto-parser.d.ts +14 -0
  72. package/dist/cjs/utils/parsers/crypto-parser.d.ts.map +1 -0
  73. package/dist/cjs/utils/parsers/file-parser.d.ts +9 -0
  74. package/dist/cjs/utils/parsers/file-parser.d.ts.map +1 -0
  75. package/dist/cjs/utils/parsers/hcs-parser.d.ts +9 -0
  76. package/dist/cjs/utils/parsers/hcs-parser.d.ts.map +1 -0
  77. package/dist/cjs/utils/parsers/hts-parser.d.ts +20 -0
  78. package/dist/cjs/utils/parsers/hts-parser.d.ts.map +1 -0
  79. package/dist/cjs/utils/parsers/parser-utils.d.ts +3 -0
  80. package/dist/cjs/utils/parsers/parser-utils.d.ts.map +1 -0
  81. package/dist/cjs/utils/parsers/scs-parser.d.ts +9 -0
  82. package/dist/cjs/utils/parsers/scs-parser.d.ts.map +1 -0
  83. package/dist/cjs/utils/parsers/util-parser.d.ts +6 -0
  84. package/dist/cjs/utils/parsers/util-parser.d.ts.map +1 -0
  85. package/dist/cjs/utils/progress-reporter.d.ts +54 -0
  86. package/dist/cjs/utils/progress-reporter.d.ts.map +1 -0
  87. package/dist/cjs/utils/sleep.d.ts +2 -0
  88. package/dist/cjs/utils/sleep.d.ts.map +1 -0
  89. package/dist/cjs/utils/topic-fee-utils.d.ts +12 -0
  90. package/dist/cjs/utils/topic-fee-utils.d.ts.map +1 -0
  91. package/dist/cjs/utils/transaction-parser-types.d.ts +317 -0
  92. package/dist/cjs/utils/transaction-parser-types.d.ts.map +1 -0
  93. package/dist/cjs/utils/transaction-parser.d.ts +40 -0
  94. package/dist/cjs/utils/transaction-parser.d.ts.map +1 -0
  95. package/dist/cjs/utils/types.d.ts +5 -0
  96. package/dist/cjs/utils/types.d.ts.map +1 -0
  97. package/dist/es/hcs-10/base-client.d.ts +46 -1
  98. package/dist/es/hcs-10/base-client.d.ts.map +1 -1
  99. package/dist/es/hcs-10/browser.d.ts +30 -0
  100. package/dist/es/hcs-10/browser.d.ts.map +1 -1
  101. package/dist/es/hcs-10/sdk.d.ts.map +1 -1
  102. package/dist/es/hcs-10/types.d.ts +34 -0
  103. package/dist/es/hcs-10/types.d.ts.map +1 -1
  104. package/dist/es/services/mirror-node.d.ts +231 -3
  105. package/dist/es/services/mirror-node.d.ts.map +1 -1
  106. package/dist/es/services/types.d.ts +328 -0
  107. package/dist/es/services/types.d.ts.map +1 -1
  108. package/dist/es/standards-sdk.es13.js +4 -4
  109. package/dist/es/standards-sdk.es13.js.map +1 -1
  110. package/dist/es/standards-sdk.es15.js +1 -1
  111. package/dist/es/standards-sdk.es18.js +1 -2
  112. package/dist/es/standards-sdk.es18.js.map +1 -1
  113. package/dist/es/standards-sdk.es19.js +10 -10
  114. package/dist/es/standards-sdk.es19.js.map +1 -1
  115. package/dist/es/standards-sdk.es20.js +2 -2
  116. package/dist/es/standards-sdk.es21.js +662 -15
  117. package/dist/es/standards-sdk.es21.js.map +1 -1
  118. package/dist/es/standards-sdk.es24.js +5543 -122
  119. package/dist/es/standards-sdk.es24.js.map +1 -1
  120. package/dist/es/standards-sdk.es25.js +2 -7190
  121. package/dist/es/standards-sdk.es25.js.map +1 -1
  122. package/dist/es/standards-sdk.es26.js +501 -3
  123. package/dist/es/standards-sdk.es26.js.map +1 -1
  124. package/dist/es/standards-sdk.es27.js +108 -8
  125. package/dist/es/standards-sdk.es27.js.map +1 -1
  126. package/dist/es/standards-sdk.es28.js +66 -2
  127. package/dist/es/standards-sdk.es28.js.map +1 -1
  128. package/dist/es/standards-sdk.es29.js +242 -4153
  129. package/dist/es/standards-sdk.es29.js.map +1 -1
  130. package/dist/es/standards-sdk.es30.js +169 -1037
  131. package/dist/es/standards-sdk.es30.js.map +1 -1
  132. package/dist/es/standards-sdk.es31.js +11 -5
  133. package/dist/es/standards-sdk.es31.js.map +1 -1
  134. package/dist/es/standards-sdk.es32.js +7136 -36
  135. package/dist/es/standards-sdk.es32.js.map +1 -1
  136. package/dist/es/standards-sdk.es33.js +41 -47
  137. package/dist/es/standards-sdk.es33.js.map +1 -1
  138. package/dist/es/standards-sdk.es4.js +2 -2
  139. package/dist/es/standards-sdk.es4.js.map +1 -1
  140. package/dist/es/standards-sdk.es5.js +11 -2
  141. package/dist/es/standards-sdk.es5.js.map +1 -1
  142. package/dist/es/standards-sdk.es7.js +7 -6
  143. package/dist/es/standards-sdk.es7.js.map +1 -1
  144. package/dist/es/standards-sdk.es8.js +6 -5
  145. package/dist/es/standards-sdk.es8.js.map +1 -1
  146. package/dist/es/standards-sdk.es9.js +1 -1
  147. package/dist/umd/hcs-10/base-client.d.ts +46 -1
  148. package/dist/umd/hcs-10/base-client.d.ts.map +1 -1
  149. package/dist/umd/hcs-10/browser.d.ts +30 -0
  150. package/dist/umd/hcs-10/browser.d.ts.map +1 -1
  151. package/dist/umd/hcs-10/sdk.d.ts.map +1 -1
  152. package/dist/umd/hcs-10/types.d.ts +34 -0
  153. package/dist/umd/hcs-10/types.d.ts.map +1 -1
  154. package/dist/umd/services/mirror-node.d.ts +231 -3
  155. package/dist/umd/services/mirror-node.d.ts.map +1 -1
  156. package/dist/umd/services/types.d.ts +328 -0
  157. package/dist/umd/services/types.d.ts.map +1 -1
  158. package/dist/umd/standards-sdk.umd.js +12 -12
  159. package/dist/umd/standards-sdk.umd.js.map +1 -1
  160. package/package.json +6 -5
  161. package/dist/es/standards-sdk.es100.js +0 -24
  162. package/dist/es/standards-sdk.es100.js.map +0 -1
  163. package/dist/es/standards-sdk.es101.js +0 -47
  164. package/dist/es/standards-sdk.es101.js.map +0 -1
  165. package/dist/es/standards-sdk.es102.js +0 -21
  166. package/dist/es/standards-sdk.es102.js.map +0 -1
  167. package/dist/es/standards-sdk.es103.js +0 -64
  168. package/dist/es/standards-sdk.es103.js.map +0 -1
  169. package/dist/es/standards-sdk.es104.js +0 -1292
  170. package/dist/es/standards-sdk.es104.js.map +0 -1
  171. package/dist/es/standards-sdk.es105.js +0 -151
  172. package/dist/es/standards-sdk.es105.js.map +0 -1
  173. package/dist/es/standards-sdk.es106.js +0 -94
  174. package/dist/es/standards-sdk.es106.js.map +0 -1
  175. package/dist/es/standards-sdk.es107.js +0 -87
  176. package/dist/es/standards-sdk.es107.js.map +0 -1
  177. package/dist/es/standards-sdk.es108.js +0 -35
  178. package/dist/es/standards-sdk.es108.js.map +0 -1
  179. package/dist/es/standards-sdk.es109.js +0 -9
  180. package/dist/es/standards-sdk.es109.js.map +0 -1
  181. package/dist/es/standards-sdk.es110.js +0 -162
  182. package/dist/es/standards-sdk.es110.js.map +0 -1
  183. package/dist/es/standards-sdk.es111.js +0 -26
  184. package/dist/es/standards-sdk.es111.js.map +0 -1
  185. package/dist/es/standards-sdk.es112.js +0 -796
  186. package/dist/es/standards-sdk.es112.js.map +0 -1
  187. package/dist/es/standards-sdk.es113.js +0 -2285
  188. package/dist/es/standards-sdk.es113.js.map +0 -1
  189. package/dist/es/standards-sdk.es114.js +0 -177
  190. package/dist/es/standards-sdk.es114.js.map +0 -1
  191. package/dist/es/standards-sdk.es115.js +0 -146
  192. package/dist/es/standards-sdk.es115.js.map +0 -1
  193. package/dist/es/standards-sdk.es116.js +0 -6
  194. package/dist/es/standards-sdk.es116.js.map +0 -1
  195. package/dist/es/standards-sdk.es117.js +0 -5
  196. package/dist/es/standards-sdk.es117.js.map +0 -1
  197. package/dist/es/standards-sdk.es118.js +0 -5
  198. package/dist/es/standards-sdk.es118.js.map +0 -1
  199. package/dist/es/standards-sdk.es119.js +0 -37
  200. package/dist/es/standards-sdk.es119.js.map +0 -1
  201. package/dist/es/standards-sdk.es120.js +0 -36
  202. package/dist/es/standards-sdk.es120.js.map +0 -1
  203. package/dist/es/standards-sdk.es121.js +0 -12
  204. package/dist/es/standards-sdk.es121.js.map +0 -1
  205. package/dist/es/standards-sdk.es122.js +0 -37
  206. package/dist/es/standards-sdk.es122.js.map +0 -1
  207. package/dist/es/standards-sdk.es123.js +0 -24
  208. package/dist/es/standards-sdk.es123.js.map +0 -1
  209. package/dist/es/standards-sdk.es124.js +0 -30
  210. package/dist/es/standards-sdk.es124.js.map +0 -1
  211. package/dist/es/standards-sdk.es125.js +0 -29
  212. package/dist/es/standards-sdk.es125.js.map +0 -1
  213. package/dist/es/standards-sdk.es126.js +0 -41
  214. package/dist/es/standards-sdk.es126.js.map +0 -1
  215. package/dist/es/standards-sdk.es127.js +0 -7139
  216. package/dist/es/standards-sdk.es127.js.map +0 -1
  217. package/dist/es/standards-sdk.es128.js +0 -13
  218. package/dist/es/standards-sdk.es128.js.map +0 -1
  219. package/dist/es/standards-sdk.es129.js +0 -14
  220. package/dist/es/standards-sdk.es129.js.map +0 -1
  221. package/dist/es/standards-sdk.es130.js +0 -21
  222. package/dist/es/standards-sdk.es130.js.map +0 -1
  223. package/dist/es/standards-sdk.es131.js +0 -9
  224. package/dist/es/standards-sdk.es131.js.map +0 -1
  225. package/dist/es/standards-sdk.es132.js +0 -12
  226. package/dist/es/standards-sdk.es132.js.map +0 -1
  227. package/dist/es/standards-sdk.es133.js +0 -45
  228. package/dist/es/standards-sdk.es133.js.map +0 -1
  229. package/dist/es/standards-sdk.es34.js +0 -504
  230. package/dist/es/standards-sdk.es34.js.map +0 -1
  231. package/dist/es/standards-sdk.es35.js +0 -112
  232. package/dist/es/standards-sdk.es35.js.map +0 -1
  233. package/dist/es/standards-sdk.es36.js +0 -69
  234. package/dist/es/standards-sdk.es36.js.map +0 -1
  235. package/dist/es/standards-sdk.es37.js +0 -260
  236. package/dist/es/standards-sdk.es37.js.map +0 -1
  237. package/dist/es/standards-sdk.es38.js +0 -176
  238. package/dist/es/standards-sdk.es38.js.map +0 -1
  239. package/dist/es/standards-sdk.es39.js +0 -14
  240. package/dist/es/standards-sdk.es39.js.map +0 -1
  241. package/dist/es/standards-sdk.es40.js +0 -13
  242. package/dist/es/standards-sdk.es40.js.map +0 -1
  243. package/dist/es/standards-sdk.es41.js +0 -422
  244. package/dist/es/standards-sdk.es41.js.map +0 -1
  245. package/dist/es/standards-sdk.es42.js +0 -5
  246. package/dist/es/standards-sdk.es42.js.map +0 -1
  247. package/dist/es/standards-sdk.es43.js +0 -123
  248. package/dist/es/standards-sdk.es43.js.map +0 -1
  249. package/dist/es/standards-sdk.es44.js +0 -7
  250. package/dist/es/standards-sdk.es44.js.map +0 -1
  251. package/dist/es/standards-sdk.es45.js +0 -367
  252. package/dist/es/standards-sdk.es45.js.map +0 -1
  253. package/dist/es/standards-sdk.es46.js +0 -9
  254. package/dist/es/standards-sdk.es46.js.map +0 -1
  255. package/dist/es/standards-sdk.es47.js +0 -182
  256. package/dist/es/standards-sdk.es47.js.map +0 -1
  257. package/dist/es/standards-sdk.es48.js +0 -84
  258. package/dist/es/standards-sdk.es48.js.map +0 -1
  259. package/dist/es/standards-sdk.es49.js +0 -117
  260. package/dist/es/standards-sdk.es49.js.map +0 -1
  261. package/dist/es/standards-sdk.es50.js +0 -55
  262. package/dist/es/standards-sdk.es50.js.map +0 -1
  263. package/dist/es/standards-sdk.es51.js +0 -13
  264. package/dist/es/standards-sdk.es51.js.map +0 -1
  265. package/dist/es/standards-sdk.es52.js +0 -100
  266. package/dist/es/standards-sdk.es52.js.map +0 -1
  267. package/dist/es/standards-sdk.es53.js +0 -7
  268. package/dist/es/standards-sdk.es53.js.map +0 -1
  269. package/dist/es/standards-sdk.es54.js +0 -5
  270. package/dist/es/standards-sdk.es54.js.map +0 -1
  271. package/dist/es/standards-sdk.es55.js +0 -116
  272. package/dist/es/standards-sdk.es55.js.map +0 -1
  273. package/dist/es/standards-sdk.es56.js +0 -77
  274. package/dist/es/standards-sdk.es56.js.map +0 -1
  275. package/dist/es/standards-sdk.es57.js +0 -9
  276. package/dist/es/standards-sdk.es57.js.map +0 -1
  277. package/dist/es/standards-sdk.es58.js +0 -8
  278. package/dist/es/standards-sdk.es58.js.map +0 -1
  279. package/dist/es/standards-sdk.es59.js +0 -224
  280. package/dist/es/standards-sdk.es59.js.map +0 -1
  281. package/dist/es/standards-sdk.es60.js +0 -61
  282. package/dist/es/standards-sdk.es60.js.map +0 -1
  283. package/dist/es/standards-sdk.es61.js +0 -72
  284. package/dist/es/standards-sdk.es61.js.map +0 -1
  285. package/dist/es/standards-sdk.es62.js +0 -6
  286. package/dist/es/standards-sdk.es62.js.map +0 -1
  287. package/dist/es/standards-sdk.es63.js +0 -167
  288. package/dist/es/standards-sdk.es63.js.map +0 -1
  289. package/dist/es/standards-sdk.es64.js +0 -35
  290. package/dist/es/standards-sdk.es64.js.map +0 -1
  291. package/dist/es/standards-sdk.es65.js +0 -66
  292. package/dist/es/standards-sdk.es65.js.map +0 -1
  293. package/dist/es/standards-sdk.es66.js +0 -53
  294. package/dist/es/standards-sdk.es66.js.map +0 -1
  295. package/dist/es/standards-sdk.es67.js +0 -13
  296. package/dist/es/standards-sdk.es67.js.map +0 -1
  297. package/dist/es/standards-sdk.es68.js +0 -68
  298. package/dist/es/standards-sdk.es68.js.map +0 -1
  299. package/dist/es/standards-sdk.es69.js +0 -9
  300. package/dist/es/standards-sdk.es69.js.map +0 -1
  301. package/dist/es/standards-sdk.es70.js +0 -18
  302. package/dist/es/standards-sdk.es70.js.map +0 -1
  303. package/dist/es/standards-sdk.es71.js +0 -10
  304. package/dist/es/standards-sdk.es71.js.map +0 -1
  305. package/dist/es/standards-sdk.es72.js +0 -48
  306. package/dist/es/standards-sdk.es72.js.map +0 -1
  307. package/dist/es/standards-sdk.es73.js +0 -5
  308. package/dist/es/standards-sdk.es73.js.map +0 -1
  309. package/dist/es/standards-sdk.es74.js +0 -139
  310. package/dist/es/standards-sdk.es74.js.map +0 -1
  311. package/dist/es/standards-sdk.es75.js +0 -175
  312. package/dist/es/standards-sdk.es75.js.map +0 -1
  313. package/dist/es/standards-sdk.es76.js +0 -5
  314. package/dist/es/standards-sdk.es76.js.map +0 -1
  315. package/dist/es/standards-sdk.es77.js +0 -16
  316. package/dist/es/standards-sdk.es77.js.map +0 -1
  317. package/dist/es/standards-sdk.es78.js +0 -16
  318. package/dist/es/standards-sdk.es78.js.map +0 -1
  319. package/dist/es/standards-sdk.es79.js +0 -104
  320. package/dist/es/standards-sdk.es79.js.map +0 -1
  321. package/dist/es/standards-sdk.es80.js +0 -5
  322. package/dist/es/standards-sdk.es80.js.map +0 -1
  323. package/dist/es/standards-sdk.es81.js +0 -19
  324. package/dist/es/standards-sdk.es81.js.map +0 -1
  325. package/dist/es/standards-sdk.es82.js +0 -412
  326. package/dist/es/standards-sdk.es82.js.map +0 -1
  327. package/dist/es/standards-sdk.es83.js +0 -35
  328. package/dist/es/standards-sdk.es83.js.map +0 -1
  329. package/dist/es/standards-sdk.es84.js +0 -18
  330. package/dist/es/standards-sdk.es84.js.map +0 -1
  331. package/dist/es/standards-sdk.es85.js +0 -7
  332. package/dist/es/standards-sdk.es85.js.map +0 -1
  333. package/dist/es/standards-sdk.es86.js +0 -7
  334. package/dist/es/standards-sdk.es86.js.map +0 -1
  335. package/dist/es/standards-sdk.es87.js +0 -19
  336. package/dist/es/standards-sdk.es87.js.map +0 -1
  337. package/dist/es/standards-sdk.es88.js +0 -8
  338. package/dist/es/standards-sdk.es88.js.map +0 -1
  339. package/dist/es/standards-sdk.es89.js +0 -42
  340. package/dist/es/standards-sdk.es89.js.map +0 -1
  341. package/dist/es/standards-sdk.es90.js +0 -43
  342. package/dist/es/standards-sdk.es90.js.map +0 -1
  343. package/dist/es/standards-sdk.es91.js +0 -40
  344. package/dist/es/standards-sdk.es91.js.map +0 -1
  345. package/dist/es/standards-sdk.es92.js +0 -81
  346. package/dist/es/standards-sdk.es92.js.map +0 -1
  347. package/dist/es/standards-sdk.es93.js +0 -198
  348. package/dist/es/standards-sdk.es93.js.map +0 -1
  349. package/dist/es/standards-sdk.es94.js +0 -441
  350. package/dist/es/standards-sdk.es94.js.map +0 -1
  351. package/dist/es/standards-sdk.es95.js +0 -28
  352. package/dist/es/standards-sdk.es95.js.map +0 -1
  353. package/dist/es/standards-sdk.es96.js +0 -142
  354. package/dist/es/standards-sdk.es96.js.map +0 -1
  355. package/dist/es/standards-sdk.es97.js +0 -21
  356. package/dist/es/standards-sdk.es97.js.map +0 -1
  357. package/dist/es/standards-sdk.es98.js +0 -32
  358. package/dist/es/standards-sdk.es98.js.map +0 -1
  359. package/dist/es/standards-sdk.es99.js +0 -32
  360. package/dist/es/standards-sdk.es99.js.map +0 -1
@@ -1,51 +1,45 @@
1
- import utils from "./standards-sdk.es45.js";
2
- import bind from "./standards-sdk.es46.js";
3
- import Axios from "./standards-sdk.es47.js";
4
- import mergeConfig from "./standards-sdk.es48.js";
5
- import defaults from "./standards-sdk.es49.js";
6
- import formDataToJSON from "./standards-sdk.es50.js";
7
- import CanceledError from "./standards-sdk.es51.js";
8
- import CancelToken from "./standards-sdk.es52.js";
9
- import isCancel from "./standards-sdk.es53.js";
10
- import { VERSION } from "./standards-sdk.es54.js";
11
- import toFormData from "./standards-sdk.es55.js";
12
- import AxiosError from "./standards-sdk.es56.js";
13
- import spread from "./standards-sdk.es57.js";
14
- import isAxiosError from "./standards-sdk.es58.js";
15
- import AxiosHeaders from "./standards-sdk.es59.js";
16
- import adapters from "./standards-sdk.es60.js";
17
- import HttpStatusCode from "./standards-sdk.es61.js";
18
- function createInstance(defaultConfig) {
19
- const context = new Axios(defaultConfig);
20
- const instance = bind(Axios.prototype.request, context);
21
- utils.extend(instance, Axios.prototype, context, { allOwnKeys: true });
22
- utils.extend(instance, context, null, { allOwnKeys: true });
23
- instance.create = function create(instanceConfig) {
24
- return createInstance(mergeConfig(defaultConfig, instanceConfig));
25
- };
26
- return instance;
1
+ import { ContractId } from "@hashgraph/sdk";
2
+ import { Buffer } from "buffer";
3
+ function parseKey(key) {
4
+ if (!key) {
5
+ return void 0;
6
+ }
7
+ if (key.contractID) {
8
+ return `ContractID: ${new ContractId(
9
+ key.contractID.shardNum ?? 0,
10
+ key.contractID.realmNum ?? 0,
11
+ key.contractID.contractNum ?? 0
12
+ ).toString()}`;
13
+ }
14
+ if (key.ed25519) {
15
+ return `ED25519: ${Buffer.from(key.ed25519).toString("hex")}`;
16
+ }
17
+ if (key.ECDSASecp256k1) {
18
+ return `ECDSA_secp256k1: ${Buffer.from(key.ECDSASecp256k1).toString(
19
+ "hex"
20
+ )}`;
21
+ }
22
+ if (key?.keyList?.keys?.length > 0) {
23
+ const keys = key.keyList.keys.map((k) => parseKey(k)).filter(Boolean);
24
+ return `KeyList (${keys.length} keys): [${keys.join(", ")}]`;
25
+ }
26
+ if (key?.thresholdKey?.keys?.keys?.length > 0) {
27
+ const keys = key.thresholdKey.keys.keys.map((k) => parseKey(k)).filter(Boolean);
28
+ return `ThresholdKey (${key.thresholdKey.threshold} of ${keys.length}): [${keys.join(", ")}]`;
29
+ }
30
+ if (key.delegatableContractId) {
31
+ return `DelegatableContractID: ${new ContractId(
32
+ key.delegatableContractId.shardNum ?? 0,
33
+ key.delegatableContractId.realmNum ?? 0,
34
+ key.delegatableContractId.contractNum ?? 0
35
+ ).toString()}`;
36
+ }
37
+ if (Object.keys(key).length === 0) {
38
+ return "Empty Key Structure";
39
+ }
40
+ return "Unknown or Unset Key Type";
27
41
  }
28
- const axios = createInstance(defaults);
29
- axios.Axios = Axios;
30
- axios.CanceledError = CanceledError;
31
- axios.CancelToken = CancelToken;
32
- axios.isCancel = isCancel;
33
- axios.VERSION = VERSION;
34
- axios.toFormData = toFormData;
35
- axios.AxiosError = AxiosError;
36
- axios.Cancel = axios.CanceledError;
37
- axios.all = function all(promises) {
38
- return Promise.all(promises);
39
- };
40
- axios.spread = spread;
41
- axios.isAxiosError = isAxiosError;
42
- axios.mergeConfig = mergeConfig;
43
- axios.AxiosHeaders = AxiosHeaders;
44
- axios.formToJSON = (thing) => formDataToJSON(utils.isHTMLForm(thing) ? new FormData(thing) : thing);
45
- axios.getAdapter = adapters.getAdapter;
46
- axios.HttpStatusCode = HttpStatusCode;
47
- axios.default = axios;
48
42
  export {
49
- axios as default
43
+ parseKey
50
44
  };
51
45
  //# sourceMappingURL=standards-sdk.es33.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"standards-sdk.es33.js","sources":["../../node_modules/axios/lib/axios.js"],"sourcesContent":["'use strict';\n\nimport utils from './utils.js';\nimport bind from './helpers/bind.js';\nimport Axios from './core/Axios.js';\nimport mergeConfig from './core/mergeConfig.js';\nimport defaults from './defaults/index.js';\nimport formDataToJSON from './helpers/formDataToJSON.js';\nimport CanceledError from './cancel/CanceledError.js';\nimport CancelToken from './cancel/CancelToken.js';\nimport isCancel from './cancel/isCancel.js';\nimport {VERSION} from './env/data.js';\nimport toFormData from './helpers/toFormData.js';\nimport AxiosError from './core/AxiosError.js';\nimport spread from './helpers/spread.js';\nimport isAxiosError from './helpers/isAxiosError.js';\nimport AxiosHeaders from \"./core/AxiosHeaders.js\";\nimport adapters from './adapters/adapters.js';\nimport HttpStatusCode from './helpers/HttpStatusCode.js';\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n *\n * @returns {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n const context = new Axios(defaultConfig);\n const instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context, {allOwnKeys: true});\n\n // Copy context to instance\n utils.extend(instance, context, null, {allOwnKeys: true});\n\n // Factory for creating new instances\n instance.create = function create(instanceConfig) {\n return createInstance(mergeConfig(defaultConfig, instanceConfig));\n };\n\n return instance;\n}\n\n// Create the default instance to be exported\nconst axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Expose Cancel & CancelToken\naxios.CanceledError = CanceledError;\naxios.CancelToken = CancelToken;\naxios.isCancel = isCancel;\naxios.VERSION = VERSION;\naxios.toFormData = toFormData;\n\n// Expose AxiosError class\naxios.AxiosError = AxiosError;\n\n// alias for CanceledError for backward compatibility\naxios.Cancel = axios.CanceledError;\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\n\naxios.spread = spread;\n\n// Expose isAxiosError\naxios.isAxiosError = isAxiosError;\n\n// Expose mergeConfig\naxios.mergeConfig = mergeConfig;\n\naxios.AxiosHeaders = AxiosHeaders;\n\naxios.formToJSON = thing => formDataToJSON(utils.isHTMLForm(thing) ? new FormData(thing) : thing);\n\naxios.getAdapter = adapters.getAdapter;\n\naxios.HttpStatusCode = HttpStatusCode;\n\naxios.default = axios;\n\n// this module should only have a default export\nexport default axios\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AA2BA,SAAS,eAAe,eAAe;AACrC,QAAM,UAAU,IAAI,MAAM,aAAa;AACvC,QAAM,WAAW,KAAK,MAAM,UAAU,SAAS,OAAO;AAGtD,QAAM,OAAO,UAAU,MAAM,WAAW,SAAS,EAAC,YAAY,KAAI,CAAC;AAGnE,QAAM,OAAO,UAAU,SAAS,MAAM,EAAC,YAAY,KAAI,CAAC;AAGxD,WAAS,SAAS,SAAS,OAAO,gBAAgB;AAChD,WAAO,eAAe,YAAY,eAAe,cAAc,CAAC;AAAA,EACjE;AAED,SAAO;AACT;AAGK,MAAC,QAAQ,eAAe,QAAQ;AAGrC,MAAM,QAAQ;AAGd,MAAM,gBAAgB;AACtB,MAAM,cAAc;AACpB,MAAM,WAAW;AACjB,MAAM,UAAU;AAChB,MAAM,aAAa;AAGnB,MAAM,aAAa;AAGnB,MAAM,SAAS,MAAM;AAGrB,MAAM,MAAM,SAAS,IAAI,UAAU;AACjC,SAAO,QAAQ,IAAI,QAAQ;AAC7B;AAEA,MAAM,SAAS;AAGf,MAAM,eAAe;AAGrB,MAAM,cAAc;AAEpB,MAAM,eAAe;AAErB,MAAM,aAAa,WAAS,eAAe,MAAM,WAAW,KAAK,IAAI,IAAI,SAAS,KAAK,IAAI,KAAK;AAEhG,MAAM,aAAa,SAAS;AAE5B,MAAM,iBAAiB;AAEvB,MAAM,UAAU;","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"standards-sdk.es33.js","sources":["../../src/utils/parsers/parser-utils.ts"],"sourcesContent":["import { proto } from '@hashgraph/proto';\nimport { ContractId } from '@hashgraph/sdk';\nimport { Buffer } from 'buffer';\n\nexport function parseKey(\n key: proto.IKey | null | undefined\n): string | undefined {\n if (!key) {\n return undefined;\n }\n\n if (key.contractID) {\n return `ContractID: ${new ContractId(\n key.contractID.shardNum ?? 0,\n key.contractID.realmNum ?? 0,\n key.contractID.contractNum ?? 0\n ).toString()}`;\n }\n if (key.ed25519) {\n return `ED25519: ${Buffer.from(key.ed25519).toString('hex')}`;\n }\n if (key.ECDSASecp256k1) {\n return `ECDSA_secp256k1: ${Buffer.from(key.ECDSASecp256k1).toString(\n 'hex'\n )}`;\n }\n if (key?.keyList?.keys?.length > 0) {\n const keys = key.keyList.keys.map((k) => parseKey(k)).filter(Boolean);\n return `KeyList (${keys.length} keys): [${keys.join(', ')}]`;\n }\n if (key?.thresholdKey?.keys?.keys?.length > 0) {\n const keys = key.thresholdKey.keys.keys\n .map((k) => parseKey(k))\n .filter(Boolean);\n return `ThresholdKey (${key.thresholdKey.threshold} of ${\n keys.length\n }): [${keys.join(', ')}]`;\n }\n if (key.delegatableContractId) {\n return `DelegatableContractID: ${new ContractId(\n key.delegatableContractId.shardNum ?? 0,\n key.delegatableContractId.realmNum ?? 0,\n key.delegatableContractId.contractNum ?? 0\n ).toString()}`;\n }\n if (Object.keys(key).length === 0) {\n return 'Empty Key Structure';\n }\n\n return 'Unknown or Unset Key Type';\n}\n"],"names":[],"mappings":";;AAIO,SAAS,SACd,KACoB;AACpB,MAAI,CAAC,KAAK;AACD,WAAA;AAAA,EAAA;AAGT,MAAI,IAAI,YAAY;AAClB,WAAO,eAAe,IAAI;AAAA,MACxB,IAAI,WAAW,YAAY;AAAA,MAC3B,IAAI,WAAW,YAAY;AAAA,MAC3B,IAAI,WAAW,eAAe;AAAA,IAAA,EAC9B,SAAU,CAAA;AAAA,EAAA;AAEd,MAAI,IAAI,SAAS;AACR,WAAA,YAAY,OAAO,KAAK,IAAI,OAAO,EAAE,SAAS,KAAK,CAAC;AAAA,EAAA;AAE7D,MAAI,IAAI,gBAAgB;AACtB,WAAO,oBAAoB,OAAO,KAAK,IAAI,cAAc,EAAE;AAAA,MACzD;AAAA,IAAA,CACD;AAAA,EAAA;AAEH,MAAI,KAAK,SAAS,MAAM,SAAS,GAAG;AAClC,UAAM,OAAO,IAAI,QAAQ,KAAK,IAAI,CAAC,MAAM,SAAS,CAAC,CAAC,EAAE,OAAO,OAAO;AACpE,WAAO,YAAY,KAAK,MAAM,YAAY,KAAK,KAAK,IAAI,CAAC;AAAA,EAAA;AAE3D,MAAI,KAAK,cAAc,MAAM,MAAM,SAAS,GAAG;AAC7C,UAAM,OAAO,IAAI,aAAa,KAAK,KAChC,IAAI,CAAC,MAAM,SAAS,CAAC,CAAC,EACtB,OAAO,OAAO;AACV,WAAA,iBAAiB,IAAI,aAAa,SAAS,OAChD,KAAK,MACP,OAAO,KAAK,KAAK,IAAI,CAAC;AAAA,EAAA;AAExB,MAAI,IAAI,uBAAuB;AAC7B,WAAO,0BAA0B,IAAI;AAAA,MACnC,IAAI,sBAAsB,YAAY;AAAA,MACtC,IAAI,sBAAsB,YAAY;AAAA,MACtC,IAAI,sBAAsB,eAAe;AAAA,IAAA,EACzC,SAAU,CAAA;AAAA,EAAA;AAEd,MAAI,OAAO,KAAK,GAAG,EAAE,WAAW,GAAG;AAC1B,WAAA;AAAA,EAAA;AAGF,SAAA;AACT;"}
@@ -1,6 +1,6 @@
1
1
  import { ContractId, AccountId } from "@hashgraph/sdk";
2
+ import { ethers } from "ethers";
2
3
  import { Logger } from "./standards-sdk.es15.js";
3
- import { Interface } from "./standards-sdk.es30.js";
4
4
  class MapCache {
5
5
  constructor() {
6
6
  this.cache = /* @__PURE__ */ new Map();
@@ -37,7 +37,7 @@ class EVMBridge {
37
37
  continue;
38
38
  }
39
39
  try {
40
- const iface = new Interface([
40
+ const iface = new ethers.Interface([
41
41
  {
42
42
  ...config.c.abi
43
43
  }
@@ -1 +1 @@
1
- {"version":3,"file":"standards-sdk.es4.js","sources":["../../src/hcs-7/evm-bridge.ts"],"sourcesContent":["import { AccountId, ContractId } from '@hashgraph/sdk';\nimport { EVMConfig } from './wasm-bridge';\nimport { ethers } from 'ethers';\nimport { Logger } from '../utils/logger';\n\nexport interface EVMCache {\n get(key: string): Promise<string | undefined> | string | undefined;\n set(key: string, value: string): Promise<void> | void;\n delete(key: string): Promise<void> | void;\n clear(): Promise<void> | void;\n}\n\nclass MapCache implements EVMCache {\n private cache: Map<string, string>;\n\n constructor() {\n this.cache = new Map();\n }\n\n get(key: string): string | undefined {\n return this.cache.get(key);\n }\n\n set(key: string, value: string): void {\n this.cache.set(key, value);\n }\n\n delete(key: string): void {\n this.cache.delete(key);\n }\n\n clear(): void {\n this.cache.clear();\n }\n}\n\nexport class EVMBridge {\n public network: string;\n public mirrorNodeUrl: string;\n private cache: EVMCache;\n private logger: Logger;\n\n constructor(\n network: string = 'mainnet-public',\n mirrorNodeUrl: string = `mirrornode.hedera.com/api/v1/contracts/call`,\n cache?: EVMCache\n ) {\n this.network = network;\n this.mirrorNodeUrl = mirrorNodeUrl;\n this.cache = cache || new MapCache();\n this.logger = Logger.getInstance({ module: 'EVMBridge' });\n }\n\n async executeCommands(\n evmConfigs: EVMConfig[],\n initialState: Record<string, string> = {}\n ): Promise<{\n results: Record<string, any>;\n stateData: Record<string, any>;\n }> {\n let stateData: Record<string, any> = { ...initialState };\n const results: Record<string, any> = {};\n\n for (const config of evmConfigs) {\n const cacheKey = `${config.c.contractAddress}-${config.c.abi.name}`;\n\n // Check cache first\n const cachedResult = await this.cache.get(cacheKey);\n if (cachedResult) {\n results[config.c.abi.name] = JSON.parse(cachedResult);\n Object.assign(stateData, results[config.c.abi.name]); // Flatten the values into stateData\n continue;\n }\n\n try {\n const iface = new ethers.Interface([\n {\n ...config.c.abi,\n },\n ]);\n const command = iface.encodeFunctionData(config.c.abi.name);\n const contractId = ContractId.fromSolidityAddress(\n config.c.contractAddress\n );\n\n const result = await this.readFromMirrorNode(\n command,\n AccountId.fromString('0.0.800'),\n contractId\n );\n\n this.logger.info(`Result for ${config.c.contractAddress}:`, result?.result);\n\n if (!result?.result) {\n this.logger.warn(\n `Failed to get result from mirror node for ${config.c.contractAddress}`\n );\n results[config.c.abi.name] = '0';\n Object.assign(stateData, results[config.c.abi.name]); // Flatten the values into stateData\n continue;\n }\n\n const decodedResult = iface?.decodeFunctionResult(\n config.c.abi.name,\n result.result\n );\n let processedResult: Record<string, any> = {\n values: [], // Initialize array for values\n };\n\n // Handle tuple returns and array-like results\n if (decodedResult) {\n // For tuples, ethers.js provides both array-like and named properties\n // We want to use the array-like access to ensure we get each value in order\n config.c.abi.outputs?.forEach((output, idx) => {\n const value = decodedResult[idx];\n const formattedValue = formatValue(value, output.type);\n\n // Add to values array\n processedResult.values.push(formattedValue);\n\n if (output.name) {\n processedResult[output.name] = formattedValue;\n }\n });\n }\n\n await this.cache.set(cacheKey, JSON.stringify(processedResult));\n\n results[config.c.abi.name] = processedResult;\n stateData[config.c.abi.name] = processedResult;\n } catch (error) {\n this.logger.error(\n `Error executing command for ${config.c.contractAddress}:`,\n error\n );\n results[config.c.abi.name] = '0';\n Object.assign(stateData, results[config.c.abi.name]); // Flatten the values into stateData\n }\n }\n\n return { results, stateData };\n }\n\n async executeCommand(\n evmConfig: EVMConfig,\n stateData: Record<string, string> = {}\n ): Promise<any> {\n const { results, stateData: newStateData } = await this.executeCommands(\n [evmConfig],\n stateData\n );\n return {\n result: results[evmConfig.c.abi.name],\n stateData: newStateData,\n };\n }\n\n async readFromMirrorNode(\n command: string,\n from: AccountId,\n to: ContractId\n ): Promise<any> {\n try {\n const toAddress = to.toSolidityAddress();\n const fromAddress = from.toSolidityAddress();\n const response = await fetch(\n `https://${this.network}.${this.mirrorNodeUrl}`,\n {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({\n block: 'latest',\n data: command,\n estimate: false,\n gas: 300_000,\n gasPrice: 100000000,\n from: fromAddress.startsWith('0x')\n ? fromAddress\n : `0x${fromAddress}`,\n to: toAddress?.startsWith('0x') ? toAddress : `0x${toAddress}`,\n value: 0,\n }),\n }\n );\n\n if (!response.ok) {\n throw new Error(`HTTP error! status: ${response.status}`);\n }\n\n return await response.json();\n } catch (error) {\n this.logger.error('Error reading from mirror node:', error);\n return null;\n }\n }\n\n // Add method to clear cache if needed\n public async clearCache(): Promise<void> {\n await this.cache.clear();\n }\n\n // Add method to remove specific cache entry\n public async clearCacheForContract(\n contractAddress: string,\n functionName: string\n ): Promise<void> {\n await this.cache.delete(`${contractAddress}-${functionName}`);\n }\n \n // Method to set log level for this bridge instance\n public setLogLevel(level: 'debug' | 'info' | 'warn' | 'error'): void {\n this.logger.setLogLevel(level);\n }\n}\n\nfunction formatValue(value: any, type: string): string {\n if (value === null || value === undefined) {\n return '0';\n }\n\n // Handle BigNumber objects from ethers.js\n if (value._isBigNumber) {\n return value.toString();\n }\n\n if (type.startsWith('uint') || type.startsWith('int')) {\n return String(value);\n } else if (type === 'bool') {\n return value ? 'true' : 'false';\n } else if (type === 'string') {\n return value;\n } else if (type === 'address') {\n return String(value).toLowerCase();\n } else if (type.endsWith('[]')) {\n // Handle arrays\n // @ts-ignore\n return Array.isArray(value) ? value.map((v) => String(v)) : [];\n } else {\n // Default to string conversion for unknown types\n return String(value);\n }\n}\n"],"names":["ethers.Interface"],"mappings":"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"}
1
+ {"version":3,"file":"standards-sdk.es4.js","sources":["../../src/hcs-7/evm-bridge.ts"],"sourcesContent":["import { AccountId, ContractId } from '@hashgraph/sdk';\nimport { EVMConfig } from './wasm-bridge';\nimport { ethers } from 'ethers';\nimport { Logger } from '../utils/logger';\n\nexport interface EVMCache {\n get(key: string): Promise<string | undefined> | string | undefined;\n set(key: string, value: string): Promise<void> | void;\n delete(key: string): Promise<void> | void;\n clear(): Promise<void> | void;\n}\n\nclass MapCache implements EVMCache {\n private cache: Map<string, string>;\n\n constructor() {\n this.cache = new Map();\n }\n\n get(key: string): string | undefined {\n return this.cache.get(key);\n }\n\n set(key: string, value: string): void {\n this.cache.set(key, value);\n }\n\n delete(key: string): void {\n this.cache.delete(key);\n }\n\n clear(): void {\n this.cache.clear();\n }\n}\n\nexport class EVMBridge {\n public network: string;\n public mirrorNodeUrl: string;\n private cache: EVMCache;\n private logger: Logger;\n\n constructor(\n network: string = 'mainnet-public',\n mirrorNodeUrl: string = `mirrornode.hedera.com/api/v1/contracts/call`,\n cache?: EVMCache\n ) {\n this.network = network;\n this.mirrorNodeUrl = mirrorNodeUrl;\n this.cache = cache || new MapCache();\n this.logger = Logger.getInstance({ module: 'EVMBridge' });\n }\n\n async executeCommands(\n evmConfigs: EVMConfig[],\n initialState: Record<string, string> = {}\n ): Promise<{\n results: Record<string, any>;\n stateData: Record<string, any>;\n }> {\n let stateData: Record<string, any> = { ...initialState };\n const results: Record<string, any> = {};\n\n for (const config of evmConfigs) {\n const cacheKey = `${config.c.contractAddress}-${config.c.abi.name}`;\n\n // Check cache first\n const cachedResult = await this.cache.get(cacheKey);\n if (cachedResult) {\n results[config.c.abi.name] = JSON.parse(cachedResult);\n Object.assign(stateData, results[config.c.abi.name]); // Flatten the values into stateData\n continue;\n }\n\n try {\n const iface = new ethers.Interface([\n {\n ...config.c.abi,\n },\n ]);\n const command = iface.encodeFunctionData(config.c.abi.name);\n const contractId = ContractId.fromSolidityAddress(\n config.c.contractAddress\n );\n\n const result = await this.readFromMirrorNode(\n command,\n AccountId.fromString('0.0.800'),\n contractId\n );\n\n this.logger.info(`Result for ${config.c.contractAddress}:`, result?.result);\n\n if (!result?.result) {\n this.logger.warn(\n `Failed to get result from mirror node for ${config.c.contractAddress}`\n );\n results[config.c.abi.name] = '0';\n Object.assign(stateData, results[config.c.abi.name]); // Flatten the values into stateData\n continue;\n }\n\n const decodedResult = iface?.decodeFunctionResult(\n config.c.abi.name,\n result.result\n );\n let processedResult: Record<string, any> = {\n values: [], // Initialize array for values\n };\n\n // Handle tuple returns and array-like results\n if (decodedResult) {\n // For tuples, ethers.js provides both array-like and named properties\n // We want to use the array-like access to ensure we get each value in order\n config.c.abi.outputs?.forEach((output, idx) => {\n const value = decodedResult[idx];\n const formattedValue = formatValue(value, output.type);\n\n // Add to values array\n processedResult.values.push(formattedValue);\n\n if (output.name) {\n processedResult[output.name] = formattedValue;\n }\n });\n }\n\n await this.cache.set(cacheKey, JSON.stringify(processedResult));\n\n results[config.c.abi.name] = processedResult;\n stateData[config.c.abi.name] = processedResult;\n } catch (error) {\n this.logger.error(\n `Error executing command for ${config.c.contractAddress}:`,\n error\n );\n results[config.c.abi.name] = '0';\n Object.assign(stateData, results[config.c.abi.name]); // Flatten the values into stateData\n }\n }\n\n return { results, stateData };\n }\n\n async executeCommand(\n evmConfig: EVMConfig,\n stateData: Record<string, string> = {}\n ): Promise<any> {\n const { results, stateData: newStateData } = await this.executeCommands(\n [evmConfig],\n stateData\n );\n return {\n result: results[evmConfig.c.abi.name],\n stateData: newStateData,\n };\n }\n\n async readFromMirrorNode(\n command: string,\n from: AccountId,\n to: ContractId\n ): Promise<any> {\n try {\n const toAddress = to.toSolidityAddress();\n const fromAddress = from.toSolidityAddress();\n const response = await fetch(\n `https://${this.network}.${this.mirrorNodeUrl}`,\n {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({\n block: 'latest',\n data: command,\n estimate: false,\n gas: 300_000,\n gasPrice: 100000000,\n from: fromAddress.startsWith('0x')\n ? fromAddress\n : `0x${fromAddress}`,\n to: toAddress?.startsWith('0x') ? toAddress : `0x${toAddress}`,\n value: 0,\n }),\n }\n );\n\n if (!response.ok) {\n throw new Error(`HTTP error! status: ${response.status}`);\n }\n\n return await response.json();\n } catch (error) {\n this.logger.error('Error reading from mirror node:', error);\n return null;\n }\n }\n\n // Add method to clear cache if needed\n public async clearCache(): Promise<void> {\n await this.cache.clear();\n }\n\n // Add method to remove specific cache entry\n public async clearCacheForContract(\n contractAddress: string,\n functionName: string\n ): Promise<void> {\n await this.cache.delete(`${contractAddress}-${functionName}`);\n }\n \n // Method to set log level for this bridge instance\n public setLogLevel(level: 'debug' | 'info' | 'warn' | 'error'): void {\n this.logger.setLogLevel(level);\n }\n}\n\nfunction formatValue(value: any, type: string): string {\n if (value === null || value === undefined) {\n return '0';\n }\n\n // Handle BigNumber objects from ethers.js\n if (value._isBigNumber) {\n return value.toString();\n }\n\n if (type.startsWith('uint') || type.startsWith('int')) {\n return String(value);\n } else if (type === 'bool') {\n return value ? 'true' : 'false';\n } else if (type === 'string') {\n return value;\n } else if (type === 'address') {\n return String(value).toLowerCase();\n } else if (type.endsWith('[]')) {\n // Handle arrays\n // @ts-ignore\n return Array.isArray(value) ? value.map((v) => String(v)) : [];\n } else {\n // Default to string conversion for unknown types\n return String(value);\n }\n}\n"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import Buffer from "./standards-sdk.es24.js";
1
+ import Buffer from "vite-plugin-node-polyfills/shims/buffer";
2
2
  import { Logger } from "./standards-sdk.es15.js";
3
3
  import { Registration } from "./standards-sdk.es9.js";
4
4
  import { HCS11Client } from "./standards-sdk.es13.js";
@@ -22,10 +22,19 @@ class HCS10BaseClient extends Registration {
22
22
  });
23
23
  this.mirrorNode = new HederaMirrorNode(
24
24
  config.network,
25
- this.logger
25
+ this.logger,
26
+ config.mirrorNode
26
27
  );
27
28
  this.feeAmount = config.feeAmount || 1e-3;
28
29
  }
30
+ /**
31
+ * Updates the mirror node configuration.
32
+ * @param config The new mirror node configuration.
33
+ */
34
+ configureMirrorNode(config) {
35
+ this.mirrorNode.configureMirrorNode(config);
36
+ this.logger.info("Mirror node configuration updated");
37
+ }
29
38
  extractTopicFromOperatorId(operatorId) {
30
39
  if (!operatorId) {
31
40
  return "";
@@ -1 +1 @@
1
- {"version":3,"file":"standards-sdk.es5.js","sources":["../../src/hcs-10/base-client.ts"],"sourcesContent":["import { Logger, LogLevel } from '../utils/logger';\nimport { Registration } from './registrations';\nimport { HCS11Client } from '../hcs-11/client';\nimport {\n AccountResponse,\n TopicResponse,\n ScheduleInfo,\n} from '../services/types';\nimport { TopicInfo } from '../services/types';\nimport { TransactionReceipt, PrivateKey, PublicKey } from '@hashgraph/sdk';\nimport axios from 'axios';\nimport { NetworkType } from '../utils/types';\nimport { HederaMirrorNode } from '../services';\nimport {\n WaitForConnectionConfirmationResponse,\n TransactMessage,\n} from './types';\nimport { HRLResolver } from '../utils/hrl-resolver';\n\nexport enum Hcs10MemoType {\n INBOUND = 'inbound',\n OUTBOUND = 'outbound',\n CONNECTION = 'connection',\n}\n\nexport interface HCS10Config {\n network: 'mainnet' | 'testnet';\n logLevel?: LogLevel;\n prettyPrint?: boolean;\n feeAmount?: number;\n}\n\nexport interface HCSMessage {\n p: 'hcs-10';\n op:\n | 'connection_request'\n | 'connection_created'\n | 'message'\n | 'close_connection'\n | 'transaction';\n data?: string;\n created?: Date;\n consensus_timestamp?: string;\n m?: string;\n payer: string;\n outbound_topic_id?: string;\n connection_request_id?: number;\n confirmed_request_id?: number;\n connection_topic_id?: string;\n connected_account_id?: string;\n requesting_account_id?: string;\n connection_id?: number;\n sequence_number: number;\n operator_id?: string;\n reason?: string;\n close_method?: string;\n schedule_id?: string;\n}\n\nexport interface ProfileResponse {\n profile: any;\n topicInfo?: TopicInfo;\n success: boolean;\n error?: string;\n}\n\nexport abstract class HCS10BaseClient extends Registration {\n protected network: string;\n protected logger: Logger;\n protected feeAmount: number;\n public mirrorNode: HederaMirrorNode;\n\n protected operatorId: string;\n\n constructor(config: HCS10Config) {\n super();\n this.network = config.network;\n this.logger = Logger.getInstance({\n level: config.logLevel || 'info',\n module: 'HCS10-BaseClient',\n prettyPrint: config.prettyPrint,\n });\n this.mirrorNode = new HederaMirrorNode(\n config.network as NetworkType,\n this.logger\n );\n this.feeAmount = config.feeAmount || 0.001;\n }\n\n abstract submitPayload(\n topicId: string,\n payload: object | string,\n submitKey?: PrivateKey,\n requiresFee?: boolean\n ): Promise<TransactionReceipt>;\n\n abstract getAccountAndSigner(): { accountId: string; signer: any };\n\n public extractTopicFromOperatorId(operatorId: string): string {\n if (!operatorId) {\n return '';\n }\n const parts = operatorId.split('@');\n if (parts.length > 0) {\n return parts[0];\n }\n return '';\n }\n\n public extractAccountFromOperatorId(operatorId: string): string {\n if (!operatorId) {\n return '';\n }\n const parts = operatorId.split('@');\n if (parts.length > 1) {\n return parts[1];\n }\n return '';\n }\n\n /**\n * Get a stream of messages from a connection topic\n * @param topicId The connection topic ID to get messages from\n * @returns A stream of filtered messages valid for connection topics\n */\n public async getMessageStream(\n topicId: string\n ): Promise<{ messages: HCSMessage[] }> {\n try {\n const messages = await this.mirrorNode.getTopicMessages(topicId);\n const validOps = ['message', 'close_connection', 'transaction'];\n\n const filteredMessages = messages.filter((msg) => {\n if (msg.p !== 'hcs-10' || !validOps.includes(msg.op)) {\n return false;\n }\n\n if (msg.op === 'message' || msg.op === 'close_connection') {\n if (!msg.operator_id) {\n return false;\n }\n\n if (!this.isValidOperatorId(msg.operator_id)) {\n return false;\n }\n\n if (msg.op === 'message' && !msg.data) {\n return false;\n }\n }\n\n if (msg.op === 'transaction') {\n if (!msg.operator_id || !msg.schedule_id) {\n return false;\n }\n\n if (!this.isValidOperatorId(msg.operator_id)) {\n return false;\n }\n }\n\n return true;\n });\n\n return {\n messages: filteredMessages,\n };\n } catch (error: any) {\n if (this.logger) {\n this.logger.error(`Error fetching messages: ${error.message}`);\n }\n return { messages: [] };\n }\n }\n\n /**\n * Public method to retrieve topic information using the internal mirror node client.\n *\n * @param topicId The ID of the topic to query.\n * @returns Topic information or null if not found or an error occurs.\n */\n async getPublicTopicInfo(topicId: string): Promise<TopicResponse | null> {\n try {\n return await this.mirrorNode.getTopicInfo(topicId);\n } catch (error) {\n this.logger.error(\n `Error getting public topic info for ${topicId}:`,\n error\n );\n return null;\n }\n }\n\n /**\n * Checks if a user can submit to a topic and determines if a fee is required\n * @param topicId The topic ID to check\n * @param userAccountId The account ID of the user attempting to submit\n * @returns Object with canSubmit, requiresFee, and optional reason\n */\n public async canSubmitToTopic(\n topicId: string,\n userAccountId: string\n ): Promise<{ canSubmit: boolean; requiresFee: boolean; reason?: string }> {\n try {\n const topicInfo = await this.mirrorNode.getTopicInfo(topicId);\n\n if (!topicInfo) {\n return {\n canSubmit: false,\n requiresFee: false,\n reason: 'Topic does not exist',\n };\n }\n\n if (!topicInfo.submit_key?.key) {\n return { canSubmit: true, requiresFee: false };\n }\n\n try {\n const userPublicKey = await this.mirrorNode.getPublicKey(userAccountId);\n\n if (topicInfo.submit_key._type === 'ProtobufEncoded') {\n const keyBytes = Buffer.from(topicInfo.submit_key.key, 'hex');\n const hasAccess = await this.mirrorNode.checkKeyListAccess(\n keyBytes,\n userPublicKey\n );\n\n if (hasAccess) {\n return { canSubmit: true, requiresFee: false };\n }\n } else {\n const topicSubmitKey = PublicKey.fromString(topicInfo.submit_key.key);\n if (userPublicKey.toString() === topicSubmitKey.toString()) {\n return { canSubmit: true, requiresFee: false };\n }\n }\n } catch (error) {\n this.logger.error(\n `Key validation error: ${\n error instanceof Error ? error.message : String(error)\n }`\n );\n }\n\n if (\n topicInfo.fee_schedule_key?.key &&\n topicInfo.custom_fees?.fixed_fees?.length > 0\n ) {\n return {\n canSubmit: true,\n requiresFee: true,\n reason: 'Requires fee payment via HIP-991',\n };\n }\n\n return {\n canSubmit: false,\n requiresFee: false,\n reason: 'User does not have submit permission for this topic',\n };\n } catch (error) {\n const errorMessage =\n error instanceof Error ? error.message : String(error);\n this.logger.error(`Topic submission validation error: ${errorMessage}`);\n return {\n canSubmit: false,\n requiresFee: false,\n reason: `Error: ${errorMessage}`,\n };\n }\n }\n\n /**\n * Get all messages from a topic\n * @param topicId The topic ID to get messages from\n * @returns All messages from the topic\n */\n public async getMessages(\n topicId: string\n ): Promise<{ messages: HCSMessage[] }> {\n try {\n const messages = await this.mirrorNode.getTopicMessages(topicId);\n\n const validatedMessages = messages.filter((msg) => {\n if (msg.p !== 'hcs-10') {\n return false;\n }\n\n if (msg.op === 'message') {\n if (!msg.data) {\n return false;\n }\n\n if (msg.operator_id) {\n if (!this.isValidOperatorId(msg.operator_id)) {\n return false;\n }\n }\n }\n\n return true;\n });\n\n return {\n messages: validatedMessages,\n };\n } catch (error: any) {\n if (this.logger) {\n this.logger.error(`Error fetching messages: ${error.message}`);\n }\n return { messages: [] };\n }\n }\n\n /**\n * Requests an account from the mirror node\n * @param account The account ID to request\n * @returns The account response\n */\n public async requestAccount(account: string): Promise<AccountResponse> {\n try {\n return await this.mirrorNode.requestAccount(account);\n } catch (e) {\n this.logger.error('Failed to fetch account', e);\n throw e;\n }\n }\n\n /**\n * Retrieves the memo for an account\n * @param accountId The account ID to retrieve the memo for\n * @returns The memo\n */\n public async getAccountMemo(accountId: string): Promise<string | null> {\n return await this.mirrorNode.getAccountMemo(accountId);\n }\n\n /**\n * Retrieves the profile for an account\n * @param accountId The account ID to retrieve the profile for\n * @param disableCache Whether to disable caching of the result\n * @returns The profile\n */\n public async retrieveProfile(\n accountId: string,\n disableCache?: boolean\n ): Promise<ProfileResponse> {\n this.logger.debug(`Retrieving profile for account: ${accountId}`);\n\n const cacheKey = `${accountId}-${this.network}`;\n\n if (!disableCache) {\n const cachedProfileResponse = HCS10Cache.getInstance().get(cacheKey);\n if (cachedProfileResponse) {\n this.logger.debug(`Cache hit for profile: ${accountId}`);\n return cachedProfileResponse;\n }\n }\n try {\n const hcs11Client = new HCS11Client({\n network: this.network as 'mainnet' | 'testnet',\n auth: {\n operatorId: '0.0.0', // Read-only operations only\n },\n logLevel: 'info',\n });\n\n const profileResult = await hcs11Client.fetchProfileByAccountId(\n accountId,\n this.network\n );\n\n if (!profileResult?.success) {\n this.logger.error(\n `Failed to retrieve profile for account ID: ${accountId}`,\n profileResult?.error\n );\n return {\n profile: null,\n success: false,\n error:\n profileResult?.error ||\n `Failed to retrieve profile for account ID: ${accountId}`,\n };\n }\n\n const profile = profileResult.profile;\n let topicInfo: TopicInfo | null = null;\n\n if (\n profileResult.topicInfo?.inboundTopic &&\n profileResult.topicInfo?.outboundTopic &&\n profileResult.topicInfo?.profileTopicId\n ) {\n topicInfo = {\n inboundTopic: profileResult.topicInfo.inboundTopic,\n outboundTopic: profileResult.topicInfo.outboundTopic,\n profileTopicId: profileResult.topicInfo.profileTopicId,\n };\n }\n\n const responseToCache: ProfileResponse = {\n profile,\n topicInfo,\n success: true,\n };\n HCS10Cache.getInstance().set(cacheKey, responseToCache);\n return responseToCache;\n } catch (e: any) {\n const error = e as Error;\n const logMessage = `Failed to retrieve profile: ${error.message}`;\n this.logger.error(logMessage);\n return {\n profile: null,\n success: false,\n error: logMessage,\n };\n }\n }\n\n /**\n * @deprecated Use retrieveCommunicationTopics instead\n * @param accountId The account ID to retrieve the outbound connect topic for\n * @returns {TopicInfo} Topic Info from target profile.\n */\n public async retrieveOutboundConnectTopic(\n accountId: string\n ): Promise<TopicInfo> {\n return await this.retrieveCommunicationTopics(accountId, true);\n }\n\n /**\n * Retrieves the communication topics for an account\n * @param accountId The account ID to retrieve the communication topics for\n * @param disableCache Whether to disable caching of the result\n * @returns {TopicInfo} Topic Info from target profile.\n */\n public async retrieveCommunicationTopics(\n accountId: string,\n disableCache?: boolean\n ): Promise<TopicInfo> {\n try {\n const profileResponse = await this.retrieveProfile(\n accountId,\n disableCache\n );\n\n if (!profileResponse?.success) {\n throw new Error(profileResponse.error || 'Failed to retrieve profile');\n }\n\n const profile = profileResponse.profile;\n\n if (!profile.inboundTopicId || !profile.outboundTopicId) {\n throw new Error(\n `Invalid HCS-11 profile for HCS-10 agent: missing inboundTopicId or outboundTopicId`\n );\n }\n\n if (!profileResponse.topicInfo) {\n throw new Error(\n `TopicInfo is missing in the profile for account ${accountId}`\n );\n }\n\n return profileResponse.topicInfo;\n } catch (e: any) {\n const error = e as Error;\n const logMessage = `Failed to retrieve topic info: ${error.message}`;\n this.logger.error(logMessage);\n throw error;\n }\n }\n\n /**\n * Retrieves outbound messages for an agent\n * @param agentAccountId The account ID of the agent\n * @returns The outbound messages\n */\n public async retrieveOutboundMessages(\n agentAccountId: string\n ): Promise<HCSMessage[]> {\n try {\n const topicInfo = await this.retrieveCommunicationTopics(agentAccountId);\n if (!topicInfo) {\n this.logger.warn(\n `No outbound connect topic found for agentAccountId: ${agentAccountId}`\n );\n return [];\n }\n const response = await this.getMessages(topicInfo.outboundTopic);\n return response.messages.filter(\n (msg) =>\n msg.p === 'hcs-10' &&\n (msg.op === 'connection_request' ||\n msg.op === 'connection_created' ||\n msg.op === 'message')\n );\n } catch (e: any) {\n const error = e as Error;\n const logMessage = `Failed to retrieve outbound messages: ${error.message}`;\n this.logger.error(logMessage);\n return [];\n }\n }\n\n /**\n * Checks if a connection has been created for an agent\n * @param agentAccountId The account ID of the agent\n * @param connectionId The ID of the connection\n * @returns True if the connection has been created, false otherwise\n */\n public async hasConnectionCreated(\n agentAccountId: string,\n connectionId: number\n ): Promise<boolean> {\n try {\n const outBoundTopic = await this.retrieveCommunicationTopics(\n agentAccountId\n );\n const messages = await this.retrieveOutboundMessages(\n outBoundTopic.outboundTopic\n );\n return messages.some(\n (msg) =>\n msg.op === 'connection_created' && msg.connection_id === connectionId\n );\n } catch (e: any) {\n const error = e as Error;\n const logMessage = `Failed to check connection created: ${error.message}`;\n this.logger.error(logMessage);\n return false;\n }\n }\n\n /**\n * Gets message content, resolving any HRL references if needed\n * @param data The data string that may contain an HRL reference\n * @param forceRaw Whether to force returning raw binary data\n * @returns The resolved content\n */\n async getMessageContent(\n data: string,\n forceRaw = false\n ): Promise<string | ArrayBuffer> {\n if (!data.match(/^hcs:\\/\\/(\\d+)\\/([0-9]+\\.[0-9]+\\.[0-9]+)$/)) {\n return data;\n }\n\n try {\n const resolver = new HRLResolver(this.logger.getLevel());\n\n if (!resolver.isValidHRL(data)) {\n return data;\n }\n\n const result = await resolver.resolveHRL(data, {\n network: this.network as 'mainnet' | 'testnet',\n returnRaw: forceRaw,\n });\n\n return result.content;\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 /**\n * Gets message content with its content type, resolving any HRL references if needed\n * @param data The data string that may contain an HRL reference\n * @param forceRaw Whether to force returning raw binary data\n * @returns The resolved content along with content type information\n */\n async getMessageContentWithType(\n data: string,\n forceRaw = false\n ): Promise<{\n content: string | ArrayBuffer;\n contentType: string;\n isBinary: boolean;\n }> {\n if (!data.match(/^hcs:\\/\\/(\\d+)\\/([0-9]+\\.[0-9]+\\.[0-9]+)$/)) {\n return {\n content: data,\n contentType: 'text/plain',\n isBinary: false,\n };\n }\n\n try {\n const resolver = new HRLResolver(this.logger.getLevel());\n\n return await resolver.getContentWithType(data, {\n network: this.network as 'mainnet' | 'testnet',\n returnRaw: forceRaw,\n });\n } catch (e: any) {\n const error = e as Error;\n const logMessage = `Error resolving HRL reference with type: ${error.message}`;\n this.logger.error(logMessage);\n throw new Error(logMessage);\n }\n }\n\n /**\n * Submits a connection request to an inbound topic\n * @param inboundTopicId The ID of the inbound topic\n * @param memo An optional memo for the message\n * @returns The transaction receipt\n */\n async submitConnectionRequest(\n inboundTopicId: string,\n memo: string\n ): Promise<TransactionReceipt> {\n const accountResponse = this.getAccountAndSigner();\n if (!accountResponse?.accountId) {\n throw new Error('Operator account ID is not set');\n }\n const operatorId = await this.getOperatorId();\n const accountId = accountResponse.accountId;\n\n const submissionCheck = await this.canSubmitToTopic(\n inboundTopicId,\n accountId\n );\n\n if (!submissionCheck?.canSubmit) {\n throw new Error(`Cannot submit to topic: ${submissionCheck.reason}`);\n }\n\n const inboundAccountOwner = await this.retrieveInboundAccountId(\n inboundTopicId\n );\n\n if (!inboundAccountOwner) {\n throw new Error('Failed to retrieve topic info account ID');\n }\n\n const connectionRequestMessage = {\n p: 'hcs-10',\n op: 'connection_request',\n operator_id: operatorId,\n m: memo,\n };\n\n const requiresFee = submissionCheck.requiresFee;\n const response = await this.submitPayload(\n inboundTopicId,\n connectionRequestMessage,\n undefined,\n requiresFee\n );\n\n this.logger.info(\n `Submitted connection request to topic ID: ${inboundTopicId}`\n );\n\n const outboundTopic = await this.retrieveCommunicationTopics(accountId);\n\n if (!outboundTopic) {\n throw new Error('Failed to retrieve outbound topic');\n }\n\n const responseSequenceNumber = response.topicSequenceNumber?.toNumber();\n\n if (!responseSequenceNumber) {\n throw new Error('Failed to get response sequence number');\n }\n\n const requestorOperatorId = `${inboundTopicId}@${inboundAccountOwner}`;\n\n await this.submitPayload(outboundTopic.outboundTopic, {\n ...connectionRequestMessage,\n outbound_topic_id: outboundTopic.outboundTopic,\n connection_request_id: responseSequenceNumber,\n operator_id: requestorOperatorId,\n });\n\n return response;\n }\n\n /**\n * Records an outbound connection confirmation\n * @param outboundTopicId The ID of the outbound topic\n * @param connectionRequestId The ID of the connection request\n * @param confirmedRequestId The ID of the confirmed request\n * @param connectionTopicId The ID of the connection topic\n * @param operatorId The operator ID of the original message sender.\n * @param memo An optional memo for the message\n */\n public async recordOutboundConnectionConfirmation({\n outboundTopicId,\n requestorOutboundTopicId,\n connectionRequestId,\n confirmedRequestId,\n connectionTopicId,\n operatorId,\n memo,\n }: {\n outboundTopicId: string;\n requestorOutboundTopicId: string;\n connectionRequestId: number;\n confirmedRequestId: number;\n connectionTopicId: string;\n operatorId: string;\n memo: string;\n }): Promise<TransactionReceipt> {\n const payload = {\n p: 'hcs-10',\n op: 'connection_created',\n connection_topic_id: connectionTopicId,\n outbound_topic_id: outboundTopicId,\n requestor_outbound_topic_id: requestorOutboundTopicId,\n confirmed_request_id: confirmedRequestId,\n connection_request_id: connectionRequestId,\n operator_id: operatorId,\n m: memo,\n };\n return await this.submitPayload(outboundTopicId, payload);\n }\n\n /**\n * Waits for confirmation of a connection request\n * @param inboundTopicId Inbound topic ID\n * @param connectionRequestId Connection request ID\n * @param maxAttempts Maximum number of attempts\n * @param delayMs Delay between attempts in milliseconds\n * @returns Connection confirmation details\n */\n async waitForConnectionConfirmation(\n inboundTopicId: string,\n connectionRequestId: number,\n maxAttempts = 60,\n delayMs = 2000,\n recordConfirmation = true\n ): Promise<WaitForConnectionConfirmationResponse> {\n this.logger.info(\n `Waiting for connection confirmation on inbound topic ${inboundTopicId} for request ID ${connectionRequestId}`\n );\n\n for (let attempt = 0; attempt < maxAttempts; attempt++) {\n this.logger.info(\n `Attempt ${attempt + 1}/${maxAttempts} to find connection confirmation`\n );\n const messages = await this.mirrorNode.getTopicMessages(inboundTopicId);\n\n const connectionCreatedMessages = messages.filter(\n (m) => m.op === 'connection_created'\n );\n\n this.logger.info(\n `Found ${connectionCreatedMessages.length} connection_created messages`\n );\n\n if (connectionCreatedMessages.length > 0) {\n for (const message of connectionCreatedMessages) {\n if (Number(message.connection_id) === Number(connectionRequestId)) {\n const confirmationResult = {\n connectionTopicId: message.connection_topic_id,\n sequence_number: Number(message.sequence_number),\n confirmedBy: message.operator_id,\n memo: message.m,\n };\n\n const confirmedByAccountId = this.extractAccountFromOperatorId(\n confirmationResult.confirmedBy\n );\n\n const account = this.getAccountAndSigner();\n const confirmedByConnectionTopics =\n await this.retrieveCommunicationTopics(confirmedByAccountId);\n\n const agentConnectionTopics =\n await this.retrieveCommunicationTopics(account.accountId);\n\n this.logger.info(\n 'Connection confirmation found',\n confirmationResult\n );\n\n if (recordConfirmation) {\n /**\n * Record's the confirmation of the connection request from the\n * confirmedBy account to the agent account.\n */\n await this.recordOutboundConnectionConfirmation({\n requestorOutboundTopicId:\n confirmedByConnectionTopics.outboundTopic,\n outboundTopicId: agentConnectionTopics.outboundTopic,\n connectionRequestId,\n confirmedRequestId: confirmationResult.sequence_number,\n connectionTopicId: confirmationResult.connectionTopicId,\n operatorId: confirmationResult.confirmedBy,\n memo: confirmationResult.memo || 'Connection confirmed',\n });\n }\n\n return confirmationResult;\n }\n }\n }\n\n if (attempt < maxAttempts - 1) {\n this.logger.info(\n `No matching confirmation found, waiting ${delayMs}ms before retrying...`\n );\n await new Promise((resolve) => setTimeout(resolve, delayMs));\n }\n }\n\n throw new Error(\n `Connection confirmation not found after ${maxAttempts} attempts for request ID ${connectionRequestId}`\n );\n }\n\n /**\n * Retrieves the operator ID for the current agent\n * @param disableCache Whether to disable caching of the result\n * @returns The operator ID\n */\n public async getOperatorId(disableCache?: boolean): Promise<string> {\n if (this.operatorId && !disableCache) {\n return this.operatorId;\n }\n\n const accountResponse = this.getAccountAndSigner();\n\n if (!accountResponse.accountId) {\n throw new Error('Operator ID not found');\n }\n\n const profile = await this.retrieveProfile(accountResponse.accountId);\n\n if (!profile.success) {\n throw new Error('Failed to retrieve profile');\n }\n\n const operatorId = `${profile.topicInfo?.inboundTopic}@${accountResponse.accountId}`;\n this.operatorId = operatorId;\n return operatorId;\n }\n\n /**\n * Retrieves the account ID of the owner of an inbound topic\n * @param inboundTopicId The ID of the inbound topic\n * @returns The account ID of the owner of the inbound topic\n */\n public async retrieveInboundAccountId(\n inboundTopicId: string\n ): Promise<string> {\n const topicInfo = await this.mirrorNode.getTopicInfo(inboundTopicId);\n\n if (!topicInfo?.memo) {\n throw new Error('Failed to retrieve topic info');\n }\n\n const topicInfoMemo = topicInfo.memo.toString();\n const topicInfoParts = topicInfoMemo.split(':');\n const inboundAccountOwner = topicInfoParts?.[4];\n\n if (!inboundAccountOwner) {\n throw new Error('Failed to retrieve topic info account ID');\n }\n\n return inboundAccountOwner;\n }\n\n public clearCache(): void {\n HCS10Cache.getInstance().clear();\n }\n\n /**\n * Generates a standard HCS-10 memo string.\n * @param type The type of topic memo ('inbound', 'outbound', 'connection').\n * @param options Configuration options for the memo.\n * @returns The formatted memo string.\n * @protected\n */\n protected _generateHcs10Memo(\n type: Hcs10MemoType,\n options: {\n ttl?: number;\n accountId?: string;\n inboundTopicId?: string;\n connectionId?: number;\n }\n ): string {\n const ttl = options.ttl ?? 60;\n\n switch (type) {\n case Hcs10MemoType.INBOUND:\n if (!options.accountId) {\n throw new Error('accountId is required for inbound memo');\n }\n return `hcs-10:0:${ttl}:0:${options.accountId}`;\n case Hcs10MemoType.OUTBOUND:\n return `hcs-10:0:${ttl}:1`;\n case Hcs10MemoType.CONNECTION:\n if (!options.inboundTopicId || options.connectionId === undefined) {\n throw new Error(\n 'inboundTopicId and connectionId are required for connection memo'\n );\n }\n return `hcs-10:1:${ttl}:2:${options.inboundTopicId}:${options.connectionId}`;\n default:\n throw new Error(`Invalid HCS-10 memo type: ${type}`);\n }\n }\n\n protected async checkRegistrationStatus(\n transactionId: string,\n network: string,\n baseUrl: string\n ): Promise<{ status: 'pending' | 'success' | 'failed' }> {\n try {\n const response = await fetch(`${baseUrl}/api/request-confirm`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'X-Network': network,\n },\n body: JSON.stringify({ transaction_id: transactionId }),\n });\n\n if (!response.ok) {\n throw new Error(\n `Failed to confirm registration: ${response.statusText}`\n );\n }\n\n return await response.json();\n } catch (e: any) {\n const error = e as Error;\n const logMessage = `Error checking registration status: ${error.message}`;\n this.logger.error(logMessage);\n throw error;\n }\n }\n\n /**\n * Validates if an operator_id follows the correct format (agentTopicId@accountId)\n * @param operatorId The operator ID to validate\n * @returns True if the format is valid, false otherwise\n */\n protected isValidOperatorId(operatorId: string): boolean {\n if (!operatorId) {\n return false;\n }\n\n const parts = operatorId.split('@');\n\n if (parts.length !== 2) {\n return false;\n }\n\n const agentTopicId = parts[0];\n const accountId = parts[1];\n\n if (!agentTopicId) {\n return false;\n }\n\n if (!accountId) {\n return false;\n }\n\n const hederaIdPattern = /^[0-9]+\\.[0-9]+\\.[0-9]+$/;\n\n if (!hederaIdPattern.test(accountId)) {\n return false;\n }\n\n if (!hederaIdPattern.test(agentTopicId)) {\n return false;\n }\n\n return true;\n }\n\n /**\n * Retrieves all transaction requests from a topic\n * @param topicId The topic ID to retrieve transactions from\n * @param limit Optional maximum number of messages to retrieve\n * @returns Array of transaction requests sorted by timestamp (newest first)\n */\n public async getTransactionRequests(\n topicId: string,\n limit?: number\n ): Promise<TransactMessage[]> {\n this.logger.debug(`Retrieving transaction requests from topic ${topicId}`);\n\n const { messages } = await this.getMessageStream(topicId);\n\n const transactOperations = (\n messages\n .filter((m) => m.op === 'transaction' && m.schedule_id)\n .map((m) => ({\n operator_id: m.operator_id || '',\n schedule_id: m.schedule_id || '',\n data: m.data || '',\n memo: m.m,\n sequence_number: Number(m.sequence_number),\n })) as unknown as TransactMessage[]\n ).sort((a, b) => {\n if (a.sequence_number && b.sequence_number) {\n return b.sequence_number - a.sequence_number;\n }\n return 0;\n });\n\n const result = limit\n ? transactOperations.slice(0, limit)\n : transactOperations;\n\n return result;\n }\n}\n\nexport class HCS10Cache {\n private static instance: HCS10Cache;\n private cache: Map<string, ProfileResponse>;\n private cacheExpiry: Map<string, number>;\n private readonly CACHE_TTL = 3600000;\n\n private constructor() {\n this.cache = new Map();\n this.cacheExpiry = new Map();\n }\n\n static getInstance(): HCS10Cache {\n if (!HCS10Cache.instance) {\n HCS10Cache.instance = new HCS10Cache();\n }\n return HCS10Cache.instance;\n }\n\n set(key: string, value: ProfileResponse): void {\n this.cache.set(key, value);\n this.cacheExpiry.set(key, Date.now() + this.CACHE_TTL);\n }\n\n get(key: string): ProfileResponse | undefined {\n const expiry = this.cacheExpiry.get(key);\n if (expiry && expiry > Date.now()) {\n return this.cache.get(key);\n }\n if (expiry) {\n this.cache.delete(key);\n this.cacheExpiry.delete(key);\n }\n return undefined;\n }\n\n clear(): void {\n this.cache.clear();\n this.cacheExpiry.clear();\n }\n}\n"],"names":["Hcs10MemoType"],"mappings":"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"}
1
+ {"version":3,"file":"standards-sdk.es5.js","sources":["../../src/hcs-10/base-client.ts"],"sourcesContent":["import { Logger, LogLevel } from '../utils/logger';\nimport { Registration } from './registrations';\nimport { HCS11Client } from '../hcs-11/client';\nimport {\n AccountResponse,\n TopicResponse,\n ScheduleInfo,\n} from '../services/types';\nimport { TopicInfo } from '../services/types';\nimport { TransactionReceipt, PrivateKey, PublicKey } from '@hashgraph/sdk';\nimport axios from 'axios';\nimport { NetworkType } from '../utils/types';\nimport { HederaMirrorNode, MirrorNodeConfig } from '../services';\nimport {\n WaitForConnectionConfirmationResponse,\n TransactMessage,\n} from './types';\nimport { HRLResolver } from '../utils/hrl-resolver';\n\nexport enum Hcs10MemoType {\n INBOUND = 'inbound',\n OUTBOUND = 'outbound',\n CONNECTION = 'connection',\n}\n\n/**\n * Configuration for HCS-10 client.\n * \n * @example\n * // Using default Hedera mirror nodes\n * const config = {\n * network: 'testnet',\n * logLevel: 'info'\n * };\n * \n * @example\n * // Using HGraph custom mirror node provider\n * const config = {\n * network: 'mainnet',\n * logLevel: 'info',\n * mirrorNode: {\n * customUrl: 'https://mainnet.hedera.api.hgraph.dev/v1/<API-KEY>',\n * apiKey: 'your-hgraph-api-key'\n * }\n * };\n * \n * @example\n * // Using custom mirror node with headers\n * const config = {\n * network: 'testnet',\n * mirrorNode: {\n * customUrl: 'https://custom-mirror.example.com',\n * apiKey: 'your-api-key',\n * headers: {\n * 'X-Custom-Header': 'value'\n * }\n * }\n * };\n */\nexport interface HCS10Config {\n /** The Hedera network to connect to */\n network: 'mainnet' | 'testnet';\n /** Log level for the client */\n logLevel?: LogLevel;\n /** Whether to pretty print logs */\n prettyPrint?: boolean;\n /** Fee amount for transactions that require fees */\n feeAmount?: number;\n /** Custom mirror node configuration */\n mirrorNode?: MirrorNodeConfig;\n}\n\nexport interface HCSMessage {\n p: 'hcs-10';\n op:\n | 'connection_request'\n | 'connection_created'\n | 'message'\n | 'close_connection'\n | 'transaction';\n data?: string;\n created?: Date;\n consensus_timestamp?: string;\n m?: string;\n payer: string;\n outbound_topic_id?: string;\n connection_request_id?: number;\n confirmed_request_id?: number;\n connection_topic_id?: string;\n connected_account_id?: string;\n requesting_account_id?: string;\n connection_id?: number;\n sequence_number: number;\n operator_id?: string;\n reason?: string;\n close_method?: string;\n schedule_id?: string;\n}\n\nexport interface ProfileResponse {\n profile: any;\n topicInfo?: TopicInfo;\n success: boolean;\n error?: string;\n}\n\nexport abstract class HCS10BaseClient extends Registration {\n protected network: string;\n protected logger: Logger;\n protected feeAmount: number;\n public mirrorNode: HederaMirrorNode;\n\n protected operatorId: string;\n\n constructor(config: HCS10Config) {\n super();\n this.network = config.network;\n this.logger = Logger.getInstance({\n level: config.logLevel || 'info',\n module: 'HCS10-BaseClient',\n prettyPrint: config.prettyPrint,\n });\n this.mirrorNode = new HederaMirrorNode(\n config.network as NetworkType,\n this.logger,\n config.mirrorNode\n );\n this.feeAmount = config.feeAmount || 0.001;\n }\n\n abstract submitPayload(\n topicId: string,\n payload: object | string,\n submitKey?: PrivateKey,\n requiresFee?: boolean\n ): Promise<TransactionReceipt>;\n\n abstract getAccountAndSigner(): { accountId: string; signer: any };\n\n /**\n * Updates the mirror node configuration.\n * @param config The new mirror node configuration.\n */\n public configureMirrorNode(config: MirrorNodeConfig): void {\n this.mirrorNode.configureMirrorNode(config);\n this.logger.info('Mirror node configuration updated');\n }\n\n public extractTopicFromOperatorId(operatorId: string): string {\n if (!operatorId) {\n return '';\n }\n const parts = operatorId.split('@');\n if (parts.length > 0) {\n return parts[0];\n }\n return '';\n }\n\n public extractAccountFromOperatorId(operatorId: string): string {\n if (!operatorId) {\n return '';\n }\n const parts = operatorId.split('@');\n if (parts.length > 1) {\n return parts[1];\n }\n return '';\n }\n\n /**\n * Get a stream of messages from a connection topic\n * @param topicId The connection topic ID to get messages from\n * @returns A stream of filtered messages valid for connection topics\n */\n public async getMessageStream(\n topicId: string\n ): Promise<{ messages: HCSMessage[] }> {\n try {\n const messages = await this.mirrorNode.getTopicMessages(topicId);\n const validOps = ['message', 'close_connection', 'transaction'];\n\n const filteredMessages = messages.filter((msg) => {\n if (msg.p !== 'hcs-10' || !validOps.includes(msg.op)) {\n return false;\n }\n\n if (msg.op === 'message' || msg.op === 'close_connection') {\n if (!msg.operator_id) {\n return false;\n }\n\n if (!this.isValidOperatorId(msg.operator_id)) {\n return false;\n }\n\n if (msg.op === 'message' && !msg.data) {\n return false;\n }\n }\n\n if (msg.op === 'transaction') {\n if (!msg.operator_id || !msg.schedule_id) {\n return false;\n }\n\n if (!this.isValidOperatorId(msg.operator_id)) {\n return false;\n }\n }\n\n return true;\n });\n\n return {\n messages: filteredMessages,\n };\n } catch (error: any) {\n if (this.logger) {\n this.logger.error(`Error fetching messages: ${error.message}`);\n }\n return { messages: [] };\n }\n }\n\n /**\n * Public method to retrieve topic information using the internal mirror node client.\n *\n * @param topicId The ID of the topic to query.\n * @returns Topic information or null if not found or an error occurs.\n */\n async getPublicTopicInfo(topicId: string): Promise<TopicResponse | null> {\n try {\n return await this.mirrorNode.getTopicInfo(topicId);\n } catch (error) {\n this.logger.error(\n `Error getting public topic info for ${topicId}:`,\n error\n );\n return null;\n }\n }\n\n /**\n * Checks if a user can submit to a topic and determines if a fee is required\n * @param topicId The topic ID to check\n * @param userAccountId The account ID of the user attempting to submit\n * @returns Object with canSubmit, requiresFee, and optional reason\n */\n public async canSubmitToTopic(\n topicId: string,\n userAccountId: string\n ): Promise<{ canSubmit: boolean; requiresFee: boolean; reason?: string }> {\n try {\n const topicInfo = await this.mirrorNode.getTopicInfo(topicId);\n\n if (!topicInfo) {\n return {\n canSubmit: false,\n requiresFee: false,\n reason: 'Topic does not exist',\n };\n }\n\n if (!topicInfo.submit_key?.key) {\n return { canSubmit: true, requiresFee: false };\n }\n\n try {\n const userPublicKey = await this.mirrorNode.getPublicKey(userAccountId);\n\n if (topicInfo.submit_key._type === 'ProtobufEncoded') {\n const keyBytes = Buffer.from(topicInfo.submit_key.key, 'hex');\n const hasAccess = await this.mirrorNode.checkKeyListAccess(\n keyBytes,\n userPublicKey\n );\n\n if (hasAccess) {\n return { canSubmit: true, requiresFee: false };\n }\n } else {\n const topicSubmitKey = PublicKey.fromString(topicInfo.submit_key.key);\n if (userPublicKey.toString() === topicSubmitKey.toString()) {\n return { canSubmit: true, requiresFee: false };\n }\n }\n } catch (error) {\n this.logger.error(\n `Key validation error: ${\n error instanceof Error ? error.message : String(error)\n }`\n );\n }\n\n if (\n topicInfo.fee_schedule_key?.key &&\n topicInfo.custom_fees?.fixed_fees?.length > 0\n ) {\n return {\n canSubmit: true,\n requiresFee: true,\n reason: 'Requires fee payment via HIP-991',\n };\n }\n\n return {\n canSubmit: false,\n requiresFee: false,\n reason: 'User does not have submit permission for this topic',\n };\n } catch (error) {\n const errorMessage =\n error instanceof Error ? error.message : String(error);\n this.logger.error(`Topic submission validation error: ${errorMessage}`);\n return {\n canSubmit: false,\n requiresFee: false,\n reason: `Error: ${errorMessage}`,\n };\n }\n }\n\n /**\n * Get all messages from a topic\n * @param topicId The topic ID to get messages from\n * @returns All messages from the topic\n */\n public async getMessages(\n topicId: string\n ): Promise<{ messages: HCSMessage[] }> {\n try {\n const messages = await this.mirrorNode.getTopicMessages(topicId);\n\n const validatedMessages = messages.filter((msg) => {\n if (msg.p !== 'hcs-10') {\n return false;\n }\n\n if (msg.op === 'message') {\n if (!msg.data) {\n return false;\n }\n\n if (msg.operator_id) {\n if (!this.isValidOperatorId(msg.operator_id)) {\n return false;\n }\n }\n }\n\n return true;\n });\n\n return {\n messages: validatedMessages,\n };\n } catch (error: any) {\n if (this.logger) {\n this.logger.error(`Error fetching messages: ${error.message}`);\n }\n return { messages: [] };\n }\n }\n\n /**\n * Requests an account from the mirror node\n * @param account The account ID to request\n * @returns The account response\n */\n public async requestAccount(account: string): Promise<AccountResponse> {\n try {\n return await this.mirrorNode.requestAccount(account);\n } catch (e) {\n this.logger.error('Failed to fetch account', e);\n throw e;\n }\n }\n\n /**\n * Retrieves the memo for an account\n * @param accountId The account ID to retrieve the memo for\n * @returns The memo\n */\n public async getAccountMemo(accountId: string): Promise<string | null> {\n return await this.mirrorNode.getAccountMemo(accountId);\n }\n\n /**\n * Retrieves the profile for an account\n * @param accountId The account ID to retrieve the profile for\n * @param disableCache Whether to disable caching of the result\n * @returns The profile\n */\n public async retrieveProfile(\n accountId: string,\n disableCache?: boolean\n ): Promise<ProfileResponse> {\n this.logger.debug(`Retrieving profile for account: ${accountId}`);\n\n const cacheKey = `${accountId}-${this.network}`;\n\n if (!disableCache) {\n const cachedProfileResponse = HCS10Cache.getInstance().get(cacheKey);\n if (cachedProfileResponse) {\n this.logger.debug(`Cache hit for profile: ${accountId}`);\n return cachedProfileResponse;\n }\n }\n try {\n const hcs11Client = new HCS11Client({\n network: this.network as 'mainnet' | 'testnet',\n auth: {\n operatorId: '0.0.0', // Read-only operations only\n },\n logLevel: 'info',\n });\n\n const profileResult = await hcs11Client.fetchProfileByAccountId(\n accountId,\n this.network\n );\n\n if (!profileResult?.success) {\n this.logger.error(\n `Failed to retrieve profile for account ID: ${accountId}`,\n profileResult?.error\n );\n return {\n profile: null,\n success: false,\n error:\n profileResult?.error ||\n `Failed to retrieve profile for account ID: ${accountId}`,\n };\n }\n\n const profile = profileResult.profile;\n let topicInfo: TopicInfo | null = null;\n\n if (\n profileResult.topicInfo?.inboundTopic &&\n profileResult.topicInfo?.outboundTopic &&\n profileResult.topicInfo?.profileTopicId\n ) {\n topicInfo = {\n inboundTopic: profileResult.topicInfo.inboundTopic,\n outboundTopic: profileResult.topicInfo.outboundTopic,\n profileTopicId: profileResult.topicInfo.profileTopicId,\n };\n }\n\n const responseToCache: ProfileResponse = {\n profile,\n topicInfo,\n success: true,\n };\n HCS10Cache.getInstance().set(cacheKey, responseToCache);\n return responseToCache;\n } catch (e: any) {\n const error = e as Error;\n const logMessage = `Failed to retrieve profile: ${error.message}`;\n this.logger.error(logMessage);\n return {\n profile: null,\n success: false,\n error: logMessage,\n };\n }\n }\n\n /**\n * @deprecated Use retrieveCommunicationTopics instead\n * @param accountId The account ID to retrieve the outbound connect topic for\n * @returns {TopicInfo} Topic Info from target profile.\n */\n public async retrieveOutboundConnectTopic(\n accountId: string\n ): Promise<TopicInfo> {\n return await this.retrieveCommunicationTopics(accountId, true);\n }\n\n /**\n * Retrieves the communication topics for an account\n * @param accountId The account ID to retrieve the communication topics for\n * @param disableCache Whether to disable caching of the result\n * @returns {TopicInfo} Topic Info from target profile.\n */\n public async retrieveCommunicationTopics(\n accountId: string,\n disableCache?: boolean\n ): Promise<TopicInfo> {\n try {\n const profileResponse = await this.retrieveProfile(\n accountId,\n disableCache\n );\n\n if (!profileResponse?.success) {\n throw new Error(profileResponse.error || 'Failed to retrieve profile');\n }\n\n const profile = profileResponse.profile;\n\n if (!profile.inboundTopicId || !profile.outboundTopicId) {\n throw new Error(\n `Invalid HCS-11 profile for HCS-10 agent: missing inboundTopicId or outboundTopicId`\n );\n }\n\n if (!profileResponse.topicInfo) {\n throw new Error(\n `TopicInfo is missing in the profile for account ${accountId}`\n );\n }\n\n return profileResponse.topicInfo;\n } catch (e: any) {\n const error = e as Error;\n const logMessage = `Failed to retrieve topic info: ${error.message}`;\n this.logger.error(logMessage);\n throw error;\n }\n }\n\n /**\n * Retrieves outbound messages for an agent\n * @param agentAccountId The account ID of the agent\n * @returns The outbound messages\n */\n public async retrieveOutboundMessages(\n agentAccountId: string\n ): Promise<HCSMessage[]> {\n try {\n const topicInfo = await this.retrieveCommunicationTopics(agentAccountId);\n if (!topicInfo) {\n this.logger.warn(\n `No outbound connect topic found for agentAccountId: ${agentAccountId}`\n );\n return [];\n }\n const response = await this.getMessages(topicInfo.outboundTopic);\n return response.messages.filter(\n (msg) =>\n msg.p === 'hcs-10' &&\n (msg.op === 'connection_request' ||\n msg.op === 'connection_created' ||\n msg.op === 'message')\n );\n } catch (e: any) {\n const error = e as Error;\n const logMessage = `Failed to retrieve outbound messages: ${error.message}`;\n this.logger.error(logMessage);\n return [];\n }\n }\n\n /**\n * Checks if a connection has been created for an agent\n * @param agentAccountId The account ID of the agent\n * @param connectionId The ID of the connection\n * @returns True if the connection has been created, false otherwise\n */\n public async hasConnectionCreated(\n agentAccountId: string,\n connectionId: number\n ): Promise<boolean> {\n try {\n const outBoundTopic = await this.retrieveCommunicationTopics(\n agentAccountId\n );\n const messages = await this.retrieveOutboundMessages(\n outBoundTopic.outboundTopic\n );\n return messages.some(\n (msg) =>\n msg.op === 'connection_created' && msg.connection_id === connectionId\n );\n } catch (e: any) {\n const error = e as Error;\n const logMessage = `Failed to check connection created: ${error.message}`;\n this.logger.error(logMessage);\n return false;\n }\n }\n\n /**\n * Gets message content, resolving any HRL references if needed\n * @param data The data string that may contain an HRL reference\n * @param forceRaw Whether to force returning raw binary data\n * @returns The resolved content\n */\n async getMessageContent(\n data: string,\n forceRaw = false\n ): Promise<string | ArrayBuffer> {\n if (!data.match(/^hcs:\\/\\/(\\d+)\\/([0-9]+\\.[0-9]+\\.[0-9]+)$/)) {\n return data;\n }\n\n try {\n const resolver = new HRLResolver(this.logger.getLevel());\n\n if (!resolver.isValidHRL(data)) {\n return data;\n }\n\n const result = await resolver.resolveHRL(data, {\n network: this.network as 'mainnet' | 'testnet',\n returnRaw: forceRaw,\n });\n\n return result.content;\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 /**\n * Gets message content with its content type, resolving any HRL references if needed\n * @param data The data string that may contain an HRL reference\n * @param forceRaw Whether to force returning raw binary data\n * @returns The resolved content along with content type information\n */\n async getMessageContentWithType(\n data: string,\n forceRaw = false\n ): Promise<{\n content: string | ArrayBuffer;\n contentType: string;\n isBinary: boolean;\n }> {\n if (!data.match(/^hcs:\\/\\/(\\d+)\\/([0-9]+\\.[0-9]+\\.[0-9]+)$/)) {\n return {\n content: data,\n contentType: 'text/plain',\n isBinary: false,\n };\n }\n\n try {\n const resolver = new HRLResolver(this.logger.getLevel());\n\n return await resolver.getContentWithType(data, {\n network: this.network as 'mainnet' | 'testnet',\n returnRaw: forceRaw,\n });\n } catch (e: any) {\n const error = e as Error;\n const logMessage = `Error resolving HRL reference with type: ${error.message}`;\n this.logger.error(logMessage);\n throw new Error(logMessage);\n }\n }\n\n /**\n * Submits a connection request to an inbound topic\n * @param inboundTopicId The ID of the inbound topic\n * @param memo An optional memo for the message\n * @returns The transaction receipt\n */\n async submitConnectionRequest(\n inboundTopicId: string,\n memo: string\n ): Promise<TransactionReceipt> {\n const accountResponse = this.getAccountAndSigner();\n if (!accountResponse?.accountId) {\n throw new Error('Operator account ID is not set');\n }\n const operatorId = await this.getOperatorId();\n const accountId = accountResponse.accountId;\n\n const submissionCheck = await this.canSubmitToTopic(\n inboundTopicId,\n accountId\n );\n\n if (!submissionCheck?.canSubmit) {\n throw new Error(`Cannot submit to topic: ${submissionCheck.reason}`);\n }\n\n const inboundAccountOwner = await this.retrieveInboundAccountId(\n inboundTopicId\n );\n\n if (!inboundAccountOwner) {\n throw new Error('Failed to retrieve topic info account ID');\n }\n\n const connectionRequestMessage = {\n p: 'hcs-10',\n op: 'connection_request',\n operator_id: operatorId,\n m: memo,\n };\n\n const requiresFee = submissionCheck.requiresFee;\n const response = await this.submitPayload(\n inboundTopicId,\n connectionRequestMessage,\n undefined,\n requiresFee\n );\n\n this.logger.info(\n `Submitted connection request to topic ID: ${inboundTopicId}`\n );\n\n const outboundTopic = await this.retrieveCommunicationTopics(accountId);\n\n if (!outboundTopic) {\n throw new Error('Failed to retrieve outbound topic');\n }\n\n const responseSequenceNumber = response.topicSequenceNumber?.toNumber();\n\n if (!responseSequenceNumber) {\n throw new Error('Failed to get response sequence number');\n }\n\n const requestorOperatorId = `${inboundTopicId}@${inboundAccountOwner}`;\n\n await this.submitPayload(outboundTopic.outboundTopic, {\n ...connectionRequestMessage,\n outbound_topic_id: outboundTopic.outboundTopic,\n connection_request_id: responseSequenceNumber,\n operator_id: requestorOperatorId,\n });\n\n return response;\n }\n\n /**\n * Records an outbound connection confirmation\n * @param outboundTopicId The ID of the outbound topic\n * @param connectionRequestId The ID of the connection request\n * @param confirmedRequestId The ID of the confirmed request\n * @param connectionTopicId The ID of the connection topic\n * @param operatorId The operator ID of the original message sender.\n * @param memo An optional memo for the message\n */\n public async recordOutboundConnectionConfirmation({\n outboundTopicId,\n requestorOutboundTopicId,\n connectionRequestId,\n confirmedRequestId,\n connectionTopicId,\n operatorId,\n memo,\n }: {\n outboundTopicId: string;\n requestorOutboundTopicId: string;\n connectionRequestId: number;\n confirmedRequestId: number;\n connectionTopicId: string;\n operatorId: string;\n memo: string;\n }): Promise<TransactionReceipt> {\n const payload = {\n p: 'hcs-10',\n op: 'connection_created',\n connection_topic_id: connectionTopicId,\n outbound_topic_id: outboundTopicId,\n requestor_outbound_topic_id: requestorOutboundTopicId,\n confirmed_request_id: confirmedRequestId,\n connection_request_id: connectionRequestId,\n operator_id: operatorId,\n m: memo,\n };\n return await this.submitPayload(outboundTopicId, payload);\n }\n\n /**\n * Waits for confirmation of a connection request\n * @param inboundTopicId Inbound topic ID\n * @param connectionRequestId Connection request ID\n * @param maxAttempts Maximum number of attempts\n * @param delayMs Delay between attempts in milliseconds\n * @returns Connection confirmation details\n */\n async waitForConnectionConfirmation(\n inboundTopicId: string,\n connectionRequestId: number,\n maxAttempts = 60,\n delayMs = 2000,\n recordConfirmation = true\n ): Promise<WaitForConnectionConfirmationResponse> {\n this.logger.info(\n `Waiting for connection confirmation on inbound topic ${inboundTopicId} for request ID ${connectionRequestId}`\n );\n\n for (let attempt = 0; attempt < maxAttempts; attempt++) {\n this.logger.info(\n `Attempt ${attempt + 1}/${maxAttempts} to find connection confirmation`\n );\n const messages = await this.mirrorNode.getTopicMessages(inboundTopicId);\n\n const connectionCreatedMessages = messages.filter(\n (m) => m.op === 'connection_created'\n );\n\n this.logger.info(\n `Found ${connectionCreatedMessages.length} connection_created messages`\n );\n\n if (connectionCreatedMessages.length > 0) {\n for (const message of connectionCreatedMessages) {\n if (Number(message.connection_id) === Number(connectionRequestId)) {\n const confirmationResult = {\n connectionTopicId: message.connection_topic_id,\n sequence_number: Number(message.sequence_number),\n confirmedBy: message.operator_id,\n memo: message.m,\n };\n\n const confirmedByAccountId = this.extractAccountFromOperatorId(\n confirmationResult.confirmedBy\n );\n\n const account = this.getAccountAndSigner();\n const confirmedByConnectionTopics =\n await this.retrieveCommunicationTopics(confirmedByAccountId);\n\n const agentConnectionTopics =\n await this.retrieveCommunicationTopics(account.accountId);\n\n this.logger.info(\n 'Connection confirmation found',\n confirmationResult\n );\n\n if (recordConfirmation) {\n /**\n * Record's the confirmation of the connection request from the\n * confirmedBy account to the agent account.\n */\n await this.recordOutboundConnectionConfirmation({\n requestorOutboundTopicId:\n confirmedByConnectionTopics.outboundTopic,\n outboundTopicId: agentConnectionTopics.outboundTopic,\n connectionRequestId,\n confirmedRequestId: confirmationResult.sequence_number,\n connectionTopicId: confirmationResult.connectionTopicId,\n operatorId: confirmationResult.confirmedBy,\n memo: confirmationResult.memo || 'Connection confirmed',\n });\n }\n\n return confirmationResult;\n }\n }\n }\n\n if (attempt < maxAttempts - 1) {\n this.logger.info(\n `No matching confirmation found, waiting ${delayMs}ms before retrying...`\n );\n await new Promise((resolve) => setTimeout(resolve, delayMs));\n }\n }\n\n throw new Error(\n `Connection confirmation not found after ${maxAttempts} attempts for request ID ${connectionRequestId}`\n );\n }\n\n /**\n * Retrieves the operator ID for the current agent\n * @param disableCache Whether to disable caching of the result\n * @returns The operator ID\n */\n public async getOperatorId(disableCache?: boolean): Promise<string> {\n if (this.operatorId && !disableCache) {\n return this.operatorId;\n }\n\n const accountResponse = this.getAccountAndSigner();\n\n if (!accountResponse.accountId) {\n throw new Error('Operator ID not found');\n }\n\n const profile = await this.retrieveProfile(accountResponse.accountId);\n\n if (!profile.success) {\n throw new Error('Failed to retrieve profile');\n }\n\n const operatorId = `${profile.topicInfo?.inboundTopic}@${accountResponse.accountId}`;\n this.operatorId = operatorId;\n return operatorId;\n }\n\n /**\n * Retrieves the account ID of the owner of an inbound topic\n * @param inboundTopicId The ID of the inbound topic\n * @returns The account ID of the owner of the inbound topic\n */\n public async retrieveInboundAccountId(\n inboundTopicId: string\n ): Promise<string> {\n const topicInfo = await this.mirrorNode.getTopicInfo(inboundTopicId);\n\n if (!topicInfo?.memo) {\n throw new Error('Failed to retrieve topic info');\n }\n\n const topicInfoMemo = topicInfo.memo.toString();\n const topicInfoParts = topicInfoMemo.split(':');\n const inboundAccountOwner = topicInfoParts?.[4];\n\n if (!inboundAccountOwner) {\n throw new Error('Failed to retrieve topic info account ID');\n }\n\n return inboundAccountOwner;\n }\n\n public clearCache(): void {\n HCS10Cache.getInstance().clear();\n }\n\n /**\n * Generates a standard HCS-10 memo string.\n * @param type The type of topic memo ('inbound', 'outbound', 'connection').\n * @param options Configuration options for the memo.\n * @returns The formatted memo string.\n * @protected\n */\n protected _generateHcs10Memo(\n type: Hcs10MemoType,\n options: {\n ttl?: number;\n accountId?: string;\n inboundTopicId?: string;\n connectionId?: number;\n }\n ): string {\n const ttl = options.ttl ?? 60;\n\n switch (type) {\n case Hcs10MemoType.INBOUND:\n if (!options.accountId) {\n throw new Error('accountId is required for inbound memo');\n }\n return `hcs-10:0:${ttl}:0:${options.accountId}`;\n case Hcs10MemoType.OUTBOUND:\n return `hcs-10:0:${ttl}:1`;\n case Hcs10MemoType.CONNECTION:\n if (!options.inboundTopicId || options.connectionId === undefined) {\n throw new Error(\n 'inboundTopicId and connectionId are required for connection memo'\n );\n }\n return `hcs-10:1:${ttl}:2:${options.inboundTopicId}:${options.connectionId}`;\n default:\n throw new Error(`Invalid HCS-10 memo type: ${type}`);\n }\n }\n\n protected async checkRegistrationStatus(\n transactionId: string,\n network: string,\n baseUrl: string\n ): Promise<{ status: 'pending' | 'success' | 'failed' }> {\n try {\n const response = await fetch(`${baseUrl}/api/request-confirm`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'X-Network': network,\n },\n body: JSON.stringify({ transaction_id: transactionId }),\n });\n\n if (!response.ok) {\n throw new Error(\n `Failed to confirm registration: ${response.statusText}`\n );\n }\n\n return await response.json();\n } catch (e: any) {\n const error = e as Error;\n const logMessage = `Error checking registration status: ${error.message}`;\n this.logger.error(logMessage);\n throw error;\n }\n }\n\n /**\n * Validates if an operator_id follows the correct format (agentTopicId@accountId)\n * @param operatorId The operator ID to validate\n * @returns True if the format is valid, false otherwise\n */\n protected isValidOperatorId(operatorId: string): boolean {\n if (!operatorId) {\n return false;\n }\n\n const parts = operatorId.split('@');\n\n if (parts.length !== 2) {\n return false;\n }\n\n const agentTopicId = parts[0];\n const accountId = parts[1];\n\n if (!agentTopicId) {\n return false;\n }\n\n if (!accountId) {\n return false;\n }\n\n const hederaIdPattern = /^[0-9]+\\.[0-9]+\\.[0-9]+$/;\n\n if (!hederaIdPattern.test(accountId)) {\n return false;\n }\n\n if (!hederaIdPattern.test(agentTopicId)) {\n return false;\n }\n\n return true;\n }\n\n /**\n * Retrieves all transaction requests from a topic\n * @param topicId The topic ID to retrieve transactions from\n * @param limit Optional maximum number of messages to retrieve\n * @returns Array of transaction requests sorted by timestamp (newest first)\n */\n public async getTransactionRequests(\n topicId: string,\n limit?: number\n ): Promise<TransactMessage[]> {\n this.logger.debug(`Retrieving transaction requests from topic ${topicId}`);\n\n const { messages } = await this.getMessageStream(topicId);\n\n const transactOperations = (\n messages\n .filter((m) => m.op === 'transaction' && m.schedule_id)\n .map((m) => ({\n operator_id: m.operator_id || '',\n schedule_id: m.schedule_id || '',\n data: m.data || '',\n memo: m.m,\n sequence_number: Number(m.sequence_number),\n })) as unknown as TransactMessage[]\n ).sort((a, b) => {\n if (a.sequence_number && b.sequence_number) {\n return b.sequence_number - a.sequence_number;\n }\n return 0;\n });\n\n const result = limit\n ? transactOperations.slice(0, limit)\n : transactOperations;\n\n return result;\n }\n}\n\nexport class HCS10Cache {\n private static instance: HCS10Cache;\n private cache: Map<string, ProfileResponse>;\n private cacheExpiry: Map<string, number>;\n private readonly CACHE_TTL = 3600000;\n\n private constructor() {\n this.cache = new Map();\n this.cacheExpiry = new Map();\n }\n\n static getInstance(): HCS10Cache {\n if (!HCS10Cache.instance) {\n HCS10Cache.instance = new HCS10Cache();\n }\n return HCS10Cache.instance;\n }\n\n set(key: string, value: ProfileResponse): void {\n this.cache.set(key, value);\n this.cacheExpiry.set(key, Date.now() + this.CACHE_TTL);\n }\n\n get(key: string): ProfileResponse | undefined {\n const expiry = this.cacheExpiry.get(key);\n if (expiry && expiry > Date.now()) {\n return this.cache.get(key);\n }\n if (expiry) {\n this.cache.delete(key);\n this.cacheExpiry.delete(key);\n }\n return undefined;\n }\n\n clear(): void {\n this.cache.clear();\n this.cacheExpiry.clear();\n }\n}\n"],"names":["Hcs10MemoType"],"mappings":"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"}
@@ -1,22 +1,23 @@
1
- import Buffer from "./standards-sdk.es24.js";
1
+ import Buffer from "vite-plugin-node-polyfills/shims/buffer";
2
2
  import { Client, PrivateKey, AccountCreateTransaction, Hbar, CustomFixedFee, AccountId, TokenId, KeyList, TopicCreateTransaction, PublicKey, TopicMessageSubmitTransaction, TopicId, Transaction, ScheduleCreateTransaction, Timestamp } from "@hashgraph/sdk";
3
3
  import { AccountCreationError, TopicCreationError, ConnectionConfirmationError, PayloadSizeError } from "./standards-sdk.es6.js";
4
- import { I as InscriptionSDK } from "./standards-sdk.es25.js";
4
+ import { I as InscriptionSDK } from "./standards-sdk.es24.js";
5
5
  import { Logger } from "./standards-sdk.es15.js";
6
6
  import { HCS10BaseClient, Hcs10MemoType } from "./standards-sdk.es5.js";
7
- import { m as mimeTypesExports } from "./standards-sdk.es26.js";
7
+ import * as mime from "mime-types";
8
8
  import { InboundTopicType } from "./standards-sdk.es14.js";
9
9
  import { HCS11Client } from "./standards-sdk.es13.js";
10
10
  import { accountIdsToExemptKeys } from "./standards-sdk.es16.js";
11
11
  import { inscribe } from "./standards-sdk.es20.js";
12
- import addSeconds from "./standards-sdk.es27.js";
12
+ import { addSeconds } from "date-fns";
13
13
  class HCS10Client extends HCS10BaseClient {
14
14
  constructor(config) {
15
15
  super({
16
16
  network: config.network,
17
17
  logLevel: config.logLevel,
18
18
  prettyPrint: config.prettyPrint,
19
- feeAmount: config.feeAmount
19
+ feeAmount: config.feeAmount,
20
+ mirrorNode: config.mirrorNode
20
21
  });
21
22
  this.client = config.network === "mainnet" ? Client.forMainnet() : Client.forTestnet();
22
23
  this.operatorPrivateKey = PrivateKey.fromString(config.operatorPrivateKey);
@@ -628,7 +629,7 @@ class HCS10Client extends HCS10BaseClient {
628
629
  this.logger.error("Operator private key is not set");
629
630
  throw new Error("Operator private key is not set");
630
631
  }
631
- const mimeType = mimeTypesExports.lookup(fileName) || "application/octet-stream";
632
+ const mimeType = mime.lookup(fileName) || "application/octet-stream";
632
633
  const sdk = await InscriptionSDK.createWithAuth({
633
634
  type: "server",
634
635
  accountId: this.client.operatorAccountId.toString(),