@hashgraphonline/standards-sdk 0.1.141 → 0.1.143

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 (273) hide show
  1. package/README.md +24 -1
  2. package/dist/cjs/hcs-11/client.d.ts.map +1 -1
  3. package/dist/cjs/hcs-11/types.d.ts +1 -0
  4. package/dist/cjs/hcs-11/types.d.ts.map +1 -1
  5. package/dist/cjs/hcs-16/base-client.d.ts.map +1 -1
  6. package/dist/cjs/hcs-17/types.d.ts.map +1 -1
  7. package/dist/cjs/hcs-20/sdk.d.ts.map +1 -1
  8. package/dist/cjs/hcs-20/types.d.ts +9 -8
  9. package/dist/cjs/hcs-20/types.d.ts.map +1 -1
  10. package/dist/cjs/hcs-21/base-client.d.ts +14 -12
  11. package/dist/cjs/hcs-21/base-client.d.ts.map +1 -1
  12. package/dist/cjs/hcs-21/browser.d.ts +17 -7
  13. package/dist/cjs/hcs-21/browser.d.ts.map +1 -1
  14. package/dist/cjs/hcs-21/index.d.ts +1 -0
  15. package/dist/cjs/hcs-21/index.d.ts.map +1 -1
  16. package/dist/cjs/hcs-21/sdk.d.ts +70 -6
  17. package/dist/cjs/hcs-21/sdk.d.ts.map +1 -1
  18. package/dist/cjs/hcs-21/tx.d.ts +6 -2
  19. package/dist/cjs/hcs-21/tx.d.ts.map +1 -1
  20. package/dist/cjs/hcs-21/types.d.ts +751 -66
  21. package/dist/cjs/hcs-21/types.d.ts.map +1 -1
  22. package/dist/cjs/hcs-21/verify.d.ts +6 -0
  23. package/dist/cjs/hcs-21/verify.d.ts.map +1 -0
  24. package/dist/cjs/inscribe/inscriber.d.ts +3 -1
  25. package/dist/cjs/inscribe/inscriber.d.ts.map +1 -1
  26. package/dist/cjs/inscribe/quote-cache.d.ts.map +1 -1
  27. package/dist/cjs/inscribe/types.d.ts +7 -0
  28. package/dist/cjs/inscribe/types.d.ts.map +1 -1
  29. package/dist/cjs/services/registry-broker/client.d.ts +4 -3
  30. package/dist/cjs/services/registry-broker/client.d.ts.map +1 -1
  31. package/dist/cjs/services/registry-broker/private-key-signer.d.ts.map +1 -1
  32. package/dist/cjs/services/registry-broker/schemas.d.ts +49 -25
  33. package/dist/cjs/services/registry-broker/schemas.d.ts.map +1 -1
  34. package/dist/cjs/services/registry-broker/types.d.ts +1 -2
  35. package/dist/cjs/services/registry-broker/types.d.ts.map +1 -1
  36. package/dist/cjs/services/types.d.ts +1 -0
  37. package/dist/cjs/services/types.d.ts.map +1 -1
  38. package/dist/cjs/standards-sdk.cjs +2 -2
  39. package/dist/cjs/standards-sdk.cjs.map +1 -1
  40. package/dist/cjs/utils/dynamic-import.d.ts +1 -0
  41. package/dist/cjs/utils/dynamic-import.d.ts.map +1 -1
  42. package/dist/es/hcs-11/client.d.ts.map +1 -1
  43. package/dist/es/hcs-11/types.d.ts +1 -0
  44. package/dist/es/hcs-11/types.d.ts.map +1 -1
  45. package/dist/es/hcs-16/base-client.d.ts.map +1 -1
  46. package/dist/es/hcs-17/types.d.ts.map +1 -1
  47. package/dist/es/hcs-20/sdk.d.ts.map +1 -1
  48. package/dist/es/hcs-20/types.d.ts +9 -8
  49. package/dist/es/hcs-20/types.d.ts.map +1 -1
  50. package/dist/es/hcs-21/base-client.d.ts +14 -12
  51. package/dist/es/hcs-21/base-client.d.ts.map +1 -1
  52. package/dist/es/hcs-21/browser.d.ts +17 -7
  53. package/dist/es/hcs-21/browser.d.ts.map +1 -1
  54. package/dist/es/hcs-21/index.d.ts +1 -0
  55. package/dist/es/hcs-21/index.d.ts.map +1 -1
  56. package/dist/es/hcs-21/sdk.d.ts +70 -6
  57. package/dist/es/hcs-21/sdk.d.ts.map +1 -1
  58. package/dist/es/hcs-21/tx.d.ts +6 -2
  59. package/dist/es/hcs-21/tx.d.ts.map +1 -1
  60. package/dist/es/hcs-21/types.d.ts +751 -66
  61. package/dist/es/hcs-21/types.d.ts.map +1 -1
  62. package/dist/es/hcs-21/verify.d.ts +6 -0
  63. package/dist/es/hcs-21/verify.d.ts.map +1 -0
  64. package/dist/es/inscribe/inscriber.d.ts +3 -1
  65. package/dist/es/inscribe/inscriber.d.ts.map +1 -1
  66. package/dist/es/inscribe/quote-cache.d.ts.map +1 -1
  67. package/dist/es/inscribe/types.d.ts +7 -0
  68. package/dist/es/inscribe/types.d.ts.map +1 -1
  69. package/dist/es/services/registry-broker/client.d.ts +4 -3
  70. package/dist/es/services/registry-broker/client.d.ts.map +1 -1
  71. package/dist/es/services/registry-broker/private-key-signer.d.ts.map +1 -1
  72. package/dist/es/services/registry-broker/schemas.d.ts +49 -25
  73. package/dist/es/services/registry-broker/schemas.d.ts.map +1 -1
  74. package/dist/es/services/registry-broker/types.d.ts +1 -2
  75. package/dist/es/services/registry-broker/types.d.ts.map +1 -1
  76. package/dist/es/services/types.d.ts +1 -0
  77. package/dist/es/services/types.d.ts.map +1 -1
  78. package/dist/es/standards-sdk.es.js +64 -51
  79. package/dist/es/standards-sdk.es.js.map +1 -1
  80. package/dist/es/standards-sdk.es10.js +2 -2
  81. package/dist/es/standards-sdk.es100.js +26 -229
  82. package/dist/es/standards-sdk.es100.js.map +1 -1
  83. package/dist/es/standards-sdk.es101.js +228 -109
  84. package/dist/es/standards-sdk.es101.js.map +1 -1
  85. package/dist/es/standards-sdk.es102.js +94 -15
  86. package/dist/es/standards-sdk.es102.js.map +1 -1
  87. package/dist/es/standards-sdk.es103.js +30 -80
  88. package/dist/es/standards-sdk.es103.js.map +1 -1
  89. package/dist/es/standards-sdk.es104.js +80 -27
  90. package/dist/es/standards-sdk.es104.js.map +1 -1
  91. package/dist/es/standards-sdk.es105.js +25 -136
  92. package/dist/es/standards-sdk.es105.js.map +1 -1
  93. package/dist/es/standards-sdk.es106.js +140 -27
  94. package/dist/es/standards-sdk.es106.js.map +1 -1
  95. package/dist/es/standards-sdk.es107.js +27 -20
  96. package/dist/es/standards-sdk.es107.js.map +1 -1
  97. package/dist/es/standards-sdk.es108.js +18 -156
  98. package/dist/es/standards-sdk.es108.js.map +1 -1
  99. package/dist/es/standards-sdk.es109.js +148 -196
  100. package/dist/es/standards-sdk.es109.js.map +1 -1
  101. package/dist/es/standards-sdk.es110.js +160 -747
  102. package/dist/es/standards-sdk.es110.js.map +1 -1
  103. package/dist/es/standards-sdk.es111.js +786 -9
  104. package/dist/es/standards-sdk.es111.js.map +1 -1
  105. package/dist/es/standards-sdk.es112.js +13 -567
  106. package/dist/es/standards-sdk.es112.js.map +1 -1
  107. package/dist/es/standards-sdk.es113.js +541 -576
  108. package/dist/es/standards-sdk.es113.js.map +1 -1
  109. package/dist/es/standards-sdk.es114.js +601 -12
  110. package/dist/es/standards-sdk.es114.js.map +1 -1
  111. package/dist/es/standards-sdk.es115.js +13 -2
  112. package/dist/es/standards-sdk.es115.js.map +1 -1
  113. package/dist/es/standards-sdk.es116.js +2 -83
  114. package/dist/es/standards-sdk.es116.js.map +1 -1
  115. package/dist/es/standards-sdk.es117.js +80 -36
  116. package/dist/es/standards-sdk.es117.js.map +1 -1
  117. package/dist/es/standards-sdk.es118.js +39 -2
  118. package/dist/es/standards-sdk.es118.js.map +1 -1
  119. package/dist/es/standards-sdk.es119.js +2 -223
  120. package/dist/es/standards-sdk.es119.js.map +1 -1
  121. package/dist/es/standards-sdk.es12.js +1 -1
  122. package/dist/es/standards-sdk.es120.js +193 -1110
  123. package/dist/es/standards-sdk.es120.js.map +1 -1
  124. package/dist/es/standards-sdk.es121.js +1059 -225
  125. package/dist/es/standards-sdk.es121.js.map +1 -1
  126. package/dist/es/standards-sdk.es122.js +303 -419
  127. package/dist/es/standards-sdk.es122.js.map +1 -1
  128. package/dist/es/standards-sdk.es123.js +418 -351
  129. package/dist/es/standards-sdk.es123.js.map +1 -1
  130. package/dist/es/standards-sdk.es124.js +348 -754
  131. package/dist/es/standards-sdk.es124.js.map +1 -1
  132. package/dist/es/standards-sdk.es125.js +854 -178
  133. package/dist/es/standards-sdk.es125.js.map +1 -1
  134. package/dist/es/standards-sdk.es126.js +153 -1512
  135. package/dist/es/standards-sdk.es126.js.map +1 -1
  136. package/dist/es/standards-sdk.es127.js +1373 -1977
  137. package/dist/es/standards-sdk.es127.js.map +1 -1
  138. package/dist/es/standards-sdk.es128.js +2211 -50
  139. package/dist/es/standards-sdk.es128.js.map +1 -1
  140. package/dist/es/standards-sdk.es129.js +59 -79
  141. package/dist/es/standards-sdk.es129.js.map +1 -1
  142. package/dist/es/standards-sdk.es13.js +1 -1
  143. package/dist/es/standards-sdk.es130.js +80 -152
  144. package/dist/es/standards-sdk.es130.js.map +1 -1
  145. package/dist/es/standards-sdk.es131.js +159 -7
  146. package/dist/es/standards-sdk.es131.js.map +1 -1
  147. package/dist/es/standards-sdk.es132.js +7 -86
  148. package/dist/es/standards-sdk.es132.js.map +1 -1
  149. package/dist/es/standards-sdk.es133.js +65 -44
  150. package/dist/es/standards-sdk.es133.js.map +1 -1
  151. package/dist/es/standards-sdk.es134.js +65 -28
  152. package/dist/es/standards-sdk.es134.js.map +1 -1
  153. package/dist/es/standards-sdk.es135.js +28 -138
  154. package/dist/es/standards-sdk.es135.js.map +1 -1
  155. package/dist/es/standards-sdk.es136.js +133 -37
  156. package/dist/es/standards-sdk.es136.js.map +1 -1
  157. package/dist/es/standards-sdk.es137.js +42 -732
  158. package/dist/es/standards-sdk.es137.js.map +1 -1
  159. package/dist/es/standards-sdk.es138.js +746 -12254
  160. package/dist/es/standards-sdk.es138.js.map +1 -1
  161. package/dist/es/standards-sdk.es139.js +12269 -12
  162. package/dist/es/standards-sdk.es139.js.map +1 -1
  163. package/dist/es/standards-sdk.es14.js +1 -1
  164. package/dist/es/standards-sdk.es141.js +20 -2
  165. package/dist/es/standards-sdk.es141.js.map +1 -1
  166. package/dist/es/standards-sdk.es142.js +13 -168
  167. package/dist/es/standards-sdk.es142.js.map +1 -1
  168. package/dist/es/standards-sdk.es143.js +139 -289
  169. package/dist/es/standards-sdk.es143.js.map +1 -1
  170. package/dist/es/standards-sdk.es144.js +274 -298
  171. package/dist/es/standards-sdk.es144.js.map +1 -1
  172. package/dist/es/standards-sdk.es145.js +262 -369
  173. package/dist/es/standards-sdk.es145.js.map +1 -1
  174. package/dist/es/standards-sdk.es146.js +316 -194
  175. package/dist/es/standards-sdk.es146.js.map +1 -1
  176. package/dist/es/standards-sdk.es147.js +319 -64
  177. package/dist/es/standards-sdk.es147.js.map +1 -1
  178. package/dist/es/standards-sdk.es148.js +79 -0
  179. package/dist/es/standards-sdk.es148.js.map +1 -0
  180. package/dist/es/standards-sdk.es15.js +1 -1
  181. package/dist/es/standards-sdk.es16.js +1 -1
  182. package/dist/es/standards-sdk.es17.js +5 -10
  183. package/dist/es/standards-sdk.es17.js.map +1 -1
  184. package/dist/es/standards-sdk.es19.js +12 -16
  185. package/dist/es/standards-sdk.es19.js.map +1 -1
  186. package/dist/es/standards-sdk.es20.js +9 -13
  187. package/dist/es/standards-sdk.es20.js.map +1 -1
  188. package/dist/es/standards-sdk.es21.js +1 -1
  189. package/dist/es/standards-sdk.es22.js +1 -1
  190. package/dist/es/standards-sdk.es23.js +1 -1
  191. package/dist/es/standards-sdk.es24.js +1 -1
  192. package/dist/es/standards-sdk.es25.js +1 -1
  193. package/dist/es/standards-sdk.es26.js +1 -1
  194. package/dist/es/standards-sdk.es27.js +1 -1
  195. package/dist/es/standards-sdk.es28.js +16 -18
  196. package/dist/es/standards-sdk.es28.js.map +1 -1
  197. package/dist/es/standards-sdk.es29.js.map +1 -1
  198. package/dist/es/standards-sdk.es3.js +2 -2
  199. package/dist/es/standards-sdk.es31.js +2 -2
  200. package/dist/es/standards-sdk.es32.js +4 -4
  201. package/dist/es/standards-sdk.es33.js +1 -1
  202. package/dist/es/standards-sdk.es36.js +8 -12
  203. package/dist/es/standards-sdk.es36.js.map +1 -1
  204. package/dist/es/standards-sdk.es37.js +4 -4
  205. package/dist/es/standards-sdk.es38.js +2 -2
  206. package/dist/es/standards-sdk.es39.js +2 -2
  207. package/dist/es/standards-sdk.es40.js +1 -1
  208. package/dist/es/standards-sdk.es41.js +1 -1
  209. package/dist/es/standards-sdk.es42.js +2 -2
  210. package/dist/es/standards-sdk.es47.js +1 -1
  211. package/dist/es/standards-sdk.es5.js +2 -2
  212. package/dist/es/standards-sdk.es52.js +1 -1
  213. package/dist/es/standards-sdk.es54.js +1 -1
  214. package/dist/es/standards-sdk.es57.js +1 -1
  215. package/dist/es/standards-sdk.es6.js +2 -2
  216. package/dist/es/standards-sdk.es61.js +7 -11
  217. package/dist/es/standards-sdk.es61.js.map +1 -1
  218. package/dist/es/standards-sdk.es65.js +2 -2
  219. package/dist/es/standards-sdk.es66.js +3 -3
  220. package/dist/es/standards-sdk.es69.js +2 -2
  221. package/dist/es/standards-sdk.es7.js +2 -2
  222. package/dist/es/standards-sdk.es70.js +3 -3
  223. package/dist/es/standards-sdk.es71.js +2 -2
  224. package/dist/es/standards-sdk.es72.js +1 -1
  225. package/dist/es/standards-sdk.es73.js.map +1 -1
  226. package/dist/es/standards-sdk.es75.js +2 -2
  227. package/dist/es/standards-sdk.es77.js +5 -3
  228. package/dist/es/standards-sdk.es77.js.map +1 -1
  229. package/dist/es/standards-sdk.es78.js +4 -10
  230. package/dist/es/standards-sdk.es78.js.map +1 -1
  231. package/dist/es/standards-sdk.es79.js +1 -1
  232. package/dist/es/standards-sdk.es8.js +1 -1
  233. package/dist/es/standards-sdk.es80.js +113 -29
  234. package/dist/es/standards-sdk.es80.js.map +1 -1
  235. package/dist/es/standards-sdk.es82.js +23 -4
  236. package/dist/es/standards-sdk.es82.js.map +1 -1
  237. package/dist/es/standards-sdk.es83.js +39 -14
  238. package/dist/es/standards-sdk.es83.js.map +1 -1
  239. package/dist/es/standards-sdk.es84.js +198 -17
  240. package/dist/es/standards-sdk.es84.js.map +1 -1
  241. package/dist/es/standards-sdk.es85.js +256 -9
  242. package/dist/es/standards-sdk.es85.js.map +1 -1
  243. package/dist/es/standards-sdk.es86.js +55 -21
  244. package/dist/es/standards-sdk.es86.js.map +1 -1
  245. package/dist/es/standards-sdk.es87.js +22 -75
  246. package/dist/es/standards-sdk.es87.js.map +1 -1
  247. package/dist/es/standards-sdk.es88.js +45 -30
  248. package/dist/es/standards-sdk.es88.js.map +1 -1
  249. package/dist/es/standards-sdk.es89.js +57 -22
  250. package/dist/es/standards-sdk.es89.js.map +1 -1
  251. package/dist/es/standards-sdk.es90.js +28 -23
  252. package/dist/es/standards-sdk.es90.js.map +1 -1
  253. package/dist/es/standards-sdk.es91.js +23 -167
  254. package/dist/es/standards-sdk.es91.js.map +1 -1
  255. package/dist/es/standards-sdk.es92.js +158 -119
  256. package/dist/es/standards-sdk.es92.js.map +1 -1
  257. package/dist/es/standards-sdk.es93.js +68 -95
  258. package/dist/es/standards-sdk.es93.js.map +1 -1
  259. package/dist/es/standards-sdk.es94.js +136 -119
  260. package/dist/es/standards-sdk.es94.js.map +1 -1
  261. package/dist/es/standards-sdk.es95.js +139 -39
  262. package/dist/es/standards-sdk.es95.js.map +1 -1
  263. package/dist/es/standards-sdk.es96.js +42 -257
  264. package/dist/es/standards-sdk.es96.js.map +1 -1
  265. package/dist/es/standards-sdk.es97.js +243 -80
  266. package/dist/es/standards-sdk.es97.js.map +1 -1
  267. package/dist/es/standards-sdk.es98.js +47 -48
  268. package/dist/es/standards-sdk.es98.js.map +1 -1
  269. package/dist/es/standards-sdk.es99.js +100 -28
  270. package/dist/es/standards-sdk.es99.js.map +1 -1
  271. package/dist/es/utils/dynamic-import.d.ts +1 -0
  272. package/dist/es/utils/dynamic-import.d.ts.map +1 -1
  273. package/package.json +3 -3
@@ -7,26 +7,22 @@ import { IssuerRegistry } from "./standards-sdk.es62.js";
7
7
  import { HederaHieroIssuer } from "./standards-sdk.es63.js";
8
8
  import { Client } from "@hashgraph/sdk";
9
9
  import { HCS11Client } from "./standards-sdk.es28.js";
10
- import { Logger } from "./standards-sdk.es105.js";
11
- import { HederaMirrorNode } from "./standards-sdk.es126.js";
10
+ import { Logger } from "./standards-sdk.es106.js";
11
+ import { HederaMirrorNode } from "./standards-sdk.es127.js";
12
12
  import "axios";
13
13
  import "node:path";
14
14
  import "node:buffer";
15
15
  import "node:crypto";
16
16
  import "@noble/curves/secp256k1.js";
17
- import "./standards-sdk.es129.js";
18
- import "viem/accounts";
19
- import "viem/chains";
20
- import "x402-axios";
21
- import "x402/types";
22
- import "./standards-sdk.es137.js";
17
+ import "./standards-sdk.es130.js";
18
+ import "./standards-sdk.es138.js";
23
19
  import "zod";
24
20
  import "@hashgraph/proto";
25
21
  import "buffer";
26
22
  import "ethers";
27
- import "./standards-sdk.es122.js";
28
- import "./standards-sdk.es113.js";
29
- import { createNodeOperatorContext } from "./standards-sdk.es135.js";
23
+ import "./standards-sdk.es123.js";
24
+ import "./standards-sdk.es114.js";
25
+ import { createNodeOperatorContext } from "./standards-sdk.es136.js";
30
26
  import { HCS10Client } from "./standards-sdk.es19.js";
31
27
  class HCS14Client {
32
28
  constructor(options) {
@@ -1 +1 @@
1
- {"version":3,"file":"standards-sdk.es61.js","sources":["../../src/hcs-14/sdk.ts"],"sourcesContent":["import {\n CanonicalizationResult,\n CanonicalAgentData,\n DidRoutingParams,\n ParsedHcs14Did,\n} from './types';\nimport { canonicalizeAgentData } from './canonical';\nimport { createUaid as createUaidFn, parseHcs14Did } from './did';\nimport {\n isHederaNetwork,\n isHederaCaip10,\n toHederaCaip10,\n parseHederaCaip10,\n isEip155Caip10,\n toEip155Caip10,\n} from './caip';\nimport {\n ResolverRegistry,\n defaultResolverRegistry,\n} from './resolvers/registry';\nimport { HieroDidResolver } from './resolvers/hiero';\nimport { IssuerRegistry } from './issuers/registry';\nimport { HederaHieroIssuer } from './issuers/hiero';\nimport type { DidIssueRequest } from './issuers/types';\nimport { Client } from '@hashgraph/sdk';\nimport { HCS11Client } from '../hcs-11/client';\nimport { NetworkType, Logger, type ILogger } from '../utils';\nimport { HederaMirrorNode } from '../services';\nimport {\n createNodeOperatorContext,\n type NodeOperatorContext,\n} from '../common/node-operator-resolver';\nimport { HCS10Client } from '../hcs-10/sdk';\n\n/**\n * HCS-14 SDK client - lightweight facade around AID/UAID helpers and resolver registry.\n */\nexport interface HCS14ClientOptions {\n client?: Client;\n network?: NetworkType;\n operatorId?: string;\n privateKey?: string;\n registry?: ResolverRegistry;\n hcs10Client?: HCS10Client;\n}\n\nexport class HCS14Client {\n private readonly registry: ResolverRegistry;\n private client?: Client;\n private network?: NetworkType;\n private operatorId?: string;\n private operatorPrivateKey?: string;\n private hcs10Client?: HCS10Client;\n private issuers: IssuerRegistry;\n private operatorCtx?: NodeOperatorContext;\n private logger: ILogger;\n\n constructor(options?: HCS14ClientOptions) {\n this.registry = options?.registry ?? defaultResolverRegistry;\n this.issuers = new IssuerRegistry();\n this.registerHederaIssuer();\n this.registerHederaResolver();\n this.logger = Logger.getInstance({ module: 'HCS-14' });\n this.client = options?.client;\n this.network = options?.network;\n this.operatorId = options?.operatorId;\n if (\n !this.client &&\n options?.network &&\n options?.operatorId &&\n options?.privateKey\n ) {\n this.configureHederaClient(\n options.network,\n options.operatorId,\n options.privateKey,\n );\n }\n if (options?.privateKey) {\n this.operatorPrivateKey = options.privateKey;\n }\n if (options?.hcs10Client) {\n this.hcs10Client = options.hcs10Client;\n }\n }\n\n configureHederaClient(\n network: NetworkType,\n operatorId: string,\n privateKey: string,\n ): void {\n const ctx = createNodeOperatorContext({\n network,\n operatorId,\n operatorKey: privateKey,\n mirrorNode: new HederaMirrorNode(network),\n logger: this.logger,\n client: Client.forName(network),\n });\n this.operatorCtx = ctx;\n this.client = ctx.client;\n this.network = network;\n this.operatorId = operatorId;\n this.operatorPrivateKey = privateKey;\n }\n\n private async ensureInitializedHedera(): Promise<void> {\n if (!this.operatorCtx) {\n return;\n }\n await this.operatorCtx.ensureInitialized();\n if (!this.operatorId) {\n this.operatorId = this.operatorCtx.operatorId.toString();\n }\n if (!this.operatorPrivateKey) {\n this.operatorPrivateKey = this.operatorCtx.operatorKey.toString();\n }\n if (!this.client) {\n this.client = this.operatorCtx.client;\n }\n }\n\n /**\n * DID issuance adapters\n */\n getIssuerRegistry(): IssuerRegistry {\n return this.issuers;\n }\n\n /** Convenience: list registered issuers with metadata. */\n listIssuers(): ReadonlyArray<import('./issuers/types').DidIssuer> {\n return this.issuers.list();\n }\n\n /** Convenience: list registered resolvers with metadata. */\n listResolvers(): ReadonlyArray<import('./resolvers/types').DidResolver> {\n return this.registry.list();\n }\n\n /** Convenience: filter issuers by DID method. */\n filterIssuersByMethod(method: string) {\n return this.issuers.filterByDidMethod(method);\n }\n\n /** Convenience: filter resolvers by DID method. */\n filterResolversByMethod(method: string) {\n return this.registry.filterByDidMethod(method);\n }\n\n registerHederaIssuer(): void {\n this.issuers.register(new HederaHieroIssuer());\n }\n\n async createDid(request: DidIssueRequest): Promise<string> {\n return this.issuers.issue(request);\n }\n\n canonicalizeAgentData(input: unknown): CanonicalizationResult {\n return canonicalizeAgentData(input);\n }\n\n createUaid(existingDid: string, params?: DidRoutingParams): string;\n createUaid(\n input: CanonicalAgentData | string,\n params?: DidRoutingParams,\n options?: { includeParams?: boolean },\n ): Promise<string> | string {\n if (typeof input === 'string') {\n return createUaidFn(input, params);\n }\n return createUaidFn(input, params, options);\n }\n\n parseHcs14Did(did: string): ParsedHcs14Did {\n return parseHcs14Did(did);\n }\n\n isHederaNetwork(value: string): boolean {\n return isHederaNetwork(value);\n }\n isHederaCaip10(value: string): boolean {\n return isHederaCaip10(value);\n }\n toHederaCaip10(\n network: Parameters<typeof toHederaCaip10>[0],\n accountId: string,\n ): string {\n return toHederaCaip10(network, accountId);\n }\n parseHederaCaip10(value: string): {\n network: Parameters<typeof toHederaCaip10>[0];\n accountId: string;\n } {\n return parseHederaCaip10(value);\n }\n isEip155Caip10(value: string): boolean {\n return isEip155Caip10(value);\n }\n toEip155Caip10(chainId: number | string, address: string): string {\n return toEip155Caip10(chainId, address);\n }\n\n getResolverRegistry(): ResolverRegistry {\n return this.registry;\n }\n\n registerHederaResolver(): void {\n this.registry.register(new HieroDidResolver());\n }\n\n /**\n * Issue a DID via adapters and immediately wrap as UAID with routing params.\n * For Hedera + proto=hcs-10, nativeId and uid are derived when possible.\n */\n async createDidWithUaid(options: {\n issue: DidIssueRequest;\n uid?: string;\n proto?: string;\n nativeId?: string;\n }): Promise<{ did: string; uaid: string; parsed: ParsedHcs14Did }> {\n const did = await this.createDid(options.issue);\n let uid = options.uid;\n const proto = options.proto;\n let nativeId = options.nativeId;\n\n const isHedera = options.issue.method === 'hedera';\n if (isHedera) {\n await this.ensureInitializedHedera();\n if (!nativeId) {\n if (!this.network || !this.operatorId) {\n throw new Error(\n 'nativeId not provided and network/operatorId are not configured',\n );\n }\n nativeId = toHederaCaip10(this.network, this.operatorId);\n }\n if (!uid && proto === 'hcs-10' && this.network && this.operatorId) {\n try {\n if (!this.hcs10Client && this.operatorPrivateKey) {\n this.hcs10Client = new HCS10Client({\n network: this.network,\n operatorId: this.operatorId,\n operatorPrivateKey: this.operatorPrivateKey,\n silent: true,\n });\n }\n if (this.hcs10Client) {\n uid = await this.hcs10Client.getOperatorId();\n } else {\n const h11 = new HCS11Client({\n network: this.network,\n auth: { operatorId: this.operatorId },\n silent: true,\n });\n const fetched = await h11.fetchProfileByAccountId(\n this.operatorId,\n this.network,\n );\n const inbound = fetched?.topicInfo?.inboundTopic;\n uid = inbound ? `${inbound}@${this.operatorId}` : this.operatorId;\n }\n } catch {\n uid = this.operatorId;\n }\n }\n }\n\n uid = uid ?? '0';\n const uaid = this.createUaid(did, {\n uid,\n proto,\n nativeId,\n });\n const parsed = parseHcs14Did(uaid);\n return { did, uaid, parsed };\n }\n}\n\nexport type {\n CanonicalizationResult,\n CanonicalAgentData,\n DidRoutingParams,\n ParsedHcs14Did,\n};\n"],"names":["createUaidFn"],"mappings":"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"}
1
+ {"version":3,"file":"standards-sdk.es61.js","sources":["../../src/hcs-14/sdk.ts"],"sourcesContent":["import {\n CanonicalizationResult,\n CanonicalAgentData,\n DidRoutingParams,\n ParsedHcs14Did,\n} from './types';\nimport { canonicalizeAgentData } from './canonical';\nimport { createUaid as createUaidFn, parseHcs14Did } from './did';\nimport {\n isHederaNetwork,\n isHederaCaip10,\n toHederaCaip10,\n parseHederaCaip10,\n isEip155Caip10,\n toEip155Caip10,\n} from './caip';\nimport {\n ResolverRegistry,\n defaultResolverRegistry,\n} from './resolvers/registry';\nimport { HieroDidResolver } from './resolvers/hiero';\nimport { IssuerRegistry } from './issuers/registry';\nimport { HederaHieroIssuer } from './issuers/hiero';\nimport type { DidIssueRequest } from './issuers/types';\nimport { Client } from '@hashgraph/sdk';\nimport { HCS11Client } from '../hcs-11/client';\nimport { NetworkType, Logger, type ILogger } from '../utils';\nimport { HederaMirrorNode } from '../services';\nimport {\n createNodeOperatorContext,\n type NodeOperatorContext,\n} from '../common/node-operator-resolver';\nimport { HCS10Client } from '../hcs-10/sdk';\n\n/**\n * HCS-14 SDK client - lightweight facade around AID/UAID helpers and resolver registry.\n */\nexport interface HCS14ClientOptions {\n client?: Client;\n network?: NetworkType;\n operatorId?: string;\n privateKey?: string;\n registry?: ResolverRegistry;\n hcs10Client?: HCS10Client;\n}\n\nexport class HCS14Client {\n private readonly registry: ResolverRegistry;\n private client?: Client;\n private network?: NetworkType;\n private operatorId?: string;\n private operatorPrivateKey?: string;\n private hcs10Client?: HCS10Client;\n private issuers: IssuerRegistry;\n private operatorCtx?: NodeOperatorContext;\n private logger: ILogger;\n\n constructor(options?: HCS14ClientOptions) {\n this.registry = options?.registry ?? defaultResolverRegistry;\n this.issuers = new IssuerRegistry();\n this.registerHederaIssuer();\n this.registerHederaResolver();\n this.logger = Logger.getInstance({ module: 'HCS-14' });\n this.client = options?.client;\n this.network = options?.network;\n this.operatorId = options?.operatorId;\n if (\n !this.client &&\n options?.network &&\n options?.operatorId &&\n options?.privateKey\n ) {\n this.configureHederaClient(\n options.network,\n options.operatorId,\n options.privateKey,\n );\n }\n if (options?.privateKey) {\n this.operatorPrivateKey = options.privateKey;\n }\n if (options?.hcs10Client) {\n this.hcs10Client = options.hcs10Client;\n }\n }\n\n configureHederaClient(\n network: NetworkType,\n operatorId: string,\n privateKey: string,\n ): void {\n const ctx = createNodeOperatorContext({\n network,\n operatorId,\n operatorKey: privateKey,\n mirrorNode: new HederaMirrorNode(network),\n logger: this.logger,\n client: Client.forName(network),\n });\n this.operatorCtx = ctx;\n this.client = ctx.client;\n this.network = network;\n this.operatorId = operatorId;\n this.operatorPrivateKey = privateKey;\n }\n\n private async ensureInitializedHedera(): Promise<void> {\n if (!this.operatorCtx) {\n return;\n }\n await this.operatorCtx.ensureInitialized();\n if (!this.operatorId) {\n this.operatorId = this.operatorCtx.operatorId.toString();\n }\n if (!this.operatorPrivateKey) {\n this.operatorPrivateKey = this.operatorCtx.operatorKey.toString();\n }\n if (!this.client) {\n this.client = this.operatorCtx.client;\n }\n }\n\n /**\n * DID issuance adapters\n */\n getIssuerRegistry(): IssuerRegistry {\n return this.issuers;\n }\n\n /** Convenience: list registered issuers with metadata. */\n listIssuers(): ReadonlyArray<import('./issuers/types').DidIssuer> {\n return this.issuers.list();\n }\n\n /** Convenience: list registered resolvers with metadata. */\n listResolvers(): ReadonlyArray<import('./resolvers/types').DidResolver> {\n return this.registry.list();\n }\n\n /** Convenience: filter issuers by DID method. */\n filterIssuersByMethod(method: string) {\n return this.issuers.filterByDidMethod(method);\n }\n\n /** Convenience: filter resolvers by DID method. */\n filterResolversByMethod(method: string) {\n return this.registry.filterByDidMethod(method);\n }\n\n registerHederaIssuer(): void {\n this.issuers.register(new HederaHieroIssuer());\n }\n\n async createDid(request: DidIssueRequest): Promise<string> {\n return this.issuers.issue(request);\n }\n\n canonicalizeAgentData(input: unknown): CanonicalizationResult {\n return canonicalizeAgentData(input);\n }\n\n createUaid(existingDid: string, params?: DidRoutingParams): string;\n createUaid(\n input: CanonicalAgentData | string,\n params?: DidRoutingParams,\n options?: { includeParams?: boolean },\n ): Promise<string> | string {\n if (typeof input === 'string') {\n return createUaidFn(input, params);\n }\n return createUaidFn(input, params, options);\n }\n\n parseHcs14Did(did: string): ParsedHcs14Did {\n return parseHcs14Did(did);\n }\n\n isHederaNetwork(value: string): boolean {\n return isHederaNetwork(value);\n }\n isHederaCaip10(value: string): boolean {\n return isHederaCaip10(value);\n }\n toHederaCaip10(\n network: Parameters<typeof toHederaCaip10>[0],\n accountId: string,\n ): string {\n return toHederaCaip10(network, accountId);\n }\n parseHederaCaip10(value: string): {\n network: Parameters<typeof toHederaCaip10>[0];\n accountId: string;\n } {\n return parseHederaCaip10(value);\n }\n isEip155Caip10(value: string): boolean {\n return isEip155Caip10(value);\n }\n toEip155Caip10(chainId: number | string, address: string): string {\n return toEip155Caip10(chainId, address);\n }\n\n getResolverRegistry(): ResolverRegistry {\n return this.registry;\n }\n\n registerHederaResolver(): void {\n this.registry.register(new HieroDidResolver());\n }\n\n /**\n * Issue a DID via adapters and immediately wrap as UAID with routing params.\n * For Hedera + proto=hcs-10, nativeId and uid are derived when possible.\n */\n async createDidWithUaid(options: {\n issue: DidIssueRequest;\n uid?: string;\n proto?: string;\n nativeId?: string;\n }): Promise<{ did: string; uaid: string; parsed: ParsedHcs14Did }> {\n const did = await this.createDid(options.issue);\n let uid = options.uid;\n const proto = options.proto;\n let nativeId = options.nativeId;\n\n const isHedera = options.issue.method === 'hedera';\n if (isHedera) {\n await this.ensureInitializedHedera();\n if (!nativeId) {\n if (!this.network || !this.operatorId) {\n throw new Error(\n 'nativeId not provided and network/operatorId are not configured',\n );\n }\n nativeId = toHederaCaip10(this.network, this.operatorId);\n }\n if (!uid && proto === 'hcs-10' && this.network && this.operatorId) {\n try {\n if (!this.hcs10Client && this.operatorPrivateKey) {\n this.hcs10Client = new HCS10Client({\n network: this.network,\n operatorId: this.operatorId,\n operatorPrivateKey: this.operatorPrivateKey,\n silent: true,\n });\n }\n if (this.hcs10Client) {\n uid = await this.hcs10Client.getOperatorId();\n } else {\n const h11 = new HCS11Client({\n network: this.network,\n auth: { operatorId: this.operatorId },\n silent: true,\n });\n const fetched = await h11.fetchProfileByAccountId(\n this.operatorId,\n this.network,\n );\n const inbound = fetched?.topicInfo?.inboundTopic;\n uid = inbound ? `${inbound}@${this.operatorId}` : this.operatorId;\n }\n } catch {\n uid = this.operatorId;\n }\n }\n }\n\n uid = uid ?? '0';\n const uaid = this.createUaid(did, {\n uid,\n proto,\n nativeId,\n });\n const parsed = parseHcs14Did(uaid);\n return { did, uaid, parsed };\n }\n}\n\nexport type {\n CanonicalizationResult,\n CanonicalAgentData,\n DidRoutingParams,\n ParsedHcs14Did,\n};\n"],"names":["createUaidFn"],"mappings":"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"}
@@ -1,7 +1,7 @@
1
- import { HCS5BaseClient } from "./standards-sdk.es139.js";
1
+ import { HCS5BaseClient } from "./standards-sdk.es142.js";
2
2
  import { buildHcs1Hrl } from "./standards-sdk.es64.js";
3
3
  import { PrivateKey } from "@hashgraph/sdk";
4
- import { inscribeWithSigner } from "./standards-sdk.es124.js";
4
+ import { inscribeWithSigner } from "./standards-sdk.es125.js";
5
5
  import { buildHcs5MintTx } from "./standards-sdk.es67.js";
6
6
  class HCS5BrowserClient extends HCS5BaseClient {
7
7
  constructor(config) {
@@ -1,9 +1,9 @@
1
- import { HCS5BaseClient } from "./standards-sdk.es139.js";
1
+ import { HCS5BaseClient } from "./standards-sdk.es142.js";
2
2
  import { buildHcs1Hrl } from "./standards-sdk.es64.js";
3
3
  import { AccountId } from "@hashgraph/sdk";
4
- import { inscribe } from "./standards-sdk.es124.js";
4
+ import { inscribe } from "./standards-sdk.es125.js";
5
5
  import { buildHcs5MintTx } from "./standards-sdk.es67.js";
6
- import { createNodeOperatorContext, NodeOperatorResolver } from "./standards-sdk.es135.js";
6
+ import { createNodeOperatorContext, NodeOperatorResolver } from "./standards-sdk.es136.js";
7
7
  class HCS5Client extends HCS5BaseClient {
8
8
  constructor(config) {
9
9
  super(config);
@@ -1,8 +1,8 @@
1
1
  import { AccountId, Client, PublicKey } from "@hashgraph/sdk";
2
2
  import { HCS2BaseClient } from "./standards-sdk.es71.js";
3
3
  import { HCS2Operation, HCS2RegistryType } from "./standards-sdk.es68.js";
4
- import { createNodeOperatorContext } from "./standards-sdk.es135.js";
5
- import { buildMessageTx } from "./standards-sdk.es136.js";
4
+ import { createNodeOperatorContext } from "./standards-sdk.es136.js";
5
+ import { buildMessageTx } from "./standards-sdk.es137.js";
6
6
  import { buildHcs2CreateRegistryTx } from "./standards-sdk.es72.js";
7
7
  const _HCS2Client = class _HCS2Client extends HCS2BaseClient {
8
8
  /**
@@ -1,5 +1,5 @@
1
- import { Logger } from "./standards-sdk.es105.js";
2
- import { HederaMirrorNode } from "./standards-sdk.es126.js";
1
+ import { Logger } from "./standards-sdk.es106.js";
2
+ import { HederaMirrorNode } from "./standards-sdk.es127.js";
3
3
  import { HCS6RegistryType, validateHCS6TTL, generateHCS6RegistryMemo, hcs6MessageSchema, HCS6Operation } from "./standards-sdk.es4.js";
4
4
  import { ZodError } from "zod";
5
5
  class HCS6BaseClient {
@@ -1,9 +1,9 @@
1
1
  import { TopicCreateTransaction, PublicKey } from "@hashgraph/sdk";
2
2
  import { HCS2BaseClient } from "./standards-sdk.es71.js";
3
3
  import { HCS2RegistryType, HCS2Operation } from "./standards-sdk.es68.js";
4
- import { isBrowser } from "./standards-sdk.es118.js";
5
- import { KeyTypeDetector } from "./standards-sdk.es113.js";
6
- import { buildMessageTx } from "./standards-sdk.es136.js";
4
+ import { isBrowser } from "./standards-sdk.es119.js";
5
+ import { KeyTypeDetector } from "./standards-sdk.es114.js";
6
+ import { buildMessageTx } from "./standards-sdk.es137.js";
7
7
  class BrowserHCS2Client extends HCS2BaseClient {
8
8
  /**
9
9
  * Create a new browser HCS-2 client
@@ -1,5 +1,5 @@
1
- import { Logger } from "./standards-sdk.es105.js";
2
- import { HederaMirrorNode } from "./standards-sdk.es126.js";
1
+ import { Logger } from "./standards-sdk.es106.js";
2
+ import { HederaMirrorNode } from "./standards-sdk.es127.js";
3
3
  import { hcs2MessageSchema, HCS2Operation, HCS2RegistryType } from "./standards-sdk.es68.js";
4
4
  import { ZodError } from "zod";
5
5
  class HCS2BaseClient {
@@ -1,4 +1,4 @@
1
- import { buildTopicCreateTx, buildMessageTx, encodeHcs2RegistryMemo } from "./standards-sdk.es136.js";
1
+ import { buildTopicCreateTx, buildMessageTx, encodeHcs2RegistryMemo } from "./standards-sdk.es137.js";
2
2
  import { HCS2Operation } from "./standards-sdk.es68.js";
3
3
  function buildHcs2CreateRegistryTx(params) {
4
4
  const memo = params.memoOverride ?? encodeHcs2RegistryMemo(params.registryType, params.ttl);
@@ -1 +1 @@
1
- {"version":3,"file":"standards-sdk.es73.js","sources":["../../src/hcs-20/types.ts"],"sourcesContent":["/**\n * HCS-20 Auditable Points Standard Types\n */\n\nimport { z } from 'zod';\nimport { AccountId, TopicId, PrivateKey } from '@hashgraph/sdk';\nimport type { ILogger } from '../utils/logger';\n\n/**\n * HCS-20 Constants\n */\nexport const HCS20_CONSTANTS = {\n PROTOCOL: 'hcs-20',\n PUBLIC_TOPIC_ID: '0.0.4350190',\n REGISTRY_TOPIC_ID: '0.0.4362300',\n MAX_NUMBER_LENGTH: 18,\n MAX_NAME_LENGTH: 100,\n MAX_METADATA_LENGTH: 100,\n HEDERA_ACCOUNT_REGEX:\n /^(0|(?:[1-9]\\d*))\\.(0|(?:[1-9]\\d*))\\.(0|(?:[1-9]\\d*))$/,\n} as const;\n\n/**\n * Hedera Account ID validator\n */\nconst HederaAccountIdSchema = z\n .string()\n .regex(\n HCS20_CONSTANTS.HEDERA_ACCOUNT_REGEX,\n 'Invalid Hedera account ID format',\n );\n\n/**\n * Number string validator\n */\nconst NumberStringSchema = z\n .string()\n .regex(/^\\d+$/, 'Must be a valid number')\n .max(\n HCS20_CONSTANTS.MAX_NUMBER_LENGTH,\n `Max ${HCS20_CONSTANTS.MAX_NUMBER_LENGTH} digits`,\n );\n\n/**\n * Tick validator\n */\nconst TickSchema = z\n .string()\n .min(1, 'Tick cannot be empty')\n .transform(val => val.toLowerCase().trim());\n\n/**\n * Base HCS-20 Message Schema\n */\nconst HCS20BaseMessageSchema = z.object({\n p: z.literal('hcs-20'),\n m: z.string().optional(),\n});\n\n/**\n * Deploy Points Operation Schema\n */\nexport const HCS20DeployMessageSchema = HCS20BaseMessageSchema.extend({\n op: z.literal('deploy'),\n name: z.string().min(1).max(HCS20_CONSTANTS.MAX_NAME_LENGTH),\n tick: TickSchema,\n max: NumberStringSchema,\n lim: NumberStringSchema.optional(),\n metadata: z.string().max(HCS20_CONSTANTS.MAX_METADATA_LENGTH).optional(),\n});\n\n/**\n * Mint Points Operation Schema\n */\nexport const HCS20MintMessageSchema = HCS20BaseMessageSchema.extend({\n op: z.literal('mint'),\n tick: TickSchema,\n amt: NumberStringSchema,\n to: HederaAccountIdSchema,\n});\n\n/**\n * Burn Points Operation Schema\n */\nexport const HCS20BurnMessageSchema = HCS20BaseMessageSchema.extend({\n op: z.literal('burn'),\n tick: TickSchema,\n amt: NumberStringSchema,\n from: HederaAccountIdSchema,\n});\n\n/**\n * Transfer Points Operation Schema\n */\nexport const HCS20TransferMessageSchema = HCS20BaseMessageSchema.extend({\n op: z.literal('transfer'),\n tick: TickSchema,\n amt: NumberStringSchema,\n from: HederaAccountIdSchema,\n to: HederaAccountIdSchema,\n});\n\n/**\n * Register Topic Operation Schema\n */\nexport const HCS20RegisterMessageSchema = HCS20BaseMessageSchema.extend({\n op: z.literal('register'),\n name: z.string().min(1).max(HCS20_CONSTANTS.MAX_NAME_LENGTH),\n metadata: z.string().max(HCS20_CONSTANTS.MAX_METADATA_LENGTH).optional(),\n private: z.boolean(),\n t_id: HederaAccountIdSchema,\n});\n\n/**\n * Union schema for all HCS-20 messages\n */\nexport const HCS20MessageSchema = z.discriminatedUnion('op', [\n HCS20DeployMessageSchema,\n HCS20MintMessageSchema,\n HCS20BurnMessageSchema,\n HCS20TransferMessageSchema,\n HCS20RegisterMessageSchema,\n]);\n\n/**\n * Inferred types from schemas\n */\nexport type HCS20BaseMessage = z.infer<typeof HCS20BaseMessageSchema>;\nexport type HCS20DeployMessage = z.infer<typeof HCS20DeployMessageSchema>;\nexport type HCS20MintMessage = z.infer<typeof HCS20MintMessageSchema>;\nexport type HCS20BurnMessage = z.infer<typeof HCS20BurnMessageSchema>;\nexport type HCS20TransferMessage = z.infer<typeof HCS20TransferMessageSchema>;\nexport type HCS20RegisterMessage = z.infer<typeof HCS20RegisterMessageSchema>;\nexport type HCS20Message = z.infer<typeof HCS20MessageSchema>;\nexport type HCS20Operation = HCS20Message['op'];\n\n/**\n * Points Configuration\n */\nexport interface PointsConfig {\n name: string;\n tick: string;\n maxSupply: string;\n limitPerMint?: string;\n metadata?: string;\n}\n\n/**\n * Points Information\n */\nexport interface PointsInfo extends PointsConfig {\n topicId: string;\n deployerAccountId: string;\n currentSupply: string;\n deploymentTimestamp: string;\n isPrivate: boolean;\n}\n\n/**\n * Points Balance\n */\nexport interface PointsBalance {\n tick: string;\n accountId: string;\n balance: string;\n lastUpdated: string;\n}\n\n/**\n * Points Transaction\n */\nexport interface PointsTransaction {\n id: string;\n operation: HCS20Operation;\n tick: string;\n amount?: string;\n from?: string;\n to?: string;\n timestamp: string;\n sequenceNumber: number;\n topicId: string;\n transactionId: string;\n memo?: string;\n}\n\n/**\n * HCS-20 Client Configuration\n */\nexport interface HCS20ClientConfig {\n mirrorNodeUrl?: string;\n logger?: ILogger;\n network?: 'mainnet' | 'testnet';\n registryTopicId?: string;\n publicTopicId?: string;\n}\n\n/**\n * Browser-specific HCS-20 Client Configuration\n */\nexport interface BrowserHCS20ClientConfig extends HCS20ClientConfig {\n walletConnectProjectId?: string;\n hwcMetadata?: {\n name: string;\n description: string;\n icons: string[];\n url: string;\n };\n}\n\n/**\n * SDK-specific HCS-20 Client Configuration\n */\nexport interface SDKHCS20ClientConfig extends HCS20ClientConfig {\n operatorId: string | AccountId;\n operatorKey: string | PrivateKey;\n keyType?: 'ed25519' | 'ecdsa';\n}\n\n/**\n * Deploy Points Progress\n */\nexport interface DeployPointsProgress {\n stage: 'creating-topic' | 'submitting-deploy' | 'confirming' | 'complete';\n percentage: number;\n topicId?: string;\n deployTxId?: string;\n error?: string;\n}\n\n/**\n * Deploy Points Options\n */\nexport interface DeployPointsOptions extends PointsConfig {\n usePrivateTopic?: boolean;\n topicMemo?: string;\n progressCallback?: (data: DeployPointsProgress) => void;\n}\n\n/**\n * Mint Points Progress\n */\nexport interface MintPointsProgress {\n stage: 'validating' | 'submitting' | 'confirming' | 'complete';\n percentage: number;\n mintTxId?: string;\n error?: string;\n}\n\n/**\n * Mint Points Options\n */\nexport interface MintPointsOptions {\n tick: string;\n amount: string;\n to: string | AccountId;\n memo?: string;\n topicId?: string | TopicId;\n progressCallback?: (data: MintPointsProgress) => void;\n}\n\n/**\n * Transfer Points Progress\n */\nexport interface TransferPointsProgress {\n stage: 'validating-balance' | 'submitting' | 'confirming' | 'complete';\n percentage: number;\n transferTxId?: string;\n error?: string;\n}\n\n/**\n * Transfer Points Options\n */\nexport interface TransferPointsOptions {\n tick: string;\n amount: string;\n from: string | AccountId;\n to: string | AccountId;\n memo?: string;\n topicId?: string | TopicId;\n progressCallback?: (data: TransferPointsProgress) => void;\n}\n\n/**\n * Burn Points Progress\n */\nexport interface BurnPointsProgress {\n stage: 'validating-balance' | 'submitting' | 'confirming' | 'complete';\n percentage: number;\n burnTxId?: string;\n error?: string;\n}\n\n/**\n * Burn Points Options\n */\nexport interface BurnPointsOptions {\n tick: string;\n amount: string;\n from: string | AccountId;\n memo?: string;\n topicId?: string | TopicId;\n progressCallback?: (data: BurnPointsProgress) => void;\n}\n\n/**\n * Register Topic Progress\n */\nexport interface RegisterTopicProgress {\n stage: 'validating' | 'submitting' | 'confirming' | 'complete';\n percentage: number;\n registerTxId?: string;\n error?: string;\n}\n\n/**\n * Register Topic Options\n */\nexport interface RegisterTopicOptions {\n topicId: string | TopicId;\n name: string;\n metadata?: string;\n isPrivate: boolean;\n memo?: string;\n progressCallback?: (data: RegisterTopicProgress) => void;\n}\n\n/**\n * Query Points Options\n */\nexport interface QueryPointsOptions {\n tick?: string;\n accountId?: string | AccountId;\n topicId?: string | TopicId;\n limit?: number;\n order?: 'asc' | 'desc';\n}\n\n/**\n * Points Query Result\n */\nexport interface PointsQueryResult {\n points: PointsInfo[];\n balances?: PointsBalance[];\n transactions?: PointsTransaction[];\n totalCount: number;\n hasMore: boolean;\n nextCursor?: string;\n}\n\n/**\n * Points State\n */\nexport interface PointsState {\n deployedPoints: Map<string, PointsInfo>;\n balances: Map<string, Map<string, PointsBalance>>;\n transactions: PointsTransaction[];\n lastProcessedSequence: number;\n lastProcessedTimestamp: string;\n}\n\n/**\n * HCS-20 Registry Entry\n */\nexport interface HCS20RegistryEntry {\n name: string;\n topicId: string;\n metadata?: string;\n isPrivate: boolean;\n registeredAt: string;\n registeredBy: string;\n}\n"],"names":[],"mappings":";AAWO,MAAM,kBAAkB;AAAA,EAC7B,UAAU;AAAA,EACV,iBAAiB;AAAA,EACjB,mBAAmB;AAAA,EACnB,mBAAmB;AAAA,EACnB,iBAAiB;AAAA,EACjB,qBAAqB;AAAA,EACrB,sBACE;AACJ;AAKA,MAAM,wBAAwB,EAC3B,OAAA,EACA;AAAA,EACC,gBAAgB;AAAA,EAChB;AACF;AAKF,MAAM,qBAAqB,EACxB,OAAA,EACA,MAAM,SAAS,wBAAwB,EACvC;AAAA,EACC,gBAAgB;AAAA,EAChB,OAAO,gBAAgB,iBAAiB;AAC1C;AAKF,MAAM,aAAa,EAChB,OAAA,EACA,IAAI,GAAG,sBAAsB,EAC7B,UAAU,CAAA,QAAO,IAAI,YAAA,EAAc,MAAM;AAK5C,MAAM,yBAAyB,EAAE,OAAO;AAAA,EACtC,GAAG,EAAE,QAAQ,QAAQ;AAAA,EACrB,GAAG,EAAE,OAAA,EAAS,SAAA;AAChB,CAAC;AAKM,MAAM,2BAA2B,uBAAuB,OAAO;AAAA,EACpE,IAAI,EAAE,QAAQ,QAAQ;AAAA,EACtB,MAAM,EAAE,SAAS,IAAI,CAAC,EAAE,IAAI,gBAAgB,eAAe;AAAA,EAC3D,MAAM;AAAA,EACN,KAAK;AAAA,EACL,KAAK,mBAAmB,SAAA;AAAA,EACxB,UAAU,EAAE,OAAA,EAAS,IAAI,gBAAgB,mBAAmB,EAAE,SAAA;AAChE,CAAC;AAKM,MAAM,yBAAyB,uBAAuB,OAAO;AAAA,EAClE,IAAI,EAAE,QAAQ,MAAM;AAAA,EACpB,MAAM;AAAA,EACN,KAAK;AAAA,EACL,IAAI;AACN,CAAC;AAKM,MAAM,yBAAyB,uBAAuB,OAAO;AAAA,EAClE,IAAI,EAAE,QAAQ,MAAM;AAAA,EACpB,MAAM;AAAA,EACN,KAAK;AAAA,EACL,MAAM;AACR,CAAC;AAKM,MAAM,6BAA6B,uBAAuB,OAAO;AAAA,EACtE,IAAI,EAAE,QAAQ,UAAU;AAAA,EACxB,MAAM;AAAA,EACN,KAAK;AAAA,EACL,MAAM;AAAA,EACN,IAAI;AACN,CAAC;AAKM,MAAM,6BAA6B,uBAAuB,OAAO;AAAA,EACtE,IAAI,EAAE,QAAQ,UAAU;AAAA,EACxB,MAAM,EAAE,SAAS,IAAI,CAAC,EAAE,IAAI,gBAAgB,eAAe;AAAA,EAC3D,UAAU,EAAE,OAAA,EAAS,IAAI,gBAAgB,mBAAmB,EAAE,SAAA;AAAA,EAC9D,SAAS,EAAE,QAAA;AAAA,EACX,MAAM;AACR,CAAC;AAKM,MAAM,qBAAqB,EAAE,mBAAmB,MAAM;AAAA,EAC3D;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;"}
1
+ {"version":3,"file":"standards-sdk.es73.js","sources":["../../src/hcs-20/types.ts"],"sourcesContent":["/**\n * HCS-20 Auditable Points Standard Types\n */\n\nimport { z } from 'zod';\nimport { AccountId, TopicId, PrivateKey } from '@hashgraph/sdk';\nimport type { ILogger } from '../utils/logger';\n\n/**\n * HCS-20 Constants\n */\nexport const HCS20_CONSTANTS = {\n PROTOCOL: 'hcs-20',\n PUBLIC_TOPIC_ID: '0.0.4350190',\n REGISTRY_TOPIC_ID: '0.0.4362300',\n MAX_NUMBER_LENGTH: 18,\n MAX_NAME_LENGTH: 100,\n MAX_METADATA_LENGTH: 100,\n HEDERA_ACCOUNT_REGEX:\n /^(0|(?:[1-9]\\d*))\\.(0|(?:[1-9]\\d*))\\.(0|(?:[1-9]\\d*))$/,\n} as const;\n\n/**\n * Hedera Account ID validator\n */\nconst HederaAccountIdSchema = z\n .string()\n .regex(\n HCS20_CONSTANTS.HEDERA_ACCOUNT_REGEX,\n 'Invalid Hedera account ID format',\n );\n\n/**\n * Number string validator\n */\nconst NumberStringSchema = z\n .string()\n .regex(/^\\d+$/, 'Must be a valid number')\n .max(\n HCS20_CONSTANTS.MAX_NUMBER_LENGTH,\n `Max ${HCS20_CONSTANTS.MAX_NUMBER_LENGTH} digits`,\n );\n\n/**\n * Tick validator\n */\nconst TickSchema = z\n .string()\n .min(1, 'Tick cannot be empty')\n .transform(val => val.toLowerCase().trim());\n\n/**\n * Base HCS-20 Message Schema\n */\nconst HCS20BaseMessageSchema = z.object({\n p: z.literal('hcs-20'),\n m: z.string().optional(),\n});\n\n/**\n * Deploy Points Operation Schema\n */\nexport const HCS20DeployMessageSchema = HCS20BaseMessageSchema.extend({\n op: z.literal('deploy'),\n name: z.string().min(1).max(HCS20_CONSTANTS.MAX_NAME_LENGTH),\n tick: TickSchema,\n max: NumberStringSchema,\n lim: NumberStringSchema.optional(),\n metadata: z.string().max(HCS20_CONSTANTS.MAX_METADATA_LENGTH).optional(),\n});\n\n/**\n * Mint Points Operation Schema\n */\nexport const HCS20MintMessageSchema = HCS20BaseMessageSchema.extend({\n op: z.literal('mint'),\n tick: TickSchema,\n amt: NumberStringSchema,\n to: HederaAccountIdSchema,\n});\n\n/**\n * Burn Points Operation Schema\n */\nexport const HCS20BurnMessageSchema = HCS20BaseMessageSchema.extend({\n op: z.literal('burn'),\n tick: TickSchema,\n amt: NumberStringSchema,\n from: HederaAccountIdSchema,\n});\n\n/**\n * Transfer Points Operation Schema\n */\nexport const HCS20TransferMessageSchema = HCS20BaseMessageSchema.extend({\n op: z.literal('transfer'),\n tick: TickSchema,\n amt: NumberStringSchema,\n from: HederaAccountIdSchema,\n to: HederaAccountIdSchema,\n});\n\n/**\n * Register Topic Operation Schema\n */\nexport const HCS20RegisterMessageSchema = HCS20BaseMessageSchema.extend({\n op: z.literal('register'),\n name: z.string().min(1).max(HCS20_CONSTANTS.MAX_NAME_LENGTH),\n metadata: z.string().max(HCS20_CONSTANTS.MAX_METADATA_LENGTH).optional(),\n private: z.boolean(),\n t_id: HederaAccountIdSchema,\n});\n\n/**\n * Union schema for all HCS-20 messages\n */\nexport const HCS20MessageSchema = z.discriminatedUnion('op', [\n HCS20DeployMessageSchema,\n HCS20MintMessageSchema,\n HCS20BurnMessageSchema,\n HCS20TransferMessageSchema,\n HCS20RegisterMessageSchema,\n]);\n\n/**\n * Inferred types from schemas\n */\nexport type HCS20BaseMessage = z.infer<typeof HCS20BaseMessageSchema>;\nexport type HCS20DeployMessage = z.infer<typeof HCS20DeployMessageSchema>;\nexport type HCS20MintMessage = z.infer<typeof HCS20MintMessageSchema>;\nexport type HCS20BurnMessage = z.infer<typeof HCS20BurnMessageSchema>;\nexport type HCS20TransferMessage = z.infer<typeof HCS20TransferMessageSchema>;\nexport type HCS20RegisterMessage = z.infer<typeof HCS20RegisterMessageSchema>;\nexport type HCS20Message = z.infer<typeof HCS20MessageSchema>;\nexport type HCS20Operation = HCS20Message['op'];\n\n/**\n * Points Configuration\n */\nexport interface PointsConfig {\n name: string;\n tick: string;\n maxSupply: string;\n limitPerMint?: string;\n metadata?: string;\n}\n\n/**\n * Points Information\n */\nexport interface PointsInfo extends PointsConfig {\n topicId: string;\n deployerAccountId: string;\n currentSupply: string;\n deploymentTimestamp: string;\n isPrivate: boolean;\n}\n\n/**\n * Points Balance\n */\nexport interface PointsBalance {\n tick: string;\n accountId: string;\n balance: string;\n lastUpdated: string;\n}\n\n/**\n * Points Transaction\n */\nexport interface PointsTransaction {\n id: string;\n operation: HCS20Operation;\n tick: string;\n amount?: string;\n from?: string;\n to?: string;\n timestamp: string;\n sequenceNumber: number;\n topicId: string;\n transactionId: string;\n memo?: string;\n}\n\n/**\n * HCS-20 Client Configuration\n */\nexport interface HCS20ClientConfig {\n mirrorNodeUrl?: string;\n logger?: ILogger;\n network?: 'mainnet' | 'testnet';\n registryTopicId?: string;\n publicTopicId?: string;\n}\n\n/**\n * Browser-specific HCS-20 Client Configuration\n */\nexport interface BrowserHCS20ClientConfig extends HCS20ClientConfig {\n walletConnectProjectId?: string;\n hwcMetadata?: {\n name: string;\n description: string;\n icons: string[];\n url: string;\n };\n}\n\n/**\n * SDK-specific HCS-20 Client Configuration\n */\nexport interface SDKHCS20ClientConfig extends HCS20ClientConfig {\n operatorId: string | AccountId;\n operatorKey: string | PrivateKey;\n keyType?: 'ed25519' | 'ecdsa';\n}\n\n/**\n * Deploy Points Progress\n */\nexport interface DeployPointsProgress {\n stage: 'creating-topic' | 'submitting-deploy' | 'confirming' | 'complete';\n percentage: number;\n topicId?: string;\n deployTxId?: string;\n error?: string;\n}\n\n/**\n * Deploy Points Options\n */\nexport interface DeployPointsOptions extends PointsConfig {\n usePrivateTopic?: boolean;\n topicMemo?: string;\n progressCallback?: (data: DeployPointsProgress) => void;\n}\n\n/**\n * Mint Points Progress\n */\nexport interface MintPointsProgress {\n stage: 'validating' | 'submitting' | 'confirming' | 'complete';\n percentage: number;\n mintTxId?: string;\n error?: string;\n}\n\n/**\n * Mint Points Options\n */\nexport interface MintPointsOptions {\n tick: string;\n amount: string;\n to: string | AccountId;\n memo?: string;\n topicId?: string | TopicId;\n progressCallback?: (data: MintPointsProgress) => void;\n disableMirrorCheck?: boolean;\n}\n\n/**\n * Transfer Points Progress\n */\nexport interface TransferPointsProgress {\n stage: 'validating-balance' | 'submitting' | 'confirming' | 'complete';\n percentage: number;\n transferTxId?: string;\n error?: string;\n}\n\n/**\n * Transfer Points Options\n */\nexport interface TransferPointsOptions {\n tick: string;\n amount: string;\n from: string | AccountId;\n to: string | AccountId;\n memo?: string;\n topicId?: string | TopicId;\n progressCallback?: (data: TransferPointsProgress) => void;\n}\n\n/**\n * Burn Points Progress\n */\nexport interface BurnPointsProgress {\n stage: 'validating-balance' | 'submitting' | 'confirming' | 'complete';\n percentage: number;\n burnTxId?: string;\n error?: string;\n}\n\n/**\n * Burn Points Options\n */\nexport interface BurnPointsOptions {\n tick: string;\n amount: string;\n from: string | AccountId;\n memo?: string;\n topicId?: string | TopicId;\n progressCallback?: (data: BurnPointsProgress) => void;\n}\n\n/**\n * Register Topic Progress\n */\nexport interface RegisterTopicProgress {\n stage: 'validating' | 'submitting' | 'confirming' | 'complete';\n percentage: number;\n registerTxId?: string;\n error?: string;\n}\n\n/**\n * Register Topic Options\n */\nexport interface RegisterTopicOptions {\n topicId: string | TopicId;\n name: string;\n metadata?: string;\n isPrivate: boolean;\n memo?: string;\n progressCallback?: (data: RegisterTopicProgress) => void;\n}\n\n/**\n * Query Points Options\n */\nexport interface QueryPointsOptions {\n tick?: string;\n accountId?: string | AccountId;\n topicId?: string | TopicId;\n limit?: number;\n order?: 'asc' | 'desc';\n}\n\n/**\n * Points Query Result\n */\nexport interface PointsQueryResult {\n points: PointsInfo[];\n balances?: PointsBalance[];\n transactions?: PointsTransaction[];\n totalCount: number;\n hasMore: boolean;\n nextCursor?: string;\n}\n\n/**\n * Points State\n */\nexport interface PointsState {\n deployedPoints: Map<string, PointsInfo>;\n balances: Map<string, Map<string, PointsBalance>>;\n transactions: PointsTransaction[];\n lastProcessedSequence: number;\n lastProcessedTimestamp: string;\n}\n\n/**\n * HCS-20 Registry Entry\n */\nexport interface HCS20RegistryEntry {\n name: string;\n topicId: string;\n metadata?: string;\n isPrivate: boolean;\n registeredAt: string;\n registeredBy: string;\n}\n"],"names":[],"mappings":";AAWO,MAAM,kBAAkB;AAAA,EAC7B,UAAU;AAAA,EACV,iBAAiB;AAAA,EACjB,mBAAmB;AAAA,EACnB,mBAAmB;AAAA,EACnB,iBAAiB;AAAA,EACjB,qBAAqB;AAAA,EACrB,sBACE;AACJ;AAKA,MAAM,wBAAwB,EAC3B,OAAA,EACA;AAAA,EACC,gBAAgB;AAAA,EAChB;AACF;AAKF,MAAM,qBAAqB,EACxB,OAAA,EACA,MAAM,SAAS,wBAAwB,EACvC;AAAA,EACC,gBAAgB;AAAA,EAChB,OAAO,gBAAgB,iBAAiB;AAC1C;AAKF,MAAM,aAAa,EAChB,OAAA,EACA,IAAI,GAAG,sBAAsB,EAC7B,UAAU,CAAA,QAAO,IAAI,YAAA,EAAc,MAAM;AAK5C,MAAM,yBAAyB,EAAE,OAAO;AAAA,EACtC,GAAG,EAAE,QAAQ,QAAQ;AAAA,EACrB,GAAG,EAAE,OAAA,EAAS,SAAA;AAChB,CAAC;AAKM,MAAM,2BAA2B,uBAAuB,OAAO;AAAA,EACpE,IAAI,EAAE,QAAQ,QAAQ;AAAA,EACtB,MAAM,EAAE,SAAS,IAAI,CAAC,EAAE,IAAI,gBAAgB,eAAe;AAAA,EAC3D,MAAM;AAAA,EACN,KAAK;AAAA,EACL,KAAK,mBAAmB,SAAA;AAAA,EACxB,UAAU,EAAE,OAAA,EAAS,IAAI,gBAAgB,mBAAmB,EAAE,SAAA;AAChE,CAAC;AAKM,MAAM,yBAAyB,uBAAuB,OAAO;AAAA,EAClE,IAAI,EAAE,QAAQ,MAAM;AAAA,EACpB,MAAM;AAAA,EACN,KAAK;AAAA,EACL,IAAI;AACN,CAAC;AAKM,MAAM,yBAAyB,uBAAuB,OAAO;AAAA,EAClE,IAAI,EAAE,QAAQ,MAAM;AAAA,EACpB,MAAM;AAAA,EACN,KAAK;AAAA,EACL,MAAM;AACR,CAAC;AAKM,MAAM,6BAA6B,uBAAuB,OAAO;AAAA,EACtE,IAAI,EAAE,QAAQ,UAAU;AAAA,EACxB,MAAM;AAAA,EACN,KAAK;AAAA,EACL,MAAM;AAAA,EACN,IAAI;AACN,CAAC;AAKM,MAAM,6BAA6B,uBAAuB,OAAO;AAAA,EACtE,IAAI,EAAE,QAAQ,UAAU;AAAA,EACxB,MAAM,EAAE,SAAS,IAAI,CAAC,EAAE,IAAI,gBAAgB,eAAe;AAAA,EAC3D,UAAU,EAAE,OAAA,EAAS,IAAI,gBAAgB,mBAAmB,EAAE,SAAA;AAAA,EAC9D,SAAS,EAAE,QAAA;AAAA,EACX,MAAM;AACR,CAAC;AAKM,MAAM,qBAAqB,EAAE,mBAAmB,MAAM;AAAA,EAC3D;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;"}
@@ -1,5 +1,5 @@
1
- import { Logger } from "./standards-sdk.es105.js";
2
- import { HederaMirrorNode } from "./standards-sdk.es126.js";
1
+ import { Logger } from "./standards-sdk.es106.js";
2
+ import { HederaMirrorNode } from "./standards-sdk.es127.js";
3
3
  import { HCS20_CONSTANTS, HCS20MessageSchema } from "./standards-sdk.es73.js";
4
4
  import { InvalidAccountFormatError } from "./standards-sdk.es74.js";
5
5
  class HCS20BaseClient {
@@ -1,8 +1,8 @@
1
1
  import { AccountId, Client, Status, TopicCreateTransaction } from "@hashgraph/sdk";
2
2
  import { HCS20BaseClient } from "./standards-sdk.es75.js";
3
3
  import { PointsDeploymentError, PointsValidationError, PointsTransferError, PointsBurnError } from "./standards-sdk.es74.js";
4
- import { sleep } from "./standards-sdk.es115.js";
5
- import { createNodeOperatorContext } from "./standards-sdk.es135.js";
4
+ import { sleep } from "./standards-sdk.es116.js";
5
+ import { createNodeOperatorContext } from "./standards-sdk.es136.js";
6
6
  import { HCS2Client } from "./standards-sdk.es69.js";
7
7
  import { buildHcs20DeployTx, buildHcs20MintTx, buildHcs20TransferTx, buildHcs20BurnTx, buildHcs20RegisterTx } from "./standards-sdk.es79.js";
8
8
  class HCS20Client extends HCS20BaseClient {
@@ -219,7 +219,9 @@ class HCS20Client extends HCS20BaseClient {
219
219
  percentage: 80,
220
220
  mintTxId
221
221
  });
222
- await this.waitForMirrorNodeConfirmation(topicId, mintTxId);
222
+ if (!options.disableMirrorCheck) {
223
+ await this.waitForMirrorNodeConfirmation(topicId, mintTxId);
224
+ }
223
225
  progressCallback?.({
224
226
  stage: "complete",
225
227
  percentage: 100,
@@ -1 +1 @@
1
- {"version":3,"file":"standards-sdk.es77.js","sources":["../../src/hcs-20/sdk.ts"],"sourcesContent":["/**\n * SDK implementation of HCS-20 client for server-side usage\n */\n\nimport {\n AccountId,\n TopicCreateTransaction,\n TopicMessageSubmitTransaction,\n PrivateKey,\n Client,\n TransactionReceipt,\n TransactionResponse,\n Status,\n} from '@hashgraph/sdk';\nimport { HCS20BaseClient } from './base-client';\nimport {\n SDKHCS20ClientConfig,\n DeployPointsOptions,\n MintPointsOptions,\n TransferPointsOptions,\n BurnPointsOptions,\n RegisterTopicOptions,\n PointsInfo,\n PointsTransaction,\n HCS20DeployMessage,\n HCS20RegisterMessage,\n} from './types';\nimport {\n PointsDeploymentError,\n PointsTransferError,\n PointsBurnError,\n PointsValidationError,\n} from './errors';\nimport { sleep } from '../utils/sleep';\nimport {\n createNodeOperatorContext,\n type NodeOperatorContext,\n} from '../common/node-operator-resolver';\nimport { HCS2Client } from '../hcs-2/client';\nimport {\n buildHcs20DeployTx,\n buildHcs20MintTx,\n buildHcs20TransferTx,\n buildHcs20BurnTx,\n buildHcs20RegisterTx,\n} from './tx';\n\n/**\n * SDK-specific HCS-20 client for server-side operations\n */\nexport class HCS20Client extends HCS20BaseClient {\n private client: Client;\n private operatorAccountId: AccountId;\n private operatorId: string;\n private operatorCtx: NodeOperatorContext;\n\n constructor(config: SDKHCS20ClientConfig) {\n super(config);\n\n this.operatorAccountId =\n typeof config.operatorId === 'string'\n ? AccountId.fromString(config.operatorId)\n : config.operatorId;\n this.operatorId = this.operatorAccountId.toString();\n\n const baseClient =\n this.network === 'mainnet' ? Client.forMainnet() : Client.forTestnet();\n\n this.operatorCtx = createNodeOperatorContext({\n network: this.network,\n operatorId: this.operatorId,\n operatorKey: config.operatorKey,\n keyType: config.keyType,\n mirrorNode: this.mirrorNode,\n logger: this.logger,\n client: baseClient,\n });\n\n this.client = this.operatorCtx.client;\n void this.operatorCtx.ensureInitialized();\n }\n\n /**\n * Ensure operator is initialized before operations\n */\n private async ensureInitialized(): Promise<void> {\n await this.operatorCtx.ensureInitialized();\n }\n\n /**\n * Submit a payload to a topic\n */\n private async submitPayload(\n transaction: TopicMessageSubmitTransaction,\n submitKey?: PrivateKey,\n ): Promise<{ receipt: TransactionReceipt; transactionId: string }> {\n let transactionResponse: TransactionResponse;\n if (submitKey) {\n const frozenTransaction = transaction.freezeWith(this.client);\n const signedTransaction = await frozenTransaction.sign(submitKey);\n transactionResponse = await signedTransaction.execute(this.client);\n } else {\n transactionResponse = await transaction.execute(this.client);\n }\n\n const receipt = await transactionResponse.getReceipt(this.client);\n if (!receipt || receipt.status !== Status.Success) {\n throw new Error('Failed to submit message to topic');\n }\n\n return {\n receipt,\n transactionId: transactionResponse.transactionId!.toString(),\n };\n }\n\n /**\n * Create a public topic for HCS-20 (for testnet)\n */\n async createPublicTopic(memo?: string): Promise<string> {\n await this.ensureInitialized();\n\n this.logger.info('Creating public HCS-20 topic...');\n\n const topicCreateTx = await new TopicCreateTransaction()\n .setTopicMemo(memo || 'HCS-20 Public Topic')\n .execute(this.client);\n\n const receipt = await topicCreateTx.getReceipt(this.client);\n if (receipt.status !== Status.Success || !receipt.topicId) {\n throw new Error('Failed to create public topic');\n }\n\n const topicId = receipt.topicId.toString();\n this.logger.info(`Created public topic: ${topicId}`);\n\n this.publicTopicId = topicId;\n\n return topicId;\n }\n\n /**\n * Create a registry topic for HCS-20\n */\n async createRegistryTopic(): Promise<string> {\n await this.ensureInitialized();\n\n this.logger.info('Creating HCS-20 registry topic...');\n\n const hcs2Client = new HCS2Client({\n operatorId: this.operatorId,\n operatorKey: this.operatorCtx.operatorKey,\n network: this.network,\n });\n\n const topicCreateResponse = await hcs2Client.createRegistry({\n submitKey: this.operatorCtx.operatorKey,\n adminKey: this.operatorCtx.operatorKey,\n });\n\n if (!topicCreateResponse.success) {\n throw new Error('Failed to create registry topic');\n }\n\n const topicId = topicCreateResponse.topicId;\n this.logger.info(`Created registry topic: ${topicId}`);\n\n this.registryTopicId = topicId;\n\n return topicId;\n }\n\n /**\n * Deploy new points\n */\n async deployPoints(options: DeployPointsOptions): Promise<PointsInfo> {\n await this.ensureInitialized();\n const { progressCallback } = options;\n\n try {\n progressCallback?.({\n stage: 'creating-topic',\n percentage: 20,\n });\n\n let topicId: string;\n\n const hcs2Client = new HCS2Client({\n operatorId: this.operatorId,\n operatorKey: this.operatorCtx.operatorKey,\n network: this.network,\n });\n\n if (options.usePrivateTopic) {\n const topicCreateResponse = await hcs2Client.createRegistry({\n submitKey: this.operatorCtx.operatorKey,\n adminKey: this.operatorCtx.operatorKey,\n });\n\n if (!topicCreateResponse.success) {\n throw new PointsDeploymentError(\n 'Failed to create topic',\n options.tick,\n );\n }\n\n topicId = topicCreateResponse.topicId;\n this.logger.info(`Created private topic: ${topicId}`);\n } else {\n topicId = this.publicTopicId;\n }\n\n progressCallback?.({\n stage: 'submitting-deploy',\n percentage: 50,\n topicId,\n });\n\n const deployMessage: HCS20DeployMessage = {\n p: 'hcs-20',\n op: 'deploy',\n name: options.name,\n tick: this.normalizeTick(options.tick),\n max: options.maxSupply,\n lim: options.limitPerMint,\n metadata: options.metadata,\n m: options.topicMemo,\n };\n\n const validation = this.validateMessage(deployMessage);\n if (!validation.valid) {\n throw new PointsValidationError(\n 'Invalid deploy message',\n validation.errors!,\n );\n }\n\n const deployTransaction = buildHcs20DeployTx({\n topicId,\n name: options.name,\n tick: options.tick,\n max: options.maxSupply,\n lim: options.limitPerMint,\n metadata: options.metadata,\n memo: options.topicMemo,\n });\n\n const { transactionId: deployTxId } =\n await this.submitPayload(deployTransaction);\n\n progressCallback?.({\n stage: 'confirming',\n percentage: 80,\n topicId,\n deployTxId,\n });\n\n await this.waitForMirrorNodeConfirmation(topicId, deployTxId);\n\n progressCallback?.({\n stage: 'complete',\n percentage: 100,\n topicId,\n deployTxId,\n });\n\n const pointsInfo: PointsInfo = {\n name: options.name,\n tick: this.normalizeTick(options.tick),\n maxSupply: options.maxSupply,\n limitPerMint: options.limitPerMint,\n metadata: options.metadata,\n topicId,\n deployerAccountId: this.operatorId,\n currentSupply: '0',\n deploymentTimestamp: new Date().toISOString(),\n isPrivate: options.usePrivateTopic || false,\n };\n\n return pointsInfo;\n } catch (error) {\n progressCallback?.({\n stage: 'complete',\n percentage: 100,\n error: error instanceof Error ? error.message : 'Unknown error',\n });\n throw error;\n }\n }\n\n /**\n * Mint points\n */\n async mintPoints(options: MintPointsOptions): Promise<PointsTransaction> {\n await this.ensureInitialized();\n const { progressCallback } = options;\n\n try {\n progressCallback?.({\n stage: 'validating',\n percentage: 20,\n });\n\n const normalizedTick = this.normalizeTick(options.tick);\n\n progressCallback?.({\n stage: 'submitting',\n percentage: 50,\n });\n\n const topicId = options.topicId\n ? this.topicToString(options.topicId)\n : this.publicTopicId;\n const mintTransaction = buildHcs20MintTx({\n topicId,\n tick: options.tick,\n amt: options.amount,\n to: this.accountToString(options.to),\n memo: options.memo,\n });\n\n const { transactionId: mintTxId } =\n await this.submitPayload(mintTransaction);\n\n progressCallback?.({\n stage: 'confirming',\n percentage: 80,\n mintTxId,\n });\n\n await this.waitForMirrorNodeConfirmation(topicId, mintTxId);\n\n progressCallback?.({\n stage: 'complete',\n percentage: 100,\n mintTxId,\n });\n\n const transaction: PointsTransaction = {\n id: mintTxId,\n operation: 'mint',\n tick: normalizedTick,\n amount: options.amount,\n to: this.accountToString(options.to),\n timestamp: new Date().toISOString(),\n sequenceNumber: 0,\n topicId,\n transactionId: mintTxId,\n memo: options.memo,\n };\n\n return transaction;\n } catch (error) {\n progressCallback?.({\n stage: 'complete',\n percentage: 100,\n error: error instanceof Error ? error.message : 'Unknown error',\n });\n throw error;\n }\n }\n\n /**\n * Transfer points\n */\n async transferPoints(\n options: TransferPointsOptions,\n ): Promise<PointsTransaction> {\n await this.ensureInitialized();\n const { progressCallback } = options;\n\n try {\n progressCallback?.({\n stage: 'validating-balance',\n percentage: 20,\n });\n\n const normalizedTick = this.normalizeTick(options.tick);\n const fromAccount = this.accountToString(options.from);\n const toAccount = this.accountToString(options.to);\n\n if (fromAccount !== this.operatorId) {\n throw new PointsTransferError(\n 'For public topics, transaction payer must match sender',\n options.tick,\n fromAccount,\n toAccount,\n options.amount,\n );\n }\n\n progressCallback?.({\n stage: 'submitting',\n percentage: 50,\n });\n\n const topicId = options.topicId\n ? this.topicToString(options.topicId)\n : this.publicTopicId;\n const transferTransaction = buildHcs20TransferTx({\n topicId,\n tick: options.tick,\n amt: options.amount,\n from: fromAccount,\n to: toAccount,\n memo: options.memo,\n });\n\n const { transactionId: transferTxId } =\n await this.submitPayload(transferTransaction);\n\n progressCallback?.({\n stage: 'confirming',\n percentage: 80,\n transferTxId,\n });\n\n await this.waitForMirrorNodeConfirmation(topicId, transferTxId);\n\n progressCallback?.({\n stage: 'complete',\n percentage: 100,\n transferTxId,\n });\n\n const transaction: PointsTransaction = {\n id: transferTxId,\n operation: 'transfer',\n tick: normalizedTick,\n amount: options.amount,\n from: fromAccount,\n to: toAccount,\n timestamp: new Date().toISOString(),\n sequenceNumber: 0,\n topicId,\n transactionId: transferTxId,\n memo: options.memo,\n };\n\n return transaction;\n } catch (error) {\n progressCallback?.({\n stage: 'complete',\n percentage: 100,\n error: error instanceof Error ? error.message : 'Unknown error',\n });\n throw error;\n }\n }\n\n /**\n * Burn points\n */\n async burnPoints(options: BurnPointsOptions): Promise<PointsTransaction> {\n await this.ensureInitialized();\n const { progressCallback } = options;\n\n try {\n progressCallback?.({\n stage: 'validating-balance',\n percentage: 20,\n });\n\n const normalizedTick = this.normalizeTick(options.tick);\n const fromAccount = this.accountToString(options.from);\n\n if (fromAccount !== this.operatorId) {\n throw new PointsBurnError(\n 'For public topics, transaction payer must match burner',\n options.tick,\n fromAccount,\n options.amount,\n );\n }\n\n progressCallback?.({\n stage: 'submitting',\n percentage: 50,\n });\n\n const topicId = options.topicId\n ? this.topicToString(options.topicId)\n : this.publicTopicId;\n const burnTransaction = buildHcs20BurnTx({\n topicId,\n tick: options.tick,\n amt: options.amount,\n from: fromAccount,\n memo: options.memo,\n });\n\n const { transactionId: burnTxId } =\n await this.submitPayload(burnTransaction);\n\n progressCallback?.({\n stage: 'confirming',\n percentage: 80,\n burnTxId,\n });\n\n await this.waitForMirrorNodeConfirmation(topicId, burnTxId);\n\n progressCallback?.({\n stage: 'complete',\n percentage: 100,\n burnTxId,\n });\n\n const transaction: PointsTransaction = {\n id: burnTxId,\n operation: 'burn',\n tick: normalizedTick,\n amount: options.amount,\n from: fromAccount,\n timestamp: new Date().toISOString(),\n sequenceNumber: 0,\n topicId,\n transactionId: burnTxId,\n memo: options.memo,\n };\n\n return transaction;\n } catch (error) {\n progressCallback?.({\n stage: 'complete',\n percentage: 100,\n error: error instanceof Error ? error.message : 'Unknown error',\n });\n throw error;\n }\n }\n\n /**\n * Register a topic in the registry\n */\n async registerTopic(options: RegisterTopicOptions): Promise<void> {\n await this.ensureInitialized();\n const { progressCallback } = options;\n\n try {\n progressCallback?.({\n stage: 'validating',\n percentage: 20,\n });\n\n const registerMessage: HCS20RegisterMessage = {\n p: 'hcs-20',\n op: 'register',\n name: options.name,\n metadata: options.metadata,\n private: options.isPrivate,\n t_id: this.topicToString(options.topicId),\n m: options.memo,\n };\n\n const validation = this.validateMessage(registerMessage);\n if (!validation.valid) {\n throw new PointsValidationError(\n 'Invalid register message',\n validation.errors!,\n );\n }\n\n if (!this.registryTopicId) {\n throw new PointsDeploymentError(\n 'Registry topic not available',\n options.name,\n );\n }\n\n progressCallback?.({\n stage: 'submitting',\n percentage: 50,\n });\n\n const registerTransaction = buildHcs20RegisterTx({\n registryTopicId: this.registryTopicId,\n name: options.name,\n topicId: this.topicToString(options.topicId),\n isPrivate: options.isPrivate,\n metadata: options.metadata,\n memo: options.memo,\n });\n\n const { transactionId: registerTxId } = await this.submitPayload(\n registerTransaction,\n this.operatorCtx.operatorKey,\n );\n\n progressCallback?.({\n stage: 'confirming',\n percentage: 80,\n registerTxId,\n });\n\n await this.waitForMirrorNodeConfirmation(\n this.registryTopicId,\n registerTxId,\n );\n\n progressCallback?.({\n stage: 'complete',\n percentage: 100,\n registerTxId,\n });\n\n this.logger.info(`Registered topic ${options.topicId} in registry`);\n } catch (error) {\n progressCallback?.({\n stage: 'complete',\n percentage: 100,\n error: error instanceof Error ? error.message : 'Unknown error',\n });\n throw error;\n }\n }\n\n /**\n * Wait for mirror node to index a message\n */\n private async waitForMirrorNodeConfirmation(\n topicId: string,\n transactionId: string,\n maxRetries = 10,\n ): Promise<void> {\n for (let i = 0; i < maxRetries; i++) {\n try {\n const messages = await this.mirrorNode.getTopicMessages(topicId, {\n limit: 10,\n order: 'desc',\n });\n\n const found = messages.some(message => {\n if (typeof message !== 'object' || message === null) {\n return false;\n }\n const candidate = message as { consensus_timestamp?: unknown };\n return typeof candidate.consensus_timestamp === 'string';\n });\n\n if (found) {\n this.logger.debug(\n `Transaction ${transactionId} confirmed on mirror node`,\n );\n return;\n }\n } catch (error) {\n this.logger.debug(`Mirror node check attempt ${i + 1} failed:`, error);\n }\n\n await sleep(2000);\n }\n\n this.logger.warn(\n `Transaction ${transactionId} not found on mirror node after ${maxRetries} attempts`,\n );\n }\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"standards-sdk.es77.js","sources":["../../src/hcs-20/sdk.ts"],"sourcesContent":["/**\n * SDK implementation of HCS-20 client for server-side usage\n */\n\nimport {\n AccountId,\n TopicCreateTransaction,\n TopicMessageSubmitTransaction,\n PrivateKey,\n Client,\n TransactionReceipt,\n TransactionResponse,\n Status,\n} from '@hashgraph/sdk';\nimport { HCS20BaseClient } from './base-client';\nimport {\n SDKHCS20ClientConfig,\n DeployPointsOptions,\n MintPointsOptions,\n TransferPointsOptions,\n BurnPointsOptions,\n RegisterTopicOptions,\n PointsInfo,\n PointsTransaction,\n HCS20DeployMessage,\n HCS20RegisterMessage,\n} from './types';\nimport {\n PointsDeploymentError,\n PointsTransferError,\n PointsBurnError,\n PointsValidationError,\n} from './errors';\nimport { sleep } from '../utils/sleep';\nimport {\n createNodeOperatorContext,\n type NodeOperatorContext,\n} from '../common/node-operator-resolver';\nimport { HCS2Client } from '../hcs-2/client';\nimport {\n buildHcs20DeployTx,\n buildHcs20MintTx,\n buildHcs20TransferTx,\n buildHcs20BurnTx,\n buildHcs20RegisterTx,\n} from './tx';\n\n/**\n * SDK-specific HCS-20 client for server-side operations\n */\nexport class HCS20Client extends HCS20BaseClient {\n private client: Client;\n private operatorAccountId: AccountId;\n private operatorId: string;\n private operatorCtx: NodeOperatorContext;\n\n constructor(config: SDKHCS20ClientConfig) {\n super(config);\n\n this.operatorAccountId =\n typeof config.operatorId === 'string'\n ? AccountId.fromString(config.operatorId)\n : config.operatorId;\n this.operatorId = this.operatorAccountId.toString();\n\n const baseClient =\n this.network === 'mainnet' ? Client.forMainnet() : Client.forTestnet();\n\n this.operatorCtx = createNodeOperatorContext({\n network: this.network,\n operatorId: this.operatorId,\n operatorKey: config.operatorKey,\n keyType: config.keyType,\n mirrorNode: this.mirrorNode,\n logger: this.logger,\n client: baseClient,\n });\n\n this.client = this.operatorCtx.client;\n void this.operatorCtx.ensureInitialized();\n }\n\n /**\n * Ensure operator is initialized before operations\n */\n private async ensureInitialized(): Promise<void> {\n await this.operatorCtx.ensureInitialized();\n }\n\n /**\n * Submit a payload to a topic\n */\n private async submitPayload(\n transaction: TopicMessageSubmitTransaction,\n submitKey?: PrivateKey,\n ): Promise<{ receipt: TransactionReceipt; transactionId: string }> {\n let transactionResponse: TransactionResponse;\n if (submitKey) {\n const frozenTransaction = transaction.freezeWith(this.client);\n const signedTransaction = await frozenTransaction.sign(submitKey);\n transactionResponse = await signedTransaction.execute(this.client);\n } else {\n transactionResponse = await transaction.execute(this.client);\n }\n\n const receipt = await transactionResponse.getReceipt(this.client);\n if (!receipt || receipt.status !== Status.Success) {\n throw new Error('Failed to submit message to topic');\n }\n\n return {\n receipt,\n transactionId: transactionResponse.transactionId!.toString(),\n };\n }\n\n /**\n * Create a public topic for HCS-20 (for testnet)\n */\n async createPublicTopic(memo?: string): Promise<string> {\n await this.ensureInitialized();\n\n this.logger.info('Creating public HCS-20 topic...');\n\n const topicCreateTx = await new TopicCreateTransaction()\n .setTopicMemo(memo || 'HCS-20 Public Topic')\n .execute(this.client);\n\n const receipt = await topicCreateTx.getReceipt(this.client);\n if (receipt.status !== Status.Success || !receipt.topicId) {\n throw new Error('Failed to create public topic');\n }\n\n const topicId = receipt.topicId.toString();\n this.logger.info(`Created public topic: ${topicId}`);\n\n this.publicTopicId = topicId;\n\n return topicId;\n }\n\n /**\n * Create a registry topic for HCS-20\n */\n async createRegistryTopic(): Promise<string> {\n await this.ensureInitialized();\n\n this.logger.info('Creating HCS-20 registry topic...');\n\n const hcs2Client = new HCS2Client({\n operatorId: this.operatorId,\n operatorKey: this.operatorCtx.operatorKey,\n network: this.network,\n });\n\n const topicCreateResponse = await hcs2Client.createRegistry({\n submitKey: this.operatorCtx.operatorKey,\n adminKey: this.operatorCtx.operatorKey,\n });\n\n if (!topicCreateResponse.success) {\n throw new Error('Failed to create registry topic');\n }\n\n const topicId = topicCreateResponse.topicId;\n this.logger.info(`Created registry topic: ${topicId}`);\n\n this.registryTopicId = topicId;\n\n return topicId;\n }\n\n /**\n * Deploy new points\n */\n async deployPoints(options: DeployPointsOptions): Promise<PointsInfo> {\n await this.ensureInitialized();\n const { progressCallback } = options;\n\n try {\n progressCallback?.({\n stage: 'creating-topic',\n percentage: 20,\n });\n\n let topicId: string;\n\n const hcs2Client = new HCS2Client({\n operatorId: this.operatorId,\n operatorKey: this.operatorCtx.operatorKey,\n network: this.network,\n });\n\n if (options.usePrivateTopic) {\n const topicCreateResponse = await hcs2Client.createRegistry({\n submitKey: this.operatorCtx.operatorKey,\n adminKey: this.operatorCtx.operatorKey,\n });\n\n if (!topicCreateResponse.success) {\n throw new PointsDeploymentError(\n 'Failed to create topic',\n options.tick,\n );\n }\n\n topicId = topicCreateResponse.topicId;\n this.logger.info(`Created private topic: ${topicId}`);\n } else {\n topicId = this.publicTopicId;\n }\n\n progressCallback?.({\n stage: 'submitting-deploy',\n percentage: 50,\n topicId,\n });\n\n const deployMessage: HCS20DeployMessage = {\n p: 'hcs-20',\n op: 'deploy',\n name: options.name,\n tick: this.normalizeTick(options.tick),\n max: options.maxSupply,\n lim: options.limitPerMint,\n metadata: options.metadata,\n m: options.topicMemo,\n };\n\n const validation = this.validateMessage(deployMessage);\n if (!validation.valid) {\n throw new PointsValidationError(\n 'Invalid deploy message',\n validation.errors!,\n );\n }\n\n const deployTransaction = buildHcs20DeployTx({\n topicId,\n name: options.name,\n tick: options.tick,\n max: options.maxSupply,\n lim: options.limitPerMint,\n metadata: options.metadata,\n memo: options.topicMemo,\n });\n\n const { transactionId: deployTxId } =\n await this.submitPayload(deployTransaction);\n\n progressCallback?.({\n stage: 'confirming',\n percentage: 80,\n topicId,\n deployTxId,\n });\n\n await this.waitForMirrorNodeConfirmation(topicId, deployTxId);\n\n progressCallback?.({\n stage: 'complete',\n percentage: 100,\n topicId,\n deployTxId,\n });\n\n const pointsInfo: PointsInfo = {\n name: options.name,\n tick: this.normalizeTick(options.tick),\n maxSupply: options.maxSupply,\n limitPerMint: options.limitPerMint,\n metadata: options.metadata,\n topicId,\n deployerAccountId: this.operatorId,\n currentSupply: '0',\n deploymentTimestamp: new Date().toISOString(),\n isPrivate: options.usePrivateTopic || false,\n };\n\n return pointsInfo;\n } catch (error) {\n progressCallback?.({\n stage: 'complete',\n percentage: 100,\n error: error instanceof Error ? error.message : 'Unknown error',\n });\n throw error;\n }\n }\n\n /**\n * Mint points\n */\n async mintPoints(options: MintPointsOptions): Promise<PointsTransaction> {\n await this.ensureInitialized();\n const { progressCallback } = options;\n\n try {\n progressCallback?.({\n stage: 'validating',\n percentage: 20,\n });\n\n const normalizedTick = this.normalizeTick(options.tick);\n\n progressCallback?.({\n stage: 'submitting',\n percentage: 50,\n });\n\n const topicId = options.topicId\n ? this.topicToString(options.topicId)\n : this.publicTopicId;\n const mintTransaction = buildHcs20MintTx({\n topicId,\n tick: options.tick,\n amt: options.amount,\n to: this.accountToString(options.to),\n memo: options.memo,\n });\n\n const { transactionId: mintTxId } =\n await this.submitPayload(mintTransaction);\n\n progressCallback?.({\n stage: 'confirming',\n percentage: 80,\n mintTxId,\n });\n\n if (!options.disableMirrorCheck) {\n await this.waitForMirrorNodeConfirmation(topicId, mintTxId);\n }\n\n progressCallback?.({\n stage: 'complete',\n percentage: 100,\n mintTxId,\n });\n\n const transaction: PointsTransaction = {\n id: mintTxId,\n operation: 'mint',\n tick: normalizedTick,\n amount: options.amount,\n to: this.accountToString(options.to),\n timestamp: new Date().toISOString(),\n sequenceNumber: 0,\n topicId,\n transactionId: mintTxId,\n memo: options.memo,\n };\n\n return transaction;\n } catch (error) {\n progressCallback?.({\n stage: 'complete',\n percentage: 100,\n error: error instanceof Error ? error.message : 'Unknown error',\n });\n throw error;\n }\n }\n\n /**\n * Transfer points\n */\n async transferPoints(\n options: TransferPointsOptions,\n ): Promise<PointsTransaction> {\n await this.ensureInitialized();\n const { progressCallback } = options;\n\n try {\n progressCallback?.({\n stage: 'validating-balance',\n percentage: 20,\n });\n\n const normalizedTick = this.normalizeTick(options.tick);\n const fromAccount = this.accountToString(options.from);\n const toAccount = this.accountToString(options.to);\n\n if (fromAccount !== this.operatorId) {\n throw new PointsTransferError(\n 'For public topics, transaction payer must match sender',\n options.tick,\n fromAccount,\n toAccount,\n options.amount,\n );\n }\n\n progressCallback?.({\n stage: 'submitting',\n percentage: 50,\n });\n\n const topicId = options.topicId\n ? this.topicToString(options.topicId)\n : this.publicTopicId;\n const transferTransaction = buildHcs20TransferTx({\n topicId,\n tick: options.tick,\n amt: options.amount,\n from: fromAccount,\n to: toAccount,\n memo: options.memo,\n });\n\n const { transactionId: transferTxId } =\n await this.submitPayload(transferTransaction);\n\n progressCallback?.({\n stage: 'confirming',\n percentage: 80,\n transferTxId,\n });\n\n await this.waitForMirrorNodeConfirmation(topicId, transferTxId);\n\n progressCallback?.({\n stage: 'complete',\n percentage: 100,\n transferTxId,\n });\n\n const transaction: PointsTransaction = {\n id: transferTxId,\n operation: 'transfer',\n tick: normalizedTick,\n amount: options.amount,\n from: fromAccount,\n to: toAccount,\n timestamp: new Date().toISOString(),\n sequenceNumber: 0,\n topicId,\n transactionId: transferTxId,\n memo: options.memo,\n };\n\n return transaction;\n } catch (error) {\n progressCallback?.({\n stage: 'complete',\n percentage: 100,\n error: error instanceof Error ? error.message : 'Unknown error',\n });\n throw error;\n }\n }\n\n /**\n * Burn points\n */\n async burnPoints(options: BurnPointsOptions): Promise<PointsTransaction> {\n await this.ensureInitialized();\n const { progressCallback } = options;\n\n try {\n progressCallback?.({\n stage: 'validating-balance',\n percentage: 20,\n });\n\n const normalizedTick = this.normalizeTick(options.tick);\n const fromAccount = this.accountToString(options.from);\n\n if (fromAccount !== this.operatorId) {\n throw new PointsBurnError(\n 'For public topics, transaction payer must match burner',\n options.tick,\n fromAccount,\n options.amount,\n );\n }\n\n progressCallback?.({\n stage: 'submitting',\n percentage: 50,\n });\n\n const topicId = options.topicId\n ? this.topicToString(options.topicId)\n : this.publicTopicId;\n const burnTransaction = buildHcs20BurnTx({\n topicId,\n tick: options.tick,\n amt: options.amount,\n from: fromAccount,\n memo: options.memo,\n });\n\n const { transactionId: burnTxId } =\n await this.submitPayload(burnTransaction);\n\n progressCallback?.({\n stage: 'confirming',\n percentage: 80,\n burnTxId,\n });\n\n await this.waitForMirrorNodeConfirmation(topicId, burnTxId);\n\n progressCallback?.({\n stage: 'complete',\n percentage: 100,\n burnTxId,\n });\n\n const transaction: PointsTransaction = {\n id: burnTxId,\n operation: 'burn',\n tick: normalizedTick,\n amount: options.amount,\n from: fromAccount,\n timestamp: new Date().toISOString(),\n sequenceNumber: 0,\n topicId,\n transactionId: burnTxId,\n memo: options.memo,\n };\n\n return transaction;\n } catch (error) {\n progressCallback?.({\n stage: 'complete',\n percentage: 100,\n error: error instanceof Error ? error.message : 'Unknown error',\n });\n throw error;\n }\n }\n\n /**\n * Register a topic in the registry\n */\n async registerTopic(options: RegisterTopicOptions): Promise<void> {\n await this.ensureInitialized();\n const { progressCallback } = options;\n\n try {\n progressCallback?.({\n stage: 'validating',\n percentage: 20,\n });\n\n const registerMessage: HCS20RegisterMessage = {\n p: 'hcs-20',\n op: 'register',\n name: options.name,\n metadata: options.metadata,\n private: options.isPrivate,\n t_id: this.topicToString(options.topicId),\n m: options.memo,\n };\n\n const validation = this.validateMessage(registerMessage);\n if (!validation.valid) {\n throw new PointsValidationError(\n 'Invalid register message',\n validation.errors!,\n );\n }\n\n if (!this.registryTopicId) {\n throw new PointsDeploymentError(\n 'Registry topic not available',\n options.name,\n );\n }\n\n progressCallback?.({\n stage: 'submitting',\n percentage: 50,\n });\n\n const registerTransaction = buildHcs20RegisterTx({\n registryTopicId: this.registryTopicId,\n name: options.name,\n topicId: this.topicToString(options.topicId),\n isPrivate: options.isPrivate,\n metadata: options.metadata,\n memo: options.memo,\n });\n\n const { transactionId: registerTxId } = await this.submitPayload(\n registerTransaction,\n this.operatorCtx.operatorKey,\n );\n\n progressCallback?.({\n stage: 'confirming',\n percentage: 80,\n registerTxId,\n });\n\n await this.waitForMirrorNodeConfirmation(\n this.registryTopicId,\n registerTxId,\n );\n\n progressCallback?.({\n stage: 'complete',\n percentage: 100,\n registerTxId,\n });\n\n this.logger.info(`Registered topic ${options.topicId} in registry`);\n } catch (error) {\n progressCallback?.({\n stage: 'complete',\n percentage: 100,\n error: error instanceof Error ? error.message : 'Unknown error',\n });\n throw error;\n }\n }\n\n /**\n * Wait for mirror node to index a message\n */\n private async waitForMirrorNodeConfirmation(\n topicId: string,\n transactionId: string,\n maxRetries = 10,\n ): Promise<void> {\n for (let i = 0; i < maxRetries; i++) {\n try {\n const messages = await this.mirrorNode.getTopicMessages(topicId, {\n limit: 10,\n order: 'desc',\n });\n\n const found = messages.some(message => {\n if (typeof message !== 'object' || message === null) {\n return false;\n }\n const candidate = message as { consensus_timestamp?: unknown };\n return typeof candidate.consensus_timestamp === 'string';\n });\n\n if (found) {\n this.logger.debug(\n `Transaction ${transactionId} confirmed on mirror node`,\n );\n return;\n }\n } catch (error) {\n this.logger.debug(`Mirror node check attempt ${i + 1} failed:`, error);\n }\n\n await sleep(2000);\n }\n\n this.logger.warn(\n `Transaction ${transactionId} not found on mirror node after ${maxRetries} attempts`,\n );\n }\n}\n"],"names":[],"mappings":"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"}
@@ -1,18 +1,12 @@
1
- import { Logger } from "./standards-sdk.es105.js";
2
- import { HederaMirrorNode } from "./standards-sdk.es126.js";
1
+ import { Logger } from "./standards-sdk.es106.js";
2
+ import { HederaMirrorNode } from "./standards-sdk.es127.js";
3
3
  import "node:path";
4
4
  import "node:buffer";
5
5
  import "node:crypto";
6
6
  import "@noble/curves/secp256k1.js";
7
- import "./standards-sdk.es129.js";
8
- import "axios";
9
- import "viem/accounts";
10
- import "viem/chains";
11
- import "x402-axios";
12
- import "x402/types";
13
- import "./standards-sdk.es137.js";
7
+ import "./standards-sdk.es130.js";
8
+ import "./standards-sdk.es138.js";
14
9
  import "zod";
15
- import "@hashgraph/sdk";
16
10
  import { HCS20_CONSTANTS, HCS20MessageSchema } from "./standards-sdk.es73.js";
17
11
  class HCS20PointsIndexer {
18
12
  constructor(network, logger, mirrorNodeUrl) {
@@ -1 +1 @@
1
- {"version":3,"file":"standards-sdk.es78.js","sources":["../../src/hcs-20/points-indexer.ts"],"sourcesContent":["/**\n * HCS-20 Points Indexer for state calculation\n * Handles async processing of HCS messages to build points state.\n * With larger topics, we do not recommend using this indexer, and\n * instead utilizing more scalable, database or redis based solutions.\n */\n\nimport { Logger } from '../utils/logger';\nimport { HederaMirrorNode } from '../services';\nimport { NetworkType } from '../utils/types';\nimport {\n PointsState,\n PointsInfo,\n HCS20Message,\n HCS20DeployMessage,\n HCS20MintMessage,\n HCS20TransferMessage,\n HCS20BurnMessage,\n HCS20_CONSTANTS,\n HCS20MessageSchema,\n} from './types';\n\ninterface TopicMessageMeta {\n consensus_timestamp: string;\n sequence_number: number;\n payer_account_id: string;\n transaction_id: string;\n}\n\n/**\n * HCS-20 Points Indexer for processing and maintaining points state\n */\nexport class HCS20PointsIndexer {\n private logger: Logger;\n private mirrorNode: HederaMirrorNode;\n private state: PointsState;\n private isProcessing: boolean = false;\n private lastIndexedSequence: Map<string, number> = new Map();\n\n constructor(network: NetworkType, logger?: Logger, mirrorNodeUrl?: string) {\n this.logger =\n logger ||\n new Logger({\n level: 'info',\n module: 'HCS20PointsIndexer',\n });\n this.mirrorNode = new HederaMirrorNode(network, this.logger, {\n customUrl: mirrorNodeUrl,\n });\n this.state = this.initializeState();\n }\n\n /**\n * Initialize empty state\n */\n private initializeState(): PointsState {\n return {\n deployedPoints: new Map(),\n balances: new Map(),\n transactions: [],\n lastProcessedSequence: 0,\n lastProcessedTimestamp: new Date().toISOString(),\n };\n }\n\n /**\n * Get current state snapshot\n */\n getState(): PointsState {\n return {\n ...this.state,\n deployedPoints: new Map(this.state.deployedPoints),\n balances: new Map(this.state.balances),\n transactions: [...this.state.transactions],\n };\n }\n\n /**\n * Get points info for a specific tick\n */\n getPointsInfo(tick: string): PointsInfo | undefined {\n return this.state.deployedPoints.get(this.normalizeTick(tick));\n }\n\n /**\n * Get balance for an account and tick\n */\n getBalance(tick: string, accountId: string): string {\n const normalizedTick = this.normalizeTick(tick);\n const tickBalances = this.state.balances.get(normalizedTick);\n if (!tickBalances) return '0';\n const balance = tickBalances.get(accountId);\n return balance?.balance || '0';\n }\n\n /**\n * Start indexing process\n */\n async startIndexing(options?: {\n publicTopicId?: string;\n registryTopicId?: string;\n includePublicTopic?: boolean;\n includeRegistryTopic?: boolean;\n privateTopics?: string[];\n pollInterval?: number;\n }): Promise<void> {\n if (this.isProcessing) {\n this.logger.warn('Indexing already in progress');\n return;\n }\n\n this.isProcessing = true;\n const includePublicTopic = options?.includePublicTopic !== false;\n const includeRegistryTopic = options?.includeRegistryTopic !== false;\n const publicTopicId = includePublicTopic\n ? options?.publicTopicId || HCS20_CONSTANTS.PUBLIC_TOPIC_ID\n : null;\n const registryTopicId = includeRegistryTopic\n ? options?.registryTopicId || HCS20_CONSTANTS.REGISTRY_TOPIC_ID\n : null;\n const pollInterval = options?.pollInterval || 30000;\n\n await this.indexTopics(\n publicTopicId,\n registryTopicId,\n options?.privateTopics,\n );\n\n const pollTopics = async () => {\n if (!this.isProcessing) return;\n try {\n await this.indexTopics(\n publicTopicId,\n registryTopicId,\n options?.privateTopics,\n );\n } catch (error) {\n this.logger.error('Polling error:', error);\n }\n if (this.isProcessing) {\n setTimeout(pollTopics, pollInterval);\n }\n };\n\n setTimeout(pollTopics, pollInterval);\n }\n\n /**\n * Index topics once and wait for completion\n */\n async indexOnce(options?: {\n publicTopicId?: string;\n registryTopicId?: string;\n includePublicTopic?: boolean;\n includeRegistryTopic?: boolean;\n privateTopics?: string[];\n }): Promise<void> {\n const includePublicTopic = options?.includePublicTopic !== false;\n const includeRegistryTopic = options?.includeRegistryTopic !== false;\n const publicTopicId = includePublicTopic\n ? options?.publicTopicId || HCS20_CONSTANTS.PUBLIC_TOPIC_ID\n : null;\n const registryTopicId = includeRegistryTopic\n ? options?.registryTopicId || HCS20_CONSTANTS.REGISTRY_TOPIC_ID\n : null;\n\n await this.indexTopics(\n publicTopicId,\n registryTopicId,\n options?.privateTopics,\n );\n }\n\n /**\n * Stop indexing process\n */\n stopIndexing(): void {\n this.isProcessing = false;\n this.logger.info('Indexing stopped');\n }\n\n /**\n * Index topics and update state\n */\n private async indexTopics(\n publicTopicId: string | null,\n registryTopicId: string | null,\n privateTopics?: string[],\n ): Promise<void> {\n this.logger.debug('Starting indexing cycle');\n if (publicTopicId) {\n await this.indexTopic(publicTopicId, false);\n }\n const registeredTopics = registryTopicId\n ? await this.getRegisteredTopics(registryTopicId)\n : [];\n const topicsToIndex = [...registeredTopics, ...(privateTopics || [])];\n for (const topicId of topicsToIndex) {\n await this.indexTopic(topicId, true);\n }\n\n this.logger.debug('Indexing cycle complete');\n }\n\n /**\n * Get registered topics from registry\n */\n private async getRegisteredTopics(\n registryTopicId: string,\n ): Promise<string[]> {\n const topics: string[] = [];\n try {\n const messages = await this.mirrorNode.getTopicMessages(registryTopicId, {\n limit: 100,\n order: 'asc',\n });\n\n messages\n .filter(\n message =>\n message.p === 'hcs-20' &&\n message.op === 'register' &&\n typeof message.t_id === 'string',\n )\n .forEach(message => {\n topics.push(message.t_id as string);\n });\n } catch (error) {\n this.logger.error('Failed to fetch registry messages:', error);\n }\n return topics;\n }\n\n /**\n * Index a single topic\n */\n private async indexTopic(topicId: string, isPrivate: boolean): Promise<void> {\n try {\n const lastSequence = this.lastIndexedSequence.get(topicId);\n this.logger.debug(\n `Indexing topic ${topicId}, starting from sequence ${lastSequence || 0}`,\n );\n\n const messages = await this.mirrorNode.getTopicMessages(topicId, {\n sequenceNumber: lastSequence ? lastSequence + 1 : undefined,\n limit: 1000,\n order: 'asc',\n });\n\n this.logger.debug(\n `Fetched ${messages.length} messages from topic ${topicId}`,\n );\n\n let maxSequence = lastSequence || 0;\n\n for (const message of messages) {\n if (message.p !== 'hcs-20') {\n continue;\n }\n\n const parseResult = HCS20MessageSchema.safeParse(message);\n if (!parseResult.success) {\n this.logger.debug('Skipping message due to schema mismatch');\n continue;\n }\n\n const parsedMsg = parseResult.data;\n const sequenceNumber = message.sequence_number ?? 0;\n\n this.logger.debug(\n `Found HCS-20 message: op=${parsedMsg.op}, sequence=${sequenceNumber}`,\n );\n\n if (sequenceNumber > maxSequence) {\n maxSequence = sequenceNumber;\n }\n\n const topicMessage: TopicMessageMeta = {\n consensus_timestamp: message.consensus_timestamp ?? '',\n sequence_number: sequenceNumber,\n payer_account_id: message.payer_account_id ?? message.payer ?? '',\n transaction_id: message.transaction_id ?? '',\n };\n\n this.processMessage(parsedMsg, topicMessage, topicId, isPrivate);\n\n this.state.lastProcessedSequence++;\n this.state.lastProcessedTimestamp = message.consensus_timestamp || '';\n }\n if (maxSequence > (lastSequence || 0)) {\n this.lastIndexedSequence.set(topicId, maxSequence);\n }\n } catch (error) {\n this.logger.error(`Failed to index topic ${topicId}:`, error);\n }\n }\n\n /**\n * Process a single message\n */\n private processMessage(\n msg: HCS20Message,\n hcsMsg: TopicMessageMeta,\n topicId: string,\n isPrivate: boolean,\n ): void {\n switch (msg.op) {\n case 'deploy':\n this.processDeployMessage(msg, hcsMsg, topicId, isPrivate);\n break;\n case 'mint':\n this.processMintMessage(msg, hcsMsg, topicId, isPrivate);\n break;\n case 'transfer':\n this.processTransferMessage(msg, hcsMsg, topicId, isPrivate);\n break;\n case 'burn':\n this.processBurnMessage(msg, hcsMsg, topicId, isPrivate);\n break;\n }\n }\n\n /**\n * Process deploy message\n */\n private processDeployMessage(\n msg: HCS20DeployMessage,\n hcsMsg: TopicMessageMeta,\n topicId: string,\n isPrivate: boolean,\n ): void {\n const normalizedTick = this.normalizeTick(msg.tick);\n if (this.state.deployedPoints.has(normalizedTick)) {\n return;\n }\n const pointsInfo: PointsInfo = {\n name: msg.name,\n tick: normalizedTick,\n maxSupply: msg.max,\n limitPerMint: msg.lim,\n metadata: msg.metadata,\n topicId,\n deployerAccountId: hcsMsg.payer_account_id,\n currentSupply: '0',\n deploymentTimestamp: hcsMsg.consensus_timestamp,\n isPrivate,\n };\n\n this.state.deployedPoints.set(normalizedTick, pointsInfo);\n this.logger.info(`Deployed points: ${normalizedTick}`);\n }\n\n /**\n * Process mint message\n */\n private processMintMessage(\n msg: HCS20MintMessage,\n hcsMsg: TopicMessageMeta,\n topicId: string,\n isPrivate: boolean,\n ): void {\n const normalizedTick = this.normalizeTick(msg.tick);\n const pointsInfo = this.state.deployedPoints.get(normalizedTick);\n\n if (!pointsInfo) return;\n const mintAmount = BigInt(msg.amt);\n const currentSupply = BigInt(pointsInfo.currentSupply);\n const maxSupply = BigInt(pointsInfo.maxSupply);\n\n if (currentSupply + mintAmount > maxSupply) return;\n\n if (pointsInfo.limitPerMint && mintAmount > BigInt(pointsInfo.limitPerMint))\n return;\n pointsInfo.currentSupply = (currentSupply + mintAmount).toString();\n let tickBalances = this.state.balances.get(normalizedTick);\n if (!tickBalances) {\n tickBalances = new Map();\n this.state.balances.set(normalizedTick, tickBalances);\n }\n\n const currentBalance = tickBalances.get(msg.to);\n const newBalance = currentBalance\n ? (BigInt(currentBalance.balance) + mintAmount).toString()\n : msg.amt;\n\n tickBalances.set(msg.to, {\n tick: normalizedTick,\n accountId: msg.to,\n balance: newBalance,\n lastUpdated: hcsMsg.consensus_timestamp,\n });\n this.state.transactions.push({\n id: hcsMsg.transaction_id || `${topicId}-${hcsMsg.sequence_number}`,\n operation: 'mint',\n tick: normalizedTick,\n amount: msg.amt,\n to: msg.to,\n timestamp: hcsMsg.consensus_timestamp,\n sequenceNumber: hcsMsg.sequence_number,\n topicId,\n transactionId: hcsMsg.transaction_id || '',\n memo: msg.m,\n });\n }\n\n /**\n * Process transfer message\n */\n private processTransferMessage(\n msg: HCS20TransferMessage,\n hcsMsg: TopicMessageMeta,\n topicId: string,\n isPrivate: boolean,\n ): void {\n const normalizedTick = this.normalizeTick(msg.tick);\n const tickBalances = this.state.balances.get(normalizedTick);\n\n if (!tickBalances) return;\n if (!isPrivate && hcsMsg.payer_account_id !== msg.from) return;\n\n const senderBalance = tickBalances.get(msg.from);\n if (!senderBalance || BigInt(senderBalance.balance) < BigInt(msg.amt))\n return;\n const transferAmount = BigInt(msg.amt);\n\n senderBalance.balance = (\n BigInt(senderBalance.balance) - transferAmount\n ).toString();\n senderBalance.lastUpdated = hcsMsg.consensus_timestamp;\n\n const receiverBalance = tickBalances.get(msg.to);\n if (receiverBalance) {\n receiverBalance.balance = (\n BigInt(receiverBalance.balance) + transferAmount\n ).toString();\n receiverBalance.lastUpdated = hcsMsg.consensus_timestamp;\n } else {\n tickBalances.set(msg.to, {\n tick: normalizedTick,\n accountId: msg.to,\n balance: msg.amt,\n lastUpdated: hcsMsg.consensus_timestamp,\n });\n }\n this.state.transactions.push({\n id: hcsMsg.transaction_id || `${topicId}-${hcsMsg.sequence_number}`,\n operation: 'transfer',\n tick: normalizedTick,\n amount: msg.amt,\n from: msg.from,\n to: msg.to,\n timestamp: hcsMsg.consensus_timestamp,\n sequenceNumber: hcsMsg.sequence_number,\n topicId,\n transactionId: hcsMsg.transaction_id || '',\n memo: msg.m,\n });\n }\n\n /**\n * Process burn message\n */\n private processBurnMessage(\n msg: HCS20BurnMessage,\n hcsMsg: TopicMessageMeta,\n topicId: string,\n isPrivate: boolean,\n ): void {\n const normalizedTick = this.normalizeTick(msg.tick);\n const pointsInfo = this.state.deployedPoints.get(normalizedTick);\n const tickBalances = this.state.balances.get(normalizedTick);\n\n if (!pointsInfo || !tickBalances) return;\n if (!isPrivate && hcsMsg.payer_account_id !== msg.from) return;\n\n const accountBalance = tickBalances.get(msg.from);\n if (!accountBalance || BigInt(accountBalance.balance) < BigInt(msg.amt))\n return;\n const burnAmount = BigInt(msg.amt);\n\n accountBalance.balance = (\n BigInt(accountBalance.balance) - burnAmount\n ).toString();\n accountBalance.lastUpdated = hcsMsg.consensus_timestamp;\n\n pointsInfo.currentSupply = (\n BigInt(pointsInfo.currentSupply) - burnAmount\n ).toString();\n this.state.transactions.push({\n id: hcsMsg.transaction_id || `${topicId}-${hcsMsg.sequence_number}`,\n operation: 'burn',\n tick: normalizedTick,\n amount: msg.amt,\n from: msg.from,\n timestamp: hcsMsg.consensus_timestamp,\n sequenceNumber: hcsMsg.sequence_number,\n topicId,\n transactionId: hcsMsg.transaction_id || '',\n memo: msg.m,\n });\n }\n\n /**\n * Normalize tick to lowercase and trim\n */\n private normalizeTick(tick: string): string {\n return tick.toLowerCase().trim();\n }\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"standards-sdk.es78.js","sources":["../../src/hcs-20/points-indexer.ts"],"sourcesContent":["/**\n * HCS-20 Points Indexer for state calculation\n * Handles async processing of HCS messages to build points state.\n * With larger topics, we do not recommend using this indexer, and\n * instead utilizing more scalable, database or redis based solutions.\n */\n\nimport { Logger } from '../utils/logger';\nimport { HederaMirrorNode } from '../services';\nimport { NetworkType } from '../utils/types';\nimport {\n PointsState,\n PointsInfo,\n HCS20Message,\n HCS20DeployMessage,\n HCS20MintMessage,\n HCS20TransferMessage,\n HCS20BurnMessage,\n HCS20_CONSTANTS,\n HCS20MessageSchema,\n} from './types';\n\ninterface TopicMessageMeta {\n consensus_timestamp: string;\n sequence_number: number;\n payer_account_id: string;\n transaction_id: string;\n}\n\n/**\n * HCS-20 Points Indexer for processing and maintaining points state\n */\nexport class HCS20PointsIndexer {\n private logger: Logger;\n private mirrorNode: HederaMirrorNode;\n private state: PointsState;\n private isProcessing: boolean = false;\n private lastIndexedSequence: Map<string, number> = new Map();\n\n constructor(network: NetworkType, logger?: Logger, mirrorNodeUrl?: string) {\n this.logger =\n logger ||\n new Logger({\n level: 'info',\n module: 'HCS20PointsIndexer',\n });\n this.mirrorNode = new HederaMirrorNode(network, this.logger, {\n customUrl: mirrorNodeUrl,\n });\n this.state = this.initializeState();\n }\n\n /**\n * Initialize empty state\n */\n private initializeState(): PointsState {\n return {\n deployedPoints: new Map(),\n balances: new Map(),\n transactions: [],\n lastProcessedSequence: 0,\n lastProcessedTimestamp: new Date().toISOString(),\n };\n }\n\n /**\n * Get current state snapshot\n */\n getState(): PointsState {\n return {\n ...this.state,\n deployedPoints: new Map(this.state.deployedPoints),\n balances: new Map(this.state.balances),\n transactions: [...this.state.transactions],\n };\n }\n\n /**\n * Get points info for a specific tick\n */\n getPointsInfo(tick: string): PointsInfo | undefined {\n return this.state.deployedPoints.get(this.normalizeTick(tick));\n }\n\n /**\n * Get balance for an account and tick\n */\n getBalance(tick: string, accountId: string): string {\n const normalizedTick = this.normalizeTick(tick);\n const tickBalances = this.state.balances.get(normalizedTick);\n if (!tickBalances) return '0';\n const balance = tickBalances.get(accountId);\n return balance?.balance || '0';\n }\n\n /**\n * Start indexing process\n */\n async startIndexing(options?: {\n publicTopicId?: string;\n registryTopicId?: string;\n includePublicTopic?: boolean;\n includeRegistryTopic?: boolean;\n privateTopics?: string[];\n pollInterval?: number;\n }): Promise<void> {\n if (this.isProcessing) {\n this.logger.warn('Indexing already in progress');\n return;\n }\n\n this.isProcessing = true;\n const includePublicTopic = options?.includePublicTopic !== false;\n const includeRegistryTopic = options?.includeRegistryTopic !== false;\n const publicTopicId = includePublicTopic\n ? options?.publicTopicId || HCS20_CONSTANTS.PUBLIC_TOPIC_ID\n : null;\n const registryTopicId = includeRegistryTopic\n ? options?.registryTopicId || HCS20_CONSTANTS.REGISTRY_TOPIC_ID\n : null;\n const pollInterval = options?.pollInterval || 30000;\n\n await this.indexTopics(\n publicTopicId,\n registryTopicId,\n options?.privateTopics,\n );\n\n const pollTopics = async () => {\n if (!this.isProcessing) return;\n try {\n await this.indexTopics(\n publicTopicId,\n registryTopicId,\n options?.privateTopics,\n );\n } catch (error) {\n this.logger.error('Polling error:', error);\n }\n if (this.isProcessing) {\n setTimeout(pollTopics, pollInterval);\n }\n };\n\n setTimeout(pollTopics, pollInterval);\n }\n\n /**\n * Index topics once and wait for completion\n */\n async indexOnce(options?: {\n publicTopicId?: string;\n registryTopicId?: string;\n includePublicTopic?: boolean;\n includeRegistryTopic?: boolean;\n privateTopics?: string[];\n }): Promise<void> {\n const includePublicTopic = options?.includePublicTopic !== false;\n const includeRegistryTopic = options?.includeRegistryTopic !== false;\n const publicTopicId = includePublicTopic\n ? options?.publicTopicId || HCS20_CONSTANTS.PUBLIC_TOPIC_ID\n : null;\n const registryTopicId = includeRegistryTopic\n ? options?.registryTopicId || HCS20_CONSTANTS.REGISTRY_TOPIC_ID\n : null;\n\n await this.indexTopics(\n publicTopicId,\n registryTopicId,\n options?.privateTopics,\n );\n }\n\n /**\n * Stop indexing process\n */\n stopIndexing(): void {\n this.isProcessing = false;\n this.logger.info('Indexing stopped');\n }\n\n /**\n * Index topics and update state\n */\n private async indexTopics(\n publicTopicId: string | null,\n registryTopicId: string | null,\n privateTopics?: string[],\n ): Promise<void> {\n this.logger.debug('Starting indexing cycle');\n if (publicTopicId) {\n await this.indexTopic(publicTopicId, false);\n }\n const registeredTopics = registryTopicId\n ? await this.getRegisteredTopics(registryTopicId)\n : [];\n const topicsToIndex = [...registeredTopics, ...(privateTopics || [])];\n for (const topicId of topicsToIndex) {\n await this.indexTopic(topicId, true);\n }\n\n this.logger.debug('Indexing cycle complete');\n }\n\n /**\n * Get registered topics from registry\n */\n private async getRegisteredTopics(\n registryTopicId: string,\n ): Promise<string[]> {\n const topics: string[] = [];\n try {\n const messages = await this.mirrorNode.getTopicMessages(registryTopicId, {\n limit: 100,\n order: 'asc',\n });\n\n messages\n .filter(\n message =>\n message.p === 'hcs-20' &&\n message.op === 'register' &&\n typeof message.t_id === 'string',\n )\n .forEach(message => {\n topics.push(message.t_id as string);\n });\n } catch (error) {\n this.logger.error('Failed to fetch registry messages:', error);\n }\n return topics;\n }\n\n /**\n * Index a single topic\n */\n private async indexTopic(topicId: string, isPrivate: boolean): Promise<void> {\n try {\n const lastSequence = this.lastIndexedSequence.get(topicId);\n this.logger.debug(\n `Indexing topic ${topicId}, starting from sequence ${lastSequence || 0}`,\n );\n\n const messages = await this.mirrorNode.getTopicMessages(topicId, {\n sequenceNumber: lastSequence ? lastSequence + 1 : undefined,\n limit: 1000,\n order: 'asc',\n });\n\n this.logger.debug(\n `Fetched ${messages.length} messages from topic ${topicId}`,\n );\n\n let maxSequence = lastSequence || 0;\n\n for (const message of messages) {\n if (message.p !== 'hcs-20') {\n continue;\n }\n\n const parseResult = HCS20MessageSchema.safeParse(message);\n if (!parseResult.success) {\n this.logger.debug('Skipping message due to schema mismatch');\n continue;\n }\n\n const parsedMsg = parseResult.data;\n const sequenceNumber = message.sequence_number ?? 0;\n\n this.logger.debug(\n `Found HCS-20 message: op=${parsedMsg.op}, sequence=${sequenceNumber}`,\n );\n\n if (sequenceNumber > maxSequence) {\n maxSequence = sequenceNumber;\n }\n\n const topicMessage: TopicMessageMeta = {\n consensus_timestamp: message.consensus_timestamp ?? '',\n sequence_number: sequenceNumber,\n payer_account_id: message.payer_account_id ?? message.payer ?? '',\n transaction_id: message.transaction_id ?? '',\n };\n\n this.processMessage(parsedMsg, topicMessage, topicId, isPrivate);\n\n this.state.lastProcessedSequence++;\n this.state.lastProcessedTimestamp = message.consensus_timestamp || '';\n }\n if (maxSequence > (lastSequence || 0)) {\n this.lastIndexedSequence.set(topicId, maxSequence);\n }\n } catch (error) {\n this.logger.error(`Failed to index topic ${topicId}:`, error);\n }\n }\n\n /**\n * Process a single message\n */\n private processMessage(\n msg: HCS20Message,\n hcsMsg: TopicMessageMeta,\n topicId: string,\n isPrivate: boolean,\n ): void {\n switch (msg.op) {\n case 'deploy':\n this.processDeployMessage(msg, hcsMsg, topicId, isPrivate);\n break;\n case 'mint':\n this.processMintMessage(msg, hcsMsg, topicId, isPrivate);\n break;\n case 'transfer':\n this.processTransferMessage(msg, hcsMsg, topicId, isPrivate);\n break;\n case 'burn':\n this.processBurnMessage(msg, hcsMsg, topicId, isPrivate);\n break;\n }\n }\n\n /**\n * Process deploy message\n */\n private processDeployMessage(\n msg: HCS20DeployMessage,\n hcsMsg: TopicMessageMeta,\n topicId: string,\n isPrivate: boolean,\n ): void {\n const normalizedTick = this.normalizeTick(msg.tick);\n if (this.state.deployedPoints.has(normalizedTick)) {\n return;\n }\n const pointsInfo: PointsInfo = {\n name: msg.name,\n tick: normalizedTick,\n maxSupply: msg.max,\n limitPerMint: msg.lim,\n metadata: msg.metadata,\n topicId,\n deployerAccountId: hcsMsg.payer_account_id,\n currentSupply: '0',\n deploymentTimestamp: hcsMsg.consensus_timestamp,\n isPrivate,\n };\n\n this.state.deployedPoints.set(normalizedTick, pointsInfo);\n this.logger.info(`Deployed points: ${normalizedTick}`);\n }\n\n /**\n * Process mint message\n */\n private processMintMessage(\n msg: HCS20MintMessage,\n hcsMsg: TopicMessageMeta,\n topicId: string,\n isPrivate: boolean,\n ): void {\n const normalizedTick = this.normalizeTick(msg.tick);\n const pointsInfo = this.state.deployedPoints.get(normalizedTick);\n\n if (!pointsInfo) return;\n const mintAmount = BigInt(msg.amt);\n const currentSupply = BigInt(pointsInfo.currentSupply);\n const maxSupply = BigInt(pointsInfo.maxSupply);\n\n if (currentSupply + mintAmount > maxSupply) return;\n\n if (pointsInfo.limitPerMint && mintAmount > BigInt(pointsInfo.limitPerMint))\n return;\n pointsInfo.currentSupply = (currentSupply + mintAmount).toString();\n let tickBalances = this.state.balances.get(normalizedTick);\n if (!tickBalances) {\n tickBalances = new Map();\n this.state.balances.set(normalizedTick, tickBalances);\n }\n\n const currentBalance = tickBalances.get(msg.to);\n const newBalance = currentBalance\n ? (BigInt(currentBalance.balance) + mintAmount).toString()\n : msg.amt;\n\n tickBalances.set(msg.to, {\n tick: normalizedTick,\n accountId: msg.to,\n balance: newBalance,\n lastUpdated: hcsMsg.consensus_timestamp,\n });\n this.state.transactions.push({\n id: hcsMsg.transaction_id || `${topicId}-${hcsMsg.sequence_number}`,\n operation: 'mint',\n tick: normalizedTick,\n amount: msg.amt,\n to: msg.to,\n timestamp: hcsMsg.consensus_timestamp,\n sequenceNumber: hcsMsg.sequence_number,\n topicId,\n transactionId: hcsMsg.transaction_id || '',\n memo: msg.m,\n });\n }\n\n /**\n * Process transfer message\n */\n private processTransferMessage(\n msg: HCS20TransferMessage,\n hcsMsg: TopicMessageMeta,\n topicId: string,\n isPrivate: boolean,\n ): void {\n const normalizedTick = this.normalizeTick(msg.tick);\n const tickBalances = this.state.balances.get(normalizedTick);\n\n if (!tickBalances) return;\n if (!isPrivate && hcsMsg.payer_account_id !== msg.from) return;\n\n const senderBalance = tickBalances.get(msg.from);\n if (!senderBalance || BigInt(senderBalance.balance) < BigInt(msg.amt))\n return;\n const transferAmount = BigInt(msg.amt);\n\n senderBalance.balance = (\n BigInt(senderBalance.balance) - transferAmount\n ).toString();\n senderBalance.lastUpdated = hcsMsg.consensus_timestamp;\n\n const receiverBalance = tickBalances.get(msg.to);\n if (receiverBalance) {\n receiverBalance.balance = (\n BigInt(receiverBalance.balance) + transferAmount\n ).toString();\n receiverBalance.lastUpdated = hcsMsg.consensus_timestamp;\n } else {\n tickBalances.set(msg.to, {\n tick: normalizedTick,\n accountId: msg.to,\n balance: msg.amt,\n lastUpdated: hcsMsg.consensus_timestamp,\n });\n }\n this.state.transactions.push({\n id: hcsMsg.transaction_id || `${topicId}-${hcsMsg.sequence_number}`,\n operation: 'transfer',\n tick: normalizedTick,\n amount: msg.amt,\n from: msg.from,\n to: msg.to,\n timestamp: hcsMsg.consensus_timestamp,\n sequenceNumber: hcsMsg.sequence_number,\n topicId,\n transactionId: hcsMsg.transaction_id || '',\n memo: msg.m,\n });\n }\n\n /**\n * Process burn message\n */\n private processBurnMessage(\n msg: HCS20BurnMessage,\n hcsMsg: TopicMessageMeta,\n topicId: string,\n isPrivate: boolean,\n ): void {\n const normalizedTick = this.normalizeTick(msg.tick);\n const pointsInfo = this.state.deployedPoints.get(normalizedTick);\n const tickBalances = this.state.balances.get(normalizedTick);\n\n if (!pointsInfo || !tickBalances) return;\n if (!isPrivate && hcsMsg.payer_account_id !== msg.from) return;\n\n const accountBalance = tickBalances.get(msg.from);\n if (!accountBalance || BigInt(accountBalance.balance) < BigInt(msg.amt))\n return;\n const burnAmount = BigInt(msg.amt);\n\n accountBalance.balance = (\n BigInt(accountBalance.balance) - burnAmount\n ).toString();\n accountBalance.lastUpdated = hcsMsg.consensus_timestamp;\n\n pointsInfo.currentSupply = (\n BigInt(pointsInfo.currentSupply) - burnAmount\n ).toString();\n this.state.transactions.push({\n id: hcsMsg.transaction_id || `${topicId}-${hcsMsg.sequence_number}`,\n operation: 'burn',\n tick: normalizedTick,\n amount: msg.amt,\n from: msg.from,\n timestamp: hcsMsg.consensus_timestamp,\n sequenceNumber: hcsMsg.sequence_number,\n topicId,\n transactionId: hcsMsg.transaction_id || '',\n memo: msg.m,\n });\n }\n\n /**\n * Normalize tick to lowercase and trim\n */\n private normalizeTick(tick: string): string {\n return tick.toLowerCase().trim();\n }\n}\n"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { buildMessageTx } from "./standards-sdk.es136.js";
1
+ import { buildMessageTx } from "./standards-sdk.es137.js";
2
2
  function buildHcs20SubmitMessageTx(params) {
3
3
  const msg = typeof params.payload === "string" ? params.payload : JSON.stringify(params.payload);
4
4
  return buildMessageTx({
@@ -1,4 +1,4 @@
1
- import { buildTopicCreateTx, buildMessageTx } from "./standards-sdk.es136.js";
1
+ import { buildTopicCreateTx, buildMessageTx } from "./standards-sdk.es137.js";
2
2
  import { HCS6Operation } from "./standards-sdk.es4.js";
3
3
  function encodeHcs6NonIndexedMemo(ttl) {
4
4
  return `hcs-6:1:${ttl}`;