@hashgraphonline/standards-sdk 0.1.143-feat-solana-register.canary.1c6f446.78 → 0.1.144-feat-solana-register.canary.d5edcec.80

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 (340) hide show
  1. package/dist/cjs/hcs-10/sdk.d.ts.map +1 -1
  2. package/dist/cjs/hcs-14/issuers/hiero.d.ts.map +1 -1
  3. package/dist/cjs/index.d.ts.map +1 -1
  4. package/dist/cjs/services/registry-broker/schemas.d.ts +153 -153
  5. package/dist/cjs/standards-sdk.cjs +2 -2
  6. package/dist/cjs/standards-sdk.cjs.map +1 -1
  7. package/dist/cjs/utils/dynamic-import.d.ts +5 -1
  8. package/dist/cjs/utils/dynamic-import.d.ts.map +1 -1
  9. package/dist/es/hcs-10/sdk.d.ts.map +1 -1
  10. package/dist/es/hcs-14/issuers/hiero.d.ts.map +1 -1
  11. package/dist/es/index.d.ts.map +1 -1
  12. package/dist/es/services/registry-broker/schemas.d.ts +153 -153
  13. package/dist/es/standards-sdk.es.js +134 -135
  14. package/dist/es/standards-sdk.es.js.map +1 -1
  15. package/dist/es/standards-sdk.es10.js +70 -90
  16. package/dist/es/standards-sdk.es10.js.map +1 -1
  17. package/dist/es/standards-sdk.es100.js +229 -27
  18. package/dist/es/standards-sdk.es100.js.map +1 -1
  19. package/dist/es/standards-sdk.es101.js +109 -228
  20. package/dist/es/standards-sdk.es101.js.map +1 -1
  21. package/dist/es/standards-sdk.es102.js +15 -94
  22. package/dist/es/standards-sdk.es102.js.map +1 -1
  23. package/dist/es/standards-sdk.es103.js +80 -30
  24. package/dist/es/standards-sdk.es103.js.map +1 -1
  25. package/dist/es/standards-sdk.es104.js +27 -80
  26. package/dist/es/standards-sdk.es104.js.map +1 -1
  27. package/dist/es/standards-sdk.es105.js +136 -25
  28. package/dist/es/standards-sdk.es105.js.map +1 -1
  29. package/dist/es/standards-sdk.es106.js +27 -140
  30. package/dist/es/standards-sdk.es106.js.map +1 -1
  31. package/dist/es/standards-sdk.es107.js +20 -27
  32. package/dist/es/standards-sdk.es107.js.map +1 -1
  33. package/dist/es/standards-sdk.es108.js +156 -18
  34. package/dist/es/standards-sdk.es108.js.map +1 -1
  35. package/dist/es/standards-sdk.es109.js +198 -148
  36. package/dist/es/standards-sdk.es109.js.map +1 -1
  37. package/dist/es/standards-sdk.es11.js +121 -45
  38. package/dist/es/standards-sdk.es11.js.map +1 -1
  39. package/dist/es/standards-sdk.es110.js +747 -167
  40. package/dist/es/standards-sdk.es110.js.map +1 -1
  41. package/dist/es/standards-sdk.es111.js +9 -786
  42. package/dist/es/standards-sdk.es111.js.map +1 -1
  43. package/dist/es/standards-sdk.es112.js +567 -13
  44. package/dist/es/standards-sdk.es112.js.map +1 -1
  45. package/dist/es/standards-sdk.es113.js +576 -541
  46. package/dist/es/standards-sdk.es113.js.map +1 -1
  47. package/dist/es/standards-sdk.es114.js +12 -601
  48. package/dist/es/standards-sdk.es114.js.map +1 -1
  49. package/dist/es/standards-sdk.es115.js +2 -13
  50. package/dist/es/standards-sdk.es115.js.map +1 -1
  51. package/dist/es/standards-sdk.es116.js +87 -2
  52. package/dist/es/standards-sdk.es116.js.map +1 -1
  53. package/dist/es/standards-sdk.es117.js +37 -84
  54. package/dist/es/standards-sdk.es117.js.map +1 -1
  55. package/dist/es/standards-sdk.es118.js +2 -40
  56. package/dist/es/standards-sdk.es118.js.map +1 -1
  57. package/dist/es/standards-sdk.es119.js +231 -2
  58. package/dist/es/standards-sdk.es119.js.map +1 -1
  59. package/dist/es/standards-sdk.es12.js +60 -159
  60. package/dist/es/standards-sdk.es12.js.map +1 -1
  61. package/dist/es/standards-sdk.es120.js +1110 -201
  62. package/dist/es/standards-sdk.es120.js.map +1 -1
  63. package/dist/es/standards-sdk.es121.js +225 -1059
  64. package/dist/es/standards-sdk.es121.js.map +1 -1
  65. package/dist/es/standards-sdk.es122.js +419 -303
  66. package/dist/es/standards-sdk.es122.js.map +1 -1
  67. package/dist/es/standards-sdk.es123.js +351 -418
  68. package/dist/es/standards-sdk.es123.js.map +1 -1
  69. package/dist/es/standards-sdk.es124.js +872 -347
  70. package/dist/es/standards-sdk.es124.js.map +1 -1
  71. package/dist/es/standards-sdk.es125.js +182 -854
  72. package/dist/es/standards-sdk.es125.js.map +1 -1
  73. package/dist/es/standards-sdk.es126.js +1512 -153
  74. package/dist/es/standards-sdk.es126.js.map +1 -1
  75. package/dist/es/standards-sdk.es127.js +157 -1547
  76. package/dist/es/standards-sdk.es127.js.map +1 -1
  77. package/dist/es/standards-sdk.es128.js +192 -162
  78. package/dist/es/standards-sdk.es128.js.map +1 -1
  79. package/dist/es/standards-sdk.es129.js +61 -164
  80. package/dist/es/standards-sdk.es129.js.map +1 -1
  81. package/dist/es/standards-sdk.es13.js +200 -60
  82. package/dist/es/standards-sdk.es13.js.map +1 -1
  83. package/dist/es/standards-sdk.es130.js +102 -85
  84. package/dist/es/standards-sdk.es130.js.map +1 -1
  85. package/dist/es/standards-sdk.es131.js +222 -96
  86. package/dist/es/standards-sdk.es131.js.map +1 -1
  87. package/dist/es/standards-sdk.es132.js +153 -220
  88. package/dist/es/standards-sdk.es132.js.map +1 -1
  89. package/dist/es/standards-sdk.es133.js +104 -162
  90. package/dist/es/standards-sdk.es133.js.map +1 -1
  91. package/dist/es/standards-sdk.es134.js +296 -92
  92. package/dist/es/standards-sdk.es134.js.map +1 -1
  93. package/dist/es/standards-sdk.es135.js +432 -294
  94. package/dist/es/standards-sdk.es135.js.map +1 -1
  95. package/dist/es/standards-sdk.es136.js +14 -461
  96. package/dist/es/standards-sdk.es136.js.map +1 -1
  97. package/dist/es/standards-sdk.es137.js +79 -15
  98. package/dist/es/standards-sdk.es137.js.map +1 -1
  99. package/dist/es/standards-sdk.es138.js +77 -71
  100. package/dist/es/standards-sdk.es138.js.map +1 -1
  101. package/dist/es/standards-sdk.es139.js +152 -80
  102. package/dist/es/standards-sdk.es139.js.map +1 -1
  103. package/dist/es/standards-sdk.es14.js +149 -178
  104. package/dist/es/standards-sdk.es14.js.map +1 -1
  105. package/dist/es/standards-sdk.es140.js +7 -159
  106. package/dist/es/standards-sdk.es140.js.map +1 -1
  107. package/dist/es/standards-sdk.es141.js +86 -7
  108. package/dist/es/standards-sdk.es141.js.map +1 -1
  109. package/dist/es/standards-sdk.es142.js +44 -65
  110. package/dist/es/standards-sdk.es142.js.map +1 -1
  111. package/dist/es/standards-sdk.es143.js +30 -65
  112. package/dist/es/standards-sdk.es143.js.map +1 -1
  113. package/dist/es/standards-sdk.es144.js +34 -30
  114. package/dist/es/standards-sdk.es144.js.map +1 -1
  115. package/dist/es/standards-sdk.es145.js +28 -34
  116. package/dist/es/standards-sdk.es145.js.map +1 -1
  117. package/dist/es/standards-sdk.es146.js +138 -28
  118. package/dist/es/standards-sdk.es146.js.map +1 -1
  119. package/dist/es/standards-sdk.es147.js +37 -133
  120. package/dist/es/standards-sdk.es147.js.map +1 -1
  121. package/dist/es/standards-sdk.es148.js +12280 -33
  122. package/dist/es/standards-sdk.es148.js.map +1 -1
  123. package/dist/es/standards-sdk.es149.js +1 -1
  124. package/dist/es/standards-sdk.es15.js +152 -151
  125. package/dist/es/standards-sdk.es15.js.map +1 -1
  126. package/dist/es/standards-sdk.es150.js +12 -12284
  127. package/dist/es/standards-sdk.es150.js.map +1 -1
  128. package/dist/es/standards-sdk.es151.js +54 -15
  129. package/dist/es/standards-sdk.es151.js.map +1 -1
  130. package/dist/es/standards-sdk.es152.js +72 -160
  131. package/dist/es/standards-sdk.es152.js.map +1 -1
  132. package/dist/es/standards-sdk.es153.js +139 -289
  133. package/dist/es/standards-sdk.es153.js.map +1 -1
  134. package/dist/es/standards-sdk.es154.js +274 -298
  135. package/dist/es/standards-sdk.es154.js.map +1 -1
  136. package/dist/es/standards-sdk.es155.js +262 -369
  137. package/dist/es/standards-sdk.es155.js.map +1 -1
  138. package/dist/es/standards-sdk.es156.js +316 -194
  139. package/dist/es/standards-sdk.es156.js.map +1 -1
  140. package/dist/es/standards-sdk.es157.js +319 -64
  141. package/dist/es/standards-sdk.es157.js.map +1 -1
  142. package/dist/es/standards-sdk.es158.js +69 -49
  143. package/dist/es/standards-sdk.es158.js.map +1 -1
  144. package/dist/es/standards-sdk.es159.js +222 -65
  145. package/dist/es/standards-sdk.es159.js.map +1 -1
  146. package/dist/es/standards-sdk.es16.js +917 -136
  147. package/dist/es/standards-sdk.es16.js.map +1 -1
  148. package/dist/es/standards-sdk.es160.js +223 -218
  149. package/dist/es/standards-sdk.es160.js.map +1 -1
  150. package/dist/es/standards-sdk.es17.js +23 -948
  151. package/dist/es/standards-sdk.es17.js.map +1 -1
  152. package/dist/es/standards-sdk.es18.js +2422 -24
  153. package/dist/es/standards-sdk.es18.js.map +1 -1
  154. package/dist/es/standards-sdk.es19.js +818 -2092
  155. package/dist/es/standards-sdk.es19.js.map +1 -1
  156. package/dist/es/standards-sdk.es2.js +654 -189
  157. package/dist/es/standards-sdk.es2.js.map +1 -1
  158. package/dist/es/standards-sdk.es20.js +205 -1092
  159. package/dist/es/standards-sdk.es20.js.map +1 -1
  160. package/dist/es/standards-sdk.es21.js +858 -221
  161. package/dist/es/standards-sdk.es21.js.map +1 -1
  162. package/dist/es/standards-sdk.es22.js +179 -903
  163. package/dist/es/standards-sdk.es22.js.map +1 -1
  164. package/dist/es/standards-sdk.es23.js +164 -179
  165. package/dist/es/standards-sdk.es23.js.map +1 -1
  166. package/dist/es/standards-sdk.es24.js +62 -118
  167. package/dist/es/standards-sdk.es24.js.map +1 -1
  168. package/dist/es/standards-sdk.es25.js +377 -57
  169. package/dist/es/standards-sdk.es25.js.map +1 -1
  170. package/dist/es/standards-sdk.es26.js +36 -394
  171. package/dist/es/standards-sdk.es26.js.map +1 -1
  172. package/dist/es/standards-sdk.es27.js +901 -50
  173. package/dist/es/standards-sdk.es27.js.map +1 -1
  174. package/dist/es/standards-sdk.es28.js +134 -922
  175. package/dist/es/standards-sdk.es28.js.map +1 -1
  176. package/dist/es/standards-sdk.es29.js +7 -134
  177. package/dist/es/standards-sdk.es29.js.map +1 -1
  178. package/dist/es/standards-sdk.es3.js +63 -680
  179. package/dist/es/standards-sdk.es3.js.map +1 -1
  180. package/dist/es/standards-sdk.es30.js +344 -7
  181. package/dist/es/standards-sdk.es30.js.map +1 -1
  182. package/dist/es/standards-sdk.es31.js +302 -287
  183. package/dist/es/standards-sdk.es31.js.map +1 -1
  184. package/dist/es/standards-sdk.es32.js +94 -322
  185. package/dist/es/standards-sdk.es32.js.map +1 -1
  186. package/dist/es/standards-sdk.es33.js +458 -101
  187. package/dist/es/standards-sdk.es33.js.map +1 -1
  188. package/dist/es/standards-sdk.es34.js +132 -451
  189. package/dist/es/standards-sdk.es34.js.map +1 -1
  190. package/dist/es/standards-sdk.es35.js +216 -130
  191. package/dist/es/standards-sdk.es35.js.map +1 -1
  192. package/dist/es/standards-sdk.es36.js +273 -196
  193. package/dist/es/standards-sdk.es36.js.map +1 -1
  194. package/dist/es/standards-sdk.es37.js +148 -87
  195. package/dist/es/standards-sdk.es37.js.map +1 -1
  196. package/dist/es/standards-sdk.es38.js +183 -320
  197. package/dist/es/standards-sdk.es38.js.map +1 -1
  198. package/dist/es/standards-sdk.es39.js +238 -161
  199. package/dist/es/standards-sdk.es39.js.map +1 -1
  200. package/dist/es/standards-sdk.es4.js +425 -63
  201. package/dist/es/standards-sdk.es4.js.map +1 -1
  202. package/dist/es/standards-sdk.es40.js +136 -254
  203. package/dist/es/standards-sdk.es40.js.map +1 -1
  204. package/dist/es/standards-sdk.es41.js +225 -176
  205. package/dist/es/standards-sdk.es41.js.map +1 -1
  206. package/dist/es/standards-sdk.es42.js +199 -261
  207. package/dist/es/standards-sdk.es42.js.map +1 -1
  208. package/dist/es/standards-sdk.es43.js +237 -199
  209. package/dist/es/standards-sdk.es43.js.map +1 -1
  210. package/dist/es/standards-sdk.es44.js +209 -201
  211. package/dist/es/standards-sdk.es44.js.map +1 -1
  212. package/dist/es/standards-sdk.es45.js +305 -201
  213. package/dist/es/standards-sdk.es45.js.map +1 -1
  214. package/dist/es/standards-sdk.es46.js +371 -261
  215. package/dist/es/standards-sdk.es46.js.map +1 -1
  216. package/dist/es/standards-sdk.es47.js +316 -372
  217. package/dist/es/standards-sdk.es47.js.map +1 -1
  218. package/dist/es/standards-sdk.es48.js +404 -336
  219. package/dist/es/standards-sdk.es48.js.map +1 -1
  220. package/dist/es/standards-sdk.es49.js +83 -449
  221. package/dist/es/standards-sdk.es49.js.map +1 -1
  222. package/dist/es/standards-sdk.es5.js +232 -354
  223. package/dist/es/standards-sdk.es5.js.map +1 -1
  224. package/dist/es/standards-sdk.es50.js +179 -89
  225. package/dist/es/standards-sdk.es50.js.map +1 -1
  226. package/dist/es/standards-sdk.es51.js +231 -165
  227. package/dist/es/standards-sdk.es51.js.map +1 -1
  228. package/dist/es/standards-sdk.es52.js +25 -262
  229. package/dist/es/standards-sdk.es52.js.map +1 -1
  230. package/dist/es/standards-sdk.es53.js +56 -26
  231. package/dist/es/standards-sdk.es53.js.map +1 -1
  232. package/dist/es/standards-sdk.es54.js +12 -57
  233. package/dist/es/standards-sdk.es54.js.map +1 -1
  234. package/dist/es/standards-sdk.es55.js +49 -12
  235. package/dist/es/standards-sdk.es55.js.map +1 -1
  236. package/dist/es/standards-sdk.es56.js +115 -43
  237. package/dist/es/standards-sdk.es56.js.map +1 -1
  238. package/dist/es/standards-sdk.es57.js +42 -115
  239. package/dist/es/standards-sdk.es57.js.map +1 -1
  240. package/dist/es/standards-sdk.es58.js +52 -43
  241. package/dist/es/standards-sdk.es58.js.map +1 -1
  242. package/dist/es/standards-sdk.es59.js +36 -50
  243. package/dist/es/standards-sdk.es59.js.map +1 -1
  244. package/dist/es/standards-sdk.es6.js +125 -246
  245. package/dist/es/standards-sdk.es6.js.map +1 -1
  246. package/dist/es/standards-sdk.es60.js +207 -39
  247. package/dist/es/standards-sdk.es60.js.map +1 -1
  248. package/dist/es/standards-sdk.es61.js +24 -201
  249. package/dist/es/standards-sdk.es61.js.map +1 -1
  250. package/dist/es/standards-sdk.es62.js +87 -25
  251. package/dist/es/standards-sdk.es62.js.map +1 -1
  252. package/dist/es/standards-sdk.es63.js +3 -51
  253. package/dist/es/standards-sdk.es63.js.map +1 -1
  254. package/dist/es/standards-sdk.es64.js +100 -3
  255. package/dist/es/standards-sdk.es64.js.map +1 -1
  256. package/dist/es/standards-sdk.es65.js +61 -62
  257. package/dist/es/standards-sdk.es65.js.map +1 -1
  258. package/dist/es/standards-sdk.es66.js +17 -98
  259. package/dist/es/standards-sdk.es66.js.map +1 -1
  260. package/dist/es/standards-sdk.es67.js +77 -19
  261. package/dist/es/standards-sdk.es67.js.map +1 -1
  262. package/dist/es/standards-sdk.es68.js +458 -77
  263. package/dist/es/standards-sdk.es68.js.map +1 -1
  264. package/dist/es/standards-sdk.es69.js +106 -240
  265. package/dist/es/standards-sdk.es69.js.map +1 -1
  266. package/dist/es/standards-sdk.es7.js +28 -183
  267. package/dist/es/standards-sdk.es7.js.map +1 -1
  268. package/dist/es/standards-sdk.es70.js +170 -286
  269. package/dist/es/standards-sdk.es70.js.map +1 -1
  270. package/dist/es/standards-sdk.es71.js +71 -207
  271. package/dist/es/standards-sdk.es71.js.map +1 -1
  272. package/dist/es/standards-sdk.es72.js +71 -72
  273. package/dist/es/standards-sdk.es72.js.map +1 -1
  274. package/dist/es/standards-sdk.es73.js +143 -71
  275. package/dist/es/standards-sdk.es73.js.map +1 -1
  276. package/dist/es/standards-sdk.es74.js +62 -136
  277. package/dist/es/standards-sdk.es74.js.map +1 -1
  278. package/dist/es/standards-sdk.es75.js +380 -45
  279. package/dist/es/standards-sdk.es75.js.map +1 -1
  280. package/dist/es/standards-sdk.es76.js +222 -130
  281. package/dist/es/standards-sdk.es76.js.map +1 -1
  282. package/dist/es/standards-sdk.es77.js +320 -444
  283. package/dist/es/standards-sdk.es77.js.map +1 -1
  284. package/dist/es/standards-sdk.es78.js +88 -371
  285. package/dist/es/standards-sdk.es78.js.map +1 -1
  286. package/dist/es/standards-sdk.es79.js +125 -89
  287. package/dist/es/standards-sdk.es79.js.map +1 -1
  288. package/dist/es/standards-sdk.es8.js +80 -29
  289. package/dist/es/standards-sdk.es8.js.map +1 -1
  290. package/dist/es/standards-sdk.es80.js +8 -125
  291. package/dist/es/standards-sdk.es80.js.map +1 -1
  292. package/dist/es/standards-sdk.es81.js +45 -6
  293. package/dist/es/standards-sdk.es81.js.map +1 -1
  294. package/dist/es/standards-sdk.es82.js +98 -44
  295. package/dist/es/standards-sdk.es82.js.map +1 -1
  296. package/dist/es/standards-sdk.es83.js +331 -84
  297. package/dist/es/standards-sdk.es83.js.map +1 -1
  298. package/dist/es/standards-sdk.es84.js +93 -160
  299. package/dist/es/standards-sdk.es84.js.map +1 -1
  300. package/dist/es/standards-sdk.es85.js +55 -275
  301. package/dist/es/standards-sdk.es85.js.map +1 -1
  302. package/dist/es/standards-sdk.es86.js +43 -55
  303. package/dist/es/standards-sdk.es86.js.map +1 -1
  304. package/dist/es/standards-sdk.es87.js +145 -44
  305. package/dist/es/standards-sdk.es87.js.map +1 -1
  306. package/dist/es/standards-sdk.es88.js +30 -113
  307. package/dist/es/standards-sdk.es88.js.map +1 -1
  308. package/dist/es/standards-sdk.es89.js +22 -59
  309. package/dist/es/standards-sdk.es89.js.map +1 -1
  310. package/dist/es/standards-sdk.es9.js +104 -80
  311. package/dist/es/standards-sdk.es9.js.map +1 -1
  312. package/dist/es/standards-sdk.es90.js +23 -28
  313. package/dist/es/standards-sdk.es90.js.map +1 -1
  314. package/dist/es/standards-sdk.es91.js +238 -23
  315. package/dist/es/standards-sdk.es91.js.map +1 -1
  316. package/dist/es/standards-sdk.es92.js +267 -225
  317. package/dist/es/standards-sdk.es92.js.map +1 -1
  318. package/dist/es/standards-sdk.es93.js +95 -220
  319. package/dist/es/standards-sdk.es93.js.map +1 -1
  320. package/dist/es/standards-sdk.es94.js +124 -136
  321. package/dist/es/standards-sdk.es94.js.map +1 -1
  322. package/dist/es/standards-sdk.es95.js +42 -138
  323. package/dist/es/standards-sdk.es95.js.map +1 -1
  324. package/dist/es/standards-sdk.es96.js +259 -43
  325. package/dist/es/standards-sdk.es96.js.map +1 -1
  326. package/dist/es/standards-sdk.es97.js +82 -245
  327. package/dist/es/standards-sdk.es97.js.map +1 -1
  328. package/dist/es/standards-sdk.es98.js +49 -50
  329. package/dist/es/standards-sdk.es98.js.map +1 -1
  330. package/dist/es/standards-sdk.es99.js +29 -100
  331. package/dist/es/standards-sdk.es99.js.map +1 -1
  332. package/dist/es/utils/dynamic-import.d.ts +5 -1
  333. package/dist/es/utils/dynamic-import.d.ts.map +1 -1
  334. package/package.json +4 -4
  335. package/dist/cjs/patches/topic-autorenew-patch.d.ts +0 -2
  336. package/dist/cjs/patches/topic-autorenew-patch.d.ts.map +0 -1
  337. package/dist/es/patches/topic-autorenew-patch.d.ts +0 -2
  338. package/dist/es/patches/topic-autorenew-patch.d.ts.map +0 -1
  339. package/dist/es/standards-sdk.es161.js +0 -247
  340. package/dist/es/standards-sdk.es161.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"standards-sdk.es38.js","sources":["../../src/hcs-12/browser.ts"],"sourcesContent":["import {\n TopicCreateTransaction,\n TopicMessageSubmitTransaction,\n TopicId,\n TransactionId,\n PrivateKey,\n PublicKey,\n KeyList,\n AccountId,\n} from '@hashgraph/sdk';\nimport type { DAppSigner } from '@hashgraph/hedera-wallet-connect';\nimport { HashinalsWalletConnectSDK } from '@hashgraphonline/hashinal-wc';\nimport { HCS12BaseClient, HCS12Config } from './base-client';\nimport {\n ActionRegistry,\n BlockLoader,\n AssemblyRegistry,\n HashLinksRegistry,\n} from './registries';\nimport {\n RegistryType,\n ActionRegistration,\n AssemblyRegistration,\n AssemblyAddBlock,\n AssemblyAddAction,\n AssemblyUpdate,\n BlockDefinition,\n} from './types';\nimport { ActionBuilder, AssemblyBuilder, BlockBuilder } from './builders';\nimport { InscriptionSDK } from '@kiloscribe/inscription-sdk';\nimport type { RetrievedInscriptionResult } from '../inscribe/types';\nimport * as mime from 'mime-types';\nimport { inscribeWithSigner } from '../inscribe/inscriber';\n\n/**\n * Configuration for HCS-12 browser client\n */\nexport interface HCS12BrowserClientConfig extends HCS12Config {\n /** HashConnect Wallet Connect SDK instance */\n hwc: HashinalsWalletConnectSDK;\n}\n\n/**\n * HCS-12 browser client for client-side HashLinks operations\n */\nexport class HCS12BrowserClient extends HCS12BaseClient {\n private hwc: HashinalsWalletConnectSDK;\n private accountId?: string;\n\n constructor(config: HCS12BrowserClientConfig) {\n super(config);\n\n this.hwc = config.hwc;\n\n this.updateAccountFromWallet();\n\n this.logger.info('HCS-12 Browser Client initialized', {\n network: config.network,\n accountId: this.accountId,\n });\n }\n\n /**\n * Update account ID from wallet connect session\n */\n private async updateAccountFromWallet(): Promise<void> {\n try {\n const { accountId } = await this.getAccountAndSigner();\n this.accountId = accountId;\n } catch (error) {\n this.logger.warn('No active wallet connection');\n }\n }\n\n /**\n * Get account and signer from wallet connect\n */\n async getAccountAndSigner(): Promise<{\n accountId: string;\n signer: DAppSigner;\n }> {\n const accountInfo = this?.hwc?.getAccountInfo();\n const accountId = accountInfo?.accountId?.toString();\n const signer = this?.hwc?.dAppConnector?.signers?.find(s => {\n return s.getAccountId().toString() === accountId;\n });\n\n if (!signer || !accountId) {\n this.logger.error('Failed to find signer', {\n accountId,\n signers: this?.hwc?.dAppConnector?.signers,\n accountInfo,\n });\n throw new Error('Failed to find signer or account');\n }\n\n return { accountId, signer };\n }\n\n /**\n * Get operator account ID (throws in browser)\n */\n getOperatorAccountId(): string {\n throw new Error('Browser client does not have operator account');\n }\n\n /**\n * Get operator private key (throws in browser)\n */\n getOperatorPrivateKey(): string {\n throw new Error('Browser client does not have operator private key');\n }\n\n /**\n * Initialize registries with optional existing topic IDs\n */\n initializeRegistries(topicIds?: {\n action?: string;\n assembly?: string;\n hashlinks?: string;\n }): void {\n super.initializeRegistries(topicIds);\n\n this._actionRegistry = new ActionRegistry(\n this.network,\n this.logger,\n this.actionRegistryTopicId,\n this,\n );\n\n this._blockLoader = new BlockLoader(this.network, this.logger, this);\n\n this._assemblyRegistry = new AssemblyRegistry(\n this.network,\n this.logger,\n this._assemblyRegistryTopicId,\n this,\n );\n\n this._hashLinksRegistry = new HashLinksRegistry(\n this.network,\n this.logger,\n this._hashLinksRegistryTopicId,\n this,\n );\n\n this.logger.info('Registries initialized with signer', {\n actionTopicId: this.actionRegistryTopicId,\n assemblyTopicId: this._assemblyRegistryTopicId,\n hashLinksTopicId: this._hashLinksRegistryTopicId,\n });\n }\n\n /**\n * Create a new HCS topic for a registry\n */\n async createRegistryTopic(\n registryType: RegistryType,\n adminKey?: boolean | PublicKey | KeyList,\n submitKey?: boolean | PublicKey | KeyList,\n ): Promise<string> {\n const { accountId, signer } = await this.getAccountAndSigner();\n\n const memos: Record<RegistryType, string> = {\n [RegistryType.ACTION]: 'hcs-12:1:60:0',\n [RegistryType.ASSEMBLY]: 'hcs-12:1:60:2',\n [RegistryType.HASHLINKS]: 'hcs-12:1:60:3',\n };\n const memo = memos[registryType];\n\n this.logger.info('Creating registry topic via wallet', {\n registryType: RegistryType[registryType],\n memo,\n accountId,\n });\n\n const transaction = new TopicCreateTransaction()\n .setTopicMemo(memo)\n .setTransactionId(TransactionId.generate(accountId));\n\n if (adminKey) {\n if (typeof adminKey === 'boolean' && adminKey) {\n const publicKey = await signer.getAccountKey();\n transaction.setAdminKey(publicKey);\n transaction.setAutoRenewAccountId(AccountId.fromString(accountId));\n } else if (adminKey instanceof PublicKey || adminKey instanceof KeyList) {\n transaction.setAdminKey(adminKey);\n transaction.setAutoRenewAccountId(AccountId.fromString(accountId));\n }\n }\n\n if (submitKey) {\n if (typeof submitKey === 'boolean' && submitKey) {\n const publicKey = await signer.getAccountKey();\n transaction.setSubmitKey(publicKey);\n } else if (\n submitKey instanceof PublicKey ||\n submitKey instanceof KeyList\n ) {\n transaction.setSubmitKey(submitKey);\n }\n }\n\n const signedTx = await transaction.freezeWithSigner(signer);\n const txResponse = await signedTx.executeWithSigner(signer);\n const receipt = await txResponse.getReceiptWithSigner(signer);\n\n if (!receipt.topicId) {\n throw new Error('Failed to create topic: topicId is null');\n }\n\n const topicId = receipt.topicId.toString();\n this.logger.info('Registry topic created via wallet', {\n topicId,\n registryType: RegistryType[registryType],\n });\n\n switch (registryType) {\n case RegistryType.ACTION:\n this.actionRegistryTopicId = topicId;\n break;\n case RegistryType.ASSEMBLY:\n this._assemblyRegistryTopicId = topicId;\n break;\n case RegistryType.HASHLINKS:\n break;\n }\n\n return topicId;\n }\n\n /**\n * Create a new assembly topic\n */\n async createAssemblyTopic(): Promise<string> {\n this.logger.info('Creating new assembly topic');\n const topicId = await this.createRegistryTopic(RegistryType.ASSEMBLY);\n return topicId;\n }\n\n /**\n * Register an assembly on its own topic\n */\n async registerAssemblyDirect(\n assemblyTopicId: string,\n registration: AssemblyRegistration,\n ): Promise<{ transactionId: string; sequenceNumber?: number }> {\n this.logger.info('Registering assembly', {\n topicId: assemblyTopicId,\n name: registration.name,\n version: registration.version,\n });\n\n return this._submitMessage(assemblyTopicId, JSON.stringify(registration));\n }\n\n /**\n * Add a block to an assembly\n */\n async addBlockToAssembly(\n assemblyTopicId: string,\n block: AssemblyAddBlock,\n ): Promise<{ transactionId: string; sequenceNumber?: number }> {\n this.logger.info('Adding block to assembly', {\n assemblyTopicId,\n blockTopicId: block.block_t_id,\n });\n\n return this._submitMessage(assemblyTopicId, JSON.stringify(block));\n }\n\n /**\n * Add an action to an assembly\n */\n async addActionToAssembly(\n assemblyTopicId: string,\n action: AssemblyAddAction,\n ): Promise<{ transactionId: string; sequenceNumber?: number }> {\n this.logger.info('Adding action to assembly', {\n assemblyTopicId,\n actionTopicId: action.t_id,\n alias: action.alias,\n });\n\n return this._submitMessage(assemblyTopicId, JSON.stringify(action));\n }\n\n /**\n * Update assembly metadata\n */\n async updateAssembly(\n assemblyTopicId: string,\n update: AssemblyUpdate,\n ): Promise<{ transactionId: string; sequenceNumber?: number }> {\n this.logger.info('Updating assembly', {\n assemblyTopicId,\n update,\n });\n\n return this._submitMessage(assemblyTopicId, JSON.stringify(update));\n }\n\n /**\n * Store a block (definition and template) via HCS-1\n */\n async storeBlock(\n template: string,\n definition: BlockDefinition,\n ): Promise<{ definitionTopicId: string; templateTopicId: string }> {\n if (!this.blockLoader) {\n throw new Error('Block loader not initialized');\n }\n\n return this.blockLoader.storeBlock(template, definition);\n }\n\n /**\n * Submit a message to an HCS topic\n * @deprecated Use operation-specific methods instead\n */\n async submitMessage(\n topicId: string,\n message: string,\n submitKey?: PrivateKey,\n ): Promise<{ transactionId: string; sequenceNumber?: number }> {\n this.logger.warn(\n 'submitMessage is deprecated. Use operation-specific methods instead.',\n );\n return this._submitMessage(topicId, message, submitKey);\n }\n\n /**\n * Internal method to submit a message to an HCS topic\n */\n private async _submitMessage(\n topicId: string,\n message: string,\n submitKey?: PrivateKey,\n ): Promise<{ transactionId: string; sequenceNumber?: number }> {\n const { accountId, signer } = await this.getAccountAndSigner();\n\n this.logger.debug('Submitting message to topic via wallet', {\n topicId,\n messageLength: message.length,\n accountId,\n });\n\n const transaction = new TopicMessageSubmitTransaction()\n .setTopicId(TopicId.fromString(topicId))\n .setMessage(message)\n .setTransactionId(TransactionId.generate(accountId));\n\n if (submitKey) {\n this.logger.warn(\n 'Submit key parameter ignored in browser client - using wallet signer',\n );\n }\n\n const signedTx = await transaction.freezeWithSigner(signer);\n const txResponse = await signedTx.executeWithSigner(signer);\n const receipt = await txResponse.getReceiptWithSigner(signer);\n\n this.logger.info('Message submitted successfully via wallet', {\n topicId,\n transactionId: txResponse.transactionId.toString(),\n sequenceNumber: receipt.topicSequenceNumber?.toString(),\n });\n\n return {\n transactionId: txResponse.transactionId.toString(),\n sequenceNumber: receipt.topicSequenceNumber\n ? Number(receipt.topicSequenceNumber)\n : undefined,\n };\n }\n\n /**\n * Get the HashConnect instance\n */\n getHashConnect(): HashinalsWalletConnectSDK {\n return this.hwc;\n }\n\n /**\n * Get connected account ID\n */\n getAccountId(): string | undefined {\n return this.accountId;\n }\n\n /**\n * Check if wallet is connected\n */\n async isConnected(): Promise<boolean> {\n try {\n await this.getAccountAndSigner();\n return true;\n } catch {\n return false;\n }\n }\n\n /**\n * Inscribe a file using HCS-1 via wallet signer (browser)\n */\n async inscribeFile(\n buffer: Buffer,\n fileName: string,\n options?: {\n progressCallback?: (progress: unknown) => void;\n waitMaxAttempts?: number;\n waitIntervalMs?: number;\n },\n ): Promise<RetrievedInscriptionResult> {\n const { accountId, signer } = await this.getAccountAndSigner();\n\n this.logger.info('Inscribing file via HCS-1 (browser)', { fileName });\n\n const mimeType = mime.lookup(fileName) || 'application/octet-stream';\n\n const sdk = await InscriptionSDK.createWithAuth({\n type: 'client',\n accountId,\n signer,\n network: this.network as 'testnet' | 'mainnet',\n });\n\n const inscriptionOptions = {\n mode: 'file' as const,\n waitForConfirmation: true,\n waitMaxAttempts: options?.waitMaxAttempts || 30,\n waitIntervalMs: options?.waitIntervalMs || 4000,\n progressCallback: options?.progressCallback,\n logging: {\n level: this.logger.getLevel ? this.logger.getLevel() : 'info',\n },\n network: this.network as 'testnet' | 'mainnet',\n };\n\n const response = await inscribeWithSigner(\n {\n type: 'buffer',\n buffer,\n fileName,\n mimeType,\n },\n signer,\n inscriptionOptions,\n sdk,\n );\n\n if (!response.confirmed || !response.inscription) {\n throw new Error('Inscription failed to confirm');\n }\n\n return response.inscription;\n }\n\n /**\n * Register an action built with ActionBuilder\n */\n async registerAction(builder: ActionBuilder): Promise<ActionBuilder> {\n const registration = builder.build();\n\n if (!this._actionRegistry) {\n throw new Error('Action registry not initialized');\n }\n\n const result = await this._submitMessage(\n this.actionRegistryTopicId,\n JSON.stringify(registration),\n );\n\n this.logger.info('Action registered (browser)', {\n topicId: registration.t_id,\n transactionId: result.transactionId,\n });\n\n return builder;\n }\n\n /**\n * Register a block built with BlockBuilder\n */\n async registerBlock(builder: BlockBuilder): Promise<BlockBuilder> {\n const templateBuffer = builder.getTemplate();\n\n if (templateBuffer) {\n const templateResult = await this.inscribeFile(\n templateBuffer,\n `${builder.getName() || 'block'}-template.html`,\n );\n builder.setTemplateTopicId(templateResult.topic_id);\n }\n\n const definition = builder.build();\n\n if (!definition.template_t_id) {\n throw new Error(\n 'Block must have either a template buffer (via setTemplate) or template_t_id',\n );\n }\n\n const definitionResult = await this.inscribeFile(\n Buffer.from(JSON.stringify(definition, null, 2)),\n `${definition.name}-definition.json`,\n );\n\n this.logger.info('Block registered (browser)', {\n name: definition.name,\n definitionTopicId: definitionResult.topic_id,\n templateTopicId: definition.template_t_id,\n });\n\n builder.setTopicId(definitionResult.topic_id);\n return builder;\n }\n\n async createAssembly(): Promise<string>;\n async createAssembly(builder: AssemblyBuilder): Promise<string>;\n\n /**\n * Create an assembly using AssemblyBuilder and wallet signer\n */\n async createAssembly(builder?: AssemblyBuilder): Promise<string> {\n if (!builder) {\n return this.createAssemblyTopic();\n }\n\n const registration = builder.build();\n\n const assemblyTopicId = await this.createAssemblyTopic();\n\n await this.registerAssemblyDirect(assemblyTopicId, registration);\n\n const operations = builder.getOperations();\n for (const operation of operations) {\n switch (operation.op) {\n case 'add-block':\n await this.addBlockToAssembly(assemblyTopicId, operation);\n break;\n case 'add-action':\n await this.addActionToAssembly(assemblyTopicId, operation);\n break;\n case 'update':\n await this.updateAssembly(assemblyTopicId, operation);\n break;\n }\n }\n\n this.logger.info('Assembly created (browser)', {\n topicId: assemblyTopicId,\n name: registration.name,\n version: registration.version,\n operations: operations.length,\n });\n\n return assemblyTopicId;\n }\n}\n"],"names":[],"mappings":";;;;;;;;;;AA6CO,MAAM,2BAA2B,gBAAgB;AAAA,EAItD,YAAY,QAAkC;AAC5C,UAAM,MAAM;AAEZ,SAAK,MAAM,OAAO;AAElB,SAAK,wBAAA;AAEL,SAAK,OAAO,KAAK,qCAAqC;AAAA,MACpD,SAAS,OAAO;AAAA,MAChB,WAAW,KAAK;AAAA,IAAA,CACjB;AAAA,EACH;AAAA;AAAA;AAAA;AAAA,EAKA,MAAc,0BAAyC;AACrD,QAAI;AACF,YAAM,EAAE,UAAA,IAAc,MAAM,KAAK,oBAAA;AACjC,WAAK,YAAY;AAAA,IACnB,SAAS,OAAO;AACd,WAAK,OAAO,KAAK,6BAA6B;AAAA,IAChD;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,sBAGH;AACD,UAAM,cAAc,MAAM,KAAK,eAAA;AAC/B,UAAM,YAAY,aAAa,WAAW,SAAA;AAC1C,UAAM,SAAS,MAAM,KAAK,eAAe,SAAS,KAAK,CAAA,MAAK;AAC1D,aAAO,EAAE,eAAe,SAAA,MAAe;AAAA,IACzC,CAAC;AAED,QAAI,CAAC,UAAU,CAAC,WAAW;AACzB,WAAK,OAAO,MAAM,yBAAyB;AAAA,QACzC;AAAA,QACA,SAAS,MAAM,KAAK,eAAe;AAAA,QACnC;AAAA,MAAA,CACD;AACD,YAAM,IAAI,MAAM,kCAAkC;AAAA,IACpD;AAEA,WAAO,EAAE,WAAW,OAAA;AAAA,EACtB;AAAA;AAAA;AAAA;AAAA,EAKA,uBAA+B;AAC7B,UAAM,IAAI,MAAM,+CAA+C;AAAA,EACjE;AAAA;AAAA;AAAA;AAAA,EAKA,wBAAgC;AAC9B,UAAM,IAAI,MAAM,mDAAmD;AAAA,EACrE;AAAA;AAAA;AAAA;AAAA,EAKA,qBAAqB,UAIZ;AACP,UAAM,qBAAqB,QAAQ;AAEnC,SAAK,kBAAkB,IAAI;AAAA,MACzB,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL;AAAA,IAAA;AAGF,SAAK,eAAe,IAAI,YAAY,KAAK,SAAS,KAAK,QAAQ,IAAI;AAEnE,SAAK,oBAAoB,IAAI;AAAA,MAC3B,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL;AAAA,IAAA;AAGF,SAAK,qBAAqB,IAAI;AAAA,MAC5B,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL;AAAA,IAAA;AAGF,SAAK,OAAO,KAAK,sCAAsC;AAAA,MACrD,eAAe,KAAK;AAAA,MACpB,iBAAiB,KAAK;AAAA,MACtB,kBAAkB,KAAK;AAAA,IAAA,CACxB;AAAA,EACH;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,oBACJ,cACA,UACA,WACiB;AACjB,UAAM,EAAE,WAAW,OAAA,IAAW,MAAM,KAAK,oBAAA;AAEzC,UAAM,QAAsC;AAAA,MAC1C,CAAC,aAAa,MAAM,GAAG;AAAA,MACvB,CAAC,aAAa,QAAQ,GAAG;AAAA,MACzB,CAAC,aAAa,SAAS,GAAG;AAAA,IAAA;AAE5B,UAAM,OAAO,MAAM,YAAY;AAE/B,SAAK,OAAO,KAAK,sCAAsC;AAAA,MACrD,cAAc,aAAa,YAAY;AAAA,MACvC;AAAA,MACA;AAAA,IAAA,CACD;AAED,UAAM,cAAc,IAAI,uBAAA,EACrB,aAAa,IAAI,EACjB,iBAAiB,cAAc,SAAS,SAAS,CAAC;AAErD,QAAI,UAAU;AACZ,UAAI,OAAO,aAAa,aAAa,UAAU;AAC7C,cAAM,YAAY,MAAM,OAAO,cAAA;AAC/B,oBAAY,YAAY,SAAS;AACjC,oBAAY,sBAAsB,UAAU,WAAW,SAAS,CAAC;AAAA,MACnE,WAAW,oBAAoB,aAAa,oBAAoB,SAAS;AACvE,oBAAY,YAAY,QAAQ;AAChC,oBAAY,sBAAsB,UAAU,WAAW,SAAS,CAAC;AAAA,MACnE;AAAA,IACF;AAEA,QAAI,WAAW;AACb,UAAI,OAAO,cAAc,aAAa,WAAW;AAC/C,cAAM,YAAY,MAAM,OAAO,cAAA;AAC/B,oBAAY,aAAa,SAAS;AAAA,MACpC,WACE,qBAAqB,aACrB,qBAAqB,SACrB;AACA,oBAAY,aAAa,SAAS;AAAA,MACpC;AAAA,IACF;AAEA,UAAM,WAAW,MAAM,YAAY,iBAAiB,MAAM;AAC1D,UAAM,aAAa,MAAM,SAAS,kBAAkB,MAAM;AAC1D,UAAM,UAAU,MAAM,WAAW,qBAAqB,MAAM;AAE5D,QAAI,CAAC,QAAQ,SAAS;AACpB,YAAM,IAAI,MAAM,yCAAyC;AAAA,IAC3D;AAEA,UAAM,UAAU,QAAQ,QAAQ,SAAA;AAChC,SAAK,OAAO,KAAK,qCAAqC;AAAA,MACpD;AAAA,MACA,cAAc,aAAa,YAAY;AAAA,IAAA,CACxC;AAED,YAAQ,cAAA;AAAA,MACN,KAAK,aAAa;AAChB,aAAK,wBAAwB;AAC7B;AAAA,MACF,KAAK,aAAa;AAChB,aAAK,2BAA2B;AAChC;AAAA,MACF,KAAK,aAAa;AAChB;AAAA,IAAA;AAGJ,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,sBAAuC;AAC3C,SAAK,OAAO,KAAK,6BAA6B;AAC9C,UAAM,UAAU,MAAM,KAAK,oBAAoB,aAAa,QAAQ;AACpE,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,uBACJ,iBACA,cAC6D;AAC7D,SAAK,OAAO,KAAK,wBAAwB;AAAA,MACvC,SAAS;AAAA,MACT,MAAM,aAAa;AAAA,MACnB,SAAS,aAAa;AAAA,IAAA,CACvB;AAED,WAAO,KAAK,eAAe,iBAAiB,KAAK,UAAU,YAAY,CAAC;AAAA,EAC1E;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,mBACJ,iBACA,OAC6D;AAC7D,SAAK,OAAO,KAAK,4BAA4B;AAAA,MAC3C;AAAA,MACA,cAAc,MAAM;AAAA,IAAA,CACrB;AAED,WAAO,KAAK,eAAe,iBAAiB,KAAK,UAAU,KAAK,CAAC;AAAA,EACnE;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,oBACJ,iBACA,QAC6D;AAC7D,SAAK,OAAO,KAAK,6BAA6B;AAAA,MAC5C;AAAA,MACA,eAAe,OAAO;AAAA,MACtB,OAAO,OAAO;AAAA,IAAA,CACf;AAED,WAAO,KAAK,eAAe,iBAAiB,KAAK,UAAU,MAAM,CAAC;AAAA,EACpE;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,eACJ,iBACA,QAC6D;AAC7D,SAAK,OAAO,KAAK,qBAAqB;AAAA,MACpC;AAAA,MACA;AAAA,IAAA,CACD;AAED,WAAO,KAAK,eAAe,iBAAiB,KAAK,UAAU,MAAM,CAAC;AAAA,EACpE;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,WACJ,UACA,YACiE;AACjE,QAAI,CAAC,KAAK,aAAa;AACrB,YAAM,IAAI,MAAM,8BAA8B;AAAA,IAChD;AAEA,WAAO,KAAK,YAAY,WAAW,UAAU,UAAU;AAAA,EACzD;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,cACJ,SACA,SACA,WAC6D;AAC7D,SAAK,OAAO;AAAA,MACV;AAAA,IAAA;AAEF,WAAO,KAAK,eAAe,SAAS,SAAS,SAAS;AAAA,EACxD;AAAA;AAAA;AAAA;AAAA,EAKA,MAAc,eACZ,SACA,SACA,WAC6D;AAC7D,UAAM,EAAE,WAAW,OAAA,IAAW,MAAM,KAAK,oBAAA;AAEzC,SAAK,OAAO,MAAM,0CAA0C;AAAA,MAC1D;AAAA,MACA,eAAe,QAAQ;AAAA,MACvB;AAAA,IAAA,CACD;AAED,UAAM,cAAc,IAAI,8BAAA,EACrB,WAAW,QAAQ,WAAW,OAAO,CAAC,EACtC,WAAW,OAAO,EAClB,iBAAiB,cAAc,SAAS,SAAS,CAAC;AAErD,QAAI,WAAW;AACb,WAAK,OAAO;AAAA,QACV;AAAA,MAAA;AAAA,IAEJ;AAEA,UAAM,WAAW,MAAM,YAAY,iBAAiB,MAAM;AAC1D,UAAM,aAAa,MAAM,SAAS,kBAAkB,MAAM;AAC1D,UAAM,UAAU,MAAM,WAAW,qBAAqB,MAAM;AAE5D,SAAK,OAAO,KAAK,6CAA6C;AAAA,MAC5D;AAAA,MACA,eAAe,WAAW,cAAc,SAAA;AAAA,MACxC,gBAAgB,QAAQ,qBAAqB,SAAA;AAAA,IAAS,CACvD;AAED,WAAO;AAAA,MACL,eAAe,WAAW,cAAc,SAAA;AAAA,MACxC,gBAAgB,QAAQ,sBACpB,OAAO,QAAQ,mBAAmB,IAClC;AAAA,IAAA;AAAA,EAER;AAAA;AAAA;AAAA;AAAA,EAKA,iBAA4C;AAC1C,WAAO,KAAK;AAAA,EACd;AAAA;AAAA;AAAA;AAAA,EAKA,eAAmC;AACjC,WAAO,KAAK;AAAA,EACd;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,cAAgC;AACpC,QAAI;AACF,YAAM,KAAK,oBAAA;AACX,aAAO;AAAA,IACT,QAAQ;AACN,aAAO;AAAA,IACT;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,aACJ,QACA,UACA,SAKqC;AACrC,UAAM,EAAE,WAAW,OAAA,IAAW,MAAM,KAAK,oBAAA;AAEzC,SAAK,OAAO,KAAK,uCAAuC,EAAE,UAAU;AAEpE,UAAM,WAAW,KAAK,OAAO,QAAQ,KAAK;AAE1C,UAAM,MAAM,MAAM,eAAe,eAAe;AAAA,MAC9C,MAAM;AAAA,MACN;AAAA,MACA;AAAA,MACA,SAAS,KAAK;AAAA,IAAA,CACf;AAED,UAAM,qBAAqB;AAAA,MACzB,MAAM;AAAA,MACN,qBAAqB;AAAA,MACrB,iBAAiB,SAAS,mBAAmB;AAAA,MAC7C,gBAAgB,SAAS,kBAAkB;AAAA,MAC3C,kBAAkB,SAAS;AAAA,MAC3B,SAAS;AAAA,QACP,OAAO,KAAK,OAAO,WAAW,KAAK,OAAO,aAAa;AAAA,MAAA;AAAA,MAEzD,SAAS,KAAK;AAAA,IAAA;AAGhB,UAAM,WAAW,MAAM;AAAA,MACrB;AAAA,QACE,MAAM;AAAA,QACN;AAAA,QACA;AAAA,QACA;AAAA,MAAA;AAAA,MAEF;AAAA,MACA;AAAA,MACA;AAAA,IAAA;AAGF,QAAI,CAAC,SAAS,aAAa,CAAC,SAAS,aAAa;AAChD,YAAM,IAAI,MAAM,+BAA+B;AAAA,IACjD;AAEA,WAAO,SAAS;AAAA,EAClB;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,eAAe,SAAgD;AACnE,UAAM,eAAe,QAAQ,MAAA;AAE7B,QAAI,CAAC,KAAK,iBAAiB;AACzB,YAAM,IAAI,MAAM,iCAAiC;AAAA,IACnD;AAEA,UAAM,SAAS,MAAM,KAAK;AAAA,MACxB,KAAK;AAAA,MACL,KAAK,UAAU,YAAY;AAAA,IAAA;AAG7B,SAAK,OAAO,KAAK,+BAA+B;AAAA,MAC9C,SAAS,aAAa;AAAA,MACtB,eAAe,OAAO;AAAA,IAAA,CACvB;AAED,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,cAAc,SAA8C;AAChE,UAAM,iBAAiB,QAAQ,YAAA;AAE/B,QAAI,gBAAgB;AAClB,YAAM,iBAAiB,MAAM,KAAK;AAAA,QAChC;AAAA,QACA,GAAG,QAAQ,QAAA,KAAa,OAAO;AAAA,MAAA;AAEjC,cAAQ,mBAAmB,eAAe,QAAQ;AAAA,IACpD;AAEA,UAAM,aAAa,QAAQ,MAAA;AAE3B,QAAI,CAAC,WAAW,eAAe;AAC7B,YAAM,IAAI;AAAA,QACR;AAAA,MAAA;AAAA,IAEJ;AAEA,UAAM,mBAAmB,MAAM,KAAK;AAAA,MAClC,OAAO,KAAK,KAAK,UAAU,YAAY,MAAM,CAAC,CAAC;AAAA,MAC/C,GAAG,WAAW,IAAI;AAAA,IAAA;AAGpB,SAAK,OAAO,KAAK,8BAA8B;AAAA,MAC7C,MAAM,WAAW;AAAA,MACjB,mBAAmB,iBAAiB;AAAA,MACpC,iBAAiB,WAAW;AAAA,IAAA,CAC7B;AAED,YAAQ,WAAW,iBAAiB,QAAQ;AAC5C,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA,EAQA,MAAM,eAAe,SAA4C;AAC/D,QAAI,CAAC,SAAS;AACZ,aAAO,KAAK,oBAAA;AAAA,IACd;AAEA,UAAM,eAAe,QAAQ,MAAA;AAE7B,UAAM,kBAAkB,MAAM,KAAK,oBAAA;AAEnC,UAAM,KAAK,uBAAuB,iBAAiB,YAAY;AAE/D,UAAM,aAAa,QAAQ,cAAA;AAC3B,eAAW,aAAa,YAAY;AAClC,cAAQ,UAAU,IAAA;AAAA,QAChB,KAAK;AACH,gBAAM,KAAK,mBAAmB,iBAAiB,SAAS;AACxD;AAAA,QACF,KAAK;AACH,gBAAM,KAAK,oBAAoB,iBAAiB,SAAS;AACzD;AAAA,QACF,KAAK;AACH,gBAAM,KAAK,eAAe,iBAAiB,SAAS;AACpD;AAAA,MAAA;AAAA,IAEN;AAEA,SAAK,OAAO,KAAK,8BAA8B;AAAA,MAC7C,SAAS;AAAA,MACT,MAAM,aAAa;AAAA,MACnB,SAAS,aAAa;AAAA,MACtB,YAAY,WAAW;AAAA,IAAA,CACxB;AAED,WAAO;AAAA,EACT;AACF;"}
1
+ {"version":3,"file":"standards-sdk.es38.js","sources":["../../src/hcs-12/builders/action-builder.ts"],"sourcesContent":["/**\n * ActionBuilder utility for creating HCS-12 action registrations\n */\n\nimport { Logger } from '../../utils/logger';\nimport { getCryptoAdapter } from '../../utils/crypto-abstraction';\nimport { isSSREnvironment } from '../../utils/crypto-env';\nimport {\n ActionRegistration,\n SourceVerification,\n ValidationRule,\n ModuleInfo,\n} from '../types';\n\nexport interface BuildOptions {\n validate?: boolean;\n}\n\n/**\n * Builder for creating action registrations with validation\n */\nexport class ActionBuilder {\n private logger: Logger;\n private registration: Partial<ActionRegistration>;\n private alias?: string;\n private cryptoAdapter = getCryptoAdapter();\n\n constructor(logger: Logger) {\n this.logger = logger;\n this.registration = {\n p: 'hcs-12',\n op: 'register',\n };\n }\n\n /**\n * Set HCS-1 topic ID for WASM storage\n */\n setTopicId(topicId: string): ActionBuilder {\n if (!this.isValidTopicId(topicId)) {\n throw new Error('Invalid topic ID format');\n }\n this.registration.t_id = topicId;\n return this;\n }\n\n /**\n * Set alias for this action in the assembly\n */\n setAlias(alias: string): ActionBuilder {\n this.alias = alias;\n return this;\n }\n\n /**\n * Set INFO hash\n */\n setHash(hash: string): ActionBuilder {\n if (!this.isValidHash(hash)) {\n throw new Error('Invalid hash format');\n }\n this.registration.hash = hash;\n return this;\n }\n\n /**\n * Set WASM hash\n */\n setWasmHash(hash: string): ActionBuilder {\n if (!this.isValidHash(hash)) {\n throw new Error('Invalid hash format');\n }\n this.registration.wasm_hash = hash;\n return this;\n }\n\n /**\n * Set optional INFO topic ID\n */\n setInfoTopicId(topicId: string): ActionBuilder {\n if (!this.isValidTopicId(topicId)) {\n throw new Error('Invalid topic ID format');\n }\n this.registration.info_t_id = topicId;\n return this;\n }\n\n /**\n * Set JavaScript wrapper topic ID\n */\n setJsTopicId(topicId: string): ActionBuilder {\n if (!this.isValidTopicId(topicId)) {\n throw new Error('Invalid topic ID format');\n }\n this.registration.js_t_id = topicId;\n return this;\n }\n\n /**\n * Set JavaScript wrapper hash\n */\n setJsHash(hash: string): ActionBuilder {\n if (!this.isValidHash(hash)) {\n throw new Error('Invalid hash format');\n }\n this.registration.js_hash = hash;\n return this;\n }\n\n /**\n * Set interface version (wasm-bindgen version)\n */\n setInterfaceVersion(version: string): ActionBuilder {\n if (!this.isValidVersion(version)) {\n throw new Error('Invalid version format');\n }\n this.registration.interface_version = version;\n return this;\n }\n\n /**\n * Add validation rule for an action\n */\n addValidationRule(action: string, rule: ValidationRule): ActionBuilder {\n if (!this.registration.validation_rules) {\n this.registration.validation_rules = {};\n }\n this.registration.validation_rules[action] = rule;\n return this;\n }\n\n /**\n * Set source verification data\n */\n setSourceVerification(verification: SourceVerification): ActionBuilder {\n if (!this.isValidTopicId(verification.source_t_id)) {\n throw new Error('Invalid source topic ID');\n }\n if (!this.isValidHash(verification.source_hash)) {\n throw new Error('Invalid source hash');\n }\n if (verification.target !== 'wasm32-unknown-unknown') {\n throw new Error('Invalid compilation target');\n }\n this.registration.source_verification = verification;\n return this;\n }\n\n /**\n * Build the action registration\n */\n build(options: BuildOptions = { validate: true }): ActionRegistration {\n if (options.validate !== false) {\n this.validate();\n }\n\n return { ...this.registration } as ActionRegistration;\n }\n\n /**\n * Reset the builder\n */\n reset(): ActionBuilder {\n this.registration = {\n p: 'hcs-12',\n op: 'register',\n };\n this.alias = undefined;\n return this;\n }\n\n /**\n * Get the alias\n */\n getAlias(): string {\n if (!this.alias) {\n throw new Error('Action alias not set');\n }\n return this.alias;\n }\n\n /**\n * Get the topic ID\n */\n getTopicId(): string {\n if (!this.registration.t_id) {\n throw new Error('Action topic ID not set');\n }\n return this.registration.t_id;\n }\n\n /**\n * Generate WASM hash from binary data\n */\n async generateWasmHash(wasmData: Uint8Array): Promise<string> {\n if (isSSREnvironment()) {\n return this.createSSRSafeHash(wasmData, 'wasm');\n }\n\n const hasher = this.cryptoAdapter.createHash('sha256');\n const result = hasher.update(Buffer.from(wasmData)).digest('hex');\n const hash = result instanceof Promise ? await result : result;\n return typeof hash === 'string' ? hash : hash.toString('hex');\n }\n\n /**\n * Generate INFO hash from module info\n */\n async generateInfoHash(info: ModuleInfo): Promise<string> {\n const infoJson = JSON.stringify(info, Object.keys(info).sort());\n\n if (isSSREnvironment()) {\n return this.createSSRSafeHash(Buffer.from(infoJson), 'info');\n }\n\n const hasher = this.cryptoAdapter.createHash('sha256');\n const result = hasher.update(Buffer.from(infoJson)).digest('hex');\n const hash = result instanceof Promise ? await result : result;\n return typeof hash === 'string' ? hash : hash.toString('hex');\n }\n\n /**\n * Calculate hash for any data\n */\n async calculateHash(data: Uint8Array | Buffer | string): Promise<string> {\n const buffer =\n typeof data === 'string'\n ? Buffer.from(data)\n : data instanceof Uint8Array\n ? Buffer.from(data)\n : data;\n\n if (isSSREnvironment()) {\n return this.createSSRSafeHash(buffer, 'data');\n }\n\n const hasher = this.cryptoAdapter.createHash('sha256');\n const result = hasher.update(buffer).digest('hex');\n const hash = result instanceof Promise ? await result : result;\n return typeof hash === 'string' ? hash : hash.toString('hex');\n }\n\n /**\n * Create SSR-safe hash\n */\n private createSSRSafeHash(data: Buffer | Uint8Array, type: string): string {\n const buffer = data instanceof Uint8Array ? Buffer.from(data) : data;\n let hash = 0;\n\n for (let i = 0; i < Math.min(buffer.length, 256); i++) {\n hash = ((hash << 5) - hash + buffer[i]) & 0xffffffff;\n }\n\n return `ssr-${type}-${buffer.length}-${Math.abs(hash).toString(16).padStart(8, '0')}`;\n }\n\n /**\n * Create registration from WASM and INFO data\n */\n async createFromWasmAndInfo(\n topicId: string,\n wasmData: Uint8Array,\n info: ModuleInfo,\n ): Promise<ActionRegistration> {\n const wasmHash = await this.generateWasmHash(wasmData);\n const infoHash = await this.generateInfoHash(info);\n\n const jsTopicId = this.registration.js_t_id;\n const jsHash = this.registration.js_hash;\n const interfaceVersion = this.registration.interface_version;\n\n this.reset().setTopicId(topicId).setHash(infoHash).setWasmHash(wasmHash);\n\n if (jsTopicId) this.setJsTopicId(jsTopicId);\n if (jsHash) this.setJsHash(jsHash);\n if (interfaceVersion) this.setInterfaceVersion(interfaceVersion);\n\n return this.build();\n }\n\n /**\n * Check if registration is complete\n */\n isComplete(registration: Partial<ActionRegistration>): boolean {\n return !!(\n registration.p === 'hcs-12' &&\n registration.op === 'register' &&\n registration.t_id &&\n registration.hash &&\n registration.wasm_hash\n );\n }\n\n /**\n * Validate the current registration\n */\n private validate(): void {\n if (!this.registration.t_id) {\n throw new Error('Topic ID is required');\n }\n if (!this.registration.hash) {\n throw new Error('INFO hash is required');\n }\n if (!this.registration.wasm_hash) {\n throw new Error('WASM hash is required');\n }\n }\n\n /**\n * Validate topic ID format\n */\n private isValidTopicId(topicId: string): boolean {\n return /^\\d+\\.\\d+\\.\\d+$/.test(topicId);\n }\n\n /**\n * Validate hash format\n */\n private isValidHash(hash: string): boolean {\n return /^[a-f0-9]{64}$/.test(hash);\n }\n\n /**\n * Validate semantic version format\n */\n private isValidVersion(version: string): boolean {\n return /^\\d+\\.\\d+\\.\\d+$/.test(version);\n }\n}\n"],"names":[],"mappings":"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"}
@@ -1,125 +1,171 @@
1
- import { getCryptoAdapter } from "./standards-sdk.es120.js";
2
- import { isSSREnvironment } from "./standards-sdk.es118.js";
3
- class ActionBuilder {
1
+ import { Logger } from "./standards-sdk.es105.js";
2
+ class AssemblyBuilder {
4
3
  constructor(logger) {
5
- this.cryptoAdapter = getCryptoAdapter();
6
- this.logger = logger;
7
4
  this.registration = {
8
5
  p: "hcs-12",
9
6
  op: "register"
10
7
  };
8
+ this.operations = [];
9
+ this.updateFields = {
10
+ p: "hcs-12",
11
+ op: "update"
12
+ };
13
+ this.logger = logger || new Logger({ module: "AssemblyBuilder" });
11
14
  }
12
15
  /**
13
- * Set HCS-1 topic ID for WASM storage
16
+ * Set assembly name
14
17
  */
15
- setTopicId(topicId) {
16
- if (!this.isValidTopicId(topicId)) {
17
- throw new Error("Invalid topic ID format");
18
+ setName(name) {
19
+ if (!this.isValidName(name)) {
20
+ throw new Error("Invalid assembly name format");
18
21
  }
19
- this.registration.t_id = topicId;
22
+ this.registration.name = name;
20
23
  return this;
21
24
  }
22
25
  /**
23
- * Set alias for this action in the assembly
26
+ * Set assembly version
24
27
  */
25
- setAlias(alias) {
26
- this.alias = alias;
28
+ setVersion(version) {
29
+ if (!this.isValidSemver(version)) {
30
+ throw new Error("Invalid semantic version");
31
+ }
32
+ this.registration.version = version;
27
33
  return this;
28
34
  }
29
35
  /**
30
- * Set INFO hash
36
+ * Set assembly description
31
37
  */
32
- setHash(hash) {
33
- if (!this.isValidHash(hash)) {
34
- throw new Error("Invalid hash format");
38
+ setDescription(description) {
39
+ this.registration.description = description;
40
+ if (this.updateFields) {
41
+ this.updateFields.description = description;
35
42
  }
36
- this.registration.hash = hash;
37
43
  return this;
38
44
  }
39
45
  /**
40
- * Set WASM hash
46
+ * Set assembly tags
41
47
  */
42
- setWasmHash(hash) {
43
- if (!this.isValidHash(hash)) {
44
- throw new Error("Invalid hash format");
48
+ setTags(tags) {
49
+ this.registration.tags = tags;
50
+ if (this.updateFields) {
51
+ this.updateFields.tags = tags;
45
52
  }
46
- this.registration.wasm_hash = hash;
47
53
  return this;
48
54
  }
49
55
  /**
50
- * Set optional INFO topic ID
56
+ * Add a single tag
51
57
  */
52
- setInfoTopicId(topicId) {
53
- if (!this.isValidTopicId(topicId)) {
54
- throw new Error("Invalid topic ID format");
58
+ addTag(tag) {
59
+ if (!this.registration.tags) {
60
+ this.registration.tags = [];
61
+ }
62
+ if (!this.updateFields.tags) {
63
+ this.updateFields.tags = [];
55
64
  }
56
- this.registration.info_t_id = topicId;
65
+ this.registration.tags.push(tag);
66
+ this.updateFields.tags.push(tag);
57
67
  return this;
58
68
  }
59
69
  /**
60
- * Set JavaScript wrapper topic ID
70
+ * Set assembly author
61
71
  */
62
- setJsTopicId(topicId) {
63
- if (!this.isValidTopicId(topicId)) {
64
- throw new Error("Invalid topic ID format");
65
- }
66
- this.registration.js_t_id = topicId;
72
+ setAuthor(author) {
73
+ this.registration.author = author;
67
74
  return this;
68
75
  }
69
76
  /**
70
- * Set JavaScript wrapper hash
77
+ * Add an action to the assembly
71
78
  */
72
- setJsHash(hash) {
73
- if (!this.isValidHash(hash)) {
74
- throw new Error("Invalid hash format");
79
+ addAction(builder) {
80
+ const topicId = builder.getTopicId();
81
+ const alias = builder.getAlias();
82
+ if (!this.isValidAlias(alias)) {
83
+ throw new Error("Invalid alias format");
75
84
  }
76
- this.registration.js_hash = hash;
85
+ const operation = {
86
+ p: "hcs-12",
87
+ op: "add-action",
88
+ t_id: topicId,
89
+ alias
90
+ };
91
+ this.operations.push(operation);
77
92
  return this;
78
93
  }
79
94
  /**
80
- * Set interface version (wasm-bindgen version)
95
+ * Add a block to the assembly
96
+ * The block must already be registered and have a topic ID
81
97
  */
82
- setInterfaceVersion(version) {
83
- if (!this.isValidVersion(version)) {
84
- throw new Error("Invalid version format");
98
+ addBlock(builder) {
99
+ const blockTopicId = builder.getTopicId();
100
+ if (!this.isValidTopicId(blockTopicId)) {
101
+ throw new Error(`Invalid block topic ID: ${blockTopicId}`);
85
102
  }
86
- this.registration.interface_version = version;
103
+ const definition = builder.build();
104
+ const actions = builder.getActions();
105
+ const attributes = this.extractDefaultAttributes(definition.attributes);
106
+ if (actions && Object.keys(actions).length > 0) {
107
+ for (const [name, topicId] of Object.entries(actions)) {
108
+ if (!this.isValidTopicId(topicId)) {
109
+ throw new Error(`Invalid action topic ID for "${name}": ${topicId}`);
110
+ }
111
+ }
112
+ }
113
+ const operation = {
114
+ p: "hcs-12",
115
+ op: "add-block",
116
+ block_t_id: blockTopicId,
117
+ ...Object.keys(actions).length > 0 && { actions },
118
+ attributes
119
+ };
120
+ this.operations.push(operation);
87
121
  return this;
88
122
  }
89
123
  /**
90
- * Add validation rule for an action
124
+ * Update assembly metadata
91
125
  */
92
- addValidationRule(action, rule) {
93
- if (!this.registration.validation_rules) {
94
- this.registration.validation_rules = {};
95
- }
96
- this.registration.validation_rules[action] = rule;
126
+ updateMetadata(description, tags) {
127
+ const operation = {
128
+ p: "hcs-12",
129
+ op: "update",
130
+ description,
131
+ tags
132
+ };
133
+ this.operations.push(operation);
97
134
  return this;
98
135
  }
99
136
  /**
100
- * Set source verification data
137
+ * Build the assembly registration
101
138
  */
102
- setSourceVerification(verification) {
103
- if (!this.isValidTopicId(verification.source_t_id)) {
104
- throw new Error("Invalid source topic ID");
105
- }
106
- if (!this.isValidHash(verification.source_hash)) {
107
- throw new Error("Invalid source hash");
139
+ build() {
140
+ if (!this.registration.name) {
141
+ throw new Error("Assembly name is required");
108
142
  }
109
- if (verification.target !== "wasm32-unknown-unknown") {
110
- throw new Error("Invalid compilation target");
143
+ if (!this.registration.version) {
144
+ throw new Error("Assembly version is required");
111
145
  }
112
- this.registration.source_verification = verification;
113
- return this;
146
+ return { ...this.registration };
114
147
  }
115
148
  /**
116
- * Build the action registration
149
+ * Build an update operation
117
150
  */
118
- build(options = { validate: true }) {
119
- if (options.validate !== false) {
120
- this.validate();
151
+ buildUpdate() {
152
+ const update = {
153
+ p: "hcs-12",
154
+ op: "update"
155
+ };
156
+ if (this.updateFields.description !== void 0) {
157
+ update.description = this.updateFields.description;
121
158
  }
122
- return { ...this.registration };
159
+ if (this.updateFields.tags !== void 0) {
160
+ update.tags = this.updateFields.tags;
161
+ }
162
+ return update;
163
+ }
164
+ /**
165
+ * Build all operations
166
+ */
167
+ buildOperations() {
168
+ return [...this.operations];
123
169
  }
124
170
  /**
125
171
  * Reset the builder
@@ -129,131 +175,162 @@ class ActionBuilder {
129
175
  p: "hcs-12",
130
176
  op: "register"
131
177
  };
132
- this.alias = void 0;
178
+ this.operations = [];
179
+ this.updateFields = {
180
+ p: "hcs-12",
181
+ op: "update"
182
+ };
133
183
  return this;
134
184
  }
135
185
  /**
136
- * Get the alias
137
- */
138
- getAlias() {
139
- if (!this.alias) {
140
- throw new Error("Action alias not set");
141
- }
142
- return this.alias;
143
- }
144
- /**
145
- * Get the topic ID
186
+ * Get the registration message
146
187
  */
147
- getTopicId() {
148
- if (!this.registration.t_id) {
149
- throw new Error("Action topic ID not set");
150
- }
151
- return this.registration.t_id;
188
+ getRegistration() {
189
+ return this.build();
152
190
  }
153
191
  /**
154
- * Generate WASM hash from binary data
192
+ * Get all operations
155
193
  */
156
- async generateWasmHash(wasmData) {
157
- if (isSSREnvironment()) {
158
- return this.createSSRSafeHash(wasmData, "wasm");
159
- }
160
- const hasher = this.cryptoAdapter.createHash("sha256");
161
- const result = hasher.update(Buffer.from(wasmData)).digest("hex");
162
- const hash = result instanceof Promise ? await result : result;
163
- return typeof hash === "string" ? hash : hash.toString("hex");
194
+ getOperations() {
195
+ return this.buildOperations();
164
196
  }
165
197
  /**
166
- * Generate INFO hash from module info
198
+ * Build the complete assembly definition for preview
167
199
  */
168
- async generateInfoHash(info) {
169
- const infoJson = JSON.stringify(info, Object.keys(info).sort());
170
- if (isSSREnvironment()) {
171
- return this.createSSRSafeHash(Buffer.from(infoJson), "info");
200
+ buildPreview() {
201
+ const actions = [];
202
+ const blocks = [];
203
+ for (const operation of this.operations) {
204
+ switch (operation.op) {
205
+ case "add-action":
206
+ actions.push({
207
+ t_id: operation.t_id,
208
+ alias: operation.alias,
209
+ config: operation.config,
210
+ data: operation.data
211
+ });
212
+ break;
213
+ case "add-block":
214
+ blocks.push({
215
+ block_t_id: operation.block_t_id,
216
+ actions: operation.actions,
217
+ attributes: operation.attributes,
218
+ children: operation.children,
219
+ data: operation.data
220
+ });
221
+ break;
222
+ case "update":
223
+ if (operation.description) {
224
+ this.registration.description = operation.description;
225
+ }
226
+ if (operation.tags) {
227
+ this.registration.tags = operation.tags;
228
+ }
229
+ break;
230
+ }
172
231
  }
173
- const hasher = this.cryptoAdapter.createHash("sha256");
174
- const result = hasher.update(Buffer.from(infoJson)).digest("hex");
175
- const hash = result instanceof Promise ? await result : result;
176
- return typeof hash === "string" ? hash : hash.toString("hex");
232
+ return {
233
+ topicId: "",
234
+ name: this.registration.name,
235
+ version: this.registration.version,
236
+ description: this.registration.description,
237
+ tags: this.registration.tags,
238
+ author: this.registration.author,
239
+ actions,
240
+ blocks,
241
+ created: (/* @__PURE__ */ new Date()).toISOString(),
242
+ updated: (/* @__PURE__ */ new Date()).toISOString()
243
+ };
177
244
  }
178
245
  /**
179
- * Calculate hash for any data
246
+ * Validate the assembly configuration
180
247
  */
181
- async calculateHash(data) {
182
- const buffer = typeof data === "string" ? Buffer.from(data) : data instanceof Uint8Array ? Buffer.from(data) : data;
183
- if (isSSREnvironment()) {
184
- return this.createSSRSafeHash(buffer, "data");
248
+ validate() {
249
+ const errors = [];
250
+ if (!this.registration.name) {
251
+ errors.push("Assembly name is required");
185
252
  }
186
- const hasher = this.cryptoAdapter.createHash("sha256");
187
- const result = hasher.update(buffer).digest("hex");
188
- const hash = result instanceof Promise ? await result : result;
189
- return typeof hash === "string" ? hash : hash.toString("hex");
190
- }
191
- /**
192
- * Create SSR-safe hash
193
- */
194
- createSSRSafeHash(data, type) {
195
- const buffer = data instanceof Uint8Array ? Buffer.from(data) : data;
196
- let hash = 0;
197
- for (let i = 0; i < Math.min(buffer.length, 256); i++) {
198
- hash = (hash << 5) - hash + buffer[i] & 4294967295;
253
+ if (!this.registration.version) {
254
+ errors.push("Assembly version is required");
199
255
  }
200
- return `ssr-${type}-${buffer.length}-${Math.abs(hash).toString(16).padStart(8, "0")}`;
201
- }
202
- /**
203
- * Create registration from WASM and INFO data
204
- */
205
- async createFromWasmAndInfo(topicId, wasmData, info) {
206
- const wasmHash = await this.generateWasmHash(wasmData);
207
- const infoHash = await this.generateInfoHash(info);
208
- const jsTopicId = this.registration.js_t_id;
209
- const jsHash = this.registration.js_hash;
210
- const interfaceVersion = this.registration.interface_version;
211
- this.reset().setTopicId(topicId).setHash(infoHash).setWasmHash(wasmHash);
212
- if (jsTopicId) this.setJsTopicId(jsTopicId);
213
- if (jsHash) this.setJsHash(jsHash);
214
- if (interfaceVersion) this.setInterfaceVersion(interfaceVersion);
215
- return this.build();
216
- }
217
- /**
218
- * Check if registration is complete
219
- */
220
- isComplete(registration) {
221
- return !!(registration.p === "hcs-12" && registration.op === "register" && registration.t_id && registration.hash && registration.wasm_hash);
222
- }
223
- /**
224
- * Validate the current registration
225
- */
226
- validate() {
227
- if (!this.registration.t_id) {
228
- throw new Error("Topic ID is required");
256
+ if (this.registration.version && !this.isValidSemver(this.registration.version)) {
257
+ errors.push("Invalid semantic version format");
229
258
  }
230
- if (!this.registration.hash) {
231
- throw new Error("INFO hash is required");
259
+ const aliases = /* @__PURE__ */ new Set();
260
+ for (const operation of this.operations) {
261
+ if (operation.op === "add-action") {
262
+ if (aliases.has(operation.alias)) {
263
+ errors.push(`Duplicate alias: ${operation.alias}`);
264
+ } else {
265
+ aliases.add(operation.alias);
266
+ }
267
+ if (!this.isValidTopicId(operation.t_id)) {
268
+ errors.push(
269
+ `Invalid topic ID for ${operation.alias}: ${operation.t_id}`
270
+ );
271
+ }
272
+ if (!this.isValidAlias(operation.alias)) {
273
+ errors.push(`Invalid alias format: ${operation.alias}`);
274
+ }
275
+ } else if (operation.op === "add-block") {
276
+ if (!this.isValidTopicId(operation.block_t_id)) {
277
+ errors.push(`Invalid block topic ID: ${operation.block_t_id}`);
278
+ }
279
+ }
232
280
  }
233
- if (!this.registration.wasm_hash) {
234
- throw new Error("WASM hash is required");
281
+ const actionAliases = /* @__PURE__ */ new Set();
282
+ const blockOperations = this.operations.filter(
283
+ (op) => op.op === "add-action"
284
+ );
285
+ blockOperations.forEach((op) => actionAliases.add(op.alias));
286
+ for (const operation of this.operations) {
287
+ if (operation.op === "add-block" && operation.actions) {
288
+ for (const [actionKey, actionTopicId] of Object.entries(
289
+ operation.actions
290
+ )) {
291
+ if (!this.isValidTopicId(actionTopicId)) {
292
+ errors.push(
293
+ `Block ${operation.block_t_id} has invalid action topic ID for key ${actionKey}: ${actionTopicId}`
294
+ );
295
+ }
296
+ }
297
+ }
235
298
  }
299
+ return {
300
+ valid: errors.length === 0,
301
+ errors
302
+ };
236
303
  }
237
304
  /**
238
- * Validate topic ID format
305
+ * Helper validation methods
239
306
  */
307
+ isValidSemver(version) {
308
+ return /^\d+\.\d+\.\d+(-[\w\.\+]+)?$/.test(version);
309
+ }
240
310
  isValidTopicId(topicId) {
241
311
  return /^\d+\.\d+\.\d+$/.test(topicId);
242
312
  }
243
- /**
244
- * Validate hash format
245
- */
246
- isValidHash(hash) {
247
- return /^[a-f0-9]{64}$/.test(hash);
313
+ isValidAlias(alias) {
314
+ return /^[a-zA-Z][a-zA-Z0-9_-]*$/.test(alias) && alias.length >= 2 && alias.length <= 50;
315
+ }
316
+ isValidName(name) {
317
+ return /^[a-z0-9-]+$/.test(name) && name.length >= 2 && name.length <= 100;
248
318
  }
249
319
  /**
250
- * Validate semantic version format
320
+ * Extract default values from block attributes
251
321
  */
252
- isValidVersion(version) {
253
- return /^\d+\.\d+\.\d+$/.test(version);
322
+ extractDefaultAttributes(attributes) {
323
+ if (!attributes) return {};
324
+ const defaults = {};
325
+ for (const [key, attr] of Object.entries(attributes)) {
326
+ if (attr && typeof attr === "object" && "default" in attr) {
327
+ defaults[key] = attr.default;
328
+ }
329
+ }
330
+ return defaults;
254
331
  }
255
332
  }
256
333
  export {
257
- ActionBuilder
334
+ AssemblyBuilder
258
335
  };
259
336
  //# sourceMappingURL=standards-sdk.es39.js.map