@hashgraphonline/standards-sdk 0.1.141-canary.8 → 0.1.141-feat-hcs-21-flora-adapter.canary.cff94ea.45

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 (237) 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-20/sdk.d.ts.map +1 -1
  5. package/dist/cjs/hcs-20/types.d.ts +9 -8
  6. package/dist/cjs/hcs-20/types.d.ts.map +1 -1
  7. package/dist/cjs/hcs-21/base-client.d.ts +4 -3
  8. package/dist/cjs/hcs-21/base-client.d.ts.map +1 -1
  9. package/dist/cjs/hcs-21/index.d.ts +1 -0
  10. package/dist/cjs/hcs-21/index.d.ts.map +1 -1
  11. package/dist/cjs/hcs-21/sdk.d.ts.map +1 -1
  12. package/dist/cjs/hcs-21/tx.d.ts.map +1 -1
  13. package/dist/cjs/hcs-21/types.d.ts +135 -64
  14. package/dist/cjs/hcs-21/types.d.ts.map +1 -1
  15. package/dist/cjs/hcs-21/verify.d.ts +6 -0
  16. package/dist/cjs/hcs-21/verify.d.ts.map +1 -0
  17. package/dist/cjs/inscribe/inscriber.d.ts +1 -0
  18. package/dist/cjs/inscribe/inscriber.d.ts.map +1 -1
  19. package/dist/cjs/inscribe/quote-cache.d.ts.map +1 -1
  20. package/dist/cjs/services/registry-broker/client.d.ts +4 -3
  21. package/dist/cjs/services/registry-broker/client.d.ts.map +1 -1
  22. package/dist/cjs/services/registry-broker/private-key-signer.d.ts.map +1 -1
  23. package/dist/cjs/services/registry-broker/schemas.d.ts +38 -38
  24. package/dist/cjs/services/registry-broker/schemas.d.ts.map +1 -1
  25. package/dist/cjs/standards-sdk.cjs +2 -2
  26. package/dist/cjs/standards-sdk.cjs.map +1 -1
  27. package/dist/cjs/utils/dynamic-import.d.ts +1 -0
  28. package/dist/cjs/utils/dynamic-import.d.ts.map +1 -1
  29. package/dist/es/hcs-16/base-client.d.ts.map +1 -1
  30. package/dist/es/hcs-17/types.d.ts.map +1 -1
  31. package/dist/es/hcs-20/sdk.d.ts.map +1 -1
  32. package/dist/es/hcs-20/types.d.ts +9 -8
  33. package/dist/es/hcs-20/types.d.ts.map +1 -1
  34. package/dist/es/hcs-21/base-client.d.ts +4 -3
  35. package/dist/es/hcs-21/base-client.d.ts.map +1 -1
  36. package/dist/es/hcs-21/index.d.ts +1 -0
  37. package/dist/es/hcs-21/index.d.ts.map +1 -1
  38. package/dist/es/hcs-21/sdk.d.ts.map +1 -1
  39. package/dist/es/hcs-21/tx.d.ts.map +1 -1
  40. package/dist/es/hcs-21/types.d.ts +135 -64
  41. package/dist/es/hcs-21/types.d.ts.map +1 -1
  42. package/dist/es/hcs-21/verify.d.ts +6 -0
  43. package/dist/es/hcs-21/verify.d.ts.map +1 -0
  44. package/dist/es/inscribe/inscriber.d.ts +1 -0
  45. package/dist/es/inscribe/inscriber.d.ts.map +1 -1
  46. package/dist/es/inscribe/quote-cache.d.ts.map +1 -1
  47. package/dist/es/services/registry-broker/client.d.ts +4 -3
  48. package/dist/es/services/registry-broker/client.d.ts.map +1 -1
  49. package/dist/es/services/registry-broker/private-key-signer.d.ts.map +1 -1
  50. package/dist/es/services/registry-broker/schemas.d.ts +38 -38
  51. package/dist/es/services/registry-broker/schemas.d.ts.map +1 -1
  52. package/dist/es/standards-sdk.es.js +58 -50
  53. package/dist/es/standards-sdk.es.js.map +1 -1
  54. package/dist/es/standards-sdk.es10.js +2 -2
  55. package/dist/es/standards-sdk.es100.js +26 -229
  56. package/dist/es/standards-sdk.es100.js.map +1 -1
  57. package/dist/es/standards-sdk.es101.js +228 -109
  58. package/dist/es/standards-sdk.es101.js.map +1 -1
  59. package/dist/es/standards-sdk.es102.js +94 -15
  60. package/dist/es/standards-sdk.es102.js.map +1 -1
  61. package/dist/es/standards-sdk.es103.js +30 -80
  62. package/dist/es/standards-sdk.es103.js.map +1 -1
  63. package/dist/es/standards-sdk.es104.js +80 -27
  64. package/dist/es/standards-sdk.es104.js.map +1 -1
  65. package/dist/es/standards-sdk.es105.js +25 -136
  66. package/dist/es/standards-sdk.es105.js.map +1 -1
  67. package/dist/es/standards-sdk.es106.js +140 -27
  68. package/dist/es/standards-sdk.es106.js.map +1 -1
  69. package/dist/es/standards-sdk.es107.js +27 -20
  70. package/dist/es/standards-sdk.es107.js.map +1 -1
  71. package/dist/es/standards-sdk.es108.js +18 -156
  72. package/dist/es/standards-sdk.es108.js.map +1 -1
  73. package/dist/es/standards-sdk.es109.js +148 -196
  74. package/dist/es/standards-sdk.es109.js.map +1 -1
  75. package/dist/es/standards-sdk.es110.js +160 -747
  76. package/dist/es/standards-sdk.es110.js.map +1 -1
  77. package/dist/es/standards-sdk.es111.js +786 -9
  78. package/dist/es/standards-sdk.es111.js.map +1 -1
  79. package/dist/es/standards-sdk.es112.js +13 -567
  80. package/dist/es/standards-sdk.es112.js.map +1 -1
  81. package/dist/es/standards-sdk.es113.js +541 -576
  82. package/dist/es/standards-sdk.es113.js.map +1 -1
  83. package/dist/es/standards-sdk.es114.js +601 -12
  84. package/dist/es/standards-sdk.es114.js.map +1 -1
  85. package/dist/es/standards-sdk.es115.js +13 -2
  86. package/dist/es/standards-sdk.es115.js.map +1 -1
  87. package/dist/es/standards-sdk.es116.js +2 -83
  88. package/dist/es/standards-sdk.es116.js.map +1 -1
  89. package/dist/es/standards-sdk.es117.js +80 -36
  90. package/dist/es/standards-sdk.es117.js.map +1 -1
  91. package/dist/es/standards-sdk.es118.js +39 -2
  92. package/dist/es/standards-sdk.es118.js.map +1 -1
  93. package/dist/es/standards-sdk.es119.js +2 -223
  94. package/dist/es/standards-sdk.es119.js.map +1 -1
  95. package/dist/es/standards-sdk.es120.js +193 -1110
  96. package/dist/es/standards-sdk.es120.js.map +1 -1
  97. package/dist/es/standards-sdk.es121.js +1059 -225
  98. package/dist/es/standards-sdk.es121.js.map +1 -1
  99. package/dist/es/standards-sdk.es122.js +303 -419
  100. package/dist/es/standards-sdk.es122.js.map +1 -1
  101. package/dist/es/standards-sdk.es123.js +418 -351
  102. package/dist/es/standards-sdk.es123.js.map +1 -1
  103. package/dist/es/standards-sdk.es124.js +348 -785
  104. package/dist/es/standards-sdk.es124.js.map +1 -1
  105. package/dist/es/standards-sdk.es125.js +767 -183
  106. package/dist/es/standards-sdk.es125.js.map +1 -1
  107. package/dist/es/standards-sdk.es126.js +153 -1512
  108. package/dist/es/standards-sdk.es126.js.map +1 -1
  109. package/dist/es/standards-sdk.es127.js +1373 -1987
  110. package/dist/es/standards-sdk.es127.js.map +1 -1
  111. package/dist/es/standards-sdk.es128.js +2208 -67
  112. package/dist/es/standards-sdk.es128.js.map +1 -1
  113. package/dist/es/standards-sdk.es129.js +59 -79
  114. package/dist/es/standards-sdk.es129.js.map +1 -1
  115. package/dist/es/standards-sdk.es130.js +80 -152
  116. package/dist/es/standards-sdk.es130.js.map +1 -1
  117. package/dist/es/standards-sdk.es131.js +159 -7
  118. package/dist/es/standards-sdk.es131.js.map +1 -1
  119. package/dist/es/standards-sdk.es132.js +7 -86
  120. package/dist/es/standards-sdk.es132.js.map +1 -1
  121. package/dist/es/standards-sdk.es133.js +65 -44
  122. package/dist/es/standards-sdk.es133.js.map +1 -1
  123. package/dist/es/standards-sdk.es134.js +65 -28
  124. package/dist/es/standards-sdk.es134.js.map +1 -1
  125. package/dist/es/standards-sdk.es135.js +82 -760
  126. package/dist/es/standards-sdk.es135.js.map +1 -1
  127. package/dist/es/standards-sdk.es136.js +28 -12274
  128. package/dist/es/standards-sdk.es136.js.map +1 -1
  129. package/dist/es/standards-sdk.es137.js +1 -1
  130. package/dist/es/standards-sdk.es14.js +1 -1
  131. package/dist/es/standards-sdk.es140.js +766 -64
  132. package/dist/es/standards-sdk.es140.js.map +1 -1
  133. package/dist/es/standards-sdk.es141.js +12235 -133
  134. package/dist/es/standards-sdk.es141.js.map +1 -1
  135. package/dist/es/standards-sdk.es142.js +13 -318
  136. package/dist/es/standards-sdk.es142.js.map +1 -1
  137. package/dist/es/standards-sdk.es143.js +120 -294
  138. package/dist/es/standards-sdk.es143.js.map +1 -1
  139. package/dist/es/standards-sdk.es144.js +191 -322
  140. package/dist/es/standards-sdk.es144.js.map +1 -1
  141. package/dist/es/standards-sdk.es145.js +294 -279
  142. package/dist/es/standards-sdk.es145.js.map +1 -1
  143. package/dist/es/standards-sdk.es146.js +440 -63
  144. package/dist/es/standards-sdk.es146.js.map +1 -1
  145. package/dist/es/standards-sdk.es147.js +327 -13
  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 -11
  152. package/dist/es/standards-sdk.es17.js.map +1 -1
  153. package/dist/es/standards-sdk.es19.js +10 -15
  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 -14
  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.es24.js +1 -1
  162. package/dist/es/standards-sdk.es25.js +1 -1
  163. package/dist/es/standards-sdk.es26.js +1 -1
  164. package/dist/es/standards-sdk.es27.js +1 -1
  165. package/dist/es/standards-sdk.es28.js +11 -16
  166. package/dist/es/standards-sdk.es28.js.map +1 -1
  167. package/dist/es/standards-sdk.es3.js +2 -2
  168. package/dist/es/standards-sdk.es31.js +2 -2
  169. package/dist/es/standards-sdk.es32.js +4 -4
  170. package/dist/es/standards-sdk.es33.js +1 -1
  171. package/dist/es/standards-sdk.es36.js +6 -12
  172. package/dist/es/standards-sdk.es36.js.map +1 -1
  173. package/dist/es/standards-sdk.es37.js +2 -2
  174. package/dist/es/standards-sdk.es38.js +2 -2
  175. package/dist/es/standards-sdk.es39.js +2 -2
  176. package/dist/es/standards-sdk.es40.js +1 -1
  177. package/dist/es/standards-sdk.es41.js +1 -1
  178. package/dist/es/standards-sdk.es42.js +2 -2
  179. package/dist/es/standards-sdk.es47.js +1 -1
  180. package/dist/es/standards-sdk.es5.js +1 -1
  181. package/dist/es/standards-sdk.es52.js +1 -1
  182. package/dist/es/standards-sdk.es57.js +1 -1
  183. package/dist/es/standards-sdk.es6.js +2 -2
  184. package/dist/es/standards-sdk.es60.js +1 -1
  185. package/dist/es/standards-sdk.es61.js +6 -11
  186. package/dist/es/standards-sdk.es61.js.map +1 -1
  187. package/dist/es/standards-sdk.es63.js +1 -1
  188. package/dist/es/standards-sdk.es65.js +2 -2
  189. package/dist/es/standards-sdk.es66.js +2 -2
  190. package/dist/es/standards-sdk.es7.js +2 -2
  191. package/dist/es/standards-sdk.es70.js +2 -2
  192. package/dist/es/standards-sdk.es71.js +2 -2
  193. package/dist/es/standards-sdk.es73.js.map +1 -1
  194. package/dist/es/standards-sdk.es75.js +2 -2
  195. package/dist/es/standards-sdk.es77.js +4 -2
  196. package/dist/es/standards-sdk.es77.js.map +1 -1
  197. package/dist/es/standards-sdk.es78.js +4 -10
  198. package/dist/es/standards-sdk.es78.js.map +1 -1
  199. package/dist/es/standards-sdk.es80.js +26 -15
  200. package/dist/es/standards-sdk.es80.js.map +1 -1
  201. package/dist/es/standards-sdk.es82.js +11 -3
  202. package/dist/es/standards-sdk.es82.js.map +1 -1
  203. package/dist/es/standards-sdk.es83.js +7 -6
  204. package/dist/es/standards-sdk.es83.js.map +1 -1
  205. package/dist/es/standards-sdk.es84.js +6 -4
  206. package/dist/es/standards-sdk.es84.js.map +1 -1
  207. package/dist/es/standards-sdk.es86.js +55 -21
  208. package/dist/es/standards-sdk.es86.js.map +1 -1
  209. package/dist/es/standards-sdk.es87.js +22 -75
  210. package/dist/es/standards-sdk.es87.js.map +1 -1
  211. package/dist/es/standards-sdk.es88.js +45 -30
  212. package/dist/es/standards-sdk.es88.js.map +1 -1
  213. package/dist/es/standards-sdk.es89.js +57 -22
  214. package/dist/es/standards-sdk.es89.js.map +1 -1
  215. package/dist/es/standards-sdk.es90.js +28 -23
  216. package/dist/es/standards-sdk.es90.js.map +1 -1
  217. package/dist/es/standards-sdk.es91.js +23 -167
  218. package/dist/es/standards-sdk.es91.js.map +1 -1
  219. package/dist/es/standards-sdk.es92.js +158 -119
  220. package/dist/es/standards-sdk.es92.js.map +1 -1
  221. package/dist/es/standards-sdk.es93.js +68 -95
  222. package/dist/es/standards-sdk.es93.js.map +1 -1
  223. package/dist/es/standards-sdk.es94.js +136 -119
  224. package/dist/es/standards-sdk.es94.js.map +1 -1
  225. package/dist/es/standards-sdk.es95.js +139 -39
  226. package/dist/es/standards-sdk.es95.js.map +1 -1
  227. package/dist/es/standards-sdk.es96.js +42 -257
  228. package/dist/es/standards-sdk.es96.js.map +1 -1
  229. package/dist/es/standards-sdk.es97.js +243 -80
  230. package/dist/es/standards-sdk.es97.js.map +1 -1
  231. package/dist/es/standards-sdk.es98.js +47 -48
  232. package/dist/es/standards-sdk.es98.js.map +1 -1
  233. package/dist/es/standards-sdk.es99.js +100 -28
  234. package/dist/es/standards-sdk.es99.js.map +1 -1
  235. package/dist/es/utils/dynamic-import.d.ts +1 -0
  236. package/dist/es/utils/dynamic-import.d.ts.map +1 -1
  237. package/package.json +63 -65
@@ -1,87 +1,37 @@
1
- import { TopicMessageSubmitTransaction } from "@hashgraph/sdk";
2
- import { DiscoveryOperation } from "./standards-sdk.es100.js";
3
- import { buildTopicCreateTx } from "./standards-sdk.es138.js";
4
- function buildHcs18DiscoveryMemo(ttlSeconds, memoOverride) {
5
- if (memoOverride && memoOverride.trim().length > 0) {
6
- return memoOverride;
1
+ import { buildHcs18AnnounceMessage, buildHcs18ProposeMessage, buildHcs18RespondMessage, buildHcs18CompleteMessage, buildHcs18WithdrawMessage } from "./standards-sdk.es104.js";
2
+ class HCS18BrowserClient {
3
+ constructor(config) {
4
+ this.hwc = config.hwc;
7
5
  }
8
- if (ttlSeconds && ttlSeconds > 0) {
9
- return `hcs-18:0:${ttlSeconds}`;
6
+ async submit(discoveryTopicId, message) {
7
+ const receipt = await this.hwc.submitMessageToTopic(
8
+ discoveryTopicId,
9
+ JSON.stringify(message)
10
+ );
11
+ return receipt;
10
12
  }
11
- return "hcs-18:0";
12
- }
13
- function buildHcs18CreateDiscoveryTopicTx(params) {
14
- const memo = buildHcs18DiscoveryMemo(params.ttlSeconds, params.memoOverride);
15
- return buildTopicCreateTx({
16
- memo,
17
- adminKey: params.adminKey,
18
- submitKey: params.submitKey,
19
- operatorPublicKey: params.operatorPublicKey
20
- });
21
- }
22
- function opCode(op) {
23
- switch (op) {
24
- case DiscoveryOperation.ANNOUNCE:
25
- return 0;
26
- case DiscoveryOperation.PROPOSE:
27
- return 1;
28
- case DiscoveryOperation.RESPOND:
29
- return 2;
30
- case DiscoveryOperation.COMPLETE:
31
- return 3;
32
- case DiscoveryOperation.WITHDRAW:
33
- return 4;
34
- default:
35
- return 0;
13
+ async announce(params) {
14
+ const message = buildHcs18AnnounceMessage(params.data);
15
+ return this.submit(params.discoveryTopicId, message);
16
+ }
17
+ async propose(params) {
18
+ const message = buildHcs18ProposeMessage(params.data);
19
+ return this.submit(params.discoveryTopicId, message);
20
+ }
21
+ async respond(params) {
22
+ const message = buildHcs18RespondMessage(params.data);
23
+ return this.submit(params.discoveryTopicId, message);
24
+ }
25
+ async complete(params) {
26
+ const message = buildHcs18CompleteMessage(params.data);
27
+ return this.submit(params.discoveryTopicId, message);
28
+ }
29
+ async withdraw(params) {
30
+ const message = buildHcs18WithdrawMessage(params.data);
31
+ return this.submit(params.discoveryTopicId, message);
36
32
  }
37
- }
38
- function buildHcs18SubmitDiscoveryMessageTx(params) {
39
- const memo = typeof params.transactionMemo === "string" && params.transactionMemo.length > 0 ? params.transactionMemo : `hcs-18:op:${opCode(params.message.op)}`;
40
- return new TopicMessageSubmitTransaction().setTopicId(params.topicId).setMessage(JSON.stringify(params.message)).setTransactionMemo(memo);
41
- }
42
- function buildHcs18AnnounceMessage(data) {
43
- return {
44
- p: "hcs-18",
45
- op: DiscoveryOperation.ANNOUNCE,
46
- data
47
- };
48
- }
49
- function buildHcs18ProposeMessage(data) {
50
- return {
51
- p: "hcs-18",
52
- op: DiscoveryOperation.PROPOSE,
53
- data
54
- };
55
- }
56
- function buildHcs18RespondMessage(data) {
57
- return {
58
- p: "hcs-18",
59
- op: DiscoveryOperation.RESPOND,
60
- data
61
- };
62
- }
63
- function buildHcs18CompleteMessage(data) {
64
- return {
65
- p: "hcs-18",
66
- op: DiscoveryOperation.COMPLETE,
67
- data
68
- };
69
- }
70
- function buildHcs18WithdrawMessage(data) {
71
- return {
72
- p: "hcs-18",
73
- op: DiscoveryOperation.WITHDRAW,
74
- data
75
- };
76
33
  }
77
34
  export {
78
- buildHcs18AnnounceMessage,
79
- buildHcs18CompleteMessage,
80
- buildHcs18CreateDiscoveryTopicTx,
81
- buildHcs18DiscoveryMemo,
82
- buildHcs18ProposeMessage,
83
- buildHcs18RespondMessage,
84
- buildHcs18SubmitDiscoveryMessageTx,
85
- buildHcs18WithdrawMessage
35
+ HCS18BrowserClient
86
36
  };
87
37
  //# sourceMappingURL=standards-sdk.es103.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"standards-sdk.es103.js","sources":["../../src/hcs-18/tx.ts"],"sourcesContent":["import {\n TopicCreateTransaction,\n TopicMessageSubmitTransaction,\n PublicKey,\n} from '@hashgraph/sdk';\nimport type {\n DiscoveryMessage,\n AnnounceData,\n ProposeData,\n RespondData,\n CompleteMessage,\n WithdrawMessage,\n AnnounceMessage,\n ProposeMessage,\n RespondMessage,\n} from './types';\nimport { DiscoveryOperation } from './types';\nimport type { MaybeKey } from '../common/tx/tx-utils';\nimport { buildTopicCreateTx } from '../common/tx/tx-utils';\n\nexport function buildHcs18DiscoveryMemo(\n ttlSeconds?: number,\n memoOverride?: string,\n): string {\n if (memoOverride && memoOverride.trim().length > 0) {\n return memoOverride;\n }\n if (ttlSeconds && ttlSeconds > 0) {\n return `hcs-18:0:${ttlSeconds}`;\n }\n return 'hcs-18:0';\n}\n\nexport function buildHcs18CreateDiscoveryTopicTx(params: {\n ttlSeconds?: number;\n adminKey?: MaybeKey;\n submitKey?: MaybeKey;\n operatorPublicKey?: PublicKey;\n memoOverride?: string;\n}): TopicCreateTransaction {\n const memo = buildHcs18DiscoveryMemo(params.ttlSeconds, params.memoOverride);\n return buildTopicCreateTx({\n memo,\n adminKey: params.adminKey,\n submitKey: params.submitKey,\n operatorPublicKey: params.operatorPublicKey,\n });\n}\n\nfunction opCode(op: DiscoveryOperation): number {\n switch (op) {\n case DiscoveryOperation.ANNOUNCE:\n return 0;\n case DiscoveryOperation.PROPOSE:\n return 1;\n case DiscoveryOperation.RESPOND:\n return 2;\n case DiscoveryOperation.COMPLETE:\n return 3;\n case DiscoveryOperation.WITHDRAW:\n return 4;\n default:\n return 0;\n }\n}\n\nexport function buildHcs18SubmitDiscoveryMessageTx(params: {\n topicId: string;\n message: DiscoveryMessage;\n transactionMemo?: string;\n}): TopicMessageSubmitTransaction {\n const memo =\n typeof params.transactionMemo === 'string' &&\n params.transactionMemo.length > 0\n ? params.transactionMemo\n : `hcs-18:op:${opCode(params.message.op)}`;\n return new TopicMessageSubmitTransaction()\n .setTopicId(params.topicId)\n .setMessage(JSON.stringify(params.message))\n .setTransactionMemo(memo);\n}\n\nexport function buildHcs18AnnounceMessage(data: AnnounceData): AnnounceMessage {\n return {\n p: 'hcs-18',\n op: DiscoveryOperation.ANNOUNCE,\n data,\n } as AnnounceMessage;\n}\n\nexport function buildHcs18ProposeMessage(data: ProposeData): ProposeMessage {\n return {\n p: 'hcs-18',\n op: DiscoveryOperation.PROPOSE,\n data,\n } as ProposeMessage;\n}\n\nexport function buildHcs18RespondMessage(data: RespondData): RespondMessage {\n return {\n p: 'hcs-18',\n op: DiscoveryOperation.RESPOND,\n data,\n } as RespondMessage;\n}\n\nexport function buildHcs18CompleteMessage(\n data: CompleteMessage['data'],\n): CompleteMessage {\n return {\n p: 'hcs-18',\n op: DiscoveryOperation.COMPLETE,\n data,\n } as CompleteMessage;\n}\n\nexport function buildHcs18WithdrawMessage(\n data: WithdrawMessage['data'],\n): WithdrawMessage {\n return {\n p: 'hcs-18',\n op: DiscoveryOperation.WITHDRAW,\n data,\n } as WithdrawMessage;\n}\n"],"names":[],"mappings":";;;AAoBO,SAAS,wBACd,YACA,cACQ;AACR,MAAI,gBAAgB,aAAa,KAAA,EAAO,SAAS,GAAG;AAClD,WAAO;AAAA,EACT;AACA,MAAI,cAAc,aAAa,GAAG;AAChC,WAAO,YAAY,UAAU;AAAA,EAC/B;AACA,SAAO;AACT;AAEO,SAAS,iCAAiC,QAMtB;AACzB,QAAM,OAAO,wBAAwB,OAAO,YAAY,OAAO,YAAY;AAC3E,SAAO,mBAAmB;AAAA,IACxB;AAAA,IACA,UAAU,OAAO;AAAA,IACjB,WAAW,OAAO;AAAA,IAClB,mBAAmB,OAAO;AAAA,EAAA,CAC3B;AACH;AAEA,SAAS,OAAO,IAAgC;AAC9C,UAAQ,IAAA;AAAA,IACN,KAAK,mBAAmB;AACtB,aAAO;AAAA,IACT,KAAK,mBAAmB;AACtB,aAAO;AAAA,IACT,KAAK,mBAAmB;AACtB,aAAO;AAAA,IACT,KAAK,mBAAmB;AACtB,aAAO;AAAA,IACT,KAAK,mBAAmB;AACtB,aAAO;AAAA,IACT;AACE,aAAO;AAAA,EAAA;AAEb;AAEO,SAAS,mCAAmC,QAIjB;AAChC,QAAM,OACJ,OAAO,OAAO,oBAAoB,YAClC,OAAO,gBAAgB,SAAS,IAC5B,OAAO,kBACP,aAAa,OAAO,OAAO,QAAQ,EAAE,CAAC;AAC5C,SAAO,IAAI,8BAAA,EACR,WAAW,OAAO,OAAO,EACzB,WAAW,KAAK,UAAU,OAAO,OAAO,CAAC,EACzC,mBAAmB,IAAI;AAC5B;AAEO,SAAS,0BAA0B,MAAqC;AAC7E,SAAO;AAAA,IACL,GAAG;AAAA,IACH,IAAI,mBAAmB;AAAA,IACvB;AAAA,EAAA;AAEJ;AAEO,SAAS,yBAAyB,MAAmC;AAC1E,SAAO;AAAA,IACL,GAAG;AAAA,IACH,IAAI,mBAAmB;AAAA,IACvB;AAAA,EAAA;AAEJ;AAEO,SAAS,yBAAyB,MAAmC;AAC1E,SAAO;AAAA,IACL,GAAG;AAAA,IACH,IAAI,mBAAmB;AAAA,IACvB;AAAA,EAAA;AAEJ;AAEO,SAAS,0BACd,MACiB;AACjB,SAAO;AAAA,IACL,GAAG;AAAA,IACH,IAAI,mBAAmB;AAAA,IACvB;AAAA,EAAA;AAEJ;AAEO,SAAS,0BACd,MACiB;AACjB,SAAO;AAAA,IACL,GAAG;AAAA,IACH,IAAI,mBAAmB;AAAA,IACvB;AAAA,EAAA;AAEJ;"}
1
+ {"version":3,"file":"standards-sdk.es103.js","sources":["../../src/hcs-18/browser.ts"],"sourcesContent":["import type { TransactionReceipt } from '@hashgraph/sdk';\nimport { HashinalsWalletConnectSDK } from '@hashgraphonline/hashinal-wc';\nimport type {\n DiscoveryMessage,\n AnnounceData,\n ProposeData,\n RespondData,\n CompleteMessage,\n WithdrawMessage,\n} from './types';\nimport {\n buildHcs18AnnounceMessage,\n buildHcs18ProposeMessage,\n buildHcs18RespondMessage,\n buildHcs18CompleteMessage,\n buildHcs18WithdrawMessage,\n} from './tx';\n\nexport interface BrowserHCS18ClientConfig {\n network: 'testnet' | 'mainnet';\n hwc: HashinalsWalletConnectSDK;\n}\n\nexport class HCS18BrowserClient {\n private readonly hwc: HashinalsWalletConnectSDK;\n\n constructor(config: BrowserHCS18ClientConfig) {\n this.hwc = config.hwc;\n }\n\n async submit(\n discoveryTopicId: string,\n message: DiscoveryMessage,\n ): Promise<TransactionReceipt> {\n const receipt = await this.hwc.submitMessageToTopic(\n discoveryTopicId,\n JSON.stringify(message),\n );\n return receipt;\n }\n\n async announce(params: {\n discoveryTopicId: string;\n data: AnnounceData;\n }): Promise<TransactionReceipt> {\n const message = buildHcs18AnnounceMessage(params.data);\n return this.submit(params.discoveryTopicId, message);\n }\n\n async propose(params: {\n discoveryTopicId: string;\n data: ProposeData;\n }): Promise<TransactionReceipt> {\n const message = buildHcs18ProposeMessage(params.data);\n return this.submit(params.discoveryTopicId, message);\n }\n\n async respond(params: {\n discoveryTopicId: string;\n data: RespondData;\n }): Promise<TransactionReceipt> {\n const message = buildHcs18RespondMessage(params.data);\n return this.submit(params.discoveryTopicId, message);\n }\n\n async complete(params: {\n discoveryTopicId: string;\n data: CompleteMessage['data'];\n }): Promise<TransactionReceipt> {\n const message = buildHcs18CompleteMessage(params.data);\n return this.submit(params.discoveryTopicId, message);\n }\n\n async withdraw(params: {\n discoveryTopicId: string;\n data: WithdrawMessage['data'];\n }): Promise<TransactionReceipt> {\n const message = buildHcs18WithdrawMessage(params.data);\n return this.submit(params.discoveryTopicId, message);\n }\n}\n"],"names":[],"mappings":";AAuBO,MAAM,mBAAmB;AAAA,EAG9B,YAAY,QAAkC;AAC5C,SAAK,MAAM,OAAO;AAAA,EACpB;AAAA,EAEA,MAAM,OACJ,kBACA,SAC6B;AAC7B,UAAM,UAAU,MAAM,KAAK,IAAI;AAAA,MAC7B;AAAA,MACA,KAAK,UAAU,OAAO;AAAA,IAAA;AAExB,WAAO;AAAA,EACT;AAAA,EAEA,MAAM,SAAS,QAGiB;AAC9B,UAAM,UAAU,0BAA0B,OAAO,IAAI;AACrD,WAAO,KAAK,OAAO,OAAO,kBAAkB,OAAO;AAAA,EACrD;AAAA,EAEA,MAAM,QAAQ,QAGkB;AAC9B,UAAM,UAAU,yBAAyB,OAAO,IAAI;AACpD,WAAO,KAAK,OAAO,OAAO,kBAAkB,OAAO;AAAA,EACrD;AAAA,EAEA,MAAM,QAAQ,QAGkB;AAC9B,UAAM,UAAU,yBAAyB,OAAO,IAAI;AACpD,WAAO,KAAK,OAAO,OAAO,kBAAkB,OAAO;AAAA,EACrD;AAAA,EAEA,MAAM,SAAS,QAGiB;AAC9B,UAAM,UAAU,0BAA0B,OAAO,IAAI;AACrD,WAAO,KAAK,OAAO,OAAO,kBAAkB,OAAO;AAAA,EACrD;AAAA,EAEA,MAAM,SAAS,QAGiB;AAC9B,UAAM,UAAU,0BAA0B,OAAO,IAAI;AACrD,WAAO,KAAK,OAAO,OAAO,kBAAkB,OAAO;AAAA,EACrD;AACF;"}
@@ -1,34 +1,87 @@
1
- import { Logger } from "./standards-sdk.es105.js";
2
- import { HederaMirrorNode } from "./standards-sdk.es126.js";
3
- class HCS18BaseClient {
4
- constructor(config) {
5
- this.network = config.network;
6
- this.logger = config.logger || Logger.getInstance({ module: "HCS-18" });
7
- this.mirrorNode = new HederaMirrorNode(this.network, this.logger);
1
+ import { TopicMessageSubmitTransaction } from "@hashgraph/sdk";
2
+ import { DiscoveryOperation } from "./standards-sdk.es101.js";
3
+ import { buildTopicCreateTx } from "./standards-sdk.es138.js";
4
+ function buildHcs18DiscoveryMemo(ttlSeconds, memoOverride) {
5
+ if (memoOverride && memoOverride.trim().length > 0) {
6
+ return memoOverride;
8
7
  }
9
- /**
10
- * Retrieves HCS-18 discovery messages from a topic, filtered to valid operations.
11
- */
12
- async getDiscoveryMessages(topicId, options) {
13
- const validOps = ["announce", "propose", "respond", "complete", "withdraw"];
14
- const messages = await this.mirrorNode.getTopicMessages(topicId, options);
15
- if (!messages) {
16
- return [];
17
- }
18
- return messages.filter((m) => m.p === "hcs-18" && validOps.includes(m.op));
8
+ if (ttlSeconds && ttlSeconds > 0) {
9
+ return `hcs-18:0:${ttlSeconds}`;
19
10
  }
20
- /**
21
- * Determines if a proposal has sufficient acceptances to proceed.
22
- */
23
- isProposalReady(proposal) {
24
- const acceptances = Array.from(proposal.responses.values()).filter(
25
- (r) => r.decision === "accept"
26
- );
27
- const requiredResponses = proposal.data.members.length - 1;
28
- return acceptances.length >= requiredResponses;
11
+ return "hcs-18:0";
12
+ }
13
+ function buildHcs18CreateDiscoveryTopicTx(params) {
14
+ const memo = buildHcs18DiscoveryMemo(params.ttlSeconds, params.memoOverride);
15
+ return buildTopicCreateTx({
16
+ memo,
17
+ adminKey: params.adminKey,
18
+ submitKey: params.submitKey,
19
+ operatorPublicKey: params.operatorPublicKey
20
+ });
21
+ }
22
+ function opCode(op) {
23
+ switch (op) {
24
+ case DiscoveryOperation.ANNOUNCE:
25
+ return 0;
26
+ case DiscoveryOperation.PROPOSE:
27
+ return 1;
28
+ case DiscoveryOperation.RESPOND:
29
+ return 2;
30
+ case DiscoveryOperation.COMPLETE:
31
+ return 3;
32
+ case DiscoveryOperation.WITHDRAW:
33
+ return 4;
34
+ default:
35
+ return 0;
29
36
  }
30
37
  }
38
+ function buildHcs18SubmitDiscoveryMessageTx(params) {
39
+ const memo = typeof params.transactionMemo === "string" && params.transactionMemo.length > 0 ? params.transactionMemo : `hcs-18:op:${opCode(params.message.op)}`;
40
+ return new TopicMessageSubmitTransaction().setTopicId(params.topicId).setMessage(JSON.stringify(params.message)).setTransactionMemo(memo);
41
+ }
42
+ function buildHcs18AnnounceMessage(data) {
43
+ return {
44
+ p: "hcs-18",
45
+ op: DiscoveryOperation.ANNOUNCE,
46
+ data
47
+ };
48
+ }
49
+ function buildHcs18ProposeMessage(data) {
50
+ return {
51
+ p: "hcs-18",
52
+ op: DiscoveryOperation.PROPOSE,
53
+ data
54
+ };
55
+ }
56
+ function buildHcs18RespondMessage(data) {
57
+ return {
58
+ p: "hcs-18",
59
+ op: DiscoveryOperation.RESPOND,
60
+ data
61
+ };
62
+ }
63
+ function buildHcs18CompleteMessage(data) {
64
+ return {
65
+ p: "hcs-18",
66
+ op: DiscoveryOperation.COMPLETE,
67
+ data
68
+ };
69
+ }
70
+ function buildHcs18WithdrawMessage(data) {
71
+ return {
72
+ p: "hcs-18",
73
+ op: DiscoveryOperation.WITHDRAW,
74
+ data
75
+ };
76
+ }
31
77
  export {
32
- HCS18BaseClient
78
+ buildHcs18AnnounceMessage,
79
+ buildHcs18CompleteMessage,
80
+ buildHcs18CreateDiscoveryTopicTx,
81
+ buildHcs18DiscoveryMemo,
82
+ buildHcs18ProposeMessage,
83
+ buildHcs18RespondMessage,
84
+ buildHcs18SubmitDiscoveryMessageTx,
85
+ buildHcs18WithdrawMessage
33
86
  };
34
87
  //# sourceMappingURL=standards-sdk.es104.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"standards-sdk.es104.js","sources":["../../src/hcs-18/base-client.ts"],"sourcesContent":["import { Logger, type ILogger } from '../utils/logger';\nimport { HederaMirrorNode } from '../services/mirror-node';\nimport type { NetworkType } from '../utils/types';\nimport type { HCSMessageWithCommonFields } from '../services/types';\nimport type { TrackedProposal } from './types';\n\nexport interface HCS18BaseConfig {\n network: NetworkType;\n logger?: ILogger;\n}\n\nexport abstract class HCS18BaseClient {\n protected readonly logger: ILogger;\n public readonly mirrorNode: HederaMirrorNode;\n public readonly network: NetworkType;\n\n constructor(config: HCS18BaseConfig) {\n this.network = config.network;\n this.logger = config.logger || Logger.getInstance({ module: 'HCS-18' });\n this.mirrorNode = new HederaMirrorNode(this.network, this.logger);\n }\n\n /**\n * Retrieves HCS-18 discovery messages from a topic, filtered to valid operations.\n */\n public async getDiscoveryMessages(\n topicId: string,\n options?: {\n sequenceNumber?: string | number;\n limit?: number;\n order?: 'asc' | 'desc';\n },\n ): Promise<HCSMessageWithCommonFields[]> {\n const validOps = ['announce', 'propose', 'respond', 'complete', 'withdraw'];\n const messages = await this.mirrorNode.getTopicMessages(topicId, options);\n if (!messages) {\n return [];\n }\n return messages.filter(m => m.p === 'hcs-18' && validOps.includes(m.op));\n }\n\n /**\n * Determines if a proposal has sufficient acceptances to proceed.\n */\n public isProposalReady(proposal: TrackedProposal): boolean {\n const acceptances = Array.from(proposal.responses.values()).filter(\n r => r.decision === 'accept',\n );\n const requiredResponses = proposal.data.members.length - 1;\n return acceptances.length >= requiredResponses;\n }\n}\n"],"names":[],"mappings":";;AAWO,MAAe,gBAAgB;AAAA,EAKpC,YAAY,QAAyB;AACnC,SAAK,UAAU,OAAO;AACtB,SAAK,SAAS,OAAO,UAAU,OAAO,YAAY,EAAE,QAAQ,UAAU;AACtE,SAAK,aAAa,IAAI,iBAAiB,KAAK,SAAS,KAAK,MAAM;AAAA,EAClE;AAAA;AAAA;AAAA;AAAA,EAKA,MAAa,qBACX,SACA,SAKuC;AACvC,UAAM,WAAW,CAAC,YAAY,WAAW,WAAW,YAAY,UAAU;AAC1E,UAAM,WAAW,MAAM,KAAK,WAAW,iBAAiB,SAAS,OAAO;AACxE,QAAI,CAAC,UAAU;AACb,aAAO,CAAA;AAAA,IACT;AACA,WAAO,SAAS,OAAO,CAAA,MAAK,EAAE,MAAM,YAAY,SAAS,SAAS,EAAE,EAAE,CAAC;AAAA,EACzE;AAAA;AAAA;AAAA;AAAA,EAKO,gBAAgB,UAAoC;AACzD,UAAM,cAAc,MAAM,KAAK,SAAS,UAAU,OAAA,CAAQ,EAAE;AAAA,MAC1D,CAAA,MAAK,EAAE,aAAa;AAAA,IAAA;AAEtB,UAAM,oBAAoB,SAAS,KAAK,QAAQ,SAAS;AACzD,WAAO,YAAY,UAAU;AAAA,EAC/B;AACF;"}
1
+ {"version":3,"file":"standards-sdk.es104.js","sources":["../../src/hcs-18/tx.ts"],"sourcesContent":["import {\n TopicCreateTransaction,\n TopicMessageSubmitTransaction,\n PublicKey,\n} from '@hashgraph/sdk';\nimport type {\n DiscoveryMessage,\n AnnounceData,\n ProposeData,\n RespondData,\n CompleteMessage,\n WithdrawMessage,\n AnnounceMessage,\n ProposeMessage,\n RespondMessage,\n} from './types';\nimport { DiscoveryOperation } from './types';\nimport type { MaybeKey } from '../common/tx/tx-utils';\nimport { buildTopicCreateTx } from '../common/tx/tx-utils';\n\nexport function buildHcs18DiscoveryMemo(\n ttlSeconds?: number,\n memoOverride?: string,\n): string {\n if (memoOverride && memoOverride.trim().length > 0) {\n return memoOverride;\n }\n if (ttlSeconds && ttlSeconds > 0) {\n return `hcs-18:0:${ttlSeconds}`;\n }\n return 'hcs-18:0';\n}\n\nexport function buildHcs18CreateDiscoveryTopicTx(params: {\n ttlSeconds?: number;\n adminKey?: MaybeKey;\n submitKey?: MaybeKey;\n operatorPublicKey?: PublicKey;\n memoOverride?: string;\n}): TopicCreateTransaction {\n const memo = buildHcs18DiscoveryMemo(params.ttlSeconds, params.memoOverride);\n return buildTopicCreateTx({\n memo,\n adminKey: params.adminKey,\n submitKey: params.submitKey,\n operatorPublicKey: params.operatorPublicKey,\n });\n}\n\nfunction opCode(op: DiscoveryOperation): number {\n switch (op) {\n case DiscoveryOperation.ANNOUNCE:\n return 0;\n case DiscoveryOperation.PROPOSE:\n return 1;\n case DiscoveryOperation.RESPOND:\n return 2;\n case DiscoveryOperation.COMPLETE:\n return 3;\n case DiscoveryOperation.WITHDRAW:\n return 4;\n default:\n return 0;\n }\n}\n\nexport function buildHcs18SubmitDiscoveryMessageTx(params: {\n topicId: string;\n message: DiscoveryMessage;\n transactionMemo?: string;\n}): TopicMessageSubmitTransaction {\n const memo =\n typeof params.transactionMemo === 'string' &&\n params.transactionMemo.length > 0\n ? params.transactionMemo\n : `hcs-18:op:${opCode(params.message.op)}`;\n return new TopicMessageSubmitTransaction()\n .setTopicId(params.topicId)\n .setMessage(JSON.stringify(params.message))\n .setTransactionMemo(memo);\n}\n\nexport function buildHcs18AnnounceMessage(data: AnnounceData): AnnounceMessage {\n return {\n p: 'hcs-18',\n op: DiscoveryOperation.ANNOUNCE,\n data,\n } as AnnounceMessage;\n}\n\nexport function buildHcs18ProposeMessage(data: ProposeData): ProposeMessage {\n return {\n p: 'hcs-18',\n op: DiscoveryOperation.PROPOSE,\n data,\n } as ProposeMessage;\n}\n\nexport function buildHcs18RespondMessage(data: RespondData): RespondMessage {\n return {\n p: 'hcs-18',\n op: DiscoveryOperation.RESPOND,\n data,\n } as RespondMessage;\n}\n\nexport function buildHcs18CompleteMessage(\n data: CompleteMessage['data'],\n): CompleteMessage {\n return {\n p: 'hcs-18',\n op: DiscoveryOperation.COMPLETE,\n data,\n } as CompleteMessage;\n}\n\nexport function buildHcs18WithdrawMessage(\n data: WithdrawMessage['data'],\n): WithdrawMessage {\n return {\n p: 'hcs-18',\n op: DiscoveryOperation.WITHDRAW,\n data,\n } as WithdrawMessage;\n}\n"],"names":[],"mappings":";;;AAoBO,SAAS,wBACd,YACA,cACQ;AACR,MAAI,gBAAgB,aAAa,KAAA,EAAO,SAAS,GAAG;AAClD,WAAO;AAAA,EACT;AACA,MAAI,cAAc,aAAa,GAAG;AAChC,WAAO,YAAY,UAAU;AAAA,EAC/B;AACA,SAAO;AACT;AAEO,SAAS,iCAAiC,QAMtB;AACzB,QAAM,OAAO,wBAAwB,OAAO,YAAY,OAAO,YAAY;AAC3E,SAAO,mBAAmB;AAAA,IACxB;AAAA,IACA,UAAU,OAAO;AAAA,IACjB,WAAW,OAAO;AAAA,IAClB,mBAAmB,OAAO;AAAA,EAAA,CAC3B;AACH;AAEA,SAAS,OAAO,IAAgC;AAC9C,UAAQ,IAAA;AAAA,IACN,KAAK,mBAAmB;AACtB,aAAO;AAAA,IACT,KAAK,mBAAmB;AACtB,aAAO;AAAA,IACT,KAAK,mBAAmB;AACtB,aAAO;AAAA,IACT,KAAK,mBAAmB;AACtB,aAAO;AAAA,IACT,KAAK,mBAAmB;AACtB,aAAO;AAAA,IACT;AACE,aAAO;AAAA,EAAA;AAEb;AAEO,SAAS,mCAAmC,QAIjB;AAChC,QAAM,OACJ,OAAO,OAAO,oBAAoB,YAClC,OAAO,gBAAgB,SAAS,IAC5B,OAAO,kBACP,aAAa,OAAO,OAAO,QAAQ,EAAE,CAAC;AAC5C,SAAO,IAAI,8BAAA,EACR,WAAW,OAAO,OAAO,EACzB,WAAW,KAAK,UAAU,OAAO,OAAO,CAAC,EACzC,mBAAmB,IAAI;AAC5B;AAEO,SAAS,0BAA0B,MAAqC;AAC7E,SAAO;AAAA,IACL,GAAG;AAAA,IACH,IAAI,mBAAmB;AAAA,IACvB;AAAA,EAAA;AAEJ;AAEO,SAAS,yBAAyB,MAAmC;AAC1E,SAAO;AAAA,IACL,GAAG;AAAA,IACH,IAAI,mBAAmB;AAAA,IACvB;AAAA,EAAA;AAEJ;AAEO,SAAS,yBAAyB,MAAmC;AAC1E,SAAO;AAAA,IACL,GAAG;AAAA,IACH,IAAI,mBAAmB;AAAA,IACvB;AAAA,EAAA;AAEJ;AAEO,SAAS,0BACd,MACiB;AACjB,SAAO;AAAA,IACL,GAAG;AAAA,IACH,IAAI,mBAAmB;AAAA,IACvB;AAAA,EAAA;AAEJ;AAEO,SAAS,0BACd,MACiB;AACjB,SAAO;AAAA,IACL,GAAG;AAAA,IACH,IAAI,mBAAmB;AAAA,IACvB;AAAA,EAAA;AAEJ;"}
@@ -1,145 +1,34 @@
1
- import { inspect } from "util";
2
- let loggerFactory = null;
3
- function setLoggerFactory(factory) {
4
- loggerFactory = factory;
5
- Logger.clearInstances();
6
- }
7
- const _Logger = class _Logger {
8
- constructor(options = {}) {
9
- if (loggerFactory) {
10
- return loggerFactory(options);
11
- }
12
- const globalDisable = typeof process !== "undefined" && process.env?.DISABLE_LOGS === "true";
13
- this.silent = options.silent || globalDisable;
14
- this.level = this.silent ? "silent" : options.level || "info";
15
- this.moduleContext = options.module || "app";
16
- this.prettyPrint = !this.silent && options.prettyPrint !== false;
17
- }
18
- static getInstance(options = {}) {
19
- const moduleKey = options.module || "default";
20
- const globalDisable = typeof process !== "undefined" && process.env?.DISABLE_LOGS === "true";
21
- if (globalDisable && _Logger.instances.has(moduleKey)) {
22
- const existingLogger = _Logger.instances.get(moduleKey);
23
- if (existingLogger.getLevel() !== "silent") {
24
- _Logger.instances.delete(moduleKey);
25
- }
26
- }
27
- if (!_Logger.instances.has(moduleKey)) {
28
- const logger = loggerFactory ? loggerFactory(options) : new _Logger(options);
29
- _Logger.instances.set(moduleKey, logger);
30
- }
31
- return _Logger.instances.get(moduleKey);
32
- }
33
- setLogLevel(level) {
34
- this.level = level;
35
- }
36
- getLevel() {
37
- return this.level;
38
- }
39
- setSilent(silent) {
40
- this.silent = silent;
41
- if (silent) {
42
- this.level = "silent";
43
- }
44
- }
45
- setModule(module) {
46
- this.moduleContext = module;
47
- }
48
- formatArgs(args) {
49
- if (args.length === 0) {
50
- return { msg: "" };
51
- }
52
- if (args.length === 1) {
53
- if (typeof args[0] === "string") {
54
- return { msg: args[0] };
55
- }
56
- return { msg: "", data: args[0] };
57
- }
58
- const stringArgs = [];
59
- const objectArgs = [];
60
- args.forEach((arg) => {
61
- if (typeof arg === "string" || typeof arg === "number" || typeof arg === "boolean") {
62
- stringArgs.push(String(arg));
63
- } else {
64
- objectArgs.push(arg);
65
- }
66
- });
67
- const msg = stringArgs.join(" ");
68
- return objectArgs.length > 0 ? { msg, data: objectArgs } : { msg };
69
- }
70
- shouldLog(level) {
71
- if (this.silent || this.level === "silent") {
72
- return false;
73
- }
74
- const levels = ["trace", "debug", "info", "warn", "error", "silent"];
75
- const currentLevelIndex = levels.indexOf(this.level);
76
- const targetLevelIndex = levels.indexOf(level);
77
- return targetLevelIndex >= currentLevelIndex;
1
+ import { Logger } from "./standards-sdk.es106.js";
2
+ import { HederaMirrorNode } from "./standards-sdk.es127.js";
3
+ class HCS18BaseClient {
4
+ constructor(config) {
5
+ this.network = config.network;
6
+ this.logger = config.logger || Logger.getInstance({ module: "HCS-18" });
7
+ this.mirrorNode = new HederaMirrorNode(this.network, this.logger);
78
8
  }
79
- getConsoleMethod(level) {
80
- if (level === "error") {
81
- return console.error;
82
- }
83
- if (level === "warn") {
84
- return console.warn;
85
- }
86
- if (level === "debug") {
87
- return console.debug;
88
- }
89
- return console.log;
90
- }
91
- writeLog(level, ...args) {
92
- if (!this.shouldLog(level)) {
93
- return;
94
- }
95
- const { msg, data } = this.formatArgs(args);
96
- const timestamp = (/* @__PURE__ */ new Date()).toISOString();
97
- const consoleMethod = this.getConsoleMethod(level);
98
- if (this.prettyPrint) {
99
- const levelFormatted = level.toUpperCase().padEnd(5);
100
- let output = `${timestamp} ${levelFormatted} [${this.moduleContext}] ${msg}`;
101
- if (data) {
102
- output += "\n" + inspect(data, { colors: true, depth: 3 });
103
- }
104
- consoleMethod(output);
105
- } else {
106
- const logObj = {
107
- timestamp,
108
- level,
109
- module: this.moduleContext,
110
- message: msg,
111
- ...data && { data }
112
- };
113
- consoleMethod(JSON.stringify(logObj));
9
+ /**
10
+ * Retrieves HCS-18 discovery messages from a topic, filtered to valid operations.
11
+ */
12
+ async getDiscoveryMessages(topicId, options) {
13
+ const validOps = ["announce", "propose", "respond", "complete", "withdraw"];
14
+ const messages = await this.mirrorNode.getTopicMessages(topicId, options);
15
+ if (!messages) {
16
+ return [];
114
17
  }
115
- }
116
- debug(...args) {
117
- this.writeLog("debug", ...args);
118
- }
119
- info(...args) {
120
- this.writeLog("info", ...args);
121
- }
122
- warn(...args) {
123
- this.writeLog("warn", ...args);
124
- }
125
- error(...args) {
126
- this.writeLog("error", ...args);
127
- }
128
- trace(...args) {
129
- this.writeLog("trace", ...args);
18
+ return messages.filter((m) => m.p === "hcs-18" && validOps.includes(m.op));
130
19
  }
131
20
  /**
132
- * Clear all logger instances
133
- * Used when switching logger implementations
21
+ * Determines if a proposal has sufficient acceptances to proceed.
134
22
  */
135
- static clearInstances() {
136
- _Logger.instances.clear();
23
+ isProposalReady(proposal) {
24
+ const acceptances = Array.from(proposal.responses.values()).filter(
25
+ (r) => r.decision === "accept"
26
+ );
27
+ const requiredResponses = proposal.data.members.length - 1;
28
+ return acceptances.length >= requiredResponses;
137
29
  }
138
- };
139
- _Logger.instances = /* @__PURE__ */ new Map();
140
- let Logger = _Logger;
30
+ }
141
31
  export {
142
- Logger,
143
- setLoggerFactory
32
+ HCS18BaseClient
144
33
  };
145
34
  //# sourceMappingURL=standards-sdk.es105.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"standards-sdk.es105.js","sources":["../../src/utils/logger.ts"],"sourcesContent":["import { inspect } from 'util';\n\nexport type LogLevel = 'trace' | 'debug' | 'info' | 'warn' | 'error' | 'silent';\n\nexport interface LoggerOptions {\n level?: LogLevel;\n module?: string;\n prettyPrint?: boolean;\n silent?: boolean;\n}\n\nexport interface ILogger {\n debug(...args: any[]): void;\n info(...args: any[]): void;\n warn(...args: any[]): void;\n error(...args: any[]): void;\n trace(...args: any[]): void;\n setLogLevel(level: LogLevel): void;\n getLevel(): LogLevel;\n setSilent(silent: boolean): void;\n setModule(module: string): void;\n}\n\nexport type LoggerFactory = (options: LoggerOptions) => ILogger;\n\nlet loggerFactory: LoggerFactory | null = null;\n\n/**\n * Set a custom logger factory to override the default Pino-based implementation\n */\nexport function setLoggerFactory(factory: LoggerFactory): void {\n loggerFactory = factory;\n Logger.clearInstances();\n}\n\nexport class Logger implements ILogger {\n private static instances: Map<string, ILogger> = new Map();\n private level: LogLevel;\n private moduleContext: string;\n private silent: boolean;\n private prettyPrint: boolean;\n\n constructor(options: LoggerOptions = {}) {\n if (loggerFactory) {\n return loggerFactory(options) as any;\n }\n\n const globalDisable =\n typeof process !== 'undefined' && process.env?.DISABLE_LOGS === 'true';\n\n this.silent = options.silent || globalDisable;\n this.level = this.silent ? 'silent' : options.level || 'info';\n this.moduleContext = options.module || 'app';\n this.prettyPrint = !this.silent && options.prettyPrint !== false;\n }\n\n static getInstance(options: LoggerOptions = {}): ILogger {\n const moduleKey = options.module || 'default';\n\n const globalDisable =\n typeof process !== 'undefined' && process.env?.DISABLE_LOGS === 'true';\n\n if (globalDisable && Logger.instances.has(moduleKey)) {\n const existingLogger = Logger.instances.get(moduleKey)!;\n if (existingLogger.getLevel() !== 'silent') {\n Logger.instances.delete(moduleKey);\n }\n }\n\n if (!Logger.instances.has(moduleKey)) {\n const logger = loggerFactory\n ? loggerFactory(options)\n : new Logger(options);\n Logger.instances.set(moduleKey, logger);\n }\n\n return Logger.instances.get(moduleKey)!;\n }\n\n setLogLevel(level: LogLevel): void {\n this.level = level;\n }\n\n getLevel(): LogLevel {\n return this.level;\n }\n\n setSilent(silent: boolean): void {\n this.silent = silent;\n if (silent) {\n this.level = 'silent';\n }\n }\n\n setModule(module: string): void {\n this.moduleContext = module;\n }\n\n private formatArgs(args: any[]): { msg: string; data?: any } {\n if (args.length === 0) {\n return { msg: '' };\n }\n\n if (args.length === 1) {\n if (typeof args[0] === 'string') {\n return { msg: args[0] };\n }\n return { msg: '', data: args[0] };\n }\n\n const stringArgs: string[] = [];\n const objectArgs: any[] = [];\n\n args.forEach(arg => {\n if (\n typeof arg === 'string' ||\n typeof arg === 'number' ||\n typeof arg === 'boolean'\n ) {\n stringArgs.push(String(arg));\n } else {\n objectArgs.push(arg);\n }\n });\n\n const msg = stringArgs.join(' ');\n return objectArgs.length > 0 ? { msg, data: objectArgs } : { msg };\n }\n\n private shouldLog(level: LogLevel): boolean {\n if (this.silent || this.level === 'silent') {\n return false;\n }\n\n const levels = ['trace', 'debug', 'info', 'warn', 'error', 'silent'];\n const currentLevelIndex = levels.indexOf(this.level);\n const targetLevelIndex = levels.indexOf(level);\n\n return targetLevelIndex >= currentLevelIndex;\n }\n\n private getConsoleMethod(level: LogLevel): (...args: any[]) => void {\n if (level === 'error') {\n return console.error;\n }\n if (level === 'warn') {\n return console.warn;\n }\n if (level === 'debug') {\n return console.debug;\n }\n return console.log;\n }\n\n private writeLog(level: LogLevel, ...args: any[]): void {\n if (!this.shouldLog(level)) {\n return;\n }\n\n const { msg, data } = this.formatArgs(args);\n const timestamp = new Date().toISOString();\n const consoleMethod = this.getConsoleMethod(level);\n\n if (this.prettyPrint) {\n const levelFormatted = level.toUpperCase().padEnd(5);\n let output = `${timestamp} ${levelFormatted} [${this.moduleContext}] ${msg}`;\n\n if (data) {\n output += '\\n' + inspect(data, { colors: true, depth: 3 });\n }\n\n consoleMethod(output);\n } else {\n const logObj = {\n timestamp,\n level,\n module: this.moduleContext,\n message: msg,\n ...(data && { data }),\n };\n\n consoleMethod(JSON.stringify(logObj));\n }\n }\n\n debug(...args: any[]): void {\n this.writeLog('debug', ...args);\n }\n\n info(...args: any[]): void {\n this.writeLog('info', ...args);\n }\n\n warn(...args: any[]): void {\n this.writeLog('warn', ...args);\n }\n\n error(...args: any[]): void {\n this.writeLog('error', ...args);\n }\n\n trace(...args: any[]): void {\n this.writeLog('trace', ...args);\n }\n\n /**\n * Clear all logger instances\n * Used when switching logger implementations\n */\n static clearInstances(): void {\n Logger.instances.clear();\n }\n}\n"],"names":[],"mappings":";AAyBA,IAAI,gBAAsC;AAKnC,SAAS,iBAAiB,SAA8B;AAC7D,kBAAgB;AAChB,SAAO,eAAA;AACT;AAEO,MAAM,UAAN,MAAM,QAA0B;AAAA,EAOrC,YAAY,UAAyB,IAAI;AACvC,QAAI,eAAe;AACjB,aAAO,cAAc,OAAO;AAAA,IAC9B;AAEA,UAAM,gBACJ,OAAO,YAAY,eAAe,QAAQ,KAAK,iBAAiB;AAElE,SAAK,SAAS,QAAQ,UAAU;AAChC,SAAK,QAAQ,KAAK,SAAS,WAAW,QAAQ,SAAS;AACvD,SAAK,gBAAgB,QAAQ,UAAU;AACvC,SAAK,cAAc,CAAC,KAAK,UAAU,QAAQ,gBAAgB;AAAA,EAC7D;AAAA,EAEA,OAAO,YAAY,UAAyB,IAAa;AACvD,UAAM,YAAY,QAAQ,UAAU;AAEpC,UAAM,gBACJ,OAAO,YAAY,eAAe,QAAQ,KAAK,iBAAiB;AAElE,QAAI,iBAAiB,QAAO,UAAU,IAAI,SAAS,GAAG;AACpD,YAAM,iBAAiB,QAAO,UAAU,IAAI,SAAS;AACrD,UAAI,eAAe,SAAA,MAAe,UAAU;AAC1C,gBAAO,UAAU,OAAO,SAAS;AAAA,MACnC;AAAA,IACF;AAEA,QAAI,CAAC,QAAO,UAAU,IAAI,SAAS,GAAG;AACpC,YAAM,SAAS,gBACX,cAAc,OAAO,IACrB,IAAI,QAAO,OAAO;AACtB,cAAO,UAAU,IAAI,WAAW,MAAM;AAAA,IACxC;AAEA,WAAO,QAAO,UAAU,IAAI,SAAS;AAAA,EACvC;AAAA,EAEA,YAAY,OAAuB;AACjC,SAAK,QAAQ;AAAA,EACf;AAAA,EAEA,WAAqB;AACnB,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,UAAU,QAAuB;AAC/B,SAAK,SAAS;AACd,QAAI,QAAQ;AACV,WAAK,QAAQ;AAAA,IACf;AAAA,EACF;AAAA,EAEA,UAAU,QAAsB;AAC9B,SAAK,gBAAgB;AAAA,EACvB;AAAA,EAEQ,WAAW,MAA0C;AAC3D,QAAI,KAAK,WAAW,GAAG;AACrB,aAAO,EAAE,KAAK,GAAA;AAAA,IAChB;AAEA,QAAI,KAAK,WAAW,GAAG;AACrB,UAAI,OAAO,KAAK,CAAC,MAAM,UAAU;AAC/B,eAAO,EAAE,KAAK,KAAK,CAAC,EAAA;AAAA,MACtB;AACA,aAAO,EAAE,KAAK,IAAI,MAAM,KAAK,CAAC,EAAA;AAAA,IAChC;AAEA,UAAM,aAAuB,CAAA;AAC7B,UAAM,aAAoB,CAAA;AAE1B,SAAK,QAAQ,CAAA,QAAO;AAClB,UACE,OAAO,QAAQ,YACf,OAAO,QAAQ,YACf,OAAO,QAAQ,WACf;AACA,mBAAW,KAAK,OAAO,GAAG,CAAC;AAAA,MAC7B,OAAO;AACL,mBAAW,KAAK,GAAG;AAAA,MACrB;AAAA,IACF,CAAC;AAED,UAAM,MAAM,WAAW,KAAK,GAAG;AAC/B,WAAO,WAAW,SAAS,IAAI,EAAE,KAAK,MAAM,eAAe,EAAE,IAAA;AAAA,EAC/D;AAAA,EAEQ,UAAU,OAA0B;AAC1C,QAAI,KAAK,UAAU,KAAK,UAAU,UAAU;AAC1C,aAAO;AAAA,IACT;AAEA,UAAM,SAAS,CAAC,SAAS,SAAS,QAAQ,QAAQ,SAAS,QAAQ;AACnE,UAAM,oBAAoB,OAAO,QAAQ,KAAK,KAAK;AACnD,UAAM,mBAAmB,OAAO,QAAQ,KAAK;AAE7C,WAAO,oBAAoB;AAAA,EAC7B;AAAA,EAEQ,iBAAiB,OAA2C;AAClE,QAAI,UAAU,SAAS;AACrB,aAAO,QAAQ;AAAA,IACjB;AACA,QAAI,UAAU,QAAQ;AACpB,aAAO,QAAQ;AAAA,IACjB;AACA,QAAI,UAAU,SAAS;AACrB,aAAO,QAAQ;AAAA,IACjB;AACA,WAAO,QAAQ;AAAA,EACjB;AAAA,EAEQ,SAAS,UAAoB,MAAmB;AACtD,QAAI,CAAC,KAAK,UAAU,KAAK,GAAG;AAC1B;AAAA,IACF;AAEA,UAAM,EAAE,KAAK,KAAA,IAAS,KAAK,WAAW,IAAI;AAC1C,UAAM,aAAY,oBAAI,KAAA,GAAO,YAAA;AAC7B,UAAM,gBAAgB,KAAK,iBAAiB,KAAK;AAEjD,QAAI,KAAK,aAAa;AACpB,YAAM,iBAAiB,MAAM,YAAA,EAAc,OAAO,CAAC;AACnD,UAAI,SAAS,GAAG,SAAS,IAAI,cAAc,KAAK,KAAK,aAAa,KAAK,GAAG;AAE1E,UAAI,MAAM;AACR,kBAAU,OAAO,QAAQ,MAAM,EAAE,QAAQ,MAAM,OAAO,GAAG;AAAA,MAC3D;AAEA,oBAAc,MAAM;AAAA,IACtB,OAAO;AACL,YAAM,SAAS;AAAA,QACb;AAAA,QACA;AAAA,QACA,QAAQ,KAAK;AAAA,QACb,SAAS;AAAA,QACT,GAAI,QAAQ,EAAE,KAAA;AAAA,MAAK;AAGrB,oBAAc,KAAK,UAAU,MAAM,CAAC;AAAA,IACtC;AAAA,EACF;AAAA,EAEA,SAAS,MAAmB;AAC1B,SAAK,SAAS,SAAS,GAAG,IAAI;AAAA,EAChC;AAAA,EAEA,QAAQ,MAAmB;AACzB,SAAK,SAAS,QAAQ,GAAG,IAAI;AAAA,EAC/B;AAAA,EAEA,QAAQ,MAAmB;AACzB,SAAK,SAAS,QAAQ,GAAG,IAAI;AAAA,EAC/B;AAAA,EAEA,SAAS,MAAmB;AAC1B,SAAK,SAAS,SAAS,GAAG,IAAI;AAAA,EAChC;AAAA,EAEA,SAAS,MAAmB;AAC1B,SAAK,SAAS,SAAS,GAAG,IAAI;AAAA,EAChC;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,OAAO,iBAAuB;AAC5B,YAAO,UAAU,MAAA;AAAA,EACnB;AACF;AAhLE,QAAe,gCAAsC,IAAA;AADhD,IAAM,SAAN;"}
1
+ {"version":3,"file":"standards-sdk.es105.js","sources":["../../src/hcs-18/base-client.ts"],"sourcesContent":["import { Logger, type ILogger } from '../utils/logger';\nimport { HederaMirrorNode } from '../services/mirror-node';\nimport type { NetworkType } from '../utils/types';\nimport type { HCSMessageWithCommonFields } from '../services/types';\nimport type { TrackedProposal } from './types';\n\nexport interface HCS18BaseConfig {\n network: NetworkType;\n logger?: ILogger;\n}\n\nexport abstract class HCS18BaseClient {\n protected readonly logger: ILogger;\n public readonly mirrorNode: HederaMirrorNode;\n public readonly network: NetworkType;\n\n constructor(config: HCS18BaseConfig) {\n this.network = config.network;\n this.logger = config.logger || Logger.getInstance({ module: 'HCS-18' });\n this.mirrorNode = new HederaMirrorNode(this.network, this.logger);\n }\n\n /**\n * Retrieves HCS-18 discovery messages from a topic, filtered to valid operations.\n */\n public async getDiscoveryMessages(\n topicId: string,\n options?: {\n sequenceNumber?: string | number;\n limit?: number;\n order?: 'asc' | 'desc';\n },\n ): Promise<HCSMessageWithCommonFields[]> {\n const validOps = ['announce', 'propose', 'respond', 'complete', 'withdraw'];\n const messages = await this.mirrorNode.getTopicMessages(topicId, options);\n if (!messages) {\n return [];\n }\n return messages.filter(m => m.p === 'hcs-18' && validOps.includes(m.op));\n }\n\n /**\n * Determines if a proposal has sufficient acceptances to proceed.\n */\n public isProposalReady(proposal: TrackedProposal): boolean {\n const acceptances = Array.from(proposal.responses.values()).filter(\n r => r.decision === 'accept',\n );\n const requiredResponses = proposal.data.members.length - 1;\n return acceptances.length >= requiredResponses;\n }\n}\n"],"names":[],"mappings":";;AAWO,MAAe,gBAAgB;AAAA,EAKpC,YAAY,QAAyB;AACnC,SAAK,UAAU,OAAO;AACtB,SAAK,SAAS,OAAO,UAAU,OAAO,YAAY,EAAE,QAAQ,UAAU;AACtE,SAAK,aAAa,IAAI,iBAAiB,KAAK,SAAS,KAAK,MAAM;AAAA,EAClE;AAAA;AAAA;AAAA;AAAA,EAKA,MAAa,qBACX,SACA,SAKuC;AACvC,UAAM,WAAW,CAAC,YAAY,WAAW,WAAW,YAAY,UAAU;AAC1E,UAAM,WAAW,MAAM,KAAK,WAAW,iBAAiB,SAAS,OAAO;AACxE,QAAI,CAAC,UAAU;AACb,aAAO,CAAA;AAAA,IACT;AACA,WAAO,SAAS,OAAO,CAAA,MAAK,EAAE,MAAM,YAAY,SAAS,SAAS,EAAE,EAAE,CAAC;AAAA,EACzE;AAAA;AAAA;AAAA;AAAA,EAKO,gBAAgB,UAAoC;AACzD,UAAM,cAAc,MAAM,KAAK,SAAS,UAAU,OAAA,CAAQ,EAAE;AAAA,MAC1D,CAAA,MAAK,EAAE,aAAa;AAAA,IAAA;AAEtB,UAAM,oBAAoB,SAAS,KAAK,QAAQ,SAAS;AACzD,WAAO,YAAY,UAAU;AAAA,EAC/B;AACF;"}