@hashgraphonline/standards-sdk 0.1.183 → 0.1.185

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 (289) hide show
  1. package/dist/browser/hcs-25/identifiers.d.ts +24 -0
  2. package/dist/browser/hcs-25/identifiers.d.ts.map +1 -0
  3. package/dist/browser/hcs-25/index.d.ts +4 -0
  4. package/dist/browser/hcs-25/index.d.ts.map +1 -0
  5. package/dist/browser/hcs-25/scoring.d.ts +32 -0
  6. package/dist/browser/hcs-25/scoring.d.ts.map +1 -0
  7. package/dist/browser/hcs-25/types.d.ts +363 -0
  8. package/dist/browser/hcs-25/types.d.ts.map +1 -0
  9. package/dist/browser/index.d.ts +1 -0
  10. package/dist/browser/index.d.ts.map +1 -1
  11. package/dist/browser/services/registry-broker/index.d.ts +1 -0
  12. package/dist/browser/services/registry-broker/index.d.ts.map +1 -1
  13. package/dist/browser/services/registry-broker/schemas.d.ts +6 -0
  14. package/dist/browser/services/registry-broker/schemas.d.ts.map +1 -1
  15. package/dist/browser/services/registry-broker/types.d.ts +7 -1
  16. package/dist/browser/services/registry-broker/types.d.ts.map +1 -1
  17. package/dist/browser/standards-sdk.browser.js.map +1 -1
  18. package/dist/browser-root/hcs-25/identifiers.d.ts +24 -0
  19. package/dist/browser-root/hcs-25/identifiers.d.ts.map +1 -0
  20. package/dist/browser-root/hcs-25/index.d.ts +4 -0
  21. package/dist/browser-root/hcs-25/index.d.ts.map +1 -0
  22. package/dist/browser-root/hcs-25/scoring.d.ts +32 -0
  23. package/dist/browser-root/hcs-25/scoring.d.ts.map +1 -0
  24. package/dist/browser-root/hcs-25/types.d.ts +363 -0
  25. package/dist/browser-root/hcs-25/types.d.ts.map +1 -0
  26. package/dist/browser-root/index.d.ts +1 -0
  27. package/dist/browser-root/index.d.ts.map +1 -1
  28. package/dist/browser-root/services/registry-broker/index.d.ts +1 -0
  29. package/dist/browser-root/services/registry-broker/index.d.ts.map +1 -1
  30. package/dist/browser-root/services/registry-broker/schemas.d.ts +6 -0
  31. package/dist/browser-root/services/registry-broker/schemas.d.ts.map +1 -1
  32. package/dist/browser-root/services/registry-broker/types.d.ts +7 -1
  33. package/dist/browser-root/services/registry-broker/types.d.ts.map +1 -1
  34. package/dist/browser-root/standards-sdk.root-browser.js +8 -1
  35. package/dist/browser-root/standards-sdk.root-browser.js.map +1 -1
  36. package/dist/cjs/hcs-25/identifiers.d.ts +24 -0
  37. package/dist/cjs/hcs-25/identifiers.d.ts.map +1 -0
  38. package/dist/cjs/hcs-25/index.d.ts +4 -0
  39. package/dist/cjs/hcs-25/index.d.ts.map +1 -0
  40. package/dist/cjs/hcs-25/scoring.d.ts +32 -0
  41. package/dist/cjs/hcs-25/scoring.d.ts.map +1 -0
  42. package/dist/cjs/hcs-25/types.d.ts +363 -0
  43. package/dist/cjs/hcs-25/types.d.ts.map +1 -0
  44. package/dist/cjs/index.d.ts +1 -0
  45. package/dist/cjs/index.d.ts.map +1 -1
  46. package/dist/cjs/services/registry-broker/index.d.ts +1 -0
  47. package/dist/cjs/services/registry-broker/index.d.ts.map +1 -1
  48. package/dist/cjs/services/registry-broker/schemas.d.ts +6 -0
  49. package/dist/cjs/services/registry-broker/schemas.d.ts.map +1 -1
  50. package/dist/cjs/services/registry-broker/types.d.ts +7 -1
  51. package/dist/cjs/services/registry-broker/types.d.ts.map +1 -1
  52. package/dist/cjs/standards-sdk.cjs +2 -2
  53. package/dist/cjs/standards-sdk.cjs.map +1 -1
  54. package/dist/es/hcs-25/identifiers.d.ts +24 -0
  55. package/dist/es/hcs-25/identifiers.d.ts.map +1 -0
  56. package/dist/es/hcs-25/index.d.ts +4 -0
  57. package/dist/es/hcs-25/index.d.ts.map +1 -0
  58. package/dist/es/hcs-25/scoring.d.ts +32 -0
  59. package/dist/es/hcs-25/scoring.d.ts.map +1 -0
  60. package/dist/es/hcs-25/types.d.ts +363 -0
  61. package/dist/es/hcs-25/types.d.ts.map +1 -0
  62. package/dist/es/index.d.ts +1 -0
  63. package/dist/es/index.d.ts.map +1 -1
  64. package/dist/es/services/registry-broker/index.d.ts +1 -0
  65. package/dist/es/services/registry-broker/index.d.ts.map +1 -1
  66. package/dist/es/services/registry-broker/schemas.d.ts +6 -0
  67. package/dist/es/services/registry-broker/schemas.d.ts.map +1 -1
  68. package/dist/es/services/registry-broker/types.d.ts +7 -1
  69. package/dist/es/services/registry-broker/types.d.ts.map +1 -1
  70. package/dist/es/standards-sdk.es.js +69 -39
  71. package/dist/es/standards-sdk.es.js.map +1 -1
  72. package/dist/es/standards-sdk.es101.js +2 -2
  73. package/dist/es/standards-sdk.es103.js +2 -2
  74. package/dist/es/standards-sdk.es104.js +1 -1
  75. package/dist/es/standards-sdk.es106.js +1 -1
  76. package/dist/es/standards-sdk.es108.js +2 -2
  77. package/dist/es/standards-sdk.es11.js +1 -1
  78. package/dist/es/standards-sdk.es110.js +1 -1
  79. package/dist/es/standards-sdk.es111.js +2 -2
  80. package/dist/es/standards-sdk.es115.js +3 -3
  81. package/dist/es/standards-sdk.es116.js +4 -4
  82. package/dist/es/standards-sdk.es117.js +19 -251
  83. package/dist/es/standards-sdk.es117.js.map +1 -1
  84. package/dist/es/standards-sdk.es118.js +60 -475
  85. package/dist/es/standards-sdk.es118.js.map +1 -1
  86. package/dist/es/standards-sdk.es119.js +217 -86
  87. package/dist/es/standards-sdk.es119.js.map +1 -1
  88. package/dist/es/standards-sdk.es12.js +1 -1
  89. package/dist/es/standards-sdk.es120.js +242 -150
  90. package/dist/es/standards-sdk.es120.js.map +1 -1
  91. package/dist/es/standards-sdk.es121.js +470 -26
  92. package/dist/es/standards-sdk.es121.js.map +1 -1
  93. package/dist/es/standards-sdk.es122.js +103 -10
  94. package/dist/es/standards-sdk.es122.js.map +1 -1
  95. package/dist/es/standards-sdk.es123.js +145 -167
  96. package/dist/es/standards-sdk.es123.js.map +1 -1
  97. package/dist/es/standards-sdk.es124.js +30 -25
  98. package/dist/es/standards-sdk.es124.js.map +1 -1
  99. package/dist/es/standards-sdk.es125.js +10 -20
  100. package/dist/es/standards-sdk.es125.js.map +1 -1
  101. package/dist/es/standards-sdk.es126.js +159 -137
  102. package/dist/es/standards-sdk.es126.js.map +1 -1
  103. package/dist/es/standards-sdk.es127.js +27 -199
  104. package/dist/es/standards-sdk.es127.js.map +1 -1
  105. package/dist/es/standards-sdk.es128.js +15 -783
  106. package/dist/es/standards-sdk.es128.js.map +1 -1
  107. package/dist/es/standards-sdk.es129.js +157 -10
  108. package/dist/es/standards-sdk.es129.js.map +1 -1
  109. package/dist/es/standards-sdk.es13.js +1 -1
  110. package/dist/es/standards-sdk.es130.js +198 -564
  111. package/dist/es/standards-sdk.es130.js.map +1 -1
  112. package/dist/es/standards-sdk.es131.js +703 -539
  113. package/dist/es/standards-sdk.es131.js.map +1 -1
  114. package/dist/es/standards-sdk.es132.js +12 -12
  115. package/dist/es/standards-sdk.es132.js.map +1 -1
  116. package/dist/es/standards-sdk.es133.js +567 -2
  117. package/dist/es/standards-sdk.es133.js.map +1 -1
  118. package/dist/es/standards-sdk.es134.js +610 -71
  119. package/dist/es/standards-sdk.es134.js.map +1 -1
  120. package/dist/es/standards-sdk.es135.js +12 -39
  121. package/dist/es/standards-sdk.es135.js.map +1 -1
  122. package/dist/es/standards-sdk.es136.js +2 -2
  123. package/dist/es/standards-sdk.es136.js.map +1 -1
  124. package/dist/es/standards-sdk.es137.js +42 -190
  125. package/dist/es/standards-sdk.es137.js.map +1 -1
  126. package/dist/es/standards-sdk.es138.js +39 -1139
  127. package/dist/es/standards-sdk.es138.js.map +1 -1
  128. package/dist/es/standards-sdk.es139.js +2 -306
  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 +231 -418
  132. package/dist/es/standards-sdk.es140.js.map +1 -1
  133. package/dist/es/standards-sdk.es141.js +1135 -350
  134. package/dist/es/standards-sdk.es141.js.map +1 -1
  135. package/dist/es/standards-sdk.es142.js +268 -1084
  136. package/dist/es/standards-sdk.es142.js.map +1 -1
  137. package/dist/es/standards-sdk.es143.js +418 -204
  138. package/dist/es/standards-sdk.es143.js.map +1 -1
  139. package/dist/es/standards-sdk.es144.js +350 -1562
  140. package/dist/es/standards-sdk.es144.js.map +1 -1
  141. package/dist/es/standards-sdk.es145.js +1061 -1096
  142. package/dist/es/standards-sdk.es145.js.map +1 -1
  143. package/dist/es/standards-sdk.es146.js +204 -13
  144. package/dist/es/standards-sdk.es146.js.map +1 -1
  145. package/dist/es/standards-sdk.es147.js +1541 -233
  146. package/dist/es/standards-sdk.es147.js.map +1 -1
  147. package/dist/es/standards-sdk.es148.js +1157 -4
  148. package/dist/es/standards-sdk.es148.js.map +1 -1
  149. package/dist/es/standards-sdk.es149.js +15 -79
  150. package/dist/es/standards-sdk.es149.js.map +1 -1
  151. package/dist/es/standards-sdk.es15.js +1 -1
  152. package/dist/es/standards-sdk.es150.js +250 -78
  153. package/dist/es/standards-sdk.es150.js.map +1 -1
  154. package/dist/es/standards-sdk.es151.js +4 -60
  155. package/dist/es/standards-sdk.es151.js.map +1 -1
  156. package/dist/es/standards-sdk.es152.js +75 -153
  157. package/dist/es/standards-sdk.es152.js.map +1 -1
  158. package/dist/es/standards-sdk.es153.js +87 -7
  159. package/dist/es/standards-sdk.es153.js.map +1 -1
  160. package/dist/es/standards-sdk.es154.js +54 -80
  161. package/dist/es/standards-sdk.es154.js.map +1 -1
  162. package/dist/es/standards-sdk.es155.js +2547 -65
  163. package/dist/es/standards-sdk.es155.js.map +1 -1
  164. package/dist/es/standards-sdk.es156.js +159 -30
  165. package/dist/es/standards-sdk.es156.js.map +1 -1
  166. package/dist/es/standards-sdk.es157.js +7 -34
  167. package/dist/es/standards-sdk.es157.js.map +1 -1
  168. package/dist/es/standards-sdk.es158.js +86 -48
  169. package/dist/es/standards-sdk.es158.js.map +1 -1
  170. package/dist/es/standards-sdk.es159.js +52 -125
  171. package/dist/es/standards-sdk.es159.js.map +1 -1
  172. package/dist/es/standards-sdk.es16.js +5 -5
  173. package/dist/es/standards-sdk.es160.js +30 -42
  174. package/dist/es/standards-sdk.es160.js.map +1 -1
  175. package/dist/es/standards-sdk.es161.js +32 -2538
  176. package/dist/es/standards-sdk.es161.js.map +1 -1
  177. package/dist/es/standards-sdk.es162.js +48 -12482
  178. package/dist/es/standards-sdk.es162.js.map +1 -1
  179. package/dist/es/standards-sdk.es163.js +12479 -53
  180. package/dist/es/standards-sdk.es163.js.map +1 -1
  181. package/dist/es/standards-sdk.es164.js +124 -97
  182. package/dist/es/standards-sdk.es164.js.map +1 -1
  183. package/dist/es/standards-sdk.es165.js +35 -74
  184. package/dist/es/standards-sdk.es165.js.map +1 -1
  185. package/dist/es/standards-sdk.es166.js +14 -197
  186. package/dist/es/standards-sdk.es166.js.map +1 -1
  187. package/dist/es/standards-sdk.es167.js +54 -15
  188. package/dist/es/standards-sdk.es167.js.map +1 -1
  189. package/dist/es/standards-sdk.es168.js +96 -58
  190. package/dist/es/standards-sdk.es168.js.map +1 -1
  191. package/dist/es/standards-sdk.es169.js +69 -660
  192. package/dist/es/standards-sdk.es169.js.map +1 -1
  193. package/dist/es/standards-sdk.es170.js +188 -160
  194. package/dist/es/standards-sdk.es170.js.map +1 -1
  195. package/dist/es/standards-sdk.es171.js +657 -307
  196. package/dist/es/standards-sdk.es171.js.map +1 -1
  197. package/dist/es/standards-sdk.es172.js +64 -337
  198. package/dist/es/standards-sdk.es172.js.map +1 -1
  199. package/dist/es/standards-sdk.es173.js +129 -410
  200. package/dist/es/standards-sdk.es173.js.map +1 -1
  201. package/dist/es/standards-sdk.es174.js +200 -209
  202. package/dist/es/standards-sdk.es174.js.map +1 -1
  203. package/dist/es/standards-sdk.es175.js +334 -64
  204. package/dist/es/standards-sdk.es175.js.map +1 -1
  205. package/dist/es/standards-sdk.es176.js +438 -124
  206. package/dist/es/standards-sdk.es176.js.map +1 -1
  207. package/dist/es/standards-sdk.es177.js +310 -496
  208. package/dist/es/standards-sdk.es177.js.map +1 -1
  209. package/dist/es/standards-sdk.es178.js +60 -243
  210. package/dist/es/standards-sdk.es178.js.map +1 -1
  211. package/dist/es/standards-sdk.es179.js +118 -175
  212. package/dist/es/standards-sdk.es179.js.map +1 -1
  213. package/dist/es/standards-sdk.es18.js +12 -12
  214. package/dist/es/standards-sdk.es180.js +465 -67
  215. package/dist/es/standards-sdk.es180.js.map +1 -1
  216. package/dist/es/standards-sdk.es181.js +250 -143
  217. package/dist/es/standards-sdk.es181.js.map +1 -1
  218. package/dist/es/standards-sdk.es182.js +172 -160
  219. package/dist/es/standards-sdk.es182.js.map +1 -1
  220. package/dist/es/standards-sdk.es183.js +65 -630
  221. package/dist/es/standards-sdk.es183.js.map +1 -1
  222. package/dist/es/standards-sdk.es184.js +128 -161
  223. package/dist/es/standards-sdk.es184.js.map +1 -1
  224. package/dist/es/standards-sdk.es185.js +144 -195
  225. package/dist/es/standards-sdk.es185.js.map +1 -1
  226. package/dist/es/standards-sdk.es186.js +668 -223
  227. package/dist/es/standards-sdk.es186.js.map +1 -1
  228. package/dist/es/standards-sdk.es187.js +188 -0
  229. package/dist/es/standards-sdk.es187.js.map +1 -0
  230. package/dist/es/standards-sdk.es188.js +238 -0
  231. package/dist/es/standards-sdk.es188.js.map +1 -0
  232. package/dist/es/standards-sdk.es189.js +242 -0
  233. package/dist/es/standards-sdk.es189.js.map +1 -0
  234. package/dist/es/standards-sdk.es19.js +9 -9
  235. package/dist/es/standards-sdk.es2.js +2 -2
  236. package/dist/es/standards-sdk.es20.js +1 -1
  237. package/dist/es/standards-sdk.es21.js +1 -1
  238. package/dist/es/standards-sdk.es22.js +1 -1
  239. package/dist/es/standards-sdk.es23.js +1 -1
  240. package/dist/es/standards-sdk.es24.js +1 -1
  241. package/dist/es/standards-sdk.es25.js +1 -1
  242. package/dist/es/standards-sdk.es26.js +1 -1
  243. package/dist/es/standards-sdk.es27.js +12 -12
  244. package/dist/es/standards-sdk.es30.js +2 -2
  245. package/dist/es/standards-sdk.es31.js +4 -4
  246. package/dist/es/standards-sdk.es32.js +1 -1
  247. package/dist/es/standards-sdk.es35.js +6 -6
  248. package/dist/es/standards-sdk.es36.js +4 -4
  249. package/dist/es/standards-sdk.es37.js +2 -2
  250. package/dist/es/standards-sdk.es38.js +2 -2
  251. package/dist/es/standards-sdk.es39.js +1 -1
  252. package/dist/es/standards-sdk.es4.js +2 -2
  253. package/dist/es/standards-sdk.es40.js +1 -1
  254. package/dist/es/standards-sdk.es41.js +2 -2
  255. package/dist/es/standards-sdk.es46.js +1 -1
  256. package/dist/es/standards-sdk.es5.js +2 -2
  257. package/dist/es/standards-sdk.es51.js +1 -1
  258. package/dist/es/standards-sdk.es53.js +1 -1
  259. package/dist/es/standards-sdk.es56.js +2 -2
  260. package/dist/es/standards-sdk.es59.js +1 -1
  261. package/dist/es/standards-sdk.es6.js +2 -2
  262. package/dist/es/standards-sdk.es60.js +1 -1
  263. package/dist/es/standards-sdk.es62.js +1 -1
  264. package/dist/es/standards-sdk.es63.js +2 -2
  265. package/dist/es/standards-sdk.es64.js +1 -1
  266. package/dist/es/standards-sdk.es65.js +1 -1
  267. package/dist/es/standards-sdk.es66.js +1 -1
  268. package/dist/es/standards-sdk.es67.js +7 -7
  269. package/dist/es/standards-sdk.es69.js +1 -1
  270. package/dist/es/standards-sdk.es7.js +1 -1
  271. package/dist/es/standards-sdk.es71.js +2 -2
  272. package/dist/es/standards-sdk.es72.js +3 -3
  273. package/dist/es/standards-sdk.es75.js +5 -5
  274. package/dist/es/standards-sdk.es76.js +3 -3
  275. package/dist/es/standards-sdk.es77.js +2 -2
  276. package/dist/es/standards-sdk.es78.js +1 -1
  277. package/dist/es/standards-sdk.es81.js +2 -2
  278. package/dist/es/standards-sdk.es83.js +2 -2
  279. package/dist/es/standards-sdk.es84.js +4 -4
  280. package/dist/es/standards-sdk.es85.js +1 -1
  281. package/dist/es/standards-sdk.es88.js +1 -1
  282. package/dist/es/standards-sdk.es89.js +2 -2
  283. package/dist/es/standards-sdk.es9.js +2 -2
  284. package/dist/es/standards-sdk.es90.js +4 -4
  285. package/dist/es/standards-sdk.es94.js +3 -3
  286. package/dist/es/standards-sdk.es96.js +2 -2
  287. package/dist/es/standards-sdk.es98.js +1 -1
  288. package/dist/es/standards-sdk.es99.js +3 -3
  289. package/package.json +1 -1
@@ -1,162 +1,84 @@
1
- import { CustomFeeType } from "./standards-sdk.es153.js";
2
- import { HederaMirrorNode } from "./standards-sdk.es144.js";
3
- class FeeConfigBuilder {
4
- constructor(options) {
5
- this.customFees = [];
6
- this.logger = options.logger;
7
- this.mirrorNode = new HederaMirrorNode(options.network, options.logger);
8
- this.defaultCollectorAccountId = options.defaultCollectorAccountId || "";
1
+ import { optionalImportSync, optionalImport } from "./standards-sdk.es168.js";
2
+ const unsupported = (method) => new Error(`${method} is not supported by the in-memory signer`);
3
+ let cachedSdk = null;
4
+ const loadHashgraphSdk = () => {
5
+ if (cachedSdk) {
6
+ return cachedSdk;
9
7
  }
10
- /**
11
- * Static factory method to create a FeeConfigBuilder with a single HBAR fee.
12
- * @param hbarAmount Amount in HBAR.
13
- * @param collectorAccountId Optional account ID to collect the fee. If omitted or undefined, defaults to the agent's own account ID during topic creation.
14
- * @param network Network type ('mainnet' or 'testnet').
15
- * @param logger Logger instance.
16
- * @param exemptAccounts Optional array of account IDs exempt from this fee.
17
- * @returns A configured FeeConfigBuilder instance.
18
- */
19
- static forHbar(hbarAmount, collectorAccountId, network, logger, exemptAccounts = []) {
20
- const builder = new FeeConfigBuilder({
21
- network,
22
- logger,
23
- defaultCollectorAccountId: collectorAccountId
24
- });
25
- return builder.addHbarFee(hbarAmount, collectorAccountId, exemptAccounts);
8
+ const resolved = optionalImportSync("@hashgraph/sdk");
9
+ if (resolved) {
10
+ cachedSdk = resolved;
11
+ return resolved;
26
12
  }
27
- /**
28
- * Static factory method to create a FeeConfigBuilder with a single token fee.
29
- * Automatically fetches token decimals if not provided.
30
- * @param tokenAmount Amount of tokens.
31
- * @param feeTokenId Token ID for the fee.
32
- * @param collectorAccountId Optional account ID to collect the fee. If omitted or undefined, defaults to the agent's own account ID during topic creation.
33
- * @param network Network type ('mainnet' or 'testnet').
34
- * @param logger Logger instance.
35
- * @param exemptAccounts Optional array of account IDs exempt from this fee.
36
- * @param decimals Optional decimals for the token (fetched if omitted).
37
- * @returns A Promise resolving to a configured FeeConfigBuilder instance.
38
- */
39
- static async forToken(tokenAmount, feeTokenId, collectorAccountId, network, logger, exemptAccounts = [], decimals) {
40
- const builder = new FeeConfigBuilder({
41
- network,
42
- logger,
43
- defaultCollectorAccountId: collectorAccountId
44
- });
45
- await builder.addTokenFee(
46
- tokenAmount,
47
- feeTokenId,
48
- collectorAccountId,
49
- decimals,
50
- exemptAccounts
51
- );
52
- return builder;
13
+ const message = "@hashgraph/sdk is required for ledger signing. Install it as a dependency to enable createPrivateKeySigner.";
14
+ throw new Error(message);
15
+ };
16
+ const loadHashgraphSdkAsync = async () => {
17
+ if (cachedSdk) {
18
+ return cachedSdk;
53
19
  }
54
- /**
55
- * Adds an HBAR fee configuration to the builder.
56
- * Allows chaining multiple fee additions.
57
- * @param hbarAmount The amount in HBAR (e.g., 0.5).
58
- * @param collectorAccountId Optional. The account ID to collect this fee. If omitted, defaults to the agent's own account ID during topic creation.
59
- * @param exemptAccountIds Optional. Accounts specifically exempt from *this* HBAR fee.
60
- * @returns This FeeConfigBuilder instance for chaining.
61
- */
62
- addHbarFee(hbarAmount, collectorAccountId, exemptAccountIds = []) {
63
- if (hbarAmount <= 0) {
64
- throw new Error("HBAR amount must be greater than zero");
65
- }
66
- this.customFees.push({
67
- feeAmount: {
68
- amount: hbarAmount * 1e8,
69
- decimals: 0
70
- },
71
- feeCollectorAccountId: collectorAccountId || this.defaultCollectorAccountId,
72
- feeTokenId: void 0,
73
- exemptAccounts: [...exemptAccountIds],
74
- type: CustomFeeType.FIXED_FEE
75
- });
76
- return this;
20
+ const resolved = await optionalImport("@hashgraph/sdk");
21
+ if (resolved) {
22
+ cachedSdk = resolved;
23
+ return resolved;
77
24
  }
78
- /**
79
- * Adds a token fee configuration to the builder.
80
- * Allows chaining multiple fee additions.
81
- * Fetches token decimals automatically if not provided.
82
- * @param tokenAmount The amount of the specified token.
83
- * @param feeTokenId The ID of the token to charge the fee in.
84
- * @param collectorAccountId Optional. The account ID to collect this fee. If omitted, defaults to the agent's own account ID during topic creation.
85
- * @param decimals Optional. The number of decimals for the token. If omitted, it will be fetched from the mirror node.
86
- * @param exemptAccountIds Optional. Accounts specifically exempt from *this* token fee.
87
- * @returns A Promise resolving to this FeeConfigBuilder instance for chaining.
88
- */
89
- async addTokenFee(tokenAmount, feeTokenId, collectorAccountId, decimals, exemptAccountIds = []) {
90
- if (tokenAmount <= 0) {
91
- throw new Error("Token amount must be greater than zero");
92
- }
93
- if (!feeTokenId) {
94
- throw new Error("Fee token ID is required when adding a token fee");
95
- }
96
- let finalDecimals = decimals;
97
- if (finalDecimals === void 0) {
98
- try {
99
- const tokenInfo = await this.mirrorNode.getTokenInfo(feeTokenId);
100
- if (tokenInfo?.decimals) {
101
- finalDecimals = parseInt(tokenInfo.decimals, 10);
102
- this.logger.info(
103
- `Fetched decimals for ${feeTokenId}: ${finalDecimals}`
104
- );
105
- } else {
106
- this.logger.warn(
107
- `Could not fetch decimals for ${feeTokenId}, defaulting to 0.`
108
- );
109
- finalDecimals = 0;
110
- }
111
- } catch (error) {
112
- this.logger.error(
113
- `Error fetching decimals for ${feeTokenId}, defaulting to 0: ${error}`
114
- );
115
- finalDecimals = 0;
116
- }
117
- }
118
- this.customFees.push({
119
- feeAmount: {
120
- amount: tokenAmount * 10 ** finalDecimals,
121
- decimals: finalDecimals
122
- },
123
- feeCollectorAccountId: collectorAccountId || this.defaultCollectorAccountId,
124
- feeTokenId,
125
- exemptAccounts: [...exemptAccountIds],
126
- type: CustomFeeType.FIXED_FEE
127
- });
128
- return this;
25
+ const message = "@hashgraph/sdk is required for ledger signing. Install it as a dependency to enable createPrivateKeySigner.";
26
+ throw new Error(message);
27
+ };
28
+ const buildSigner = (sdk, options) => {
29
+ const { AccountId, LedgerId, PrivateKey, SignerSignature } = sdk;
30
+ if (!options.privateKey) {
31
+ throw new Error("privateKey is required to create a ledger signer.");
129
32
  }
130
- /**
131
- * Builds the final TopicFeeConfig object.
132
- * @returns The TopicFeeConfig containing all added custom fees and a consolidated list of unique exempt accounts.
133
- * @throws Error if no fees have been added.
134
- * @throws Error if more than 10 fees have been added.
135
- */
136
- build() {
137
- if (this.customFees.length === 0) {
138
- throw new Error(
139
- "At least one fee must be added using addHbarFee/addTokenFee or created using forHbar/forToken"
140
- );
141
- }
142
- if (this.customFees.length > 10) {
143
- throw new Error("Maximum of 10 custom fees per topic allowed");
144
- }
145
- const allExemptAccounts = /* @__PURE__ */ new Set();
146
- this.customFees.forEach((fee) => {
147
- fee.exemptAccounts.forEach((account) => allExemptAccounts.add(account));
148
- });
149
- const resolvedCustomFees = this.customFees.map((fee) => ({
150
- ...fee,
151
- feeCollectorAccountId: fee.feeCollectorAccountId || this.defaultCollectorAccountId
152
- }));
153
- return {
154
- customFees: resolvedCustomFees,
155
- exemptAccounts: Array.from(allExemptAccounts)
156
- };
33
+ if (!options.accountId) {
34
+ throw new Error("accountId is required to create a ledger signer.");
157
35
  }
158
- }
36
+ const accountId = AccountId.fromString(options.accountId);
37
+ const privateKey = PrivateKey.fromString(options.privateKey);
38
+ const ledgerId = LedgerId.fromString(options.network);
39
+ return {
40
+ getLedgerId: () => ledgerId,
41
+ getAccountId: () => accountId,
42
+ getAccountKey: () => privateKey.publicKey,
43
+ getNetwork: () => ({}),
44
+ getMirrorNetwork: () => [],
45
+ sign: async (messages) => Promise.all(
46
+ messages.map(async (message) => {
47
+ const signature = await privateKey.sign(message);
48
+ return new SignerSignature({
49
+ publicKey: privateKey.publicKey,
50
+ signature,
51
+ accountId
52
+ });
53
+ })
54
+ ),
55
+ getAccountBalance: async () => {
56
+ throw unsupported("getAccountBalance");
57
+ },
58
+ getAccountInfo: async () => {
59
+ throw unsupported("getAccountInfo");
60
+ },
61
+ getAccountRecords: async () => {
62
+ throw unsupported("getAccountRecords");
63
+ },
64
+ signTransaction: async (_) => {
65
+ throw unsupported("signTransaction");
66
+ },
67
+ checkTransaction: async (_) => {
68
+ throw unsupported("checkTransaction");
69
+ },
70
+ populateTransaction: async (_) => {
71
+ throw unsupported("populateTransaction");
72
+ },
73
+ call: async (_request) => {
74
+ throw unsupported("call");
75
+ }
76
+ };
77
+ };
78
+ const createPrivateKeySigner = (options) => buildSigner(loadHashgraphSdk(), options);
79
+ const createPrivateKeySignerAsync = async (options) => buildSigner(await loadHashgraphSdkAsync(), options);
159
80
  export {
160
- FeeConfigBuilder
81
+ createPrivateKeySigner,
82
+ createPrivateKeySignerAsync
161
83
  };
162
84
  //# sourceMappingURL=standards-sdk.es152.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"standards-sdk.es152.js","sources":["../../src/fees/fee-config-builder.ts"],"sourcesContent":["import {\n FeeConfigBuilderInterface,\n TokenFeeConfig,\n TopicFeeConfig,\n CustomFeeType,\n} from './types';\nimport { HederaMirrorNode } from '../services/mirror-node';\nimport { Logger } from '../utils/logger';\nimport { NetworkType } from '../utils/types';\n\n/**\n * FeeConfigBuilder provides a fluent interface for creating fee configurations\n * for HCS-10 topics. This makes it easy to configure fees without dealing with\n * the complexity of the underlying fee structure.\n *\n * Example usage:\n *\n * // Super simple one-liner with the factory method\n * const simpleFeeConfig = FeeConfigBuilder.forHbar(5, '0.0.12345', NetworkType.TESTNET, new Logger(), ['0.0.67890']);\n *\n * // With multiple fees:\n * const multipleFeeConfig = new FeeConfigBuilder({\n * network: NetworkType.TESTNET,\n * logger: new Logger(),\n * defaultCollectorAccountId: '0.0.12345',\n * defaultExemptAccountIds: ['0.0.67890']\n * })\n * .withHbarFee(1) // 1 HBAR fee\n * .withTokenFee(10, '0.0.54321') // 10 units of token 0.0.54321\n * .build();\n *\n * With Agent Builder\n * const agent = new AgentBuilder()\n * .setName('Fee Collector Agent')\n * .setDescription('An agent that collects fees')\n * .setInboundTopicType(InboundTopicType.FEE_BASED)\n * .setFeeConfig(FeeConfigBuilder.forHbar(1, '0.0.12345', NetworkType.TESTNET, new Logger(), ['0.0.67890']))\n * .setNetwork('testnet')\n .build();\n\n * Directly with client\n * const client = new HCS10Client(config);\n * const connectionFeeConfig = new FeeConfigBuilder({\n * network: NetworkType.TESTNET,\n * logger: new Logger(),\n * defaultCollectorAccountId: client.getAccountAndSigner().accountId,\n * defaultExemptAccountIds: ['0.0.67890']\n * })\n * .withHbarFee(0.5) // 0.5 HBAR (simple!)\n * .build();\n\n * const result = await client.handleConnectionRequest(\n * inboundTopicId,\n * requestingAccountId,\n * connectionRequestId,\n * connectionFeeConfig\n * );\n*/\nexport interface FeeConfigBuilderOptions {\n network: NetworkType;\n logger: Logger;\n defaultCollectorAccountId?: string;\n}\n\nexport class FeeConfigBuilder implements FeeConfigBuilderInterface {\n private customFees: TokenFeeConfig[] = [];\n private mirrorNode: HederaMirrorNode;\n private logger: Logger;\n private defaultCollectorAccountId: string;\n\n constructor(options: FeeConfigBuilderOptions) {\n this.logger = options.logger;\n this.mirrorNode = new HederaMirrorNode(options.network, options.logger);\n this.defaultCollectorAccountId = options.defaultCollectorAccountId || '';\n }\n\n /**\n * Static factory method to create a FeeConfigBuilder with a single HBAR fee.\n * @param hbarAmount Amount in HBAR.\n * @param collectorAccountId Optional account ID to collect the fee. If omitted or undefined, defaults to the agent's own account ID during topic creation.\n * @param network Network type ('mainnet' or 'testnet').\n * @param logger Logger instance.\n * @param exemptAccounts Optional array of account IDs exempt from this fee.\n * @returns A configured FeeConfigBuilder instance.\n */\n static forHbar(\n hbarAmount: number,\n collectorAccountId: string | undefined,\n network: NetworkType,\n logger: Logger,\n exemptAccounts: string[] = [],\n ): FeeConfigBuilder {\n const builder = new FeeConfigBuilder({\n network,\n logger,\n defaultCollectorAccountId: collectorAccountId,\n });\n return builder.addHbarFee(hbarAmount, collectorAccountId, exemptAccounts);\n }\n\n /**\n * Static factory method to create a FeeConfigBuilder with a single token fee.\n * Automatically fetches token decimals if not provided.\n * @param tokenAmount Amount of tokens.\n * @param feeTokenId Token ID for the fee.\n * @param collectorAccountId Optional account ID to collect the fee. If omitted or undefined, defaults to the agent's own account ID during topic creation.\n * @param network Network type ('mainnet' or 'testnet').\n * @param logger Logger instance.\n * @param exemptAccounts Optional array of account IDs exempt from this fee.\n * @param decimals Optional decimals for the token (fetched if omitted).\n * @returns A Promise resolving to a configured FeeConfigBuilder instance.\n */\n static async forToken(\n tokenAmount: number,\n feeTokenId: string,\n collectorAccountId: string | undefined,\n network: NetworkType,\n logger: Logger,\n exemptAccounts: string[] = [],\n decimals?: number,\n ): Promise<FeeConfigBuilder> {\n const builder = new FeeConfigBuilder({\n network,\n logger,\n defaultCollectorAccountId: collectorAccountId,\n });\n await builder.addTokenFee(\n tokenAmount,\n feeTokenId,\n collectorAccountId,\n decimals,\n exemptAccounts,\n );\n return builder;\n }\n\n /**\n * Adds an HBAR fee configuration to the builder.\n * Allows chaining multiple fee additions.\n * @param hbarAmount The amount in HBAR (e.g., 0.5).\n * @param collectorAccountId Optional. The account ID to collect this fee. If omitted, defaults to the agent's own account ID during topic creation.\n * @param exemptAccountIds Optional. Accounts specifically exempt from *this* HBAR fee.\n * @returns This FeeConfigBuilder instance for chaining.\n */\n addHbarFee(\n hbarAmount: number,\n collectorAccountId?: string,\n exemptAccountIds: string[] = [],\n ): FeeConfigBuilder {\n if (hbarAmount <= 0) {\n throw new Error('HBAR amount must be greater than zero');\n }\n\n this.customFees.push({\n feeAmount: {\n amount: hbarAmount * 100_000_000,\n decimals: 0,\n },\n feeCollectorAccountId:\n collectorAccountId || this.defaultCollectorAccountId,\n feeTokenId: undefined,\n exemptAccounts: [...exemptAccountIds],\n type: CustomFeeType.FIXED_FEE,\n });\n\n return this;\n }\n\n /**\n * Adds a token fee configuration to the builder.\n * Allows chaining multiple fee additions.\n * Fetches token decimals automatically if not provided.\n * @param tokenAmount The amount of the specified token.\n * @param feeTokenId The ID of the token to charge the fee in.\n * @param collectorAccountId Optional. The account ID to collect this fee. If omitted, defaults to the agent's own account ID during topic creation.\n * @param decimals Optional. The number of decimals for the token. If omitted, it will be fetched from the mirror node.\n * @param exemptAccountIds Optional. Accounts specifically exempt from *this* token fee.\n * @returns A Promise resolving to this FeeConfigBuilder instance for chaining.\n */\n async addTokenFee(\n tokenAmount: number,\n feeTokenId: string,\n collectorAccountId?: string,\n decimals?: number,\n exemptAccountIds: string[] = [],\n ): Promise<FeeConfigBuilder> {\n if (tokenAmount <= 0) {\n throw new Error('Token amount must be greater than zero');\n }\n if (!feeTokenId) {\n throw new Error('Fee token ID is required when adding a token fee');\n }\n\n let finalDecimals = decimals;\n if (finalDecimals === undefined) {\n try {\n const tokenInfo = await this.mirrorNode.getTokenInfo(feeTokenId);\n if (tokenInfo?.decimals) {\n finalDecimals = parseInt(tokenInfo.decimals, 10);\n this.logger.info(\n `Fetched decimals for ${feeTokenId}: ${finalDecimals}`,\n );\n } else {\n this.logger.warn(\n `Could not fetch decimals for ${feeTokenId}, defaulting to 0.`,\n );\n finalDecimals = 0;\n }\n } catch (error) {\n this.logger.error(\n `Error fetching decimals for ${feeTokenId}, defaulting to 0: ${error}`,\n );\n finalDecimals = 0;\n }\n }\n\n this.customFees.push({\n feeAmount: {\n amount: tokenAmount * 10 ** finalDecimals,\n decimals: finalDecimals,\n },\n feeCollectorAccountId:\n collectorAccountId || this.defaultCollectorAccountId,\n feeTokenId: feeTokenId,\n exemptAccounts: [...exemptAccountIds],\n type: CustomFeeType.FIXED_FEE,\n });\n\n return this;\n }\n\n /**\n * Builds the final TopicFeeConfig object.\n * @returns The TopicFeeConfig containing all added custom fees and a consolidated list of unique exempt accounts.\n * @throws Error if no fees have been added.\n * @throws Error if more than 10 fees have been added.\n */\n build(): TopicFeeConfig {\n if (this.customFees.length === 0) {\n throw new Error(\n 'At least one fee must be added using addHbarFee/addTokenFee or created using forHbar/forToken',\n );\n }\n\n if (this.customFees.length > 10) {\n throw new Error('Maximum of 10 custom fees per topic allowed');\n }\n\n const allExemptAccounts = new Set<string>();\n this.customFees.forEach(fee => {\n fee.exemptAccounts.forEach(account => allExemptAccounts.add(account));\n });\n\n const resolvedCustomFees = this.customFees.map(fee => ({\n ...fee,\n feeCollectorAccountId:\n fee.feeCollectorAccountId || this.defaultCollectorAccountId,\n }));\n\n return {\n customFees: resolvedCustomFees,\n exemptAccounts: Array.from(allExemptAccounts),\n };\n }\n}\n"],"names":[],"mappings":";;AAgEO,MAAM,iBAAsD;AAAA,EAMjE,YAAY,SAAkC;AAL9C,SAAQ,aAA+B,CAAA;AAMrC,SAAK,SAAS,QAAQ;AACtB,SAAK,aAAa,IAAI,iBAAiB,QAAQ,SAAS,QAAQ,MAAM;AACtE,SAAK,4BAA4B,QAAQ,6BAA6B;AAAA,EACxE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,OAAO,QACL,YACA,oBACA,SACA,QACA,iBAA2B,IACT;AAClB,UAAM,UAAU,IAAI,iBAAiB;AAAA,MACnC;AAAA,MACA;AAAA,MACA,2BAA2B;AAAA,IAAA,CAC5B;AACD,WAAO,QAAQ,WAAW,YAAY,oBAAoB,cAAc;AAAA,EAC1E;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAcA,aAAa,SACX,aACA,YACA,oBACA,SACA,QACA,iBAA2B,CAAA,GAC3B,UAC2B;AAC3B,UAAM,UAAU,IAAI,iBAAiB;AAAA,MACnC;AAAA,MACA;AAAA,MACA,2BAA2B;AAAA,IAAA,CAC5B;AACD,UAAM,QAAQ;AAAA,MACZ;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IAAA;AAEF,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,WACE,YACA,oBACA,mBAA6B,CAAA,GACX;AAClB,QAAI,cAAc,GAAG;AACnB,YAAM,IAAI,MAAM,uCAAuC;AAAA,IACzD;AAEA,SAAK,WAAW,KAAK;AAAA,MACnB,WAAW;AAAA,QACT,QAAQ,aAAa;AAAA,QACrB,UAAU;AAAA,MAAA;AAAA,MAEZ,uBACE,sBAAsB,KAAK;AAAA,MAC7B,YAAY;AAAA,MACZ,gBAAgB,CAAC,GAAG,gBAAgB;AAAA,MACpC,MAAM,cAAc;AAAA,IAAA,CACrB;AAED,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAaA,MAAM,YACJ,aACA,YACA,oBACA,UACA,mBAA6B,IACF;AAC3B,QAAI,eAAe,GAAG;AACpB,YAAM,IAAI,MAAM,wCAAwC;AAAA,IAC1D;AACA,QAAI,CAAC,YAAY;AACf,YAAM,IAAI,MAAM,kDAAkD;AAAA,IACpE;AAEA,QAAI,gBAAgB;AACpB,QAAI,kBAAkB,QAAW;AAC/B,UAAI;AACF,cAAM,YAAY,MAAM,KAAK,WAAW,aAAa,UAAU;AAC/D,YAAI,WAAW,UAAU;AACvB,0BAAgB,SAAS,UAAU,UAAU,EAAE;AAC/C,eAAK,OAAO;AAAA,YACV,wBAAwB,UAAU,KAAK,aAAa;AAAA,UAAA;AAAA,QAExD,OAAO;AACL,eAAK,OAAO;AAAA,YACV,gCAAgC,UAAU;AAAA,UAAA;AAE5C,0BAAgB;AAAA,QAClB;AAAA,MACF,SAAS,OAAO;AACd,aAAK,OAAO;AAAA,UACV,+BAA+B,UAAU,sBAAsB,KAAK;AAAA,QAAA;AAEtE,wBAAgB;AAAA,MAClB;AAAA,IACF;AAEA,SAAK,WAAW,KAAK;AAAA,MACnB,WAAW;AAAA,QACT,QAAQ,cAAc,MAAM;AAAA,QAC5B,UAAU;AAAA,MAAA;AAAA,MAEZ,uBACE,sBAAsB,KAAK;AAAA,MAC7B;AAAA,MACA,gBAAgB,CAAC,GAAG,gBAAgB;AAAA,MACpC,MAAM,cAAc;AAAA,IAAA,CACrB;AAED,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,QAAwB;AACtB,QAAI,KAAK,WAAW,WAAW,GAAG;AAChC,YAAM,IAAI;AAAA,QACR;AAAA,MAAA;AAAA,IAEJ;AAEA,QAAI,KAAK,WAAW,SAAS,IAAI;AAC/B,YAAM,IAAI,MAAM,6CAA6C;AAAA,IAC/D;AAEA,UAAM,wCAAwB,IAAA;AAC9B,SAAK,WAAW,QAAQ,CAAA,QAAO;AAC7B,UAAI,eAAe,QAAQ,CAAA,YAAW,kBAAkB,IAAI,OAAO,CAAC;AAAA,IACtE,CAAC;AAED,UAAM,qBAAqB,KAAK,WAAW,IAAI,CAAA,SAAQ;AAAA,MACrD,GAAG;AAAA,MACH,uBACE,IAAI,yBAAyB,KAAK;AAAA,IAAA,EACpC;AAEF,WAAO;AAAA,MACL,YAAY;AAAA,MACZ,gBAAgB,MAAM,KAAK,iBAAiB;AAAA,IAAA;AAAA,EAEhD;AACF;"}
1
+ {"version":3,"file":"standards-sdk.es152.js","sources":["../../src/services/registry-broker/private-key-signer.ts"],"sourcesContent":["import type {\n Signer,\n AccountBalance,\n AccountInfo,\n Transaction,\n TransactionRecord,\n SignerSignature,\n} from '@hashgraph/sdk';\nimport { optionalImport, optionalImportSync } from '../../utils/dynamic-import';\n\nconst unsupported = (method: string): Error =>\n new Error(`${method} is not supported by the in-memory signer`);\n\nexport interface PrivateKeySignerOptions {\n accountId: string;\n privateKey: string;\n network: 'mainnet' | 'testnet';\n}\n\ntype HashgraphSdk = typeof import('@hashgraph/sdk');\n\nlet cachedSdk: HashgraphSdk | null = null;\n\nconst loadHashgraphSdk = (): HashgraphSdk => {\n if (cachedSdk) {\n return cachedSdk;\n }\n const resolved = optionalImportSync<HashgraphSdk>('@hashgraph/sdk');\n if (resolved) {\n cachedSdk = resolved;\n return resolved;\n }\n\n const message =\n '@hashgraph/sdk is required for ledger signing. Install it as a dependency to enable createPrivateKeySigner.';\n throw new Error(message);\n};\n\nconst loadHashgraphSdkAsync = async (): Promise<HashgraphSdk> => {\n if (cachedSdk) {\n return cachedSdk;\n }\n const resolved = await optionalImport<HashgraphSdk>('@hashgraph/sdk');\n if (resolved) {\n cachedSdk = resolved;\n return resolved;\n }\n const message =\n '@hashgraph/sdk is required for ledger signing. Install it as a dependency to enable createPrivateKeySigner.';\n throw new Error(message);\n};\n\nconst buildSigner = (\n sdk: HashgraphSdk,\n options: PrivateKeySignerOptions,\n): Signer => {\n const { AccountId, LedgerId, PrivateKey, SignerSignature } = sdk;\n if (!options.privateKey) {\n throw new Error('privateKey is required to create a ledger signer.');\n }\n if (!options.accountId) {\n throw new Error('accountId is required to create a ledger signer.');\n }\n const accountId = AccountId.fromString(options.accountId);\n const privateKey = PrivateKey.fromString(options.privateKey);\n const ledgerId = LedgerId.fromString(options.network);\n\n return {\n getLedgerId: () => ledgerId,\n getAccountId: () => accountId,\n getAccountKey: () => privateKey.publicKey,\n getNetwork: () => ({}),\n getMirrorNetwork: () => [],\n sign: async (messages: Uint8Array[]): Promise<SignerSignature[]> =>\n Promise.all(\n messages.map(async message => {\n const signature = await privateKey.sign(message);\n return new SignerSignature({\n publicKey: privateKey.publicKey,\n signature,\n accountId,\n });\n }),\n ),\n getAccountBalance: async (): Promise<AccountBalance> => {\n throw unsupported('getAccountBalance');\n },\n getAccountInfo: async (): Promise<AccountInfo> => {\n throw unsupported('getAccountInfo');\n },\n getAccountRecords: async (): Promise<TransactionRecord[]> => {\n throw unsupported('getAccountRecords');\n },\n signTransaction: async <T extends Transaction>(_: T): Promise<T> => {\n throw unsupported('signTransaction');\n },\n checkTransaction: async <T extends Transaction>(_: T): Promise<T> => {\n throw unsupported('checkTransaction');\n },\n populateTransaction: async <T extends Transaction>(_: T): Promise<T> => {\n throw unsupported('populateTransaction');\n },\n call: async <RequestT, ResponseT, OutputT>(\n _request: unknown,\n ): Promise<OutputT> => {\n throw unsupported('call');\n },\n };\n};\n\nexport const createPrivateKeySigner = (\n options: PrivateKeySignerOptions,\n): Signer => buildSigner(loadHashgraphSdk(), options);\n\nexport const createPrivateKeySignerAsync = async (\n options: PrivateKeySignerOptions,\n): Promise<Signer> => buildSigner(await loadHashgraphSdkAsync(), options);\n"],"names":[],"mappings":";AAUA,MAAM,cAAc,CAAC,WACnB,IAAI,MAAM,GAAG,MAAM,2CAA2C;AAUhE,IAAI,YAAiC;AAErC,MAAM,mBAAmB,MAAoB;AAC3C,MAAI,WAAW;AACb,WAAO;AAAA,EACT;AACA,QAAM,WAAW,mBAAiC,gBAAgB;AAClE,MAAI,UAAU;AACZ,gBAAY;AACZ,WAAO;AAAA,EACT;AAEA,QAAM,UACJ;AACF,QAAM,IAAI,MAAM,OAAO;AACzB;AAEA,MAAM,wBAAwB,YAAmC;AAC/D,MAAI,WAAW;AACb,WAAO;AAAA,EACT;AACA,QAAM,WAAW,MAAM,eAA6B,gBAAgB;AACpE,MAAI,UAAU;AACZ,gBAAY;AACZ,WAAO;AAAA,EACT;AACA,QAAM,UACJ;AACF,QAAM,IAAI,MAAM,OAAO;AACzB;AAEA,MAAM,cAAc,CAClB,KACA,YACW;AACX,QAAM,EAAE,WAAW,UAAU,YAAY,oBAAoB;AAC7D,MAAI,CAAC,QAAQ,YAAY;AACvB,UAAM,IAAI,MAAM,mDAAmD;AAAA,EACrE;AACA,MAAI,CAAC,QAAQ,WAAW;AACtB,UAAM,IAAI,MAAM,kDAAkD;AAAA,EACpE;AACA,QAAM,YAAY,UAAU,WAAW,QAAQ,SAAS;AACxD,QAAM,aAAa,WAAW,WAAW,QAAQ,UAAU;AAC3D,QAAM,WAAW,SAAS,WAAW,QAAQ,OAAO;AAEpD,SAAO;AAAA,IACL,aAAa,MAAM;AAAA,IACnB,cAAc,MAAM;AAAA,IACpB,eAAe,MAAM,WAAW;AAAA,IAChC,YAAY,OAAO,CAAA;AAAA,IACnB,kBAAkB,MAAM,CAAA;AAAA,IACxB,MAAM,OAAO,aACX,QAAQ;AAAA,MACN,SAAS,IAAI,OAAM,YAAW;AAC5B,cAAM,YAAY,MAAM,WAAW,KAAK,OAAO;AAC/C,eAAO,IAAI,gBAAgB;AAAA,UACzB,WAAW,WAAW;AAAA,UACtB;AAAA,UACA;AAAA,QAAA,CACD;AAAA,MACH,CAAC;AAAA,IAAA;AAAA,IAEL,mBAAmB,YAAqC;AACtD,YAAM,YAAY,mBAAmB;AAAA,IACvC;AAAA,IACA,gBAAgB,YAAkC;AAChD,YAAM,YAAY,gBAAgB;AAAA,IACpC;AAAA,IACA,mBAAmB,YAA0C;AAC3D,YAAM,YAAY,mBAAmB;AAAA,IACvC;AAAA,IACA,iBAAiB,OAA8B,MAAqB;AAClE,YAAM,YAAY,iBAAiB;AAAA,IACrC;AAAA,IACA,kBAAkB,OAA8B,MAAqB;AACnE,YAAM,YAAY,kBAAkB;AAAA,IACtC;AAAA,IACA,qBAAqB,OAA8B,MAAqB;AACtE,YAAM,YAAY,qBAAqB;AAAA,IACzC;AAAA,IACA,MAAM,OACJ,aACqB;AACrB,YAAM,YAAY,MAAM;AAAA,IAC1B;AAAA,EAAA;AAEJ;AAEO,MAAM,yBAAyB,CACpC,YACW,YAAY,iBAAA,GAAoB,OAAO;AAE7C,MAAM,8BAA8B,OACzC,YACoB,YAAY,MAAM,sBAAA,GAAyB,OAAO;"}
@@ -1,10 +1,90 @@
1
- var CustomFeeType = /* @__PURE__ */ ((CustomFeeType2) => {
2
- CustomFeeType2["FIXED_FEE"] = "FIXED_FEE";
3
- CustomFeeType2["FRACTIONAL_FEE"] = "FRACTIONAL_FEE";
4
- CustomFeeType2["ROYALTY_FEE"] = "ROYALTY_FEE";
5
- return CustomFeeType2;
6
- })(CustomFeeType || {});
1
+ const normalise = (value) => value.trim().toLowerCase();
2
+ const HEDERA_NETWORK_ALIASES = /* @__PURE__ */ new Map([
3
+ ["hedera:mainnet", { canonical: "hedera:mainnet", hederaNetwork: "mainnet" }],
4
+ ["mainnet", { canonical: "hedera:mainnet", hederaNetwork: "mainnet" }],
5
+ ["hedera-mainnet", { canonical: "hedera:mainnet", hederaNetwork: "mainnet" }],
6
+ ["hedera_mainnet", { canonical: "hedera:mainnet", hederaNetwork: "mainnet" }],
7
+ ["hedera:testnet", { canonical: "hedera:testnet", hederaNetwork: "testnet" }],
8
+ ["testnet", { canonical: "hedera:testnet", hederaNetwork: "testnet" }],
9
+ ["hedera-testnet", { canonical: "hedera:testnet", hederaNetwork: "testnet" }],
10
+ ["hedera_testnet", { canonical: "hedera:testnet", hederaNetwork: "testnet" }]
11
+ ]);
12
+ const EVM_NETWORK_CHAIN_IDS = {
13
+ abstract: 2741,
14
+ "abstract-testnet": 11124,
15
+ base: 8453,
16
+ "base-sepolia": 84532,
17
+ avalanche: 43114,
18
+ "avalanche-fuji": 43113,
19
+ iotex: 4689,
20
+ sei: 1329,
21
+ "sei-testnet": 1328,
22
+ polygon: 137,
23
+ "polygon-amoy": 80002,
24
+ peaq: 3338
25
+ };
26
+ const CHAIN_ID_TO_ALIAS = new Map(
27
+ Object.entries(EVM_NETWORK_CHAIN_IDS).map(([alias, id]) => [id, alias])
28
+ );
29
+ const parseChainId = (value) => {
30
+ if (/^eip155:\d+$/i.test(value)) {
31
+ return Number.parseInt(value.split(":")[1], 10);
32
+ }
33
+ if (/^\d+$/.test(value)) {
34
+ return Number.parseInt(value, 10);
35
+ }
36
+ return void 0;
37
+ };
38
+ const normaliseEvmNetwork = (value) => {
39
+ const trimmed = normalise(value);
40
+ let chainId = parseChainId(trimmed);
41
+ let alias;
42
+ if (chainId === void 0) {
43
+ const mapped = EVM_NETWORK_CHAIN_IDS[trimmed];
44
+ if (mapped !== void 0) {
45
+ chainId = mapped;
46
+ alias = trimmed;
47
+ }
48
+ } else if (CHAIN_ID_TO_ALIAS.has(chainId)) {
49
+ alias = CHAIN_ID_TO_ALIAS.get(chainId);
50
+ }
51
+ if (chainId === void 0) {
52
+ throw new Error(
53
+ 'Unsupported EVM ledger network. Provide an alias like "base-sepolia" or a canonical eip155:<chainId> string.'
54
+ );
55
+ }
56
+ return {
57
+ canonical: `eip155:${chainId}`,
58
+ kind: "evm",
59
+ chainId,
60
+ legacyName: alias
61
+ };
62
+ };
63
+ const normaliseHederaNetwork = (value) => {
64
+ const trimmed = normalise(value);
65
+ const mapping = HEDERA_NETWORK_ALIASES.get(trimmed);
66
+ if (!mapping) {
67
+ throw new Error(
68
+ 'Unsupported Hedera network. Use hedera:mainnet or hedera:testnet (legacy "mainnet"/"testnet" also accepted).'
69
+ );
70
+ }
71
+ return {
72
+ canonical: mapping.canonical,
73
+ kind: "hedera",
74
+ hederaNetwork: mapping.hederaNetwork
75
+ };
76
+ };
77
+ const canonicalizeLedgerNetwork = (network) => {
78
+ if (typeof network !== "string" || network.trim().length === 0) {
79
+ throw new Error("Ledger network is required.");
80
+ }
81
+ const trimmed = normalise(network);
82
+ if (trimmed.startsWith("hedera:") || trimmed.includes("hedera-") || trimmed.includes("hedera_") || trimmed === "mainnet" || trimmed === "testnet") {
83
+ return normaliseHederaNetwork(trimmed);
84
+ }
85
+ return normaliseEvmNetwork(trimmed);
86
+ };
7
87
  export {
8
- CustomFeeType
88
+ canonicalizeLedgerNetwork
9
89
  };
10
90
  //# sourceMappingURL=standards-sdk.es153.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"standards-sdk.es153.js","sources":["../../src/fees/types.ts"],"sourcesContent":["export interface FeeConfigBuilderInterface {\n addHbarFee(\n hbarAmount: number,\n collectorAccountId?: string,\n exemptAccountIds?: string[],\n ): FeeConfigBuilderInterface;\n addTokenFee(\n tokenAmount: number,\n feeTokenId: string,\n collectorAccountId?: string,\n decimals?: number,\n exemptAccountIds?: string[],\n ): Promise<FeeConfigBuilderInterface>;\n build(): TopicFeeConfig;\n}\n\nexport enum CustomFeeType {\n FIXED_FEE = 'FIXED_FEE',\n FRACTIONAL_FEE = 'FRACTIONAL_FEE',\n ROYALTY_FEE = 'ROYALTY_FEE',\n}\n\nexport type FeeAmount = {\n amount: number;\n decimals?: number;\n};\n\nexport interface TokenFeeConfig {\n feeAmount: FeeAmount;\n feeCollectorAccountId: string;\n feeTokenId?: string;\n exemptAccounts: string[];\n type: CustomFeeType;\n}\n\nexport interface TopicFeeConfig {\n customFees: TokenFeeConfig[];\n exemptAccounts: string[];\n}\n"],"names":["CustomFeeType"],"mappings":"AAgBO,IAAK,kCAAAA,mBAAL;AACLA,iBAAA,WAAA,IAAY;AACZA,iBAAA,gBAAA,IAAiB;AACjBA,iBAAA,aAAA,IAAc;AAHJ,SAAAA;AAAA,GAAA,iBAAA,CAAA,CAAA;"}
1
+ {"version":3,"file":"standards-sdk.es153.js","sources":["../../src/services/registry-broker/ledger-network.ts"],"sourcesContent":["type HederaNetwork = 'mainnet' | 'testnet';\ntype LedgerNetworkKind = 'hedera' | 'evm';\n\nexport interface CanonicalLedgerNetwork {\n canonical: string;\n kind: LedgerNetworkKind;\n hederaNetwork?: HederaNetwork;\n chainId?: number;\n legacyName?: string;\n}\n\nconst normalise = (value: string): string => value.trim().toLowerCase();\n\nconst HEDERA_NETWORK_ALIASES = new Map<\n string,\n { canonical: `hedera:${HederaNetwork}`; hederaNetwork: HederaNetwork }\n>([\n ['hedera:mainnet', { canonical: 'hedera:mainnet', hederaNetwork: 'mainnet' }],\n ['mainnet', { canonical: 'hedera:mainnet', hederaNetwork: 'mainnet' }],\n ['hedera-mainnet', { canonical: 'hedera:mainnet', hederaNetwork: 'mainnet' }],\n ['hedera_mainnet', { canonical: 'hedera:mainnet', hederaNetwork: 'mainnet' }],\n ['hedera:testnet', { canonical: 'hedera:testnet', hederaNetwork: 'testnet' }],\n ['testnet', { canonical: 'hedera:testnet', hederaNetwork: 'testnet' }],\n ['hedera-testnet', { canonical: 'hedera:testnet', hederaNetwork: 'testnet' }],\n ['hedera_testnet', { canonical: 'hedera:testnet', hederaNetwork: 'testnet' }],\n]);\n\nconst EVM_NETWORK_CHAIN_IDS: Record<string, number> = {\n abstract: 2741,\n 'abstract-testnet': 11124,\n base: 8453,\n 'base-sepolia': 84532,\n avalanche: 43114,\n 'avalanche-fuji': 43113,\n iotex: 4689,\n sei: 1329,\n 'sei-testnet': 1328,\n polygon: 137,\n 'polygon-amoy': 80002,\n peaq: 3338,\n};\n\nconst CHAIN_ID_TO_ALIAS = new Map<number, string>(\n Object.entries(EVM_NETWORK_CHAIN_IDS).map(([alias, id]) => [id, alias]),\n);\n\nconst parseChainId = (value: string): number | undefined => {\n if (/^eip155:\\d+$/i.test(value)) {\n return Number.parseInt(value.split(':')[1]!, 10);\n }\n if (/^\\d+$/.test(value)) {\n return Number.parseInt(value, 10);\n }\n return undefined;\n};\n\nconst normaliseEvmNetwork = (value: string): CanonicalLedgerNetwork => {\n const trimmed = normalise(value);\n let chainId = parseChainId(trimmed);\n let alias: string | undefined;\n\n if (chainId === undefined) {\n const mapped = EVM_NETWORK_CHAIN_IDS[trimmed];\n if (mapped !== undefined) {\n chainId = mapped;\n alias = trimmed;\n }\n } else if (CHAIN_ID_TO_ALIAS.has(chainId)) {\n alias = CHAIN_ID_TO_ALIAS.get(chainId);\n }\n\n if (chainId === undefined) {\n throw new Error(\n 'Unsupported EVM ledger network. Provide an alias like \"base-sepolia\" or a canonical eip155:<chainId> string.',\n );\n }\n\n return {\n canonical: `eip155:${chainId}`,\n kind: 'evm',\n chainId,\n legacyName: alias,\n };\n};\n\nconst normaliseHederaNetwork = (value: string): CanonicalLedgerNetwork => {\n const trimmed = normalise(value);\n const mapping = HEDERA_NETWORK_ALIASES.get(trimmed);\n if (!mapping) {\n throw new Error(\n 'Unsupported Hedera network. Use hedera:mainnet or hedera:testnet (legacy \"mainnet\"/\"testnet\" also accepted).',\n );\n }\n return {\n canonical: mapping.canonical,\n kind: 'hedera',\n hederaNetwork: mapping.hederaNetwork,\n };\n};\n\nexport const canonicalizeLedgerNetwork = (\n network: string,\n): CanonicalLedgerNetwork => {\n if (typeof network !== 'string' || network.trim().length === 0) {\n throw new Error('Ledger network is required.');\n }\n const trimmed = normalise(network);\n if (\n trimmed.startsWith('hedera:') ||\n trimmed.includes('hedera-') ||\n trimmed.includes('hedera_') ||\n trimmed === 'mainnet' ||\n trimmed === 'testnet'\n ) {\n return normaliseHederaNetwork(trimmed);\n }\n return normaliseEvmNetwork(trimmed);\n};\n"],"names":[],"mappings":"AAWA,MAAM,YAAY,CAAC,UAA0B,MAAM,KAAA,EAAO,YAAA;AAE1D,MAAM,6CAA6B,IAGjC;AAAA,EACA,CAAC,kBAAkB,EAAE,WAAW,kBAAkB,eAAe,WAAW;AAAA,EAC5E,CAAC,WAAW,EAAE,WAAW,kBAAkB,eAAe,WAAW;AAAA,EACrE,CAAC,kBAAkB,EAAE,WAAW,kBAAkB,eAAe,WAAW;AAAA,EAC5E,CAAC,kBAAkB,EAAE,WAAW,kBAAkB,eAAe,WAAW;AAAA,EAC5E,CAAC,kBAAkB,EAAE,WAAW,kBAAkB,eAAe,WAAW;AAAA,EAC5E,CAAC,WAAW,EAAE,WAAW,kBAAkB,eAAe,WAAW;AAAA,EACrE,CAAC,kBAAkB,EAAE,WAAW,kBAAkB,eAAe,WAAW;AAAA,EAC5E,CAAC,kBAAkB,EAAE,WAAW,kBAAkB,eAAe,WAAW;AAC9E,CAAC;AAED,MAAM,wBAAgD;AAAA,EACpD,UAAU;AAAA,EACV,oBAAoB;AAAA,EACpB,MAAM;AAAA,EACN,gBAAgB;AAAA,EAChB,WAAW;AAAA,EACX,kBAAkB;AAAA,EAClB,OAAO;AAAA,EACP,KAAK;AAAA,EACL,eAAe;AAAA,EACf,SAAS;AAAA,EACT,gBAAgB;AAAA,EAChB,MAAM;AACR;AAEA,MAAM,oBAAoB,IAAI;AAAA,EAC5B,OAAO,QAAQ,qBAAqB,EAAE,IAAI,CAAC,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,KAAK,CAAC;AACxE;AAEA,MAAM,eAAe,CAAC,UAAsC;AAC1D,MAAI,gBAAgB,KAAK,KAAK,GAAG;AAC/B,WAAO,OAAO,SAAS,MAAM,MAAM,GAAG,EAAE,CAAC,GAAI,EAAE;AAAA,EACjD;AACA,MAAI,QAAQ,KAAK,KAAK,GAAG;AACvB,WAAO,OAAO,SAAS,OAAO,EAAE;AAAA,EAClC;AACA,SAAO;AACT;AAEA,MAAM,sBAAsB,CAAC,UAA0C;AACrE,QAAM,UAAU,UAAU,KAAK;AAC/B,MAAI,UAAU,aAAa,OAAO;AAClC,MAAI;AAEJ,MAAI,YAAY,QAAW;AACzB,UAAM,SAAS,sBAAsB,OAAO;AAC5C,QAAI,WAAW,QAAW;AACxB,gBAAU;AACV,cAAQ;AAAA,IACV;AAAA,EACF,WAAW,kBAAkB,IAAI,OAAO,GAAG;AACzC,YAAQ,kBAAkB,IAAI,OAAO;AAAA,EACvC;AAEA,MAAI,YAAY,QAAW;AACzB,UAAM,IAAI;AAAA,MACR;AAAA,IAAA;AAAA,EAEJ;AAEA,SAAO;AAAA,IACL,WAAW,UAAU,OAAO;AAAA,IAC5B,MAAM;AAAA,IACN;AAAA,IACA,YAAY;AAAA,EAAA;AAEhB;AAEA,MAAM,yBAAyB,CAAC,UAA0C;AACxE,QAAM,UAAU,UAAU,KAAK;AAC/B,QAAM,UAAU,uBAAuB,IAAI,OAAO;AAClD,MAAI,CAAC,SAAS;AACZ,UAAM,IAAI;AAAA,MACR;AAAA,IAAA;AAAA,EAEJ;AACA,SAAO;AAAA,IACL,WAAW,QAAQ;AAAA,IACnB,MAAM;AAAA,IACN,eAAe,QAAQ;AAAA,EAAA;AAE3B;AAEO,MAAM,4BAA4B,CACvC,YAC2B;AAC3B,MAAI,OAAO,YAAY,YAAY,QAAQ,KAAA,EAAO,WAAW,GAAG;AAC9D,UAAM,IAAI,MAAM,6BAA6B;AAAA,EAC/C;AACA,QAAM,UAAU,UAAU,OAAO;AACjC,MACE,QAAQ,WAAW,SAAS,KAC5B,QAAQ,SAAS,SAAS,KAC1B,QAAQ,SAAS,SAAS,KAC1B,YAAY,aACZ,YAAY,WACZ;AACA,WAAO,uBAAuB,OAAO;AAAA,EACvC;AACA,SAAO,oBAAoB,OAAO;AACpC;"}
@@ -1,89 +1,63 @@
1
- import { Logger } from "./standards-sdk.es123.js";
2
- class ContentResolverRegistryImpl {
3
- constructor() {
4
- this.resolver = null;
5
- this.onUnavailableCallbacks = [];
6
- this.logger = Logger.getInstance({ module: "ContentResolverRegistry" });
1
+ const HOL_CHAT_PROTOCOL_ID = "hol-chat";
2
+ const isRecord = (value) => Boolean(value) && typeof value === "object" && !Array.isArray(value);
3
+ const isHolChatOp = (value) => {
4
+ if (!isRecord(value)) {
5
+ return false;
7
6
  }
8
- static getInstance() {
9
- if (!ContentResolverRegistryImpl._instance) {
10
- ContentResolverRegistryImpl._instance = new ContentResolverRegistryImpl();
11
- }
12
- return ContentResolverRegistryImpl._instance;
13
- }
14
- /**
15
- * Register a content resolver (typically called by ContentStoreManager)
16
- */
17
- register(resolver) {
18
- if (this.resolver) {
19
- this.logger.warn("Resolver already registered, replacing existing");
20
- }
21
- this.resolver = resolver;
22
- this.logger.info("Content resolver registered");
23
- }
24
- /**
25
- * Get the registered content resolver
26
- */
27
- getResolver() {
28
- return this.resolver;
29
- }
30
- /**
31
- * Check if a resolver is available
32
- */
33
- isAvailable() {
34
- return this.resolver !== null;
7
+ if (value.p !== HOL_CHAT_PROTOCOL_ID) {
8
+ return false;
35
9
  }
36
- /**
37
- * Unregister the current resolver
38
- */
39
- unregister() {
40
- if (this.resolver) {
41
- this.resolver = null;
42
- this.logger.info("Content resolver unregistered");
43
- this.onUnavailableCallbacks.forEach((callback) => {
44
- try {
45
- callback();
46
- } catch (error) {
47
- this.logger.error("Error in unavailable callback:", error);
48
- }
49
- });
50
- }
10
+ if (typeof value.request_id !== "string" || value.request_id.trim().length === 0) {
11
+ return false;
51
12
  }
52
- /**
53
- * Register callback for when resolver becomes unavailable
54
- */
55
- onUnavailable(callback) {
56
- this.onUnavailableCallbacks.push(callback);
13
+ const op = value.op;
14
+ if (op !== "payment_request" && op !== "payment_approve" && op !== "payment_decline" && op !== "payment_result" && op !== "job_status") {
15
+ return false;
57
16
  }
58
- /**
59
- * Remove unavailable callback
60
- */
61
- offUnavailable(callback) {
62
- const index = this.onUnavailableCallbacks.indexOf(callback);
63
- if (index !== -1) {
64
- this.onUnavailableCallbacks.splice(index, 1);
17
+ return true;
18
+ };
19
+ const parseHolChatOps = (ops) => {
20
+ if (!Array.isArray(ops)) {
21
+ return [];
22
+ }
23
+ return ops.filter(isHolChatOp).map((op) => {
24
+ const next = {
25
+ p: HOL_CHAT_PROTOCOL_ID,
26
+ op: op.op,
27
+ request_id: op.request_id.trim()
28
+ };
29
+ if (typeof op.m === "string" && op.m.trim().length > 0) {
30
+ next.m = op.m.trim();
65
31
  }
66
- }
67
- /**
68
- * Execute operation with resolver or fallback
69
- */
70
- async withResolver(operation, fallback) {
71
- if (this.resolver) {
72
- try {
73
- return await operation(this.resolver);
74
- } catch (error) {
75
- this.logger.warn("Resolver operation failed, using fallback:", error);
76
- return await fallback();
77
- }
78
- } else {
79
- this.logger.warn("No resolver available, using fallback");
80
- return await fallback();
32
+ if (isRecord(op.data)) {
33
+ next.data = { ...op.data };
81
34
  }
82
- }
83
- }
84
- const ContentResolverRegistry = ContentResolverRegistryImpl.getInstance();
35
+ return next;
36
+ });
37
+ };
38
+ const buildPaymentApproveMessage = (input) => JSON.stringify({
39
+ p: HOL_CHAT_PROTOCOL_ID,
40
+ op: "payment_approve",
41
+ request_id: input.requestId,
42
+ data: { job_id: input.jobId }
43
+ });
44
+ const buildPaymentDeclineMessage = (input) => JSON.stringify({
45
+ p: HOL_CHAT_PROTOCOL_ID,
46
+ op: "payment_decline",
47
+ request_id: input.requestId
48
+ });
49
+ const buildJobStatusMessage = (input) => JSON.stringify({
50
+ p: HOL_CHAT_PROTOCOL_ID,
51
+ op: "job_status",
52
+ request_id: input.requestId,
53
+ data: { job_id: input.jobId }
54
+ });
85
55
  export {
86
- ContentResolverRegistry,
87
- ContentResolverRegistryImpl
56
+ HOL_CHAT_PROTOCOL_ID,
57
+ buildJobStatusMessage,
58
+ buildPaymentApproveMessage,
59
+ buildPaymentDeclineMessage,
60
+ isHolChatOp,
61
+ parseHolChatOps
88
62
  };
89
63
  //# sourceMappingURL=standards-sdk.es154.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"standards-sdk.es154.js","sources":["../../src/content-store/ContentResolverRegistry.ts"],"sourcesContent":["/**\n * Content Resolver Registry\n *\n * Dependency injection registry for content resolvers.\n * Allows tools to access content resolution without circular dependencies.\n */\n\nimport type { ContentResolverInterface } from './types';\nimport { Logger } from '../utils/logger';\n\nexport class ContentResolverRegistryImpl {\n private static _instance: ContentResolverRegistryImpl;\n private resolver: ContentResolverInterface | null = null;\n private onUnavailableCallbacks: (() => void)[] = [];\n private logger = Logger.getInstance({ module: 'ContentResolverRegistry' });\n\n static getInstance(): ContentResolverRegistryImpl {\n if (!ContentResolverRegistryImpl._instance) {\n ContentResolverRegistryImpl._instance = new ContentResolverRegistryImpl();\n }\n return ContentResolverRegistryImpl._instance;\n }\n\n /**\n * Register a content resolver (typically called by ContentStoreManager)\n */\n register(resolver: ContentResolverInterface): void {\n if (this.resolver) {\n this.logger.warn('Resolver already registered, replacing existing');\n }\n this.resolver = resolver;\n this.logger.info('Content resolver registered');\n }\n\n /**\n * Get the registered content resolver\n */\n getResolver(): ContentResolverInterface | null {\n return this.resolver;\n }\n\n /**\n * Check if a resolver is available\n */\n isAvailable(): boolean {\n return this.resolver !== null;\n }\n\n /**\n * Unregister the current resolver\n */\n unregister(): void {\n if (this.resolver) {\n this.resolver = null;\n this.logger.info('Content resolver unregistered');\n this.onUnavailableCallbacks.forEach(callback => {\n try {\n callback();\n } catch (error) {\n this.logger.error('Error in unavailable callback:', error);\n }\n });\n }\n }\n\n /**\n * Register callback for when resolver becomes unavailable\n */\n onUnavailable(callback: () => void): void {\n this.onUnavailableCallbacks.push(callback);\n }\n\n /**\n * Remove unavailable callback\n */\n offUnavailable(callback: () => void): void {\n const index = this.onUnavailableCallbacks.indexOf(callback);\n if (index !== -1) {\n this.onUnavailableCallbacks.splice(index, 1);\n }\n }\n\n /**\n * Execute operation with resolver or fallback\n */\n async withResolver<T>(\n operation: (resolver: ContentResolverInterface) => Promise<T>,\n fallback: () => Promise<T>,\n ): Promise<T> {\n if (this.resolver) {\n try {\n return await operation(this.resolver);\n } catch (error) {\n this.logger.warn('Resolver operation failed, using fallback:', error);\n return await fallback();\n }\n } else {\n this.logger.warn('No resolver available, using fallback');\n return await fallback();\n }\n }\n}\n\nexport const ContentResolverRegistry =\n ContentResolverRegistryImpl.getInstance();\n"],"names":[],"mappings":";AAUO,MAAM,4BAA4B;AAAA,EAAlC,cAAA;AAEL,SAAQ,WAA4C;AACpD,SAAQ,yBAAyC,CAAA;AACjD,SAAQ,SAAS,OAAO,YAAY,EAAE,QAAQ,2BAA2B;AAAA,EAAA;AAAA,EAEzE,OAAO,cAA2C;AAChD,QAAI,CAAC,4BAA4B,WAAW;AAC1C,kCAA4B,YAAY,IAAI,4BAAA;AAAA,IAC9C;AACA,WAAO,4BAA4B;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA,EAKA,SAAS,UAA0C;AACjD,QAAI,KAAK,UAAU;AACjB,WAAK,OAAO,KAAK,iDAAiD;AAAA,IACpE;AACA,SAAK,WAAW;AAChB,SAAK,OAAO,KAAK,6BAA6B;AAAA,EAChD;AAAA;AAAA;AAAA;AAAA,EAKA,cAA+C;AAC7C,WAAO,KAAK;AAAA,EACd;AAAA;AAAA;AAAA;AAAA,EAKA,cAAuB;AACrB,WAAO,KAAK,aAAa;AAAA,EAC3B;AAAA;AAAA;AAAA;AAAA,EAKA,aAAmB;AACjB,QAAI,KAAK,UAAU;AACjB,WAAK,WAAW;AAChB,WAAK,OAAO,KAAK,+BAA+B;AAChD,WAAK,uBAAuB,QAAQ,CAAA,aAAY;AAC9C,YAAI;AACF,mBAAA;AAAA,QACF,SAAS,OAAO;AACd,eAAK,OAAO,MAAM,kCAAkC,KAAK;AAAA,QAC3D;AAAA,MACF,CAAC;AAAA,IACH;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,cAAc,UAA4B;AACxC,SAAK,uBAAuB,KAAK,QAAQ;AAAA,EAC3C;AAAA;AAAA;AAAA;AAAA,EAKA,eAAe,UAA4B;AACzC,UAAM,QAAQ,KAAK,uBAAuB,QAAQ,QAAQ;AAC1D,QAAI,UAAU,IAAI;AAChB,WAAK,uBAAuB,OAAO,OAAO,CAAC;AAAA,IAC7C;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,aACJ,WACA,UACY;AACZ,QAAI,KAAK,UAAU;AACjB,UAAI;AACF,eAAO,MAAM,UAAU,KAAK,QAAQ;AAAA,MACtC,SAAS,OAAO;AACd,aAAK,OAAO,KAAK,8CAA8C,KAAK;AACpE,eAAO,MAAM,SAAA;AAAA,MACf;AAAA,IACF,OAAO;AACL,WAAK,OAAO,KAAK,uCAAuC;AACxD,aAAO,MAAM,SAAA;AAAA,IACf;AAAA,EACF;AACF;AAEO,MAAM,0BACX,4BAA4B,YAAA;"}
1
+ {"version":3,"file":"standards-sdk.es154.js","sources":["../../src/services/registry-broker/hol-chat-ops.ts"],"sourcesContent":["export const HOL_CHAT_PROTOCOL_ID = 'hol-chat' as const;\n\nexport type HolChatOpName =\n | 'payment_request'\n | 'payment_approve'\n | 'payment_decline'\n | 'payment_result'\n | 'job_status';\n\nexport interface HolChatOpBase {\n p: typeof HOL_CHAT_PROTOCOL_ID;\n op: HolChatOpName;\n request_id: string;\n m?: string;\n data?: Record<string, unknown>;\n}\n\nexport type HolChatOp = HolChatOpBase;\n\nconst isRecord = (value: unknown): value is Record<string, unknown> =>\n Boolean(value) && typeof value === 'object' && !Array.isArray(value);\n\nexport const isHolChatOp = (value: unknown): value is HolChatOp => {\n if (!isRecord(value)) {\n return false;\n }\n if (value.p !== HOL_CHAT_PROTOCOL_ID) {\n return false;\n }\n if (\n typeof value.request_id !== 'string' ||\n value.request_id.trim().length === 0\n ) {\n return false;\n }\n const op = value.op;\n if (\n op !== 'payment_request' &&\n op !== 'payment_approve' &&\n op !== 'payment_decline' &&\n op !== 'payment_result' &&\n op !== 'job_status'\n ) {\n return false;\n }\n return true;\n};\n\nexport const parseHolChatOps = (ops: unknown): HolChatOp[] => {\n if (!Array.isArray(ops)) {\n return [];\n }\n return ops.filter(isHolChatOp).map(op => {\n const next: HolChatOp = {\n p: HOL_CHAT_PROTOCOL_ID,\n op: op.op,\n request_id: op.request_id.trim(),\n };\n if (typeof op.m === 'string' && op.m.trim().length > 0) {\n next.m = op.m.trim();\n }\n if (isRecord(op.data)) {\n next.data = { ...op.data };\n }\n return next;\n });\n};\n\nexport const buildPaymentApproveMessage = (input: {\n requestId: string;\n jobId: number;\n}): string =>\n JSON.stringify({\n p: HOL_CHAT_PROTOCOL_ID,\n op: 'payment_approve',\n request_id: input.requestId,\n data: { job_id: input.jobId },\n });\n\nexport const buildPaymentDeclineMessage = (input: {\n requestId: string;\n}): string =>\n JSON.stringify({\n p: HOL_CHAT_PROTOCOL_ID,\n op: 'payment_decline',\n request_id: input.requestId,\n });\n\nexport const buildJobStatusMessage = (input: {\n requestId: string;\n jobId: number;\n}): string =>\n JSON.stringify({\n p: HOL_CHAT_PROTOCOL_ID,\n op: 'job_status',\n request_id: input.requestId,\n data: { job_id: input.jobId },\n });\n"],"names":[],"mappings":"AAAO,MAAM,uBAAuB;AAmBpC,MAAM,WAAW,CAAC,UAChB,QAAQ,KAAK,KAAK,OAAO,UAAU,YAAY,CAAC,MAAM,QAAQ,KAAK;AAE9D,MAAM,cAAc,CAAC,UAAuC;AACjE,MAAI,CAAC,SAAS,KAAK,GAAG;AACpB,WAAO;AAAA,EACT;AACA,MAAI,MAAM,MAAM,sBAAsB;AACpC,WAAO;AAAA,EACT;AACA,MACE,OAAO,MAAM,eAAe,YAC5B,MAAM,WAAW,KAAA,EAAO,WAAW,GACnC;AACA,WAAO;AAAA,EACT;AACA,QAAM,KAAK,MAAM;AACjB,MACE,OAAO,qBACP,OAAO,qBACP,OAAO,qBACP,OAAO,oBACP,OAAO,cACP;AACA,WAAO;AAAA,EACT;AACA,SAAO;AACT;AAEO,MAAM,kBAAkB,CAAC,QAA8B;AAC5D,MAAI,CAAC,MAAM,QAAQ,GAAG,GAAG;AACvB,WAAO,CAAA;AAAA,EACT;AACA,SAAO,IAAI,OAAO,WAAW,EAAE,IAAI,CAAA,OAAM;AACvC,UAAM,OAAkB;AAAA,MACtB,GAAG;AAAA,MACH,IAAI,GAAG;AAAA,MACP,YAAY,GAAG,WAAW,KAAA;AAAA,IAAK;AAEjC,QAAI,OAAO,GAAG,MAAM,YAAY,GAAG,EAAE,KAAA,EAAO,SAAS,GAAG;AACtD,WAAK,IAAI,GAAG,EAAE,KAAA;AAAA,IAChB;AACA,QAAI,SAAS,GAAG,IAAI,GAAG;AACrB,WAAK,OAAO,EAAE,GAAG,GAAG,KAAA;AAAA,IACtB;AACA,WAAO;AAAA,EACT,CAAC;AACH;AAEO,MAAM,6BAA6B,CAAC,UAIzC,KAAK,UAAU;AAAA,EACb,GAAG;AAAA,EACH,IAAI;AAAA,EACJ,YAAY,MAAM;AAAA,EAClB,MAAM,EAAE,QAAQ,MAAM,MAAA;AACxB,CAAC;AAEI,MAAM,6BAA6B,CAAC,UAGzC,KAAK,UAAU;AAAA,EACb,GAAG;AAAA,EACH,IAAI;AAAA,EACJ,YAAY,MAAM;AACpB,CAAC;AAEI,MAAM,wBAAwB,CAAC,UAIpC,KAAK,UAAU;AAAA,EACb,GAAG;AAAA,EACH,IAAI;AAAA,EACJ,YAAY,MAAM;AAAA,EAClB,MAAM,EAAE,QAAQ,MAAM,MAAA;AACxB,CAAC;"}