@hashgraphonline/standards-sdk 0.1.141-canary.2 → 0.1.141-canary.20

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 (242) hide show
  1. package/README.md +13 -1
  2. package/dist/cjs/hcs-16/base-client.d.ts.map +1 -1
  3. package/dist/cjs/hcs-17/types.d.ts.map +1 -1
  4. package/dist/cjs/hcs-21/base-client.d.ts +4 -3
  5. package/dist/cjs/hcs-21/base-client.d.ts.map +1 -1
  6. package/dist/cjs/hcs-21/index.d.ts +1 -0
  7. package/dist/cjs/hcs-21/index.d.ts.map +1 -1
  8. package/dist/cjs/hcs-21/sdk.d.ts.map +1 -1
  9. package/dist/cjs/hcs-21/tx.d.ts.map +1 -1
  10. package/dist/cjs/hcs-21/types.d.ts +135 -64
  11. package/dist/cjs/hcs-21/types.d.ts.map +1 -1
  12. package/dist/cjs/hcs-21/verify.d.ts +6 -0
  13. package/dist/cjs/hcs-21/verify.d.ts.map +1 -0
  14. package/dist/cjs/inscribe/inscriber.d.ts +1 -0
  15. package/dist/cjs/inscribe/inscriber.d.ts.map +1 -1
  16. package/dist/cjs/inscribe/quote-cache.d.ts.map +1 -1
  17. package/dist/cjs/services/registry-broker/client.d.ts +4 -3
  18. package/dist/cjs/services/registry-broker/client.d.ts.map +1 -1
  19. package/dist/cjs/services/registry-broker/private-key-signer.d.ts.map +1 -1
  20. package/dist/cjs/services/registry-broker/schemas.d.ts +38 -38
  21. package/dist/cjs/services/registry-broker/schemas.d.ts.map +1 -1
  22. package/dist/cjs/standards-sdk.cjs +2 -2
  23. package/dist/cjs/standards-sdk.cjs.map +1 -1
  24. package/dist/cjs/utils/dynamic-import.d.ts +1 -0
  25. package/dist/cjs/utils/dynamic-import.d.ts.map +1 -1
  26. package/dist/es/hcs-16/base-client.d.ts.map +1 -1
  27. package/dist/es/hcs-17/types.d.ts.map +1 -1
  28. package/dist/es/hcs-21/base-client.d.ts +4 -3
  29. package/dist/es/hcs-21/base-client.d.ts.map +1 -1
  30. package/dist/es/hcs-21/index.d.ts +1 -0
  31. package/dist/es/hcs-21/index.d.ts.map +1 -1
  32. package/dist/es/hcs-21/sdk.d.ts.map +1 -1
  33. package/dist/es/hcs-21/tx.d.ts.map +1 -1
  34. package/dist/es/hcs-21/types.d.ts +135 -64
  35. package/dist/es/hcs-21/types.d.ts.map +1 -1
  36. package/dist/es/hcs-21/verify.d.ts +6 -0
  37. package/dist/es/hcs-21/verify.d.ts.map +1 -0
  38. package/dist/es/inscribe/inscriber.d.ts +1 -0
  39. package/dist/es/inscribe/inscriber.d.ts.map +1 -1
  40. package/dist/es/inscribe/quote-cache.d.ts.map +1 -1
  41. package/dist/es/services/registry-broker/client.d.ts +4 -3
  42. package/dist/es/services/registry-broker/client.d.ts.map +1 -1
  43. package/dist/es/services/registry-broker/private-key-signer.d.ts.map +1 -1
  44. package/dist/es/services/registry-broker/schemas.d.ts +38 -38
  45. package/dist/es/services/registry-broker/schemas.d.ts.map +1 -1
  46. package/dist/es/standards-sdk.es.js +58 -50
  47. package/dist/es/standards-sdk.es.js.map +1 -1
  48. package/dist/es/standards-sdk.es10.js +2 -2
  49. package/dist/es/standards-sdk.es100.js +26 -229
  50. package/dist/es/standards-sdk.es100.js.map +1 -1
  51. package/dist/es/standards-sdk.es101.js +228 -109
  52. package/dist/es/standards-sdk.es101.js.map +1 -1
  53. package/dist/es/standards-sdk.es102.js +94 -15
  54. package/dist/es/standards-sdk.es102.js.map +1 -1
  55. package/dist/es/standards-sdk.es103.js +30 -80
  56. package/dist/es/standards-sdk.es103.js.map +1 -1
  57. package/dist/es/standards-sdk.es104.js +80 -27
  58. package/dist/es/standards-sdk.es104.js.map +1 -1
  59. package/dist/es/standards-sdk.es105.js +25 -136
  60. package/dist/es/standards-sdk.es105.js.map +1 -1
  61. package/dist/es/standards-sdk.es106.js +140 -27
  62. package/dist/es/standards-sdk.es106.js.map +1 -1
  63. package/dist/es/standards-sdk.es107.js +27 -20
  64. package/dist/es/standards-sdk.es107.js.map +1 -1
  65. package/dist/es/standards-sdk.es108.js +18 -156
  66. package/dist/es/standards-sdk.es108.js.map +1 -1
  67. package/dist/es/standards-sdk.es109.js +148 -196
  68. package/dist/es/standards-sdk.es109.js.map +1 -1
  69. package/dist/es/standards-sdk.es110.js +160 -747
  70. package/dist/es/standards-sdk.es110.js.map +1 -1
  71. package/dist/es/standards-sdk.es111.js +786 -9
  72. package/dist/es/standards-sdk.es111.js.map +1 -1
  73. package/dist/es/standards-sdk.es112.js +13 -567
  74. package/dist/es/standards-sdk.es112.js.map +1 -1
  75. package/dist/es/standards-sdk.es113.js +541 -576
  76. package/dist/es/standards-sdk.es113.js.map +1 -1
  77. package/dist/es/standards-sdk.es114.js +601 -12
  78. package/dist/es/standards-sdk.es114.js.map +1 -1
  79. package/dist/es/standards-sdk.es115.js +13 -2
  80. package/dist/es/standards-sdk.es115.js.map +1 -1
  81. package/dist/es/standards-sdk.es116.js +2 -83
  82. package/dist/es/standards-sdk.es116.js.map +1 -1
  83. package/dist/es/standards-sdk.es117.js +80 -36
  84. package/dist/es/standards-sdk.es117.js.map +1 -1
  85. package/dist/es/standards-sdk.es118.js +39 -2
  86. package/dist/es/standards-sdk.es118.js.map +1 -1
  87. package/dist/es/standards-sdk.es119.js +2 -223
  88. package/dist/es/standards-sdk.es119.js.map +1 -1
  89. package/dist/es/standards-sdk.es12.js +1 -1
  90. package/dist/es/standards-sdk.es120.js +193 -1110
  91. package/dist/es/standards-sdk.es120.js.map +1 -1
  92. package/dist/es/standards-sdk.es121.js +1059 -225
  93. package/dist/es/standards-sdk.es121.js.map +1 -1
  94. package/dist/es/standards-sdk.es122.js +303 -419
  95. package/dist/es/standards-sdk.es122.js.map +1 -1
  96. package/dist/es/standards-sdk.es123.js +418 -351
  97. package/dist/es/standards-sdk.es123.js.map +1 -1
  98. package/dist/es/standards-sdk.es124.js +348 -785
  99. package/dist/es/standards-sdk.es124.js.map +1 -1
  100. package/dist/es/standards-sdk.es125.js +748 -183
  101. package/dist/es/standards-sdk.es125.js.map +1 -1
  102. package/dist/es/standards-sdk.es126.js +153 -1512
  103. package/dist/es/standards-sdk.es126.js.map +1 -1
  104. package/dist/es/standards-sdk.es127.js +1373 -1977
  105. package/dist/es/standards-sdk.es127.js.map +1 -1
  106. package/dist/es/standards-sdk.es128.js +2206 -50
  107. package/dist/es/standards-sdk.es128.js.map +1 -1
  108. package/dist/es/standards-sdk.es129.js +59 -79
  109. package/dist/es/standards-sdk.es129.js.map +1 -1
  110. package/dist/es/standards-sdk.es13.js +1 -1
  111. package/dist/es/standards-sdk.es130.js +80 -152
  112. package/dist/es/standards-sdk.es130.js.map +1 -1
  113. package/dist/es/standards-sdk.es131.js +159 -7
  114. package/dist/es/standards-sdk.es131.js.map +1 -1
  115. package/dist/es/standards-sdk.es132.js +7 -86
  116. package/dist/es/standards-sdk.es132.js.map +1 -1
  117. package/dist/es/standards-sdk.es133.js +65 -44
  118. package/dist/es/standards-sdk.es133.js.map +1 -1
  119. package/dist/es/standards-sdk.es134.js +65 -28
  120. package/dist/es/standards-sdk.es134.js.map +1 -1
  121. package/dist/es/standards-sdk.es135.js +69 -125
  122. package/dist/es/standards-sdk.es135.js.map +1 -1
  123. package/dist/es/standards-sdk.es136.js +28 -42
  124. package/dist/es/standards-sdk.es136.js.map +1 -1
  125. package/dist/es/standards-sdk.es137.js +2 -2
  126. package/dist/es/standards-sdk.es138.js +138 -760
  127. package/dist/es/standards-sdk.es138.js.map +1 -1
  128. package/dist/es/standards-sdk.es139.js +746 -12254
  129. package/dist/es/standards-sdk.es139.js.map +1 -1
  130. package/dist/es/standards-sdk.es14.js +1 -1
  131. package/dist/es/standards-sdk.es140.js +12235 -133
  132. package/dist/es/standards-sdk.es140.js.map +1 -1
  133. package/dist/es/standards-sdk.es141.js +34 -314
  134. package/dist/es/standards-sdk.es141.js.map +1 -1
  135. package/dist/es/standards-sdk.es142.js +55 -345
  136. package/dist/es/standards-sdk.es142.js.map +1 -1
  137. package/dist/es/standards-sdk.es143.js +129 -410
  138. package/dist/es/standards-sdk.es143.js.map +1 -1
  139. package/dist/es/standards-sdk.es144.js +200 -209
  140. package/dist/es/standards-sdk.es144.js.map +1 -1
  141. package/dist/es/standards-sdk.es145.js +334 -64
  142. package/dist/es/standards-sdk.es145.js.map +1 -1
  143. package/dist/es/standards-sdk.es146.js +452 -55
  144. package/dist/es/standards-sdk.es146.js.map +1 -1
  145. package/dist/es/standards-sdk.es147.js +319 -52
  146. package/dist/es/standards-sdk.es147.js.map +1 -1
  147. package/dist/es/standards-sdk.es148.js +79 -0
  148. package/dist/es/standards-sdk.es148.js.map +1 -0
  149. package/dist/es/standards-sdk.es15.js +1 -1
  150. package/dist/es/standards-sdk.es16.js +1 -1
  151. package/dist/es/standards-sdk.es17.js +5 -10
  152. package/dist/es/standards-sdk.es17.js.map +1 -1
  153. package/dist/es/standards-sdk.es19.js +12 -16
  154. package/dist/es/standards-sdk.es19.js.map +1 -1
  155. package/dist/es/standards-sdk.es2.js +26 -72
  156. package/dist/es/standards-sdk.es2.js.map +1 -1
  157. package/dist/es/standards-sdk.es20.js +9 -13
  158. package/dist/es/standards-sdk.es20.js.map +1 -1
  159. package/dist/es/standards-sdk.es21.js +1 -1
  160. package/dist/es/standards-sdk.es22.js +1 -1
  161. package/dist/es/standards-sdk.es23.js +1 -1
  162. package/dist/es/standards-sdk.es24.js +1 -1
  163. package/dist/es/standards-sdk.es25.js +1 -1
  164. package/dist/es/standards-sdk.es26.js +1 -1
  165. package/dist/es/standards-sdk.es27.js +1 -1
  166. package/dist/es/standards-sdk.es28.js +12 -16
  167. package/dist/es/standards-sdk.es28.js.map +1 -1
  168. package/dist/es/standards-sdk.es3.js +2 -2
  169. package/dist/es/standards-sdk.es31.js +2 -2
  170. package/dist/es/standards-sdk.es32.js +4 -4
  171. package/dist/es/standards-sdk.es33.js +1 -1
  172. package/dist/es/standards-sdk.es36.js +7 -12
  173. package/dist/es/standards-sdk.es36.js.map +1 -1
  174. package/dist/es/standards-sdk.es37.js +4 -4
  175. package/dist/es/standards-sdk.es38.js +2 -2
  176. package/dist/es/standards-sdk.es39.js +2 -2
  177. package/dist/es/standards-sdk.es40.js +1 -1
  178. package/dist/es/standards-sdk.es41.js +1 -1
  179. package/dist/es/standards-sdk.es42.js +2 -2
  180. package/dist/es/standards-sdk.es47.js +1 -1
  181. package/dist/es/standards-sdk.es5.js +2 -2
  182. package/dist/es/standards-sdk.es52.js +1 -1
  183. package/dist/es/standards-sdk.es54.js +1 -1
  184. package/dist/es/standards-sdk.es57.js +2 -2
  185. package/dist/es/standards-sdk.es59.js +1 -1
  186. package/dist/es/standards-sdk.es6.js +2 -2
  187. package/dist/es/standards-sdk.es60.js +1 -1
  188. package/dist/es/standards-sdk.es61.js +7 -11
  189. package/dist/es/standards-sdk.es61.js.map +1 -1
  190. package/dist/es/standards-sdk.es63.js +1 -1
  191. package/dist/es/standards-sdk.es65.js +1 -1
  192. package/dist/es/standards-sdk.es66.js +2 -2
  193. package/dist/es/standards-sdk.es69.js +2 -2
  194. package/dist/es/standards-sdk.es7.js +2 -2
  195. package/dist/es/standards-sdk.es70.js +3 -3
  196. package/dist/es/standards-sdk.es71.js +2 -2
  197. package/dist/es/standards-sdk.es72.js +1 -1
  198. package/dist/es/standards-sdk.es75.js +2 -2
  199. package/dist/es/standards-sdk.es77.js +2 -2
  200. package/dist/es/standards-sdk.es78.js +4 -10
  201. package/dist/es/standards-sdk.es78.js.map +1 -1
  202. package/dist/es/standards-sdk.es79.js +1 -1
  203. package/dist/es/standards-sdk.es8.js +1 -1
  204. package/dist/es/standards-sdk.es80.js +26 -15
  205. package/dist/es/standards-sdk.es80.js.map +1 -1
  206. package/dist/es/standards-sdk.es82.js +12 -4
  207. package/dist/es/standards-sdk.es82.js.map +1 -1
  208. package/dist/es/standards-sdk.es83.js +7 -6
  209. package/dist/es/standards-sdk.es83.js.map +1 -1
  210. package/dist/es/standards-sdk.es84.js +7 -5
  211. package/dist/es/standards-sdk.es84.js.map +1 -1
  212. package/dist/es/standards-sdk.es86.js +55 -21
  213. package/dist/es/standards-sdk.es86.js.map +1 -1
  214. package/dist/es/standards-sdk.es87.js +22 -75
  215. package/dist/es/standards-sdk.es87.js.map +1 -1
  216. package/dist/es/standards-sdk.es88.js +45 -30
  217. package/dist/es/standards-sdk.es88.js.map +1 -1
  218. package/dist/es/standards-sdk.es89.js +57 -22
  219. package/dist/es/standards-sdk.es89.js.map +1 -1
  220. package/dist/es/standards-sdk.es90.js +28 -23
  221. package/dist/es/standards-sdk.es90.js.map +1 -1
  222. package/dist/es/standards-sdk.es91.js +23 -167
  223. package/dist/es/standards-sdk.es91.js.map +1 -1
  224. package/dist/es/standards-sdk.es92.js +158 -119
  225. package/dist/es/standards-sdk.es92.js.map +1 -1
  226. package/dist/es/standards-sdk.es93.js +68 -95
  227. package/dist/es/standards-sdk.es93.js.map +1 -1
  228. package/dist/es/standards-sdk.es94.js +136 -119
  229. package/dist/es/standards-sdk.es94.js.map +1 -1
  230. package/dist/es/standards-sdk.es95.js +139 -39
  231. package/dist/es/standards-sdk.es95.js.map +1 -1
  232. package/dist/es/standards-sdk.es96.js +42 -257
  233. package/dist/es/standards-sdk.es96.js.map +1 -1
  234. package/dist/es/standards-sdk.es97.js +243 -80
  235. package/dist/es/standards-sdk.es97.js.map +1 -1
  236. package/dist/es/standards-sdk.es98.js +47 -48
  237. package/dist/es/standards-sdk.es98.js.map +1 -1
  238. package/dist/es/standards-sdk.es99.js +100 -28
  239. package/dist/es/standards-sdk.es99.js.map +1 -1
  240. package/dist/es/utils/dynamic-import.d.ts +1 -0
  241. package/dist/es/utils/dynamic-import.d.ts.map +1 -1
  242. package/package.json +63 -61
@@ -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.es138.js";
17
+ import "./standards-sdk.es130.js";
18
+ import "./standards-sdk.es139.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.es138.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,4 +1,4 @@
1
- import { optionalImport } from "./standards-sdk.es147.js";
1
+ import { optionalImport } from "./standards-sdk.es135.js";
2
2
  const hieroRegistrarModuleId = ["@hiero-did-sdk", "registrar"].join("/");
3
3
  let registrarPromise = null;
4
4
  async function loadCreateDID() {
@@ -1,7 +1,7 @@
1
1
  import { HCS5BaseClient } from "./standards-sdk.es137.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
1
  import { HCS5BaseClient } from "./standards-sdk.es137.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.es138.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.es138.js";
5
+ import { buildMessageTx } from "./standards-sdk.es141.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.es141.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.es141.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,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.es138.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 {
@@ -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.es138.js";
7
+ import "./standards-sdk.es130.js";
8
+ import "./standards-sdk.es139.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.es141.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.es141.js";
2
2
  import { HCS6Operation } from "./standards-sdk.es4.js";
3
3
  function encodeHcs6NonIndexedMemo(ttl) {
4
4
  return `hcs-6:1:${ttl}`;
@@ -1,8 +1,10 @@
1
1
  import { z } from "zod";
2
2
  const HCS21_PROTOCOL = "hcs-21";
3
3
  const HCS21_MAX_MESSAGE_BYTES = 1024;
4
- const HCS21ManifestPointerPattern = /^hcs:\/\/1\/0\.0\.\d+\/\d+$/;
4
+ const HCS21_SAFE_MESSAGE_BYTES = 1e3;
5
+ const HCS21ManifestPointerPattern = /^(?:hcs:\/\/1\/0\.0\.\d+(?:\/\d+)?|ipfs:\/\/[a-zA-Z0-9]+|ar:\/\/[a-zA-Z0-9]+|oci:\/\/.+|https?:\/\/.+)$/;
5
6
  const HCS21TopicIdPattern = /^0\.0\.\d+$/;
7
+ const HCS21MetadataPointerPattern = /^(?:0\.0\.\d+|hcs:\/\/1\/0\.0\.\d+(?:\/\d+)?|ipfs:\/\/[a-zA-Z0-9]+|ar:\/\/[a-zA-Z0-9]+|oci:\/\/.+|https?:\/\/.+)$/;
6
8
  var HCS21TopicType = /* @__PURE__ */ ((HCS21TopicType2) => {
7
9
  HCS21TopicType2[HCS21TopicType2["ADAPTER_REGISTRY"] = 0] = "ADAPTER_REGISTRY";
8
10
  HCS21TopicType2[HCS21TopicType2["REGISTRY_OF_REGISTRIES"] = 1] = "REGISTRY_OF_REGISTRIES";
@@ -14,13 +16,14 @@ const adapterPackageSchema = z.object({
14
16
  version: z.string().min(1),
15
17
  integrity: z.string().min(1)
16
18
  });
17
- const floraContextSchema = z.object({
18
- account: z.string().min(1),
19
- threshold: z.string().min(1),
20
- ctopic: z.string().min(1),
21
- ttopic: z.string().min(1),
22
- stopic: z.string().min(1)
23
- });
19
+ const adapterConfigContextSchema = z.object({
20
+ type: z.string().min(1),
21
+ account: z.string().min(1).optional(),
22
+ threshold: z.string().min(1).optional(),
23
+ ctopic: z.string().min(1).optional(),
24
+ ttopic: z.string().min(1).optional(),
25
+ stopic: z.string().min(1).optional()
26
+ }).catchall(z.unknown());
24
27
  const adapterDeclarationSchema = z.object({
25
28
  p: z.literal(HCS21_PROTOCOL),
26
29
  op: z.enum(["register", "update", "delete"]),
@@ -29,17 +32,18 @@ const adapterDeclarationSchema = z.object({
29
32
  package: adapterPackageSchema,
30
33
  manifest: z.string().regex(
31
34
  HCS21ManifestPointerPattern,
32
- "manifest must be an HCS-1 HRL (hcs://1/<topicId>/<sequence>)"
35
+ "manifest must be a resolvable URI (hcs://1/<topicId>[/sequence], ipfs://, ar://, oci://, https://)"
33
36
  ),
34
- flora: floraContextSchema,
35
- state_model: z.string().min(1),
37
+ manifest_sequence: z.number().int().positive().optional(),
38
+ config: adapterConfigContextSchema,
39
+ state_model: z.string().min(1).optional(),
36
40
  signature: z.string().min(1).optional()
37
41
  });
38
42
  const adapterManifestSchema = z.object({
39
43
  meta: z.object({
40
44
  spec_version: z.string().min(1),
41
45
  adapter_version: z.string().min(1),
42
- minimum_flora_version: z.string().min(1),
46
+ minimum_flora_version: z.string().min(1).optional(),
43
47
  generated: z.string().min(1)
44
48
  }),
45
49
  adapter: z.object({
@@ -74,10 +78,15 @@ const adapterManifestSchema = z.object({
74
78
  capabilities: z.object({
75
79
  discovery: z.boolean(),
76
80
  communication: z.boolean(),
77
- protocols: z.array(z.string().min(1))
81
+ protocols: z.array(z.string().min(1)),
82
+ discovery_tags: z.array(z.string().min(1)).optional(),
83
+ communication_channels: z.array(z.string().min(1)).optional(),
84
+ extras: z.record(z.string(), z.unknown()).optional()
78
85
  }),
79
86
  consensus: z.object({
80
- entity_schema: z.string().min(1),
87
+ state_model: z.string().min(1).optional(),
88
+ profile_uri: z.string().min(1).optional(),
89
+ entity_schema: z.string().min(1).optional(),
81
90
  required_fields: z.array(z.string().min(1)),
82
91
  hashing: z.literal("sha384")
83
92
  })
@@ -102,14 +111,16 @@ const metadataDocumentSchema = z.union([
102
111
  ]);
103
112
  export {
104
113
  HCS21ManifestPointerPattern,
114
+ HCS21MetadataPointerPattern,
105
115
  HCS21TopicIdPattern,
106
116
  HCS21TopicType,
107
117
  HCS21_MAX_MESSAGE_BYTES,
108
118
  HCS21_PROTOCOL,
119
+ HCS21_SAFE_MESSAGE_BYTES,
120
+ adapterConfigContextSchema,
109
121
  adapterDeclarationSchema,
110
122
  adapterManifestSchema,
111
123
  adapterPackageSchema,
112
- floraContextSchema,
113
124
  metadataDocumentSchema,
114
125
  registryMetadataSchema
115
126
  };
@@ -1 +1 @@
1
- {"version":3,"file":"standards-sdk.es80.js","sources":["../../src/hcs-21/types.ts"],"sourcesContent":["import { z } from 'zod';\n\nexport const HCS21_PROTOCOL = 'hcs-21';\nexport const HCS21_MAX_MESSAGE_BYTES = 1024;\nexport const HCS21ManifestPointerPattern = /^hcs:\\/\\/1\\/0\\.0\\.\\d+\\/\\d+$/;\nexport const HCS21TopicIdPattern = /^0\\.0\\.\\d+$/;\n\nexport type HCS21Operation = 'register' | 'update' | 'delete';\n\nexport interface AdapterPackage {\n registry: string;\n name: string;\n version: string;\n integrity: string;\n}\n\nexport interface FloraContext {\n account: string;\n threshold: string;\n ctopic: string;\n ttopic: string;\n stopic: string;\n}\n\nexport interface AdapterDeclaration {\n p: typeof HCS21_PROTOCOL;\n op: HCS21Operation;\n adapter_id: string;\n entity: string;\n package: AdapterPackage;\n manifest: string;\n flora: FloraContext;\n state_model: string;\n signature?: string;\n}\n\nexport interface AdapterDeclarationEnvelope {\n declaration: AdapterDeclaration;\n consensusTimestamp?: string;\n sequenceNumber: number;\n payer?: string;\n}\n\nexport enum HCS21TopicType {\n ADAPTER_REGISTRY = 0,\n REGISTRY_OF_REGISTRIES = 1,\n}\n\nexport interface ManifestPointer {\n pointer: string;\n topicId: string;\n sequenceNumber: number;\n jobId?: string;\n transactionId?: string;\n}\n\nexport const adapterPackageSchema = z.object({\n registry: z.string().min(1),\n name: z.string().min(1),\n version: z.string().min(1),\n integrity: z.string().min(1),\n});\n\nexport const floraContextSchema = z.object({\n account: z.string().min(1),\n threshold: z.string().min(1),\n ctopic: z.string().min(1),\n ttopic: z.string().min(1),\n stopic: z.string().min(1),\n});\n\nexport const adapterDeclarationSchema = z.object({\n p: z.literal(HCS21_PROTOCOL),\n op: z.enum(['register', 'update', 'delete']),\n adapter_id: z.string().min(1),\n entity: z.string().min(1),\n package: adapterPackageSchema,\n manifest: z\n .string()\n .regex(\n HCS21ManifestPointerPattern,\n 'manifest must be an HCS-1 HRL (hcs://1/<topicId>/<sequence>)',\n ),\n flora: floraContextSchema,\n state_model: z.string().min(1),\n signature: z.string().min(1).optional(),\n});\n\nexport const adapterManifestSchema = z.object({\n meta: z.object({\n spec_version: z.string().min(1),\n adapter_version: z.string().min(1),\n minimum_flora_version: z.string().min(1),\n generated: z.string().min(1),\n }),\n adapter: z.object({\n name: z.string().min(1),\n id: z.string().min(1),\n maintainers: z\n .array(\n z.object({\n name: z.string().min(1),\n contact: z.string().min(1),\n }),\n )\n .min(1),\n license: z.string().min(1),\n }),\n package: z.object({\n registry: z.string().min(1),\n dist_tag: z.string().min(1).optional(),\n artifacts: z\n .array(\n z.object({\n url: z.string().min(1),\n digest: z.string().min(1),\n signature: z.string().min(1).optional(),\n }),\n )\n .min(1),\n }),\n runtime: z.object({\n platforms: z.array(z.string().min(1)).min(1),\n primary: z.string().min(1),\n entry: z.string().min(1),\n dependencies: z.array(z.string().min(1)).optional(),\n env: z.array(z.string().min(1)).optional(),\n }),\n capabilities: z.object({\n discovery: z.boolean(),\n communication: z.boolean(),\n protocols: z.array(z.string().min(1)),\n }),\n consensus: z.object({\n entity_schema: z.string().min(1),\n required_fields: z.array(z.string().min(1)),\n hashing: z.literal('sha384'),\n }),\n});\n\nexport const registryMetadataSchema = z.object({\n version: z.string().min(1),\n name: z.string().min(1),\n description: z.string().min(1),\n operator: z.object({\n account: z.string().min(1),\n name: z.string().optional(),\n contact: z.string().optional(),\n }),\n entityTypes: z.array(z.string().min(1)),\n categories: z.array(z.string().min(1)).optional(),\n tags: z.array(z.string().min(1)).optional(),\n links: z.record(z.string().min(1)).optional(),\n});\n\nexport const metadataDocumentSchema = z.union([\n adapterManifestSchema,\n registryMetadataSchema,\n]);\n\nexport type AdapterDeclarationValidation = z.infer<\n typeof adapterDeclarationSchema\n>;\nexport type AdapterManifest = z.infer<typeof adapterManifestSchema>;\nexport type RegistryMetadataRecord = z.infer<typeof registryMetadataSchema>;\nexport type HCS21MetadataDocument = AdapterManifest | RegistryMetadataRecord;\n"],"names":["HCS21TopicType"],"mappings":"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"}
1
+ {"version":3,"file":"standards-sdk.es80.js","sources":["../../src/hcs-21/types.ts"],"sourcesContent":["import { z } from 'zod';\n\nexport const HCS21_PROTOCOL = 'hcs-21';\nexport const HCS21_MAX_MESSAGE_BYTES = 1024;\nexport const HCS21_SAFE_MESSAGE_BYTES = 1000;\nexport const HCS21ManifestPointerPattern =\n /^(?:hcs:\\/\\/1\\/0\\.0\\.\\d+(?:\\/\\d+)?|ipfs:\\/\\/[a-zA-Z0-9]+|ar:\\/\\/[a-zA-Z0-9]+|oci:\\/\\/.+|https?:\\/\\/.+)$/;\nexport const HCS21TopicIdPattern = /^0\\.0\\.\\d+$/;\nexport const HCS21MetadataPointerPattern =\n /^(?:0\\.0\\.\\d+|hcs:\\/\\/1\\/0\\.0\\.\\d+(?:\\/\\d+)?|ipfs:\\/\\/[a-zA-Z0-9]+|ar:\\/\\/[a-zA-Z0-9]+|oci:\\/\\/.+|https?:\\/\\/.+)$/;\n\nexport type HCS21Operation = 'register' | 'update' | 'delete';\n\nexport interface AdapterPackage {\n registry: string;\n name: string;\n version: string;\n integrity: string;\n}\n\nexport interface AdapterConfigContext {\n type: string;\n account?: string;\n threshold?: string;\n ctopic?: string;\n ttopic?: string;\n stopic?: string;\n [key: string]: unknown;\n}\n\nexport interface AdapterDeclaration {\n p: typeof HCS21_PROTOCOL;\n op: HCS21Operation;\n adapter_id: string;\n entity: string;\n package: AdapterPackage;\n manifest: string;\n manifest_sequence?: number;\n config: AdapterConfigContext;\n state_model?: string;\n signature?: string;\n}\n\nexport interface AdapterDeclarationEnvelope {\n declaration: AdapterDeclaration;\n consensusTimestamp?: string;\n sequenceNumber: number;\n payer?: string;\n}\n\nexport enum HCS21TopicType {\n ADAPTER_REGISTRY = 0,\n REGISTRY_OF_REGISTRIES = 1,\n}\n\nexport interface ManifestPointer {\n pointer: string;\n topicId: string;\n sequenceNumber: number;\n manifestSequence?: number;\n jobId?: string;\n transactionId?: string;\n}\n\nexport const adapterPackageSchema = z.object({\n registry: z.string().min(1),\n name: z.string().min(1),\n version: z.string().min(1),\n integrity: z.string().min(1),\n});\n\nexport const adapterConfigContextSchema = z\n .object({\n type: z.string().min(1),\n account: z.string().min(1).optional(),\n threshold: z.string().min(1).optional(),\n ctopic: z.string().min(1).optional(),\n ttopic: z.string().min(1).optional(),\n stopic: z.string().min(1).optional(),\n })\n .catchall(z.unknown());\n\nexport const adapterDeclarationSchema = z.object({\n p: z.literal(HCS21_PROTOCOL),\n op: z.enum(['register', 'update', 'delete']),\n adapter_id: z.string().min(1),\n entity: z.string().min(1),\n package: adapterPackageSchema,\n manifest: z\n .string()\n .regex(\n HCS21ManifestPointerPattern,\n 'manifest must be a resolvable URI (hcs://1/<topicId>[/sequence], ipfs://, ar://, oci://, https://)',\n ),\n manifest_sequence: z.number().int().positive().optional(),\n config: adapterConfigContextSchema,\n state_model: z.string().min(1).optional(),\n signature: z.string().min(1).optional(),\n});\n\nexport const adapterManifestSchema = z.object({\n meta: z.object({\n spec_version: z.string().min(1),\n adapter_version: z.string().min(1),\n minimum_flora_version: z.string().min(1).optional(),\n generated: z.string().min(1),\n }),\n adapter: z.object({\n name: z.string().min(1),\n id: z.string().min(1),\n maintainers: z\n .array(\n z.object({\n name: z.string().min(1),\n contact: z.string().min(1),\n }),\n )\n .min(1),\n license: z.string().min(1),\n }),\n package: z.object({\n registry: z.string().min(1),\n dist_tag: z.string().min(1).optional(),\n artifacts: z\n .array(\n z.object({\n url: z.string().min(1),\n digest: z.string().min(1),\n signature: z.string().min(1).optional(),\n }),\n )\n .min(1),\n }),\n runtime: z.object({\n platforms: z.array(z.string().min(1)).min(1),\n primary: z.string().min(1),\n entry: z.string().min(1),\n dependencies: z.array(z.string().min(1)).optional(),\n env: z.array(z.string().min(1)).optional(),\n }),\n capabilities: z.object({\n discovery: z.boolean(),\n communication: z.boolean(),\n protocols: z.array(z.string().min(1)),\n discovery_tags: z.array(z.string().min(1)).optional(),\n communication_channels: z.array(z.string().min(1)).optional(),\n extras: z.record(z.string(), z.unknown()).optional(),\n }),\n consensus: z.object({\n state_model: z.string().min(1).optional(),\n profile_uri: z.string().min(1).optional(),\n entity_schema: z.string().min(1).optional(),\n required_fields: z.array(z.string().min(1)),\n hashing: z.literal('sha384'),\n }),\n});\n\nexport const registryMetadataSchema = z.object({\n version: z.string().min(1),\n name: z.string().min(1),\n description: z.string().min(1),\n operator: z.object({\n account: z.string().min(1),\n name: z.string().optional(),\n contact: z.string().optional(),\n }),\n entityTypes: z.array(z.string().min(1)),\n categories: z.array(z.string().min(1)).optional(),\n tags: z.array(z.string().min(1)).optional(),\n links: z.record(z.string().min(1)).optional(),\n});\n\nexport const metadataDocumentSchema = z.union([\n adapterManifestSchema,\n registryMetadataSchema,\n]);\n\nexport type AdapterDeclarationValidation = z.infer<\n typeof adapterDeclarationSchema\n>;\nexport type AdapterManifest = z.infer<typeof adapterManifestSchema>;\nexport type RegistryMetadataRecord = z.infer<typeof registryMetadataSchema>;\nexport type HCS21MetadataDocument = AdapterManifest | RegistryMetadataRecord;\n"],"names":["HCS21TopicType"],"mappings":"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"}
@@ -1,12 +1,12 @@
1
- import { buildTopicCreateTx, buildMessageTx } from "./standards-sdk.es136.js";
2
- import { HCS21TopicType, HCS21TopicIdPattern } from "./standards-sdk.es80.js";
1
+ import { buildTopicCreateTx, buildMessageTx } from "./standards-sdk.es141.js";
2
+ import { HCS21TopicType, HCS21MetadataPointerPattern, HCS21_SAFE_MESSAGE_BYTES, HCS21_MAX_MESSAGE_BYTES } from "./standards-sdk.es80.js";
3
3
  import { HCS21ValidationError } from "./standards-sdk.es81.js";
4
4
  function buildHcs21RegistryMemo(params) {
5
5
  const indexed = params.indexed ?? 0;
6
6
  const topicType = params.type ?? HCS21TopicType.ADAPTER_REGISTRY;
7
- if (params.metaTopicId && !HCS21TopicIdPattern.test(params.metaTopicId)) {
7
+ if (params.metaTopicId && !HCS21MetadataPointerPattern.test(params.metaTopicId)) {
8
8
  throw new HCS21ValidationError(
9
- "Meta topic must be a Hedera topic ID (0.0.x)",
9
+ "Meta value must be a short pointer (topic ID, HRL, IPFS, Arweave, OCI, or HTTPS)",
10
10
  "invalid_payload"
11
11
  );
12
12
  }
@@ -28,6 +28,14 @@ function buildHcs21CreateRegistryTx(params) {
28
28
  });
29
29
  }
30
30
  function buildHcs21MessageTx(params) {
31
+ const json = JSON.stringify(params.declaration);
32
+ const bytes = Buffer.byteLength(json, "utf8");
33
+ if (bytes > HCS21_SAFE_MESSAGE_BYTES) {
34
+ throw new HCS21ValidationError(
35
+ `HCS-21 payload exceeds safe limit of ${HCS21_SAFE_MESSAGE_BYTES} bytes (${bytes}); Hedera cap is ${HCS21_MAX_MESSAGE_BYTES}`,
36
+ "size_exceeded"
37
+ );
38
+ }
31
39
  return buildMessageTx({
32
40
  topicId: params.topicId,
33
41
  message: JSON.stringify(params.declaration),
@@ -1 +1 @@
1
- {"version":3,"file":"standards-sdk.es82.js","sources":["../../src/hcs-21/tx.ts"],"sourcesContent":["import {\n PublicKey,\n TopicCreateTransaction,\n TopicMessageSubmitTransaction,\n} from '@hashgraph/sdk';\nimport {\n buildTopicCreateTx,\n buildMessageTx,\n MaybeKey,\n} from '../common/tx/tx-utils';\nimport { HCS21TopicType, AdapterDeclaration, HCS21TopicIdPattern } from './types';\nimport { HCS21ValidationError } from './errors';\n\nexport function buildHcs21RegistryMemo(params: {\n ttl: number;\n indexed?: 0 | 1;\n type?: HCS21TopicType;\n metaTopicId?: string;\n}): string {\n const indexed = params.indexed ?? 0;\n const topicType = params.type ?? HCS21TopicType.ADAPTER_REGISTRY;\n\n if (params.metaTopicId && !HCS21TopicIdPattern.test(params.metaTopicId)) {\n throw new HCS21ValidationError(\n 'Meta topic must be a Hedera topic ID (0.0.x)',\n 'invalid_payload',\n );\n }\n\n const metaSegment = params.metaTopicId ? `:${params.metaTopicId}` : '';\n return `hcs-21:${indexed}:${params.ttl}:${topicType}${metaSegment}`;\n}\n\nexport function buildHcs21CreateRegistryTx(params: {\n ttl: number;\n indexed?: 0 | 1;\n type?: HCS21TopicType;\n metaTopicId?: string;\n adminKey?: MaybeKey;\n submitKey?: MaybeKey;\n operatorPublicKey?: PublicKey;\n}): TopicCreateTransaction {\n const memo = buildHcs21RegistryMemo({\n ttl: params.ttl,\n indexed: params.indexed,\n type: params.type,\n metaTopicId: params.metaTopicId,\n });\n return buildTopicCreateTx({\n memo,\n adminKey: params.adminKey,\n submitKey: params.submitKey,\n operatorPublicKey: params.operatorPublicKey,\n });\n}\n\nexport function buildHcs21MessageTx(params: {\n topicId: string;\n declaration: AdapterDeclaration;\n transactionMemo?: string;\n}): TopicMessageSubmitTransaction {\n return buildMessageTx({\n topicId: params.topicId,\n message: JSON.stringify(params.declaration),\n transactionMemo: params.transactionMemo,\n });\n}\n"],"names":[],"mappings":";;;AAaO,SAAS,uBAAuB,QAK5B;AACT,QAAM,UAAU,OAAO,WAAW;AAClC,QAAM,YAAY,OAAO,QAAQ,eAAe;AAEhD,MAAI,OAAO,eAAe,CAAC,oBAAoB,KAAK,OAAO,WAAW,GAAG;AACvE,UAAM,IAAI;AAAA,MACR;AAAA,MACA;AAAA,IAAA;AAAA,EAEJ;AAEA,QAAM,cAAc,OAAO,cAAc,IAAI,OAAO,WAAW,KAAK;AACpE,SAAO,UAAU,OAAO,IAAI,OAAO,GAAG,IAAI,SAAS,GAAG,WAAW;AACnE;AAEO,SAAS,2BAA2B,QAQhB;AACzB,QAAM,OAAO,uBAAuB;AAAA,IAClC,KAAK,OAAO;AAAA,IACZ,SAAS,OAAO;AAAA,IAChB,MAAM,OAAO;AAAA,IACb,aAAa,OAAO;AAAA,EAAA,CACrB;AACD,SAAO,mBAAmB;AAAA,IACxB;AAAA,IACA,UAAU,OAAO;AAAA,IACjB,WAAW,OAAO;AAAA,IAClB,mBAAmB,OAAO;AAAA,EAAA,CAC3B;AACH;AAEO,SAAS,oBAAoB,QAIF;AAChC,SAAO,eAAe;AAAA,IACpB,SAAS,OAAO;AAAA,IAChB,SAAS,KAAK,UAAU,OAAO,WAAW;AAAA,IAC1C,iBAAiB,OAAO;AAAA,EAAA,CACzB;AACH;"}
1
+ {"version":3,"file":"standards-sdk.es82.js","sources":["../../src/hcs-21/tx.ts"],"sourcesContent":["import {\n PublicKey,\n TopicCreateTransaction,\n TopicMessageSubmitTransaction,\n} from '@hashgraph/sdk';\nimport {\n buildTopicCreateTx,\n buildMessageTx,\n MaybeKey,\n} from '../common/tx/tx-utils';\nimport {\n HCS21TopicType,\n AdapterDeclaration,\n HCS21MetadataPointerPattern,\n HCS21_SAFE_MESSAGE_BYTES,\n HCS21_MAX_MESSAGE_BYTES,\n} from './types';\nimport { HCS21ValidationError } from './errors';\n\nexport function buildHcs21RegistryMemo(params: {\n ttl: number;\n indexed?: 0 | 1;\n type?: HCS21TopicType;\n metaTopicId?: string;\n}): string {\n const indexed = params.indexed ?? 0;\n const topicType = params.type ?? HCS21TopicType.ADAPTER_REGISTRY;\n\n if (\n params.metaTopicId &&\n !HCS21MetadataPointerPattern.test(params.metaTopicId)\n ) {\n throw new HCS21ValidationError(\n 'Meta value must be a short pointer (topic ID, HRL, IPFS, Arweave, OCI, or HTTPS)',\n 'invalid_payload',\n );\n }\n\n const metaSegment = params.metaTopicId ? `:${params.metaTopicId}` : '';\n return `hcs-21:${indexed}:${params.ttl}:${topicType}${metaSegment}`;\n}\n\nexport function buildHcs21CreateRegistryTx(params: {\n ttl: number;\n indexed?: 0 | 1;\n type?: HCS21TopicType;\n metaTopicId?: string;\n adminKey?: MaybeKey;\n submitKey?: MaybeKey;\n operatorPublicKey?: PublicKey;\n}): TopicCreateTransaction {\n const memo = buildHcs21RegistryMemo({\n ttl: params.ttl,\n indexed: params.indexed,\n type: params.type,\n metaTopicId: params.metaTopicId,\n });\n return buildTopicCreateTx({\n memo,\n adminKey: params.adminKey,\n submitKey: params.submitKey,\n operatorPublicKey: params.operatorPublicKey,\n });\n}\n\nexport function buildHcs21MessageTx(params: {\n topicId: string;\n declaration: AdapterDeclaration;\n transactionMemo?: string;\n}): TopicMessageSubmitTransaction {\n const json = JSON.stringify(params.declaration);\n const bytes = Buffer.byteLength(json, 'utf8');\n if (bytes > HCS21_SAFE_MESSAGE_BYTES) {\n throw new HCS21ValidationError(\n `HCS-21 payload exceeds safe limit of ${HCS21_SAFE_MESSAGE_BYTES} bytes (${bytes}); Hedera cap is ${HCS21_MAX_MESSAGE_BYTES}`,\n 'size_exceeded',\n );\n }\n return buildMessageTx({\n topicId: params.topicId,\n message: JSON.stringify(params.declaration),\n transactionMemo: params.transactionMemo,\n });\n}\n"],"names":[],"mappings":";;;AAmBO,SAAS,uBAAuB,QAK5B;AACT,QAAM,UAAU,OAAO,WAAW;AAClC,QAAM,YAAY,OAAO,QAAQ,eAAe;AAEhD,MACE,OAAO,eACP,CAAC,4BAA4B,KAAK,OAAO,WAAW,GACpD;AACA,UAAM,IAAI;AAAA,MACR;AAAA,MACA;AAAA,IAAA;AAAA,EAEJ;AAEA,QAAM,cAAc,OAAO,cAAc,IAAI,OAAO,WAAW,KAAK;AACpE,SAAO,UAAU,OAAO,IAAI,OAAO,GAAG,IAAI,SAAS,GAAG,WAAW;AACnE;AAEO,SAAS,2BAA2B,QAQhB;AACzB,QAAM,OAAO,uBAAuB;AAAA,IAClC,KAAK,OAAO;AAAA,IACZ,SAAS,OAAO;AAAA,IAChB,MAAM,OAAO;AAAA,IACb,aAAa,OAAO;AAAA,EAAA,CACrB;AACD,SAAO,mBAAmB;AAAA,IACxB;AAAA,IACA,UAAU,OAAO;AAAA,IACjB,WAAW,OAAO;AAAA,IAClB,mBAAmB,OAAO;AAAA,EAAA,CAC3B;AACH;AAEO,SAAS,oBAAoB,QAIF;AAChC,QAAM,OAAO,KAAK,UAAU,OAAO,WAAW;AAC9C,QAAM,QAAQ,OAAO,WAAW,MAAM,MAAM;AAC5C,MAAI,QAAQ,0BAA0B;AACpC,UAAM,IAAI;AAAA,MACR,wCAAwC,wBAAwB,WAAW,KAAK,oBAAoB,uBAAuB;AAAA,MAC3H;AAAA,IAAA;AAAA,EAEJ;AACA,SAAO,eAAe;AAAA,IACpB,SAAS,OAAO;AAAA,IAChB,SAAS,KAAK,UAAU,OAAO,WAAW;AAAA,IAC1C,iBAAiB,OAAO;AAAA,EAAA,CACzB;AACH;"}
@@ -1,7 +1,7 @@
1
- import { HederaMirrorNode } from "./standards-sdk.es126.js";
2
- import { Logger } from "./standards-sdk.es105.js";
1
+ import { HederaMirrorNode } from "./standards-sdk.es127.js";
2
+ import { Logger } from "./standards-sdk.es106.js";
3
3
  import { HCS21ValidationError } from "./standards-sdk.es81.js";
4
- import { HCS21_PROTOCOL, adapterDeclarationSchema, HCS21_MAX_MESSAGE_BYTES } from "./standards-sdk.es80.js";
4
+ import { HCS21_PROTOCOL, adapterDeclarationSchema, HCS21_SAFE_MESSAGE_BYTES, HCS21_MAX_MESSAGE_BYTES } from "./standards-sdk.es80.js";
5
5
  class HCS21BaseClient {
6
6
  constructor(params) {
7
7
  this.network = params.network;
@@ -18,7 +18,8 @@ class HCS21BaseClient {
18
18
  entity: params.entity,
19
19
  package: params.adapterPackage,
20
20
  manifest: params.manifest,
21
- flora: params.flora,
21
+ ...params.manifestSequence ? { manifest_sequence: params.manifestSequence } : {},
22
+ config: params.config,
22
23
  state_model: params.stateModel,
23
24
  signature: params.signature
24
25
  };
@@ -65,9 +66,9 @@ class HCS21BaseClient {
65
66
  assertSizeLimit(payload) {
66
67
  const json = JSON.stringify(payload);
67
68
  const bytes = Buffer.byteLength(json, "utf8");
68
- if (bytes > HCS21_MAX_MESSAGE_BYTES) {
69
+ if (bytes > HCS21_SAFE_MESSAGE_BYTES) {
69
70
  throw new HCS21ValidationError(
70
- `HCS-21 payload exceeds 1024 bytes (${bytes})`,
71
+ `HCS-21 payload exceeds safe limit of ${HCS21_SAFE_MESSAGE_BYTES} bytes (${bytes}); Hedera cap is ${HCS21_MAX_MESSAGE_BYTES}`,
71
72
  "size_exceeded"
72
73
  );
73
74
  }
@@ -1 +1 @@
1
- {"version":3,"file":"standards-sdk.es83.js","sources":["../../src/hcs-21/base-client.ts"],"sourcesContent":["import { HederaMirrorNode } from '../services/mirror-node';\nimport { ILogger, Logger } from '../utils/logger';\nimport { NetworkType } from '../utils/types';\nimport { HCS21ValidationError } from './errors';\nimport {\n AdapterDeclaration,\n AdapterDeclarationEnvelope,\n AdapterPackage,\n FloraContext,\n HCS21_MAX_MESSAGE_BYTES,\n HCS21Operation,\n HCS21_PROTOCOL,\n adapterDeclarationSchema,\n} from './types';\n\nexport interface BuildDeclarationParams {\n op: HCS21Operation;\n adapterId: string;\n entity: string;\n adapterPackage: AdapterPackage;\n manifest: string;\n flora: FloraContext;\n stateModel: string;\n signature?: string;\n}\n\nexport interface FetchDeclarationsOptions {\n limit?: number;\n order?: 'asc' | 'desc';\n}\n\nexport class HCS21BaseClient {\n protected readonly network: NetworkType;\n protected readonly logger: ILogger;\n protected readonly mirrorNode: HederaMirrorNode;\n\n constructor(params: {\n network: NetworkType;\n logger?: ILogger;\n mirrorNodeUrl?: string;\n }) {\n this.network = params.network;\n this.logger =\n params.logger || new Logger({ level: 'info', module: 'HCS-21' });\n this.mirrorNode = new HederaMirrorNode(this.network, this.logger, {\n customUrl: params.mirrorNodeUrl,\n });\n }\n\n buildDeclaration(params: BuildDeclarationParams): AdapterDeclaration {\n const declaration: AdapterDeclaration = {\n p: HCS21_PROTOCOL,\n op: params.op,\n adapter_id: params.adapterId,\n entity: params.entity,\n package: params.adapterPackage,\n manifest: params.manifest,\n flora: params.flora,\n state_model: params.stateModel,\n signature: params.signature,\n };\n\n return this.validateDeclaration(declaration);\n }\n\n validateDeclaration(input: unknown): AdapterDeclaration {\n try {\n const payload = typeof input === 'string' ? JSON.parse(input) : input;\n const parsed = adapterDeclarationSchema.parse(\n payload,\n ) as AdapterDeclaration;\n this.assertSizeLimit(parsed);\n return parsed;\n } catch (error) {\n const message =\n error instanceof Error ? error.message : 'Invalid adapter declaration';\n throw new HCS21ValidationError(message, 'invalid_payload');\n }\n }\n\n async fetchDeclarations(\n topicId: string,\n options?: FetchDeclarationsOptions,\n ): Promise<AdapterDeclarationEnvelope[]> {\n const rawMessages = await this.mirrorNode.getTopicMessages(topicId, {\n limit: options?.limit,\n order: options?.order,\n });\n\n const envelopes: AdapterDeclarationEnvelope[] = [];\n\n for (const message of rawMessages) {\n if (message.p !== HCS21_PROTOCOL) {\n continue;\n }\n\n try {\n const declaration = this.validateDeclaration(message);\n envelopes.push({\n declaration,\n consensusTimestamp: message.consensus_timestamp,\n sequenceNumber: message.sequence_number,\n payer: message.payer,\n });\n } catch (error) {\n const detail = error instanceof Error ? error.message : 'unknown error';\n this.logger.warn(`Skipping invalid HCS-21 message: ${detail}`);\n }\n }\n\n return envelopes;\n }\n\n protected assertSizeLimit(payload: AdapterDeclaration): void {\n const json = JSON.stringify(payload);\n const bytes = Buffer.byteLength(json, 'utf8');\n if (bytes > HCS21_MAX_MESSAGE_BYTES) {\n throw new HCS21ValidationError(\n `HCS-21 payload exceeds 1024 bytes (${bytes})`,\n 'size_exceeded',\n );\n }\n }\n}\n"],"names":[],"mappings":";;;;AA+BO,MAAM,gBAAgB;AAAA,EAK3B,YAAY,QAIT;AACD,SAAK,UAAU,OAAO;AACtB,SAAK,SACH,OAAO,UAAU,IAAI,OAAO,EAAE,OAAO,QAAQ,QAAQ,UAAU;AACjE,SAAK,aAAa,IAAI,iBAAiB,KAAK,SAAS,KAAK,QAAQ;AAAA,MAChE,WAAW,OAAO;AAAA,IAAA,CACnB;AAAA,EACH;AAAA,EAEA,iBAAiB,QAAoD;AACnE,UAAM,cAAkC;AAAA,MACtC,GAAG;AAAA,MACH,IAAI,OAAO;AAAA,MACX,YAAY,OAAO;AAAA,MACnB,QAAQ,OAAO;AAAA,MACf,SAAS,OAAO;AAAA,MAChB,UAAU,OAAO;AAAA,MACjB,OAAO,OAAO;AAAA,MACd,aAAa,OAAO;AAAA,MACpB,WAAW,OAAO;AAAA,IAAA;AAGpB,WAAO,KAAK,oBAAoB,WAAW;AAAA,EAC7C;AAAA,EAEA,oBAAoB,OAAoC;AACtD,QAAI;AACF,YAAM,UAAU,OAAO,UAAU,WAAW,KAAK,MAAM,KAAK,IAAI;AAChE,YAAM,SAAS,yBAAyB;AAAA,QACtC;AAAA,MAAA;AAEF,WAAK,gBAAgB,MAAM;AAC3B,aAAO;AAAA,IACT,SAAS,OAAO;AACd,YAAM,UACJ,iBAAiB,QAAQ,MAAM,UAAU;AAC3C,YAAM,IAAI,qBAAqB,SAAS,iBAAiB;AAAA,IAC3D;AAAA,EACF;AAAA,EAEA,MAAM,kBACJ,SACA,SACuC;AACvC,UAAM,cAAc,MAAM,KAAK,WAAW,iBAAiB,SAAS;AAAA,MAClE,OAAO,SAAS;AAAA,MAChB,OAAO,SAAS;AAAA,IAAA,CACjB;AAED,UAAM,YAA0C,CAAA;AAEhD,eAAW,WAAW,aAAa;AACjC,UAAI,QAAQ,MAAM,gBAAgB;AAChC;AAAA,MACF;AAEA,UAAI;AACF,cAAM,cAAc,KAAK,oBAAoB,OAAO;AACpD,kBAAU,KAAK;AAAA,UACb;AAAA,UACA,oBAAoB,QAAQ;AAAA,UAC5B,gBAAgB,QAAQ;AAAA,UACxB,OAAO,QAAQ;AAAA,QAAA,CAChB;AAAA,MACH,SAAS,OAAO;AACd,cAAM,SAAS,iBAAiB,QAAQ,MAAM,UAAU;AACxD,aAAK,OAAO,KAAK,oCAAoC,MAAM,EAAE;AAAA,MAC/D;AAAA,IACF;AAEA,WAAO;AAAA,EACT;AAAA,EAEU,gBAAgB,SAAmC;AAC3D,UAAM,OAAO,KAAK,UAAU,OAAO;AACnC,UAAM,QAAQ,OAAO,WAAW,MAAM,MAAM;AAC5C,QAAI,QAAQ,yBAAyB;AACnC,YAAM,IAAI;AAAA,QACR,sCAAsC,KAAK;AAAA,QAC3C;AAAA,MAAA;AAAA,IAEJ;AAAA,EACF;AACF;"}
1
+ {"version":3,"file":"standards-sdk.es83.js","sources":["../../src/hcs-21/base-client.ts"],"sourcesContent":["import { HederaMirrorNode } from '../services/mirror-node';\nimport { ILogger, Logger } from '../utils/logger';\nimport { NetworkType } from '../utils/types';\nimport { HCS21ValidationError } from './errors';\nimport {\n AdapterDeclaration,\n AdapterDeclarationEnvelope,\n AdapterPackage,\n HCS21_MAX_MESSAGE_BYTES,\n HCS21_SAFE_MESSAGE_BYTES,\n HCS21Operation,\n HCS21_PROTOCOL,\n AdapterConfigContext,\n adapterDeclarationSchema,\n} from './types';\n\nexport interface BuildDeclarationParams {\n op: HCS21Operation;\n adapterId: string;\n entity: string;\n adapterPackage: AdapterPackage;\n manifest: string;\n manifestSequence?: number;\n config: AdapterConfigContext;\n stateModel?: string;\n signature?: string;\n}\n\nexport interface FetchDeclarationsOptions {\n limit?: number;\n order?: 'asc' | 'desc';\n}\n\nexport class HCS21BaseClient {\n protected readonly network: NetworkType;\n protected readonly logger: ILogger;\n protected readonly mirrorNode: HederaMirrorNode;\n\n constructor(params: {\n network: NetworkType;\n logger?: ILogger;\n mirrorNodeUrl?: string;\n }) {\n this.network = params.network;\n this.logger =\n params.logger || new Logger({ level: 'info', module: 'HCS-21' });\n this.mirrorNode = new HederaMirrorNode(this.network, this.logger, {\n customUrl: params.mirrorNodeUrl,\n });\n }\n\n buildDeclaration(params: BuildDeclarationParams): AdapterDeclaration {\n const declaration: AdapterDeclaration = {\n p: HCS21_PROTOCOL,\n op: params.op,\n adapter_id: params.adapterId,\n entity: params.entity,\n package: params.adapterPackage,\n manifest: params.manifest,\n ...(params.manifestSequence\n ? { manifest_sequence: params.manifestSequence }\n : {}),\n config: params.config,\n state_model: params.stateModel,\n signature: params.signature,\n };\n\n return this.validateDeclaration(declaration);\n }\n\n validateDeclaration(input: unknown): AdapterDeclaration {\n try {\n const payload = typeof input === 'string' ? JSON.parse(input) : input;\n const parsed = adapterDeclarationSchema.parse(\n payload,\n ) as AdapterDeclaration;\n this.assertSizeLimit(parsed);\n return parsed;\n } catch (error) {\n const message =\n error instanceof Error ? error.message : 'Invalid adapter declaration';\n throw new HCS21ValidationError(message, 'invalid_payload');\n }\n }\n\n async fetchDeclarations(\n topicId: string,\n options?: FetchDeclarationsOptions,\n ): Promise<AdapterDeclarationEnvelope[]> {\n const rawMessages = await this.mirrorNode.getTopicMessages(topicId, {\n limit: options?.limit,\n order: options?.order,\n });\n\n const envelopes: AdapterDeclarationEnvelope[] = [];\n\n for (const message of rawMessages) {\n if (message.p !== HCS21_PROTOCOL) {\n continue;\n }\n\n try {\n const declaration = this.validateDeclaration(message);\n envelopes.push({\n declaration,\n consensusTimestamp: message.consensus_timestamp,\n sequenceNumber: message.sequence_number,\n payer: message.payer,\n });\n } catch (error) {\n const detail = error instanceof Error ? error.message : 'unknown error';\n this.logger.warn(`Skipping invalid HCS-21 message: ${detail}`);\n }\n }\n\n return envelopes;\n }\n\n protected assertSizeLimit(payload: AdapterDeclaration): void {\n const json = JSON.stringify(payload);\n const bytes = Buffer.byteLength(json, 'utf8');\n if (bytes > HCS21_SAFE_MESSAGE_BYTES) {\n throw new HCS21ValidationError(\n `HCS-21 payload exceeds safe limit of ${HCS21_SAFE_MESSAGE_BYTES} bytes (${bytes}); Hedera cap is ${HCS21_MAX_MESSAGE_BYTES}`,\n 'size_exceeded',\n );\n }\n }\n}\n"],"names":[],"mappings":";;;;AAiCO,MAAM,gBAAgB;AAAA,EAK3B,YAAY,QAIT;AACD,SAAK,UAAU,OAAO;AACtB,SAAK,SACH,OAAO,UAAU,IAAI,OAAO,EAAE,OAAO,QAAQ,QAAQ,UAAU;AACjE,SAAK,aAAa,IAAI,iBAAiB,KAAK,SAAS,KAAK,QAAQ;AAAA,MAChE,WAAW,OAAO;AAAA,IAAA,CACnB;AAAA,EACH;AAAA,EAEA,iBAAiB,QAAoD;AACnE,UAAM,cAAkC;AAAA,MACtC,GAAG;AAAA,MACH,IAAI,OAAO;AAAA,MACX,YAAY,OAAO;AAAA,MACnB,QAAQ,OAAO;AAAA,MACf,SAAS,OAAO;AAAA,MAChB,UAAU,OAAO;AAAA,MACjB,GAAI,OAAO,mBACP,EAAE,mBAAmB,OAAO,iBAAA,IAC5B,CAAA;AAAA,MACJ,QAAQ,OAAO;AAAA,MACf,aAAa,OAAO;AAAA,MACpB,WAAW,OAAO;AAAA,IAAA;AAGpB,WAAO,KAAK,oBAAoB,WAAW;AAAA,EAC7C;AAAA,EAEA,oBAAoB,OAAoC;AACtD,QAAI;AACF,YAAM,UAAU,OAAO,UAAU,WAAW,KAAK,MAAM,KAAK,IAAI;AAChE,YAAM,SAAS,yBAAyB;AAAA,QACtC;AAAA,MAAA;AAEF,WAAK,gBAAgB,MAAM;AAC3B,aAAO;AAAA,IACT,SAAS,OAAO;AACd,YAAM,UACJ,iBAAiB,QAAQ,MAAM,UAAU;AAC3C,YAAM,IAAI,qBAAqB,SAAS,iBAAiB;AAAA,IAC3D;AAAA,EACF;AAAA,EAEA,MAAM,kBACJ,SACA,SACuC;AACvC,UAAM,cAAc,MAAM,KAAK,WAAW,iBAAiB,SAAS;AAAA,MAClE,OAAO,SAAS;AAAA,MAChB,OAAO,SAAS;AAAA,IAAA,CACjB;AAED,UAAM,YAA0C,CAAA;AAEhD,eAAW,WAAW,aAAa;AACjC,UAAI,QAAQ,MAAM,gBAAgB;AAChC;AAAA,MACF;AAEA,UAAI;AACF,cAAM,cAAc,KAAK,oBAAoB,OAAO;AACpD,kBAAU,KAAK;AAAA,UACb;AAAA,UACA,oBAAoB,QAAQ;AAAA,UAC5B,gBAAgB,QAAQ;AAAA,UACxB,OAAO,QAAQ;AAAA,QAAA,CAChB;AAAA,MACH,SAAS,OAAO;AACd,cAAM,SAAS,iBAAiB,QAAQ,MAAM,UAAU;AACxD,aAAK,OAAO,KAAK,oCAAoC,MAAM,EAAE;AAAA,MAC/D;AAAA,IACF;AAEA,WAAO;AAAA,EACT;AAAA,EAEU,gBAAgB,SAAmC;AAC3D,UAAM,OAAO,KAAK,UAAU,OAAO;AACnC,UAAM,QAAQ,OAAO,WAAW,MAAM,MAAM;AAC5C,QAAI,QAAQ,0BAA0B;AACpC,YAAM,IAAI;AAAA,QACR,wCAAwC,wBAAwB,WAAW,KAAK,oBAAoB,uBAAuB;AAAA,QAC3H;AAAA,MAAA;AAAA,IAEJ;AAAA,EACF;AACF;"}