@hashgraphonline/standards-sdk 0.1.141-canary.3 → 0.1.141-canary.30

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 (251) 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 +34 -0
  12. package/dist/cjs/hcs-21/sdk.d.ts.map +1 -1
  13. package/dist/cjs/hcs-21/tx.d.ts.map +1 -1
  14. package/dist/cjs/hcs-21/types.d.ts +135 -64
  15. package/dist/cjs/hcs-21/types.d.ts.map +1 -1
  16. package/dist/cjs/hcs-21/verify.d.ts +6 -0
  17. package/dist/cjs/hcs-21/verify.d.ts.map +1 -0
  18. package/dist/cjs/inscribe/inscriber.d.ts +1 -0
  19. package/dist/cjs/inscribe/inscriber.d.ts.map +1 -1
  20. package/dist/cjs/inscribe/quote-cache.d.ts.map +1 -1
  21. package/dist/cjs/services/registry-broker/client.d.ts +4 -3
  22. package/dist/cjs/services/registry-broker/client.d.ts.map +1 -1
  23. package/dist/cjs/services/registry-broker/private-key-signer.d.ts.map +1 -1
  24. package/dist/cjs/services/registry-broker/schemas.d.ts +38 -38
  25. package/dist/cjs/services/registry-broker/schemas.d.ts.map +1 -1
  26. package/dist/cjs/standards-sdk.cjs +2 -2
  27. package/dist/cjs/standards-sdk.cjs.map +1 -1
  28. package/dist/cjs/utils/dynamic-import.d.ts +1 -0
  29. package/dist/cjs/utils/dynamic-import.d.ts.map +1 -1
  30. package/dist/es/hcs-16/base-client.d.ts.map +1 -1
  31. package/dist/es/hcs-17/types.d.ts.map +1 -1
  32. package/dist/es/hcs-20/sdk.d.ts.map +1 -1
  33. package/dist/es/hcs-20/types.d.ts +9 -8
  34. package/dist/es/hcs-20/types.d.ts.map +1 -1
  35. package/dist/es/hcs-21/base-client.d.ts +4 -3
  36. package/dist/es/hcs-21/base-client.d.ts.map +1 -1
  37. package/dist/es/hcs-21/index.d.ts +1 -0
  38. package/dist/es/hcs-21/index.d.ts.map +1 -1
  39. package/dist/es/hcs-21/sdk.d.ts +34 -0
  40. package/dist/es/hcs-21/sdk.d.ts.map +1 -1
  41. package/dist/es/hcs-21/tx.d.ts.map +1 -1
  42. package/dist/es/hcs-21/types.d.ts +135 -64
  43. package/dist/es/hcs-21/types.d.ts.map +1 -1
  44. package/dist/es/hcs-21/verify.d.ts +6 -0
  45. package/dist/es/hcs-21/verify.d.ts.map +1 -0
  46. package/dist/es/inscribe/inscriber.d.ts +1 -0
  47. package/dist/es/inscribe/inscriber.d.ts.map +1 -1
  48. package/dist/es/inscribe/quote-cache.d.ts.map +1 -1
  49. package/dist/es/services/registry-broker/client.d.ts +4 -3
  50. package/dist/es/services/registry-broker/client.d.ts.map +1 -1
  51. package/dist/es/services/registry-broker/private-key-signer.d.ts.map +1 -1
  52. package/dist/es/services/registry-broker/schemas.d.ts +38 -38
  53. package/dist/es/services/registry-broker/schemas.d.ts.map +1 -1
  54. package/dist/es/standards-sdk.es.js +58 -50
  55. package/dist/es/standards-sdk.es.js.map +1 -1
  56. package/dist/es/standards-sdk.es10.js +2 -2
  57. package/dist/es/standards-sdk.es100.js +26 -229
  58. package/dist/es/standards-sdk.es100.js.map +1 -1
  59. package/dist/es/standards-sdk.es101.js +228 -109
  60. package/dist/es/standards-sdk.es101.js.map +1 -1
  61. package/dist/es/standards-sdk.es102.js +94 -15
  62. package/dist/es/standards-sdk.es102.js.map +1 -1
  63. package/dist/es/standards-sdk.es103.js +30 -80
  64. package/dist/es/standards-sdk.es103.js.map +1 -1
  65. package/dist/es/standards-sdk.es104.js +80 -27
  66. package/dist/es/standards-sdk.es104.js.map +1 -1
  67. package/dist/es/standards-sdk.es105.js +25 -136
  68. package/dist/es/standards-sdk.es105.js.map +1 -1
  69. package/dist/es/standards-sdk.es106.js +140 -27
  70. package/dist/es/standards-sdk.es106.js.map +1 -1
  71. package/dist/es/standards-sdk.es107.js +27 -20
  72. package/dist/es/standards-sdk.es107.js.map +1 -1
  73. package/dist/es/standards-sdk.es108.js +18 -156
  74. package/dist/es/standards-sdk.es108.js.map +1 -1
  75. package/dist/es/standards-sdk.es109.js +148 -196
  76. package/dist/es/standards-sdk.es109.js.map +1 -1
  77. package/dist/es/standards-sdk.es110.js +160 -747
  78. package/dist/es/standards-sdk.es110.js.map +1 -1
  79. package/dist/es/standards-sdk.es111.js +786 -9
  80. package/dist/es/standards-sdk.es111.js.map +1 -1
  81. package/dist/es/standards-sdk.es112.js +13 -567
  82. package/dist/es/standards-sdk.es112.js.map +1 -1
  83. package/dist/es/standards-sdk.es113.js +541 -576
  84. package/dist/es/standards-sdk.es113.js.map +1 -1
  85. package/dist/es/standards-sdk.es114.js +601 -12
  86. package/dist/es/standards-sdk.es114.js.map +1 -1
  87. package/dist/es/standards-sdk.es115.js +13 -2
  88. package/dist/es/standards-sdk.es115.js.map +1 -1
  89. package/dist/es/standards-sdk.es116.js +2 -83
  90. package/dist/es/standards-sdk.es116.js.map +1 -1
  91. package/dist/es/standards-sdk.es117.js +80 -36
  92. package/dist/es/standards-sdk.es117.js.map +1 -1
  93. package/dist/es/standards-sdk.es118.js +39 -2
  94. package/dist/es/standards-sdk.es118.js.map +1 -1
  95. package/dist/es/standards-sdk.es119.js +2 -223
  96. package/dist/es/standards-sdk.es119.js.map +1 -1
  97. package/dist/es/standards-sdk.es12.js +1 -1
  98. package/dist/es/standards-sdk.es120.js +193 -1110
  99. package/dist/es/standards-sdk.es120.js.map +1 -1
  100. package/dist/es/standards-sdk.es121.js +1059 -225
  101. package/dist/es/standards-sdk.es121.js.map +1 -1
  102. package/dist/es/standards-sdk.es122.js +303 -419
  103. package/dist/es/standards-sdk.es122.js.map +1 -1
  104. package/dist/es/standards-sdk.es123.js +418 -351
  105. package/dist/es/standards-sdk.es123.js.map +1 -1
  106. package/dist/es/standards-sdk.es124.js +348 -785
  107. package/dist/es/standards-sdk.es124.js.map +1 -1
  108. package/dist/es/standards-sdk.es125.js +766 -182
  109. package/dist/es/standards-sdk.es125.js.map +1 -1
  110. package/dist/es/standards-sdk.es126.js +153 -1512
  111. package/dist/es/standards-sdk.es126.js.map +1 -1
  112. package/dist/es/standards-sdk.es127.js +1373 -1977
  113. package/dist/es/standards-sdk.es127.js.map +1 -1
  114. package/dist/es/standards-sdk.es128.js +2211 -50
  115. package/dist/es/standards-sdk.es128.js.map +1 -1
  116. package/dist/es/standards-sdk.es129.js +59 -79
  117. package/dist/es/standards-sdk.es129.js.map +1 -1
  118. package/dist/es/standards-sdk.es13.js +1 -1
  119. package/dist/es/standards-sdk.es130.js +80 -152
  120. package/dist/es/standards-sdk.es130.js.map +1 -1
  121. package/dist/es/standards-sdk.es131.js +159 -7
  122. package/dist/es/standards-sdk.es131.js.map +1 -1
  123. package/dist/es/standards-sdk.es132.js +7 -86
  124. package/dist/es/standards-sdk.es132.js.map +1 -1
  125. package/dist/es/standards-sdk.es133.js +65 -44
  126. package/dist/es/standards-sdk.es133.js.map +1 -1
  127. package/dist/es/standards-sdk.es134.js +65 -28
  128. package/dist/es/standards-sdk.es134.js.map +1 -1
  129. package/dist/es/standards-sdk.es135.js +69 -125
  130. package/dist/es/standards-sdk.es135.js.map +1 -1
  131. package/dist/es/standards-sdk.es136.js +28 -42
  132. package/dist/es/standards-sdk.es136.js.map +1 -1
  133. package/dist/es/standards-sdk.es137.js +138 -760
  134. package/dist/es/standards-sdk.es137.js.map +1 -1
  135. package/dist/es/standards-sdk.es138.js +36 -50
  136. package/dist/es/standards-sdk.es138.js.map +1 -1
  137. package/dist/es/standards-sdk.es139.js +766 -64
  138. package/dist/es/standards-sdk.es139.js.map +1 -1
  139. package/dist/es/standards-sdk.es14.js +1 -1
  140. package/dist/es/standards-sdk.es141.js +13 -168
  141. package/dist/es/standards-sdk.es141.js.map +1 -1
  142. package/dist/es/standards-sdk.es142.js +55 -321
  143. package/dist/es/standards-sdk.es142.js.map +1 -1
  144. package/dist/es/standards-sdk.es143.js +120 -294
  145. package/dist/es/standards-sdk.es143.js.map +1 -1
  146. package/dist/es/standards-sdk.es144.js +191 -322
  147. package/dist/es/standards-sdk.es144.js.map +1 -1
  148. package/dist/es/standards-sdk.es145.js +294 -279
  149. package/dist/es/standards-sdk.es145.js.map +1 -1
  150. package/dist/es/standards-sdk.es146.js +440 -63
  151. package/dist/es/standards-sdk.es146.js.map +1 -1
  152. package/dist/es/standards-sdk.es147.js +327 -13
  153. package/dist/es/standards-sdk.es147.js.map +1 -1
  154. package/dist/es/standards-sdk.es148.js +79 -0
  155. package/dist/es/standards-sdk.es148.js.map +1 -0
  156. package/dist/es/standards-sdk.es15.js +1 -1
  157. package/dist/es/standards-sdk.es16.js +1 -1
  158. package/dist/es/standards-sdk.es17.js +5 -10
  159. package/dist/es/standards-sdk.es17.js.map +1 -1
  160. package/dist/es/standards-sdk.es19.js +11 -15
  161. package/dist/es/standards-sdk.es19.js.map +1 -1
  162. package/dist/es/standards-sdk.es2.js +26 -72
  163. package/dist/es/standards-sdk.es2.js.map +1 -1
  164. package/dist/es/standards-sdk.es20.js +8 -12
  165. package/dist/es/standards-sdk.es20.js.map +1 -1
  166. package/dist/es/standards-sdk.es21.js +1 -1
  167. package/dist/es/standards-sdk.es22.js +1 -1
  168. package/dist/es/standards-sdk.es23.js +1 -1
  169. package/dist/es/standards-sdk.es24.js +1 -1
  170. package/dist/es/standards-sdk.es25.js +1 -1
  171. package/dist/es/standards-sdk.es26.js +1 -1
  172. package/dist/es/standards-sdk.es27.js +1 -1
  173. package/dist/es/standards-sdk.es28.js +11 -15
  174. package/dist/es/standards-sdk.es28.js.map +1 -1
  175. package/dist/es/standards-sdk.es3.js +2 -2
  176. package/dist/es/standards-sdk.es31.js +1 -1
  177. package/dist/es/standards-sdk.es32.js +3 -3
  178. package/dist/es/standards-sdk.es33.js +1 -1
  179. package/dist/es/standards-sdk.es36.js +6 -11
  180. package/dist/es/standards-sdk.es36.js.map +1 -1
  181. package/dist/es/standards-sdk.es37.js +3 -3
  182. package/dist/es/standards-sdk.es38.js +1 -1
  183. package/dist/es/standards-sdk.es39.js +2 -2
  184. package/dist/es/standards-sdk.es40.js +1 -1
  185. package/dist/es/standards-sdk.es41.js +1 -1
  186. package/dist/es/standards-sdk.es42.js +2 -2
  187. package/dist/es/standards-sdk.es47.js +1 -1
  188. package/dist/es/standards-sdk.es5.js +2 -2
  189. package/dist/es/standards-sdk.es52.js +1 -1
  190. package/dist/es/standards-sdk.es54.js +1 -1
  191. package/dist/es/standards-sdk.es57.js +2 -2
  192. package/dist/es/standards-sdk.es59.js +1 -1
  193. package/dist/es/standards-sdk.es6.js +2 -2
  194. package/dist/es/standards-sdk.es60.js +1 -1
  195. package/dist/es/standards-sdk.es61.js +7 -11
  196. package/dist/es/standards-sdk.es61.js.map +1 -1
  197. package/dist/es/standards-sdk.es63.js +1 -1
  198. package/dist/es/standards-sdk.es65.js +2 -2
  199. package/dist/es/standards-sdk.es66.js +3 -3
  200. package/dist/es/standards-sdk.es69.js +2 -2
  201. package/dist/es/standards-sdk.es7.js +2 -2
  202. package/dist/es/standards-sdk.es70.js +3 -3
  203. package/dist/es/standards-sdk.es71.js +2 -2
  204. package/dist/es/standards-sdk.es72.js +1 -1
  205. package/dist/es/standards-sdk.es73.js.map +1 -1
  206. package/dist/es/standards-sdk.es75.js +2 -2
  207. package/dist/es/standards-sdk.es77.js +5 -3
  208. package/dist/es/standards-sdk.es77.js.map +1 -1
  209. package/dist/es/standards-sdk.es78.js +4 -10
  210. package/dist/es/standards-sdk.es78.js.map +1 -1
  211. package/dist/es/standards-sdk.es79.js +1 -1
  212. package/dist/es/standards-sdk.es8.js +1 -1
  213. package/dist/es/standards-sdk.es80.js +26 -15
  214. package/dist/es/standards-sdk.es80.js.map +1 -1
  215. package/dist/es/standards-sdk.es82.js +12 -4
  216. package/dist/es/standards-sdk.es82.js.map +1 -1
  217. package/dist/es/standards-sdk.es83.js +7 -6
  218. package/dist/es/standards-sdk.es83.js.map +1 -1
  219. package/dist/es/standards-sdk.es84.js +106 -5
  220. package/dist/es/standards-sdk.es84.js.map +1 -1
  221. package/dist/es/standards-sdk.es86.js +55 -21
  222. package/dist/es/standards-sdk.es86.js.map +1 -1
  223. package/dist/es/standards-sdk.es87.js +22 -75
  224. package/dist/es/standards-sdk.es87.js.map +1 -1
  225. package/dist/es/standards-sdk.es88.js +45 -30
  226. package/dist/es/standards-sdk.es88.js.map +1 -1
  227. package/dist/es/standards-sdk.es89.js +57 -22
  228. package/dist/es/standards-sdk.es89.js.map +1 -1
  229. package/dist/es/standards-sdk.es90.js +28 -23
  230. package/dist/es/standards-sdk.es90.js.map +1 -1
  231. package/dist/es/standards-sdk.es91.js +23 -167
  232. package/dist/es/standards-sdk.es91.js.map +1 -1
  233. package/dist/es/standards-sdk.es92.js +158 -119
  234. package/dist/es/standards-sdk.es92.js.map +1 -1
  235. package/dist/es/standards-sdk.es93.js +68 -95
  236. package/dist/es/standards-sdk.es93.js.map +1 -1
  237. package/dist/es/standards-sdk.es94.js +136 -119
  238. package/dist/es/standards-sdk.es94.js.map +1 -1
  239. package/dist/es/standards-sdk.es95.js +139 -39
  240. package/dist/es/standards-sdk.es95.js.map +1 -1
  241. package/dist/es/standards-sdk.es96.js +42 -257
  242. package/dist/es/standards-sdk.es96.js.map +1 -1
  243. package/dist/es/standards-sdk.es97.js +243 -80
  244. package/dist/es/standards-sdk.es97.js.map +1 -1
  245. package/dist/es/standards-sdk.es98.js +47 -48
  246. package/dist/es/standards-sdk.es98.js.map +1 -1
  247. package/dist/es/standards-sdk.es99.js +100 -28
  248. package/dist/es/standards-sdk.es99.js.map +1 -1
  249. package/dist/es/utils/dynamic-import.d.ts +1 -0
  250. package/dist/es/utils/dynamic-import.d.ts.map +1 -1
  251. package/package.json +65 -63
@@ -1,83 +1,30 @@
1
- import { AccountId, Client, PrivateKey, Hbar } from "@hashgraph/sdk";
2
- import { createNodeOperatorContext } from "./standards-sdk.es135.js";
3
- import { buildHcs15BaseAccountCreateTx, buildHcs15PetalAccountCreateTx } from "./standards-sdk.es86.js";
4
- import { HCS15BaseClient } from "./standards-sdk.es89.js";
5
- class HCS15Client extends HCS15BaseClient {
6
- constructor(config) {
7
- super(config);
8
- this.operatorId = AccountId.fromString(config.operatorId);
9
- this.operatorCtx = createNodeOperatorContext({
10
- network: this.network,
11
- operatorId: this.operatorId,
12
- operatorKey: config.operatorKey,
13
- keyType: config.keyType,
14
- mirrorNode: this.mirrorNode,
15
- logger: this.logger,
16
- client: this.network === "mainnet" ? Client.forMainnet() : Client.forTestnet()
17
- });
18
- this.client = this.operatorCtx.client;
1
+ import { AccountCreateTransaction, Hbar } from "@hashgraph/sdk";
2
+ function buildHcs15BaseAccountCreateTx(params) {
3
+ const tx = new AccountCreateTransaction().setECDSAKeyWithAlias(params.publicKey).setInitialBalance(
4
+ params.initialBalance instanceof Hbar ? params.initialBalance : new Hbar(params.initialBalance ?? 1)
5
+ );
6
+ if (typeof params.maxAutomaticTokenAssociations === "number") {
7
+ tx.setMaxAutomaticTokenAssociations(params.maxAutomaticTokenAssociations);
19
8
  }
20
- getKeyType() {
21
- return this.operatorCtx.keyType;
9
+ if (params.accountMemo) {
10
+ tx.setAccountMemo(params.accountMemo);
22
11
  }
23
- async close() {
24
- try {
25
- this.client.close();
26
- } catch {
27
- }
28
- }
29
- /**
30
- * Create a new base account with a newly generated ECDSA key and EVM alias.
31
- */
32
- async createBaseAccount(options) {
33
- const priv = PrivateKey.generateECDSA();
34
- const pub = priv.publicKey;
35
- const tx = buildHcs15BaseAccountCreateTx({
36
- publicKey: pub,
37
- initialBalance: new Hbar(options?.initialBalance ?? 10),
38
- maxAutomaticTokenAssociations: options?.maxAutomaticTokenAssociations,
39
- accountMemo: options?.accountMemo
40
- });
41
- const resp = await tx.execute(this.client);
42
- const receipt = await resp.getReceipt(this.client);
43
- if (!receipt.accountId) {
44
- throw new Error("HCS-15 BASE_ACCOUNT_CREATE_FAILED");
45
- }
46
- const accountId = receipt.accountId.toString();
47
- const evmAddress = `0x${pub.toEvmAddress()}`;
48
- this.logger.info("Created HCS-15 base account", { accountId, evmAddress });
49
- return {
50
- accountId,
51
- privateKey: priv,
52
- privateKeyHex: priv.toStringRaw(),
53
- publicKey: pub,
54
- evmAddress,
55
- receipt
56
- };
12
+ return tx;
13
+ }
14
+ function buildHcs15PetalAccountCreateTx(params) {
15
+ const tx = new AccountCreateTransaction().setKeyWithoutAlias(params.publicKey).setInitialBalance(
16
+ params.initialBalance instanceof Hbar ? params.initialBalance : new Hbar(params.initialBalance ?? 1)
17
+ );
18
+ if (typeof params.maxAutomaticTokenAssociations === "number") {
19
+ tx.setMaxAutomaticTokenAssociations(params.maxAutomaticTokenAssociations);
57
20
  }
58
- /**
59
- * Create a Petal account that reuses the base account ECDSA key (no alias).
60
- */
61
- async createPetalAccount(params) {
62
- const baseKey = typeof params.basePrivateKey === "string" ? PrivateKey.fromStringECDSA(params.basePrivateKey) : params.basePrivateKey;
63
- const pub = baseKey.publicKey;
64
- const tx = buildHcs15PetalAccountCreateTx({
65
- publicKey: pub,
66
- initialBalance: new Hbar(params.initialBalance ?? 1),
67
- maxAutomaticTokenAssociations: params.maxAutomaticTokenAssociations,
68
- accountMemo: params.accountMemo
69
- });
70
- const resp = await tx.execute(this.client);
71
- const receipt = await resp.getReceipt(this.client);
72
- if (!receipt.accountId) {
73
- throw new Error("HCS-15 PETAL_ACCOUNT_CREATE_FAILED");
74
- }
75
- const accountId = receipt.accountId.toString();
76
- this.logger.info("Created HCS-15 petal account", { accountId });
77
- return { accountId, receipt };
21
+ if (params.accountMemo) {
22
+ tx.setAccountMemo(params.accountMemo);
78
23
  }
24
+ return tx;
79
25
  }
80
26
  export {
81
- HCS15Client
27
+ buildHcs15BaseAccountCreateTx,
28
+ buildHcs15PetalAccountCreateTx
82
29
  };
83
30
  //# sourceMappingURL=standards-sdk.es87.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"standards-sdk.es87.js","sources":["../../src/hcs-15/sdk.ts"],"sourcesContent":["import {\n AccountId,\n Client,\n Hbar,\n PrivateKey,\n PublicKey,\n TransactionReceipt,\n} from '@hashgraph/sdk';\nimport { NetworkType } from '../utils/types';\nimport {\n createNodeOperatorContext,\n type NodeOperatorContext,\n} from '../common/node-operator-resolver';\nimport {\n buildHcs15BaseAccountCreateTx,\n buildHcs15PetalAccountCreateTx,\n} from './tx';\nimport type { SDKHCS15ClientConfig } from './types';\nimport { HCS15BaseClient } from './base-client';\n\nexport class HCS15Client extends HCS15BaseClient {\n private readonly operatorCtx: NodeOperatorContext;\n private readonly client: Client;\n private readonly operatorId: AccountId;\n\n constructor(config: SDKHCS15ClientConfig) {\n super(config);\n this.operatorId = AccountId.fromString(config.operatorId);\n this.operatorCtx = createNodeOperatorContext({\n network: this.network,\n operatorId: this.operatorId,\n operatorKey: config.operatorKey,\n keyType: config.keyType,\n mirrorNode: this.mirrorNode,\n logger: this.logger,\n client:\n this.network === 'mainnet' ? Client.forMainnet() : Client.forTestnet(),\n });\n this.client = this.operatorCtx.client;\n }\n\n public getKeyType(): 'ed25519' | 'ecdsa' {\n return this.operatorCtx.keyType;\n }\n\n public async close(): Promise<void> {\n try {\n this.client.close();\n } catch {}\n }\n\n /**\n * Create a new base account with a newly generated ECDSA key and EVM alias.\n */\n async createBaseAccount(options?: {\n initialBalance?: number;\n maxAutomaticTokenAssociations?: number;\n accountMemo?: string;\n }): Promise<{\n accountId: string;\n privateKey: PrivateKey;\n privateKeyHex: string;\n publicKey: PublicKey;\n evmAddress: string;\n receipt: TransactionReceipt;\n }> {\n const priv = PrivateKey.generateECDSA();\n const pub = priv.publicKey;\n const tx = buildHcs15BaseAccountCreateTx({\n publicKey: pub,\n initialBalance: new Hbar(options?.initialBalance ?? 10),\n maxAutomaticTokenAssociations: options?.maxAutomaticTokenAssociations,\n accountMemo: options?.accountMemo,\n });\n const resp = await tx.execute(this.client);\n const receipt = await resp.getReceipt(this.client);\n if (!receipt.accountId) {\n throw new Error('HCS-15 BASE_ACCOUNT_CREATE_FAILED');\n }\n const accountId = receipt.accountId.toString();\n const evmAddress = `0x${pub.toEvmAddress()}`;\n this.logger.info('Created HCS-15 base account', { accountId, evmAddress });\n return {\n accountId,\n privateKey: priv,\n privateKeyHex: priv.toStringRaw(),\n publicKey: pub,\n evmAddress,\n receipt,\n };\n }\n\n /**\n * Create a Petal account that reuses the base account ECDSA key (no alias).\n */\n async createPetalAccount(params: {\n basePrivateKey: string | PrivateKey;\n initialBalance?: number;\n maxAutomaticTokenAssociations?: number;\n accountMemo?: string;\n }): Promise<{ accountId: string; receipt: TransactionReceipt }> {\n const baseKey =\n typeof params.basePrivateKey === 'string'\n ? PrivateKey.fromStringECDSA(params.basePrivateKey)\n : params.basePrivateKey;\n const pub = baseKey.publicKey;\n const tx = buildHcs15PetalAccountCreateTx({\n publicKey: pub,\n initialBalance: new Hbar(params.initialBalance ?? 1),\n maxAutomaticTokenAssociations: params.maxAutomaticTokenAssociations,\n accountMemo: params.accountMemo,\n });\n const resp = await tx.execute(this.client);\n const receipt = await resp.getReceipt(this.client);\n if (!receipt.accountId) {\n throw new Error('HCS-15 PETAL_ACCOUNT_CREATE_FAILED');\n }\n const accountId = receipt.accountId.toString();\n this.logger.info('Created HCS-15 petal account', { accountId });\n return { accountId, receipt };\n }\n}\n"],"names":[],"mappings":";;;;AAoBO,MAAM,oBAAoB,gBAAgB;AAAA,EAK/C,YAAY,QAA8B;AACxC,UAAM,MAAM;AACZ,SAAK,aAAa,UAAU,WAAW,OAAO,UAAU;AACxD,SAAK,cAAc,0BAA0B;AAAA,MAC3C,SAAS,KAAK;AAAA,MACd,YAAY,KAAK;AAAA,MACjB,aAAa,OAAO;AAAA,MACpB,SAAS,OAAO;AAAA,MAChB,YAAY,KAAK;AAAA,MACjB,QAAQ,KAAK;AAAA,MACb,QACE,KAAK,YAAY,YAAY,OAAO,WAAA,IAAe,OAAO,WAAA;AAAA,IAAW,CACxE;AACD,SAAK,SAAS,KAAK,YAAY;AAAA,EACjC;AAAA,EAEO,aAAkC;AACvC,WAAO,KAAK,YAAY;AAAA,EAC1B;AAAA,EAEA,MAAa,QAAuB;AAClC,QAAI;AACF,WAAK,OAAO,MAAA;AAAA,IACd,QAAQ;AAAA,IAAC;AAAA,EACX;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,kBAAkB,SAWrB;AACD,UAAM,OAAO,WAAW,cAAA;AACxB,UAAM,MAAM,KAAK;AACjB,UAAM,KAAK,8BAA8B;AAAA,MACvC,WAAW;AAAA,MACX,gBAAgB,IAAI,KAAK,SAAS,kBAAkB,EAAE;AAAA,MACtD,+BAA+B,SAAS;AAAA,MACxC,aAAa,SAAS;AAAA,IAAA,CACvB;AACD,UAAM,OAAO,MAAM,GAAG,QAAQ,KAAK,MAAM;AACzC,UAAM,UAAU,MAAM,KAAK,WAAW,KAAK,MAAM;AACjD,QAAI,CAAC,QAAQ,WAAW;AACtB,YAAM,IAAI,MAAM,mCAAmC;AAAA,IACrD;AACA,UAAM,YAAY,QAAQ,UAAU,SAAA;AACpC,UAAM,aAAa,KAAK,IAAI,aAAA,CAAc;AAC1C,SAAK,OAAO,KAAK,+BAA+B,EAAE,WAAW,YAAY;AACzE,WAAO;AAAA,MACL;AAAA,MACA,YAAY;AAAA,MACZ,eAAe,KAAK,YAAA;AAAA,MACpB,WAAW;AAAA,MACX;AAAA,MACA;AAAA,IAAA;AAAA,EAEJ;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,mBAAmB,QAKuC;AAC9D,UAAM,UACJ,OAAO,OAAO,mBAAmB,WAC7B,WAAW,gBAAgB,OAAO,cAAc,IAChD,OAAO;AACb,UAAM,MAAM,QAAQ;AACpB,UAAM,KAAK,+BAA+B;AAAA,MACxC,WAAW;AAAA,MACX,gBAAgB,IAAI,KAAK,OAAO,kBAAkB,CAAC;AAAA,MACnD,+BAA+B,OAAO;AAAA,MACtC,aAAa,OAAO;AAAA,IAAA,CACrB;AACD,UAAM,OAAO,MAAM,GAAG,QAAQ,KAAK,MAAM;AACzC,UAAM,UAAU,MAAM,KAAK,WAAW,KAAK,MAAM;AACjD,QAAI,CAAC,QAAQ,WAAW;AACtB,YAAM,IAAI,MAAM,oCAAoC;AAAA,IACtD;AACA,UAAM,YAAY,QAAQ,UAAU,SAAA;AACpC,SAAK,OAAO,KAAK,gCAAgC,EAAE,WAAW;AAC9D,WAAO,EAAE,WAAW,QAAA;AAAA,EACtB;AACF;"}
1
+ {"version":3,"file":"standards-sdk.es87.js","sources":["../../src/hcs-15/tx.ts"],"sourcesContent":["import { AccountCreateTransaction, Hbar, PublicKey } from '@hashgraph/sdk';\n\n/**\n * Build AccountCreateTransaction for an HCS-15 base account.\n * Uses an ECDSA public key and sets the EVM alias from it.\n */\nexport function buildHcs15BaseAccountCreateTx(params: {\n publicKey: PublicKey;\n initialBalance?: Hbar | number;\n maxAutomaticTokenAssociations?: number;\n accountMemo?: string;\n}): AccountCreateTransaction {\n const tx = new AccountCreateTransaction()\n .setECDSAKeyWithAlias(params.publicKey)\n .setInitialBalance(\n params.initialBalance instanceof Hbar\n ? params.initialBalance\n : new Hbar(params.initialBalance ?? 1),\n );\n\n if (typeof params.maxAutomaticTokenAssociations === 'number') {\n tx.setMaxAutomaticTokenAssociations(params.maxAutomaticTokenAssociations);\n }\n if (params.accountMemo) {\n tx.setAccountMemo(params.accountMemo);\n }\n return tx;\n}\n\n/**\n * Build AccountCreateTransaction for an HCS-15 Petal account.\n * Reuses the same public key as the base account, without alias.\n */\nexport function buildHcs15PetalAccountCreateTx(params: {\n publicKey: PublicKey;\n initialBalance?: Hbar | number;\n maxAutomaticTokenAssociations?: number;\n accountMemo?: string;\n}): AccountCreateTransaction {\n const tx = new AccountCreateTransaction()\n .setKeyWithoutAlias(params.publicKey)\n .setInitialBalance(\n params.initialBalance instanceof Hbar\n ? params.initialBalance\n : new Hbar(params.initialBalance ?? 1),\n );\n\n if (typeof params.maxAutomaticTokenAssociations === 'number') {\n tx.setMaxAutomaticTokenAssociations(params.maxAutomaticTokenAssociations);\n }\n if (params.accountMemo) {\n tx.setAccountMemo(params.accountMemo);\n }\n return tx;\n}\n"],"names":[],"mappings":";AAMO,SAAS,8BAA8B,QAKjB;AAC3B,QAAM,KAAK,IAAI,yBAAA,EACZ,qBAAqB,OAAO,SAAS,EACrC;AAAA,IACC,OAAO,0BAA0B,OAC7B,OAAO,iBACP,IAAI,KAAK,OAAO,kBAAkB,CAAC;AAAA,EAAA;AAG3C,MAAI,OAAO,OAAO,kCAAkC,UAAU;AAC5D,OAAG,iCAAiC,OAAO,6BAA6B;AAAA,EAC1E;AACA,MAAI,OAAO,aAAa;AACtB,OAAG,eAAe,OAAO,WAAW;AAAA,EACtC;AACA,SAAO;AACT;AAMO,SAAS,+BAA+B,QAKlB;AAC3B,QAAM,KAAK,IAAI,yBAAA,EACZ,mBAAmB,OAAO,SAAS,EACnC;AAAA,IACC,OAAO,0BAA0B,OAC7B,OAAO,iBACP,IAAI,KAAK,OAAO,kBAAkB,CAAC;AAAA,EAAA;AAG3C,MAAI,OAAO,OAAO,kCAAkC,UAAU;AAC5D,OAAG,iCAAiC,OAAO,6BAA6B;AAAA,EAC1E;AACA,MAAI,OAAO,aAAa;AACtB,OAAG,eAAe,OAAO,WAAW;AAAA,EACtC;AACA,SAAO;AACT;"}
@@ -1,22 +1,35 @@
1
- import { PrivateKey, Hbar } from "@hashgraph/sdk";
2
- import { HCS15BaseClient } from "./standards-sdk.es89.js";
3
- import { buildHcs15BaseAccountCreateTx, buildHcs15PetalAccountCreateTx } from "./standards-sdk.es86.js";
4
- class HCS15BrowserClient extends HCS15BaseClient {
1
+ import { AccountId, Client, PrivateKey, Hbar } from "@hashgraph/sdk";
2
+ import { createNodeOperatorContext } from "./standards-sdk.es137.js";
3
+ import { buildHcs15BaseAccountCreateTx, buildHcs15PetalAccountCreateTx } from "./standards-sdk.es87.js";
4
+ import { HCS15BaseClient } from "./standards-sdk.es90.js";
5
+ class HCS15Client extends HCS15BaseClient {
5
6
  constructor(config) {
6
7
  super(config);
7
- this.signer = config.signer || config.hwc?.dAppConnector?.signers?.[0];
8
+ this.operatorId = AccountId.fromString(config.operatorId);
9
+ this.operatorCtx = createNodeOperatorContext({
10
+ network: this.network,
11
+ operatorId: this.operatorId,
12
+ operatorKey: config.operatorKey,
13
+ keyType: config.keyType,
14
+ mirrorNode: this.mirrorNode,
15
+ logger: this.logger,
16
+ client: this.network === "mainnet" ? Client.forMainnet() : Client.forTestnet()
17
+ });
18
+ this.client = this.operatorCtx.client;
19
+ }
20
+ getKeyType() {
21
+ return this.operatorCtx.keyType;
8
22
  }
9
- requireSigner() {
10
- if (!this.signer) {
11
- throw new Error("HCS-15 Browser client requires an active DAppSigner");
23
+ async close() {
24
+ try {
25
+ this.client.close();
26
+ } catch {
12
27
  }
13
- return this.signer;
14
28
  }
15
29
  /**
16
- * Create a new base account with a new ECDSA key and EVM alias using a connected wallet signer.
30
+ * Create a new base account with a newly generated ECDSA key and EVM alias.
17
31
  */
18
32
  async createBaseAccount(options) {
19
- const signer = this.requireSigner();
20
33
  const priv = PrivateKey.generateECDSA();
21
34
  const pub = priv.publicKey;
22
35
  const tx = buildHcs15BaseAccountCreateTx({
@@ -25,44 +38,46 @@ class HCS15BrowserClient extends HCS15BaseClient {
25
38
  maxAutomaticTokenAssociations: options?.maxAutomaticTokenAssociations,
26
39
  accountMemo: options?.accountMemo
27
40
  });
28
- const frozen = await tx.freezeWithSigner(signer);
29
- const res = await frozen.executeWithSigner(signer);
30
- const receipt = await res.getReceiptWithSigner(signer);
31
- const accountId = receipt?.accountId?.toString?.();
41
+ const resp = await tx.execute(this.client);
42
+ const receipt = await resp.getReceipt(this.client);
43
+ if (!receipt.accountId) {
44
+ throw new Error("HCS-15 BASE_ACCOUNT_CREATE_FAILED");
45
+ }
46
+ const accountId = receipt.accountId.toString();
32
47
  const evmAddress = `0x${pub.toEvmAddress()}`;
33
- this.logger.info("Created HCS-15 base account (browser)", {
34
- accountId,
35
- evmAddress
36
- });
48
+ this.logger.info("Created HCS-15 base account", { accountId, evmAddress });
37
49
  return {
38
50
  accountId,
39
51
  privateKey: priv,
40
52
  privateKeyHex: priv.toStringRaw(),
41
53
  publicKey: pub,
42
- evmAddress
54
+ evmAddress,
55
+ receipt
43
56
  };
44
57
  }
45
58
  /**
46
- * Create a petal account reusing a base ECDSA key, via wallet signer.
59
+ * Create a Petal account that reuses the base account ECDSA key (no alias).
47
60
  */
48
61
  async createPetalAccount(params) {
49
- const signer = this.requireSigner();
50
62
  const baseKey = typeof params.basePrivateKey === "string" ? PrivateKey.fromStringECDSA(params.basePrivateKey) : params.basePrivateKey;
63
+ const pub = baseKey.publicKey;
51
64
  const tx = buildHcs15PetalAccountCreateTx({
52
- publicKey: baseKey.publicKey,
65
+ publicKey: pub,
53
66
  initialBalance: new Hbar(params.initialBalance ?? 1),
54
67
  maxAutomaticTokenAssociations: params.maxAutomaticTokenAssociations,
55
68
  accountMemo: params.accountMemo
56
69
  });
57
- const frozen = await tx.freezeWithSigner(signer);
58
- const res = await frozen.executeWithSigner(signer);
59
- const receipt = await res.getReceiptWithSigner(signer);
60
- const accountId = receipt?.accountId?.toString?.();
61
- this.logger.info("Created HCS-15 petal account (browser)", { accountId });
62
- return { accountId };
70
+ const resp = await tx.execute(this.client);
71
+ const receipt = await resp.getReceipt(this.client);
72
+ if (!receipt.accountId) {
73
+ throw new Error("HCS-15 PETAL_ACCOUNT_CREATE_FAILED");
74
+ }
75
+ const accountId = receipt.accountId.toString();
76
+ this.logger.info("Created HCS-15 petal account", { accountId });
77
+ return { accountId, receipt };
63
78
  }
64
79
  }
65
80
  export {
66
- HCS15BrowserClient
81
+ HCS15Client
67
82
  };
68
83
  //# sourceMappingURL=standards-sdk.es88.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"standards-sdk.es88.js","sources":["../../src/hcs-15/browser.ts"],"sourcesContent":["import type { DAppSigner } from '@hashgraph/hedera-wallet-connect';\nimport type {\n PublicKey,\n PrivateKey,\n TransactionResponse,\n} from '@hashgraph/sdk';\nimport { PrivateKey as SDKPrivateKey, Hbar } from '@hashgraph/sdk';\nimport type { BrowserHCS15ClientConfig } from './types';\n\nimport { HCS15BaseClient } from './base-client';\nimport {\n buildHcs15BaseAccountCreateTx,\n buildHcs15PetalAccountCreateTx,\n} from './tx';\n\nexport class HCS15BrowserClient extends HCS15BaseClient {\n private readonly signer?: DAppSigner;\n\n constructor(config: BrowserHCS15ClientConfig) {\n super(config);\n this.signer = config.signer || config.hwc?.dAppConnector?.signers?.[0];\n }\n\n private requireSigner(): DAppSigner {\n if (!this.signer) {\n throw new Error('HCS-15 Browser client requires an active DAppSigner');\n }\n return this.signer as DAppSigner;\n }\n\n /**\n * Create a new base account with a new ECDSA key and EVM alias using a connected wallet signer.\n */\n async createBaseAccount(options?: {\n initialBalance?: number;\n maxAutomaticTokenAssociations?: number;\n accountMemo?: string;\n }): Promise<{\n accountId?: string;\n privateKey: PrivateKey;\n privateKeyHex: string;\n publicKey: PublicKey;\n evmAddress: string;\n }> {\n const signer = this.requireSigner();\n const priv = SDKPrivateKey.generateECDSA();\n const pub = priv.publicKey;\n const tx = buildHcs15BaseAccountCreateTx({\n publicKey: pub,\n initialBalance: new Hbar(options?.initialBalance ?? 10),\n maxAutomaticTokenAssociations: options?.maxAutomaticTokenAssociations,\n accountMemo: options?.accountMemo,\n });\n const frozen = await tx.freezeWithSigner(signer);\n const res: TransactionResponse = await frozen.executeWithSigner(signer);\n const receipt = await res.getReceiptWithSigner(signer as any);\n const accountId = receipt?.accountId?.toString?.();\n const evmAddress = `0x${pub.toEvmAddress()}`;\n this.logger.info('Created HCS-15 base account (browser)', {\n accountId,\n evmAddress,\n });\n return {\n accountId,\n privateKey: priv,\n privateKeyHex: priv.toStringRaw(),\n publicKey: pub,\n evmAddress,\n };\n }\n\n /**\n * Create a petal account reusing a base ECDSA key, via wallet signer.\n */\n async createPetalAccount(params: {\n basePrivateKey: string | PrivateKey;\n initialBalance?: number;\n maxAutomaticTokenAssociations?: number;\n accountMemo?: string;\n }): Promise<{ accountId?: string }> {\n const signer = this.requireSigner();\n const baseKey =\n typeof params.basePrivateKey === 'string'\n ? SDKPrivateKey.fromStringECDSA(params.basePrivateKey)\n : params.basePrivateKey;\n const tx = buildHcs15PetalAccountCreateTx({\n publicKey: baseKey.publicKey,\n initialBalance: new Hbar(params.initialBalance ?? 1),\n maxAutomaticTokenAssociations: params.maxAutomaticTokenAssociations,\n accountMemo: params.accountMemo,\n });\n const frozen = await tx.freezeWithSigner(signer);\n const res: TransactionResponse = await frozen.executeWithSigner(signer);\n const receipt = await res.getReceiptWithSigner(signer as any);\n const accountId = receipt?.accountId?.toString?.();\n this.logger.info('Created HCS-15 petal account (browser)', { accountId });\n return { accountId };\n }\n}\n"],"names":["SDKPrivateKey"],"mappings":";;;AAeO,MAAM,2BAA2B,gBAAgB;AAAA,EAGtD,YAAY,QAAkC;AAC5C,UAAM,MAAM;AACZ,SAAK,SAAS,OAAO,UAAU,OAAO,KAAK,eAAe,UAAU,CAAC;AAAA,EACvE;AAAA,EAEQ,gBAA4B;AAClC,QAAI,CAAC,KAAK,QAAQ;AAChB,YAAM,IAAI,MAAM,qDAAqD;AAAA,IACvE;AACA,WAAO,KAAK;AAAA,EACd;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,kBAAkB,SAUrB;AACD,UAAM,SAAS,KAAK,cAAA;AACpB,UAAM,OAAOA,WAAc,cAAA;AAC3B,UAAM,MAAM,KAAK;AACjB,UAAM,KAAK,8BAA8B;AAAA,MACvC,WAAW;AAAA,MACX,gBAAgB,IAAI,KAAK,SAAS,kBAAkB,EAAE;AAAA,MACtD,+BAA+B,SAAS;AAAA,MACxC,aAAa,SAAS;AAAA,IAAA,CACvB;AACD,UAAM,SAAS,MAAM,GAAG,iBAAiB,MAAM;AAC/C,UAAM,MAA2B,MAAM,OAAO,kBAAkB,MAAM;AACtE,UAAM,UAAU,MAAM,IAAI,qBAAqB,MAAa;AAC5D,UAAM,YAAY,SAAS,WAAW,WAAA;AACtC,UAAM,aAAa,KAAK,IAAI,aAAA,CAAc;AAC1C,SAAK,OAAO,KAAK,yCAAyC;AAAA,MACxD;AAAA,MACA;AAAA,IAAA,CACD;AACD,WAAO;AAAA,MACL;AAAA,MACA,YAAY;AAAA,MACZ,eAAe,KAAK,YAAA;AAAA,MACpB,WAAW;AAAA,MACX;AAAA,IAAA;AAAA,EAEJ;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,mBAAmB,QAKW;AAClC,UAAM,SAAS,KAAK,cAAA;AACpB,UAAM,UACJ,OAAO,OAAO,mBAAmB,WAC7BA,WAAc,gBAAgB,OAAO,cAAc,IACnD,OAAO;AACb,UAAM,KAAK,+BAA+B;AAAA,MACxC,WAAW,QAAQ;AAAA,MACnB,gBAAgB,IAAI,KAAK,OAAO,kBAAkB,CAAC;AAAA,MACnD,+BAA+B,OAAO;AAAA,MACtC,aAAa,OAAO;AAAA,IAAA,CACrB;AACD,UAAM,SAAS,MAAM,GAAG,iBAAiB,MAAM;AAC/C,UAAM,MAA2B,MAAM,OAAO,kBAAkB,MAAM;AACtE,UAAM,UAAU,MAAM,IAAI,qBAAqB,MAAa;AAC5D,UAAM,YAAY,SAAS,WAAW,WAAA;AACtC,SAAK,OAAO,KAAK,0CAA0C,EAAE,WAAW;AACxE,WAAO,EAAE,UAAA;AAAA,EACX;AACF;"}
1
+ {"version":3,"file":"standards-sdk.es88.js","sources":["../../src/hcs-15/sdk.ts"],"sourcesContent":["import {\n AccountId,\n Client,\n Hbar,\n PrivateKey,\n PublicKey,\n TransactionReceipt,\n} from '@hashgraph/sdk';\nimport { NetworkType } from '../utils/types';\nimport {\n createNodeOperatorContext,\n type NodeOperatorContext,\n} from '../common/node-operator-resolver';\nimport {\n buildHcs15BaseAccountCreateTx,\n buildHcs15PetalAccountCreateTx,\n} from './tx';\nimport type { SDKHCS15ClientConfig } from './types';\nimport { HCS15BaseClient } from './base-client';\n\nexport class HCS15Client extends HCS15BaseClient {\n private readonly operatorCtx: NodeOperatorContext;\n private readonly client: Client;\n private readonly operatorId: AccountId;\n\n constructor(config: SDKHCS15ClientConfig) {\n super(config);\n this.operatorId = AccountId.fromString(config.operatorId);\n this.operatorCtx = createNodeOperatorContext({\n network: this.network,\n operatorId: this.operatorId,\n operatorKey: config.operatorKey,\n keyType: config.keyType,\n mirrorNode: this.mirrorNode,\n logger: this.logger,\n client:\n this.network === 'mainnet' ? Client.forMainnet() : Client.forTestnet(),\n });\n this.client = this.operatorCtx.client;\n }\n\n public getKeyType(): 'ed25519' | 'ecdsa' {\n return this.operatorCtx.keyType;\n }\n\n public async close(): Promise<void> {\n try {\n this.client.close();\n } catch {}\n }\n\n /**\n * Create a new base account with a newly generated ECDSA key and EVM alias.\n */\n async createBaseAccount(options?: {\n initialBalance?: number;\n maxAutomaticTokenAssociations?: number;\n accountMemo?: string;\n }): Promise<{\n accountId: string;\n privateKey: PrivateKey;\n privateKeyHex: string;\n publicKey: PublicKey;\n evmAddress: string;\n receipt: TransactionReceipt;\n }> {\n const priv = PrivateKey.generateECDSA();\n const pub = priv.publicKey;\n const tx = buildHcs15BaseAccountCreateTx({\n publicKey: pub,\n initialBalance: new Hbar(options?.initialBalance ?? 10),\n maxAutomaticTokenAssociations: options?.maxAutomaticTokenAssociations,\n accountMemo: options?.accountMemo,\n });\n const resp = await tx.execute(this.client);\n const receipt = await resp.getReceipt(this.client);\n if (!receipt.accountId) {\n throw new Error('HCS-15 BASE_ACCOUNT_CREATE_FAILED');\n }\n const accountId = receipt.accountId.toString();\n const evmAddress = `0x${pub.toEvmAddress()}`;\n this.logger.info('Created HCS-15 base account', { accountId, evmAddress });\n return {\n accountId,\n privateKey: priv,\n privateKeyHex: priv.toStringRaw(),\n publicKey: pub,\n evmAddress,\n receipt,\n };\n }\n\n /**\n * Create a Petal account that reuses the base account ECDSA key (no alias).\n */\n async createPetalAccount(params: {\n basePrivateKey: string | PrivateKey;\n initialBalance?: number;\n maxAutomaticTokenAssociations?: number;\n accountMemo?: string;\n }): Promise<{ accountId: string; receipt: TransactionReceipt }> {\n const baseKey =\n typeof params.basePrivateKey === 'string'\n ? PrivateKey.fromStringECDSA(params.basePrivateKey)\n : params.basePrivateKey;\n const pub = baseKey.publicKey;\n const tx = buildHcs15PetalAccountCreateTx({\n publicKey: pub,\n initialBalance: new Hbar(params.initialBalance ?? 1),\n maxAutomaticTokenAssociations: params.maxAutomaticTokenAssociations,\n accountMemo: params.accountMemo,\n });\n const resp = await tx.execute(this.client);\n const receipt = await resp.getReceipt(this.client);\n if (!receipt.accountId) {\n throw new Error('HCS-15 PETAL_ACCOUNT_CREATE_FAILED');\n }\n const accountId = receipt.accountId.toString();\n this.logger.info('Created HCS-15 petal account', { accountId });\n return { accountId, receipt };\n }\n}\n"],"names":[],"mappings":";;;;AAoBO,MAAM,oBAAoB,gBAAgB;AAAA,EAK/C,YAAY,QAA8B;AACxC,UAAM,MAAM;AACZ,SAAK,aAAa,UAAU,WAAW,OAAO,UAAU;AACxD,SAAK,cAAc,0BAA0B;AAAA,MAC3C,SAAS,KAAK;AAAA,MACd,YAAY,KAAK;AAAA,MACjB,aAAa,OAAO;AAAA,MACpB,SAAS,OAAO;AAAA,MAChB,YAAY,KAAK;AAAA,MACjB,QAAQ,KAAK;AAAA,MACb,QACE,KAAK,YAAY,YAAY,OAAO,WAAA,IAAe,OAAO,WAAA;AAAA,IAAW,CACxE;AACD,SAAK,SAAS,KAAK,YAAY;AAAA,EACjC;AAAA,EAEO,aAAkC;AACvC,WAAO,KAAK,YAAY;AAAA,EAC1B;AAAA,EAEA,MAAa,QAAuB;AAClC,QAAI;AACF,WAAK,OAAO,MAAA;AAAA,IACd,QAAQ;AAAA,IAAC;AAAA,EACX;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,kBAAkB,SAWrB;AACD,UAAM,OAAO,WAAW,cAAA;AACxB,UAAM,MAAM,KAAK;AACjB,UAAM,KAAK,8BAA8B;AAAA,MACvC,WAAW;AAAA,MACX,gBAAgB,IAAI,KAAK,SAAS,kBAAkB,EAAE;AAAA,MACtD,+BAA+B,SAAS;AAAA,MACxC,aAAa,SAAS;AAAA,IAAA,CACvB;AACD,UAAM,OAAO,MAAM,GAAG,QAAQ,KAAK,MAAM;AACzC,UAAM,UAAU,MAAM,KAAK,WAAW,KAAK,MAAM;AACjD,QAAI,CAAC,QAAQ,WAAW;AACtB,YAAM,IAAI,MAAM,mCAAmC;AAAA,IACrD;AACA,UAAM,YAAY,QAAQ,UAAU,SAAA;AACpC,UAAM,aAAa,KAAK,IAAI,aAAA,CAAc;AAC1C,SAAK,OAAO,KAAK,+BAA+B,EAAE,WAAW,YAAY;AACzE,WAAO;AAAA,MACL;AAAA,MACA,YAAY;AAAA,MACZ,eAAe,KAAK,YAAA;AAAA,MACpB,WAAW;AAAA,MACX;AAAA,MACA;AAAA,IAAA;AAAA,EAEJ;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,mBAAmB,QAKuC;AAC9D,UAAM,UACJ,OAAO,OAAO,mBAAmB,WAC7B,WAAW,gBAAgB,OAAO,cAAc,IAChD,OAAO;AACb,UAAM,MAAM,QAAQ;AACpB,UAAM,KAAK,+BAA+B;AAAA,MACxC,WAAW;AAAA,MACX,gBAAgB,IAAI,KAAK,OAAO,kBAAkB,CAAC;AAAA,MACnD,+BAA+B,OAAO;AAAA,MACtC,aAAa,OAAO;AAAA,IAAA,CACrB;AACD,UAAM,OAAO,MAAM,GAAG,QAAQ,KAAK,MAAM;AACzC,UAAM,UAAU,MAAM,KAAK,WAAW,KAAK,MAAM;AACjD,QAAI,CAAC,QAAQ,WAAW;AACtB,YAAM,IAAI,MAAM,oCAAoC;AAAA,IACtD;AACA,UAAM,YAAY,QAAQ,UAAU,SAAA;AACpC,SAAK,OAAO,KAAK,gCAAgC,EAAE,WAAW;AAC9D,WAAO,EAAE,WAAW,QAAA;AAAA,EACtB;AACF;"}
@@ -1,33 +1,68 @@
1
- import { HederaMirrorNode } from "./standards-sdk.es126.js";
2
- import { Logger } from "./standards-sdk.es105.js";
3
- class HCS15BaseClient {
1
+ import { PrivateKey, Hbar } from "@hashgraph/sdk";
2
+ import { HCS15BaseClient } from "./standards-sdk.es90.js";
3
+ import { buildHcs15BaseAccountCreateTx, buildHcs15PetalAccountCreateTx } from "./standards-sdk.es87.js";
4
+ class HCS15BrowserClient extends HCS15BaseClient {
4
5
  constructor(config) {
5
- this.network = config.network;
6
- this.logger = config.logger || new Logger({
7
- module: "HCS-15",
8
- level: config.logLevel || "info"
6
+ super(config);
7
+ this.signer = config.signer || config.hwc?.dAppConnector?.signers?.[0];
8
+ }
9
+ requireSigner() {
10
+ if (!this.signer) {
11
+ throw new Error("HCS-15 Browser client requires an active DAppSigner");
12
+ }
13
+ return this.signer;
14
+ }
15
+ /**
16
+ * Create a new base account with a new ECDSA key and EVM alias using a connected wallet signer.
17
+ */
18
+ async createBaseAccount(options) {
19
+ const signer = this.requireSigner();
20
+ const priv = PrivateKey.generateECDSA();
21
+ const pub = priv.publicKey;
22
+ const tx = buildHcs15BaseAccountCreateTx({
23
+ publicKey: pub,
24
+ initialBalance: new Hbar(options?.initialBalance ?? 10),
25
+ maxAutomaticTokenAssociations: options?.maxAutomaticTokenAssociations,
26
+ accountMemo: options?.accountMemo
9
27
  });
10
- this.mirrorNode = new HederaMirrorNode(this.network, this.logger, {
11
- customUrl: config.mirrorNodeUrl
28
+ const frozen = await tx.freezeWithSigner(signer);
29
+ const res = await frozen.executeWithSigner(signer);
30
+ const receipt = await res.getReceiptWithSigner(signer);
31
+ const accountId = receipt?.accountId?.toString?.();
32
+ const evmAddress = `0x${pub.toEvmAddress()}`;
33
+ this.logger.info("Created HCS-15 base account (browser)", {
34
+ accountId,
35
+ evmAddress
12
36
  });
37
+ return {
38
+ accountId,
39
+ privateKey: priv,
40
+ privateKeyHex: priv.toStringRaw(),
41
+ publicKey: pub,
42
+ evmAddress
43
+ };
13
44
  }
14
45
  /**
15
- * Verify that a petal account shares the same public key as the base account.
46
+ * Create a petal account reusing a base ECDSA key, via wallet signer.
16
47
  */
17
- async verifyPetalAccount(petalAccountId, baseAccountId) {
18
- try {
19
- const petalInfo = await this.mirrorNode.requestAccount(petalAccountId);
20
- const baseInfo = await this.mirrorNode.requestAccount(baseAccountId);
21
- const petalKey = petalInfo?.key?.key || "";
22
- const baseKey = baseInfo?.key?.key || "";
23
- return petalKey !== "" && petalKey === baseKey;
24
- } catch (e) {
25
- this.logger.warn("verifyPetalAccount failed", { error: String(e) });
26
- return false;
27
- }
48
+ async createPetalAccount(params) {
49
+ const signer = this.requireSigner();
50
+ const baseKey = typeof params.basePrivateKey === "string" ? PrivateKey.fromStringECDSA(params.basePrivateKey) : params.basePrivateKey;
51
+ const tx = buildHcs15PetalAccountCreateTx({
52
+ publicKey: baseKey.publicKey,
53
+ initialBalance: new Hbar(params.initialBalance ?? 1),
54
+ maxAutomaticTokenAssociations: params.maxAutomaticTokenAssociations,
55
+ accountMemo: params.accountMemo
56
+ });
57
+ const frozen = await tx.freezeWithSigner(signer);
58
+ const res = await frozen.executeWithSigner(signer);
59
+ const receipt = await res.getReceiptWithSigner(signer);
60
+ const accountId = receipt?.accountId?.toString?.();
61
+ this.logger.info("Created HCS-15 petal account (browser)", { accountId });
62
+ return { accountId };
28
63
  }
29
64
  }
30
65
  export {
31
- HCS15BaseClient
66
+ HCS15BrowserClient
32
67
  };
33
68
  //# sourceMappingURL=standards-sdk.es89.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"standards-sdk.es89.js","sources":["../../src/hcs-15/base-client.ts"],"sourcesContent":["import { HederaMirrorNode } from '../services/mirror-node';\nimport { Logger, ILogger } from '../utils/logger';\nimport { NetworkType } from '../utils/types';\n\n/**\n * Base client for HCS‑15 shared functionality across Node and Browser clients.\n */\nexport class HCS15BaseClient {\n protected readonly network: NetworkType;\n protected readonly mirrorNode: HederaMirrorNode;\n protected readonly logger: ILogger;\n\n constructor(config: {\n network: NetworkType;\n mirrorNodeUrl?: string;\n logger?: Logger;\n logLevel?: Parameters<Logger['setLogLevel']>[0];\n }) {\n this.network = config.network;\n this.logger =\n config.logger ||\n new Logger({\n module: 'HCS-15',\n level: (config.logLevel as any) || 'info',\n });\n this.mirrorNode = new HederaMirrorNode(this.network, this.logger, {\n customUrl: config.mirrorNodeUrl,\n });\n }\n\n /**\n * Verify that a petal account shares the same public key as the base account.\n */\n public async verifyPetalAccount(\n petalAccountId: string,\n baseAccountId: string,\n ): Promise<boolean> {\n try {\n const petalInfo = await this.mirrorNode.requestAccount(petalAccountId);\n const baseInfo = await this.mirrorNode.requestAccount(baseAccountId);\n const petalKey = petalInfo?.key?.key || '';\n const baseKey = baseInfo?.key?.key || '';\n return petalKey !== '' && petalKey === baseKey;\n } catch (e) {\n this.logger.warn('verifyPetalAccount failed', { error: String(e) });\n return false;\n }\n }\n}\n"],"names":[],"mappings":";;AAOO,MAAM,gBAAgB;AAAA,EAK3B,YAAY,QAKT;AACD,SAAK,UAAU,OAAO;AACtB,SAAK,SACH,OAAO,UACP,IAAI,OAAO;AAAA,MACT,QAAQ;AAAA,MACR,OAAQ,OAAO,YAAoB;AAAA,IAAA,CACpC;AACH,SAAK,aAAa,IAAI,iBAAiB,KAAK,SAAS,KAAK,QAAQ;AAAA,MAChE,WAAW,OAAO;AAAA,IAAA,CACnB;AAAA,EACH;AAAA;AAAA;AAAA;AAAA,EAKA,MAAa,mBACX,gBACA,eACkB;AAClB,QAAI;AACF,YAAM,YAAY,MAAM,KAAK,WAAW,eAAe,cAAc;AACrE,YAAM,WAAW,MAAM,KAAK,WAAW,eAAe,aAAa;AACnE,YAAM,WAAW,WAAW,KAAK,OAAO;AACxC,YAAM,UAAU,UAAU,KAAK,OAAO;AACtC,aAAO,aAAa,MAAM,aAAa;AAAA,IACzC,SAAS,GAAG;AACV,WAAK,OAAO,KAAK,6BAA6B,EAAE,OAAO,OAAO,CAAC,GAAG;AAClE,aAAO;AAAA,IACT;AAAA,EACF;AACF;"}
1
+ {"version":3,"file":"standards-sdk.es89.js","sources":["../../src/hcs-15/browser.ts"],"sourcesContent":["import type { DAppSigner } from '@hashgraph/hedera-wallet-connect';\nimport type {\n PublicKey,\n PrivateKey,\n TransactionResponse,\n} from '@hashgraph/sdk';\nimport { PrivateKey as SDKPrivateKey, Hbar } from '@hashgraph/sdk';\nimport type { BrowserHCS15ClientConfig } from './types';\n\nimport { HCS15BaseClient } from './base-client';\nimport {\n buildHcs15BaseAccountCreateTx,\n buildHcs15PetalAccountCreateTx,\n} from './tx';\n\nexport class HCS15BrowserClient extends HCS15BaseClient {\n private readonly signer?: DAppSigner;\n\n constructor(config: BrowserHCS15ClientConfig) {\n super(config);\n this.signer = config.signer || config.hwc?.dAppConnector?.signers?.[0];\n }\n\n private requireSigner(): DAppSigner {\n if (!this.signer) {\n throw new Error('HCS-15 Browser client requires an active DAppSigner');\n }\n return this.signer as DAppSigner;\n }\n\n /**\n * Create a new base account with a new ECDSA key and EVM alias using a connected wallet signer.\n */\n async createBaseAccount(options?: {\n initialBalance?: number;\n maxAutomaticTokenAssociations?: number;\n accountMemo?: string;\n }): Promise<{\n accountId?: string;\n privateKey: PrivateKey;\n privateKeyHex: string;\n publicKey: PublicKey;\n evmAddress: string;\n }> {\n const signer = this.requireSigner();\n const priv = SDKPrivateKey.generateECDSA();\n const pub = priv.publicKey;\n const tx = buildHcs15BaseAccountCreateTx({\n publicKey: pub,\n initialBalance: new Hbar(options?.initialBalance ?? 10),\n maxAutomaticTokenAssociations: options?.maxAutomaticTokenAssociations,\n accountMemo: options?.accountMemo,\n });\n const frozen = await tx.freezeWithSigner(signer);\n const res: TransactionResponse = await frozen.executeWithSigner(signer);\n const receipt = await res.getReceiptWithSigner(signer as any);\n const accountId = receipt?.accountId?.toString?.();\n const evmAddress = `0x${pub.toEvmAddress()}`;\n this.logger.info('Created HCS-15 base account (browser)', {\n accountId,\n evmAddress,\n });\n return {\n accountId,\n privateKey: priv,\n privateKeyHex: priv.toStringRaw(),\n publicKey: pub,\n evmAddress,\n };\n }\n\n /**\n * Create a petal account reusing a base ECDSA key, via wallet signer.\n */\n async createPetalAccount(params: {\n basePrivateKey: string | PrivateKey;\n initialBalance?: number;\n maxAutomaticTokenAssociations?: number;\n accountMemo?: string;\n }): Promise<{ accountId?: string }> {\n const signer = this.requireSigner();\n const baseKey =\n typeof params.basePrivateKey === 'string'\n ? SDKPrivateKey.fromStringECDSA(params.basePrivateKey)\n : params.basePrivateKey;\n const tx = buildHcs15PetalAccountCreateTx({\n publicKey: baseKey.publicKey,\n initialBalance: new Hbar(params.initialBalance ?? 1),\n maxAutomaticTokenAssociations: params.maxAutomaticTokenAssociations,\n accountMemo: params.accountMemo,\n });\n const frozen = await tx.freezeWithSigner(signer);\n const res: TransactionResponse = await frozen.executeWithSigner(signer);\n const receipt = await res.getReceiptWithSigner(signer as any);\n const accountId = receipt?.accountId?.toString?.();\n this.logger.info('Created HCS-15 petal account (browser)', { accountId });\n return { accountId };\n }\n}\n"],"names":["SDKPrivateKey"],"mappings":";;;AAeO,MAAM,2BAA2B,gBAAgB;AAAA,EAGtD,YAAY,QAAkC;AAC5C,UAAM,MAAM;AACZ,SAAK,SAAS,OAAO,UAAU,OAAO,KAAK,eAAe,UAAU,CAAC;AAAA,EACvE;AAAA,EAEQ,gBAA4B;AAClC,QAAI,CAAC,KAAK,QAAQ;AAChB,YAAM,IAAI,MAAM,qDAAqD;AAAA,IACvE;AACA,WAAO,KAAK;AAAA,EACd;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,kBAAkB,SAUrB;AACD,UAAM,SAAS,KAAK,cAAA;AACpB,UAAM,OAAOA,WAAc,cAAA;AAC3B,UAAM,MAAM,KAAK;AACjB,UAAM,KAAK,8BAA8B;AAAA,MACvC,WAAW;AAAA,MACX,gBAAgB,IAAI,KAAK,SAAS,kBAAkB,EAAE;AAAA,MACtD,+BAA+B,SAAS;AAAA,MACxC,aAAa,SAAS;AAAA,IAAA,CACvB;AACD,UAAM,SAAS,MAAM,GAAG,iBAAiB,MAAM;AAC/C,UAAM,MAA2B,MAAM,OAAO,kBAAkB,MAAM;AACtE,UAAM,UAAU,MAAM,IAAI,qBAAqB,MAAa;AAC5D,UAAM,YAAY,SAAS,WAAW,WAAA;AACtC,UAAM,aAAa,KAAK,IAAI,aAAA,CAAc;AAC1C,SAAK,OAAO,KAAK,yCAAyC;AAAA,MACxD;AAAA,MACA;AAAA,IAAA,CACD;AACD,WAAO;AAAA,MACL;AAAA,MACA,YAAY;AAAA,MACZ,eAAe,KAAK,YAAA;AAAA,MACpB,WAAW;AAAA,MACX;AAAA,IAAA;AAAA,EAEJ;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,mBAAmB,QAKW;AAClC,UAAM,SAAS,KAAK,cAAA;AACpB,UAAM,UACJ,OAAO,OAAO,mBAAmB,WAC7BA,WAAc,gBAAgB,OAAO,cAAc,IACnD,OAAO;AACb,UAAM,KAAK,+BAA+B;AAAA,MACxC,WAAW,QAAQ;AAAA,MACnB,gBAAgB,IAAI,KAAK,OAAO,kBAAkB,CAAC;AAAA,MACnD,+BAA+B,OAAO;AAAA,MACtC,aAAa,OAAO;AAAA,IAAA,CACrB;AACD,UAAM,SAAS,MAAM,GAAG,iBAAiB,MAAM;AAC/C,UAAM,MAA2B,MAAM,OAAO,kBAAkB,MAAM;AACtE,UAAM,UAAU,MAAM,IAAI,qBAAqB,MAAa;AAC5D,UAAM,YAAY,SAAS,WAAW,WAAA;AACtC,SAAK,OAAO,KAAK,0CAA0C,EAAE,WAAW;AACxE,WAAO,EAAE,UAAA;AAAA,EACX;AACF;"}
@@ -1,28 +1,33 @@
1
- var FloraTopicType = /* @__PURE__ */ ((FloraTopicType2) => {
2
- FloraTopicType2[FloraTopicType2["COMMUNICATION"] = 0] = "COMMUNICATION";
3
- FloraTopicType2[FloraTopicType2["TRANSACTION"] = 1] = "TRANSACTION";
4
- FloraTopicType2[FloraTopicType2["STATE"] = 2] = "STATE";
5
- return FloraTopicType2;
6
- })(FloraTopicType || {});
7
- var FloraOperation = /* @__PURE__ */ ((FloraOperation2) => {
8
- FloraOperation2["FLORA_CREATED"] = "flora_created";
9
- FloraOperation2["TRANSACTION"] = "transaction";
10
- FloraOperation2["STATE_UPDATE"] = "state_update";
11
- FloraOperation2["FLORA_JOIN_REQUEST"] = "flora_join_request";
12
- FloraOperation2["FLORA_JOIN_VOTE"] = "flora_join_vote";
13
- FloraOperation2["FLORA_JOIN_ACCEPTED"] = "flora_join_accepted";
14
- return FloraOperation2;
15
- })(FloraOperation || {});
16
- class FloraError extends Error {
17
- constructor(message, code) {
18
- super(message);
19
- this.code = code;
20
- this.name = "FloraError";
1
+ import { HederaMirrorNode } from "./standards-sdk.es127.js";
2
+ import { Logger } from "./standards-sdk.es106.js";
3
+ class HCS15BaseClient {
4
+ constructor(config) {
5
+ this.network = config.network;
6
+ this.logger = config.logger || new Logger({
7
+ module: "HCS-15",
8
+ level: config.logLevel || "info"
9
+ });
10
+ this.mirrorNode = new HederaMirrorNode(this.network, this.logger, {
11
+ customUrl: config.mirrorNodeUrl
12
+ });
13
+ }
14
+ /**
15
+ * Verify that a petal account shares the same public key as the base account.
16
+ */
17
+ async verifyPetalAccount(petalAccountId, baseAccountId) {
18
+ try {
19
+ const petalInfo = await this.mirrorNode.requestAccount(petalAccountId);
20
+ const baseInfo = await this.mirrorNode.requestAccount(baseAccountId);
21
+ const petalKey = petalInfo?.key?.key || "";
22
+ const baseKey = baseInfo?.key?.key || "";
23
+ return petalKey !== "" && petalKey === baseKey;
24
+ } catch (e) {
25
+ this.logger.warn("verifyPetalAccount failed", { error: String(e) });
26
+ return false;
27
+ }
21
28
  }
22
29
  }
23
30
  export {
24
- FloraError,
25
- FloraOperation,
26
- FloraTopicType
31
+ HCS15BaseClient
27
32
  };
28
33
  //# sourceMappingURL=standards-sdk.es90.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"standards-sdk.es90.js","sources":["../../src/hcs-16/types.ts"],"sourcesContent":["import {\n AccountId,\n TopicId,\n PublicKey,\n Key,\n PrivateKey,\n KeyList,\n TokenId,\n} from '@hashgraph/sdk';\nimport { BaseProfile, SocialLink } from '../hcs-11/types';\n\n/**\n * HCS-16 Topic type enums\n */\nexport enum FloraTopicType {\n COMMUNICATION = 0,\n TRANSACTION = 1,\n STATE = 2,\n}\n\n/**\n * HCS-16 Flora member\n */\nexport interface FloraMember {\n accountId: string;\n publicKey?: PublicKey | string;\n privateKey?: string;\n weight?: number;\n}\n\n/**\n * HCS-16 Flora topics\n */\nexport interface FloraTopics {\n communication: TopicId;\n transaction: TopicId;\n state: TopicId;\n custom?: Array<{\n name: string;\n topicId: string;\n description?: string;\n }>;\n}\n\n/**\n * HCS-16 Flora configuration\n */\nexport interface FloraConfig {\n displayName: string;\n bio?: string;\n members: FloraMember[];\n threshold: number;\n initialBalance?: number;\n maxAutomaticTokenAssociations?: number;\n policies?: {\n membershipChange?: string;\n scheduleTxApproval?: string;\n };\n customFees?: {\n amount: number;\n feeCollectorAccountId: string;\n }[];\n metadata?: Record<string, any>;\n}\n\n/**\n * HCS-16 Flora creation result\n */\nexport interface FloraCreationResult {\n floraAccountId: AccountId;\n topics: FloraTopics;\n keyList: Key;\n transactionId: string;\n}\n\n/**\n * HCS-16 Message protocol operations\n */\nexport enum FloraOperation {\n FLORA_CREATED = 'flora_created',\n TRANSACTION = 'transaction',\n STATE_UPDATE = 'state_update',\n FLORA_JOIN_REQUEST = 'flora_join_request',\n FLORA_JOIN_VOTE = 'flora_join_vote',\n FLORA_JOIN_ACCEPTED = 'flora_join_accepted',\n}\n\n/**\n * HCS-16 Message envelope\n */\nexport interface FloraMessage {\n p: 'hcs-16';\n op: FloraOperation;\n operator_id: string;\n m?: string;\n [key: string]: unknown;\n}\n\n/**\n * HCS-16 Flora profile (extends HCS-11)\n */\nexport interface FloraProfile extends BaseProfile {\n version: string;\n type: 3;\n display_name: string;\n members: FloraMember[];\n threshold: number;\n topics: {\n communication: string;\n transaction: string;\n state: string;\n custom?: Array<{\n name: string;\n topicId: string;\n description?: string;\n }>;\n };\n alias?: string;\n bio?: string;\n socials?: SocialLink[];\n profileImage?: string;\n properties?: Record<string, unknown>;\n inboundTopicId: string;\n outboundTopicId: string;\n policies?: Record<string, string>;\n metadata?: Record<string, any>;\n}\n\n/**\n * HCS-16 errors\n */\nexport class FloraError extends Error {\n constructor(\n message: string,\n public readonly code: string,\n ) {\n super(message);\n this.name = 'FloraError';\n }\n}\n\n/**\n * Flora state update message\n */\nexport interface FloraStateUpdate {\n p: 'hcs-16';\n op: 'state_update';\n operator_id: string;\n hash: string;\n epoch?: number;\n members?: string[];\n timestamp: string;\n}\n\n/**\n * HIP-991 Custom fee configuration for transaction topics\n */\nexport interface TransactionTopicFee {\n amount: number;\n feeCollectorAccountId: string;\n denominatingTokenId?: string;\n}\n\n/**\n * Configuration for creating HCS-16 transaction topics with HIP-991 support\n */\nexport interface TransactionTopicConfig {\n memo: string;\n adminKey?: PrivateKey | KeyList;\n submitKey?: PrivateKey | KeyList;\n feeScheduleKey?: PrivateKey | KeyList;\n customFees?: TransactionTopicFee[];\n feeExemptKeys?: Key[];\n}\n\n/** credit_purchase not part of HCS-16 specification; no message type defined. */\n"],"names":["FloraTopicType","FloraOperation"],"mappings":"AAcO,IAAK,mCAAAA,oBAAL;AACLA,kBAAAA,gBAAA,mBAAgB,CAAA,IAAhB;AACAA,kBAAAA,gBAAA,iBAAc,CAAA,IAAd;AACAA,kBAAAA,gBAAA,WAAQ,CAAA,IAAR;AAHU,SAAAA;AAAA,GAAA,kBAAA,CAAA,CAAA;AAgEL,IAAK,mCAAAC,oBAAL;AACLA,kBAAA,eAAA,IAAgB;AAChBA,kBAAA,aAAA,IAAc;AACdA,kBAAA,cAAA,IAAe;AACfA,kBAAA,oBAAA,IAAqB;AACrBA,kBAAA,iBAAA,IAAkB;AAClBA,kBAAA,qBAAA,IAAsB;AANZ,SAAAA;AAAA,GAAA,kBAAA,CAAA,CAAA;AAqDL,MAAM,mBAAmB,MAAM;AAAA,EACpC,YACE,SACgB,MAChB;AACA,UAAM,OAAO;AAFG,SAAA,OAAA;AAGhB,SAAK,OAAO;AAAA,EACd;AACF;"}
1
+ {"version":3,"file":"standards-sdk.es90.js","sources":["../../src/hcs-15/base-client.ts"],"sourcesContent":["import { HederaMirrorNode } from '../services/mirror-node';\nimport { Logger, ILogger } from '../utils/logger';\nimport { NetworkType } from '../utils/types';\n\n/**\n * Base client for HCS‑15 shared functionality across Node and Browser clients.\n */\nexport class HCS15BaseClient {\n protected readonly network: NetworkType;\n protected readonly mirrorNode: HederaMirrorNode;\n protected readonly logger: ILogger;\n\n constructor(config: {\n network: NetworkType;\n mirrorNodeUrl?: string;\n logger?: Logger;\n logLevel?: Parameters<Logger['setLogLevel']>[0];\n }) {\n this.network = config.network;\n this.logger =\n config.logger ||\n new Logger({\n module: 'HCS-15',\n level: (config.logLevel as any) || 'info',\n });\n this.mirrorNode = new HederaMirrorNode(this.network, this.logger, {\n customUrl: config.mirrorNodeUrl,\n });\n }\n\n /**\n * Verify that a petal account shares the same public key as the base account.\n */\n public async verifyPetalAccount(\n petalAccountId: string,\n baseAccountId: string,\n ): Promise<boolean> {\n try {\n const petalInfo = await this.mirrorNode.requestAccount(petalAccountId);\n const baseInfo = await this.mirrorNode.requestAccount(baseAccountId);\n const petalKey = petalInfo?.key?.key || '';\n const baseKey = baseInfo?.key?.key || '';\n return petalKey !== '' && petalKey === baseKey;\n } catch (e) {\n this.logger.warn('verifyPetalAccount failed', { error: String(e) });\n return false;\n }\n }\n}\n"],"names":[],"mappings":";;AAOO,MAAM,gBAAgB;AAAA,EAK3B,YAAY,QAKT;AACD,SAAK,UAAU,OAAO;AACtB,SAAK,SACH,OAAO,UACP,IAAI,OAAO;AAAA,MACT,QAAQ;AAAA,MACR,OAAQ,OAAO,YAAoB;AAAA,IAAA,CACpC;AACH,SAAK,aAAa,IAAI,iBAAiB,KAAK,SAAS,KAAK,QAAQ;AAAA,MAChE,WAAW,OAAO;AAAA,IAAA,CACnB;AAAA,EACH;AAAA;AAAA;AAAA;AAAA,EAKA,MAAa,mBACX,gBACA,eACkB;AAClB,QAAI;AACF,YAAM,YAAY,MAAM,KAAK,WAAW,eAAe,cAAc;AACrE,YAAM,WAAW,MAAM,KAAK,WAAW,eAAe,aAAa;AACnE,YAAM,WAAW,WAAW,KAAK,OAAO;AACxC,YAAM,UAAU,UAAU,KAAK,OAAO;AACtC,aAAO,aAAa,MAAM,aAAa;AAAA,IACzC,SAAS,GAAG;AACV,WAAK,OAAO,KAAK,6BAA6B,EAAE,OAAO,OAAO,CAAC,GAAG;AAClE,aAAO;AAAA,IACT;AAAA,EACF;AACF;"}