@hashgraphonline/standards-agent-kit 0.2.136 → 0.2.138

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 (211) hide show
  1. package/README.md +3 -4
  2. package/dist/cjs/builders/hcs10/hcs10-builder.d.ts +1 -0
  3. package/dist/cjs/builders/hcs2/hcs2-builder.d.ts +8 -7
  4. package/dist/cjs/builders/hcs6/hcs6-builder.d.ts +5 -4
  5. package/dist/cjs/builders/inscriber/inscriber-builder.d.ts +32 -1
  6. package/dist/cjs/index.d.ts +4 -0
  7. package/dist/cjs/signing/bytes-registry.d.ts +17 -0
  8. package/dist/cjs/signing/signer-provider.d.ts +45 -0
  9. package/dist/cjs/standards-agent-kit.cjs +1 -1
  10. package/dist/cjs/standards-agent-kit.cjs.map +1 -1
  11. package/dist/cjs/tools/hcs10/InitiateConnectionTool.d.ts +4 -4
  12. package/dist/cjs/tools/hcs2/CreateRegistryTool.d.ts +2 -2
  13. package/dist/cjs/tools/hcs2/DeleteEntryTool.d.ts +2 -2
  14. package/dist/cjs/tools/hcs2/UpdateEntryTool.d.ts +2 -2
  15. package/dist/cjs/tools/hcs6/RegisterDynamicHashinalTool.d.ts +10 -10
  16. package/dist/cjs/tools/hcs6/UpdateDynamicHashinalTool.d.ts +8 -8
  17. package/dist/cjs/tools/inscriber/InscribeFromBufferTool.d.ts +5 -4
  18. package/dist/cjs/tools/inscriber/InscribeFromFileTool.d.ts +2 -2
  19. package/dist/cjs/tools/inscriber/InscribeFromUrlTool.d.ts +4 -4
  20. package/dist/cjs/tools/inscriber/InscribeHashinalTool.d.ts +3 -3
  21. package/dist/cjs/types/inscription-response.d.ts +8 -0
  22. package/dist/cjs/types/tx-results.d.ts +15 -0
  23. package/dist/cjs/utils/CodedError.d.ts +4 -0
  24. package/dist/cjs/utils/inscription-utils.d.ts +21 -0
  25. package/dist/cjs/validation/hip412-schemas.d.ts +2 -2
  26. package/dist/es/builders/hcs10/hcs10-builder.d.ts +1 -0
  27. package/dist/es/builders/hcs2/hcs2-builder.d.ts +8 -7
  28. package/dist/es/builders/hcs6/hcs6-builder.d.ts +5 -4
  29. package/dist/es/builders/inscriber/inscriber-builder.d.ts +32 -1
  30. package/dist/es/index.d.ts +4 -0
  31. package/dist/es/signing/bytes-registry.d.ts +17 -0
  32. package/dist/es/signing/signer-provider.d.ts +45 -0
  33. package/dist/es/standards-agent-kit.es.js +46 -42
  34. package/dist/es/standards-agent-kit.es.js.map +1 -1
  35. package/dist/es/standards-agent-kit.es10.js +24 -83
  36. package/dist/es/standards-agent-kit.es10.js.map +1 -1
  37. package/dist/es/standards-agent-kit.es11.js +224 -20
  38. package/dist/es/standards-agent-kit.es11.js.map +1 -1
  39. package/dist/es/standards-agent-kit.es12.js +78 -27
  40. package/dist/es/standards-agent-kit.es12.js.map +1 -1
  41. package/dist/es/standards-agent-kit.es13.js +26 -36
  42. package/dist/es/standards-agent-kit.es13.js.map +1 -1
  43. package/dist/es/standards-agent-kit.es14.js +17 -39
  44. package/dist/es/standards-agent-kit.es14.js.map +1 -1
  45. package/dist/es/standards-agent-kit.es15.js +36 -58
  46. package/dist/es/standards-agent-kit.es15.js.map +1 -1
  47. package/dist/es/standards-agent-kit.es16.js +45 -18
  48. package/dist/es/standards-agent-kit.es16.js.map +1 -1
  49. package/dist/es/standards-agent-kit.es17.js +53 -16
  50. package/dist/es/standards-agent-kit.es17.js.map +1 -1
  51. package/dist/es/standards-agent-kit.es18.js +18 -28
  52. package/dist/es/standards-agent-kit.es18.js.map +1 -1
  53. package/dist/es/standards-agent-kit.es19.js +26 -12
  54. package/dist/es/standards-agent-kit.es19.js.map +1 -1
  55. package/dist/es/standards-agent-kit.es20.js +38 -136
  56. package/dist/es/standards-agent-kit.es20.js.map +1 -1
  57. package/dist/es/standards-agent-kit.es21.js +13 -24
  58. package/dist/es/standards-agent-kit.es21.js.map +1 -1
  59. package/dist/es/standards-agent-kit.es22.js +136 -39
  60. package/dist/es/standards-agent-kit.es22.js.map +1 -1
  61. package/dist/es/standards-agent-kit.es23.js +25 -41
  62. package/dist/es/standards-agent-kit.es23.js.map +1 -1
  63. package/dist/es/standards-agent-kit.es24.js +49 -31
  64. package/dist/es/standards-agent-kit.es24.js.map +1 -1
  65. package/dist/es/standards-agent-kit.es25.js +34 -18
  66. package/dist/es/standards-agent-kit.es25.js.map +1 -1
  67. package/dist/es/standards-agent-kit.es26.js +35 -19
  68. package/dist/es/standards-agent-kit.es26.js.map +1 -1
  69. package/dist/es/standards-agent-kit.es27.js +45 -32
  70. package/dist/es/standards-agent-kit.es27.js.map +1 -1
  71. package/dist/es/standards-agent-kit.es28.js +54 -25
  72. package/dist/es/standards-agent-kit.es28.js.map +1 -1
  73. package/dist/es/standards-agent-kit.es29.js +35 -23
  74. package/dist/es/standards-agent-kit.es29.js.map +1 -1
  75. package/dist/es/standards-agent-kit.es3.js +41 -1545
  76. package/dist/es/standards-agent-kit.es3.js.map +1 -1
  77. package/dist/es/standards-agent-kit.es30.js +23 -39
  78. package/dist/es/standards-agent-kit.es30.js.map +1 -1
  79. package/dist/es/standards-agent-kit.es31.js +30 -28
  80. package/dist/es/standards-agent-kit.es31.js.map +1 -1
  81. package/dist/es/standards-agent-kit.es32.js +45 -32
  82. package/dist/es/standards-agent-kit.es32.js.map +1 -1
  83. package/dist/es/standards-agent-kit.es33.js +50 -89
  84. package/dist/es/standards-agent-kit.es33.js.map +1 -1
  85. package/dist/es/standards-agent-kit.es34.js +35 -228
  86. package/dist/es/standards-agent-kit.es34.js.map +1 -1
  87. package/dist/es/standards-agent-kit.es35.js +87 -212
  88. package/dist/es/standards-agent-kit.es35.js.map +1 -1
  89. package/dist/es/standards-agent-kit.es36.js +188 -128
  90. package/dist/es/standards-agent-kit.es36.js.map +1 -1
  91. package/dist/es/standards-agent-kit.es37.js +167 -561
  92. package/dist/es/standards-agent-kit.es37.js.map +1 -1
  93. package/dist/es/standards-agent-kit.es38.js +236 -31
  94. package/dist/es/standards-agent-kit.es38.js.map +1 -1
  95. package/dist/es/standards-agent-kit.es39.js +483 -206
  96. package/dist/es/standards-agent-kit.es39.js.map +1 -1
  97. package/dist/es/standards-agent-kit.es4.js +359 -81
  98. package/dist/es/standards-agent-kit.es4.js.map +1 -1
  99. package/dist/es/standards-agent-kit.es40.js +39 -135
  100. package/dist/es/standards-agent-kit.es40.js.map +1 -1
  101. package/dist/es/standards-agent-kit.es41.js +244 -28
  102. package/dist/es/standards-agent-kit.es41.js.map +1 -1
  103. package/dist/es/standards-agent-kit.es42.js +132 -418
  104. package/dist/es/standards-agent-kit.es42.js.map +1 -1
  105. package/dist/es/standards-agent-kit.es43.js +28 -184
  106. package/dist/es/standards-agent-kit.es43.js.map +1 -1
  107. package/dist/es/standards-agent-kit.es44.js +423 -3
  108. package/dist/es/standards-agent-kit.es44.js.map +1 -1
  109. package/dist/es/standards-agent-kit.es45.js +185 -24
  110. package/dist/es/standards-agent-kit.es45.js.map +1 -1
  111. package/dist/es/standards-agent-kit.es46.js +3 -3
  112. package/dist/es/standards-agent-kit.es46.js.map +1 -1
  113. package/dist/es/standards-agent-kit.es47.js +21 -50
  114. package/dist/es/standards-agent-kit.es47.js.map +1 -1
  115. package/dist/es/standards-agent-kit.es48.js +8 -3
  116. package/dist/es/standards-agent-kit.es48.js.map +1 -1
  117. package/dist/es/standards-agent-kit.es49.js +3 -39
  118. package/dist/es/standards-agent-kit.es49.js.map +1 -1
  119. package/dist/es/standards-agent-kit.es5.js +1747 -73
  120. package/dist/es/standards-agent-kit.es5.js.map +1 -1
  121. package/dist/es/standards-agent-kit.es50.js +18 -16
  122. package/dist/es/standards-agent-kit.es50.js.map +1 -1
  123. package/dist/es/standards-agent-kit.es51.js +49 -49
  124. package/dist/es/standards-agent-kit.es51.js.map +1 -1
  125. package/dist/es/standards-agent-kit.es52.js +6 -0
  126. package/dist/es/standards-agent-kit.es52.js.map +1 -0
  127. package/dist/es/standards-agent-kit.es53.js +43 -0
  128. package/dist/es/standards-agent-kit.es53.js.map +1 -0
  129. package/dist/es/standards-agent-kit.es54.js +22 -0
  130. package/dist/es/standards-agent-kit.es54.js.map +1 -0
  131. package/dist/es/standards-agent-kit.es55.js +77 -0
  132. package/dist/es/standards-agent-kit.es55.js.map +1 -0
  133. package/dist/es/standards-agent-kit.es56.js +7 -0
  134. package/dist/es/standards-agent-kit.es56.js.map +1 -0
  135. package/dist/es/standards-agent-kit.es6.js +347 -32
  136. package/dist/es/standards-agent-kit.es6.js.map +1 -1
  137. package/dist/es/standards-agent-kit.es7.js +142 -293
  138. package/dist/es/standards-agent-kit.es7.js.map +1 -1
  139. package/dist/es/standards-agent-kit.es8.js +201 -21
  140. package/dist/es/standards-agent-kit.es8.js.map +1 -1
  141. package/dist/es/standards-agent-kit.es9.js +301 -213
  142. package/dist/es/standards-agent-kit.es9.js.map +1 -1
  143. package/dist/es/tools/hcs10/InitiateConnectionTool.d.ts +4 -4
  144. package/dist/es/tools/hcs2/CreateRegistryTool.d.ts +2 -2
  145. package/dist/es/tools/hcs2/DeleteEntryTool.d.ts +2 -2
  146. package/dist/es/tools/hcs2/UpdateEntryTool.d.ts +2 -2
  147. package/dist/es/tools/hcs6/RegisterDynamicHashinalTool.d.ts +10 -10
  148. package/dist/es/tools/hcs6/UpdateDynamicHashinalTool.d.ts +8 -8
  149. package/dist/es/tools/inscriber/InscribeFromBufferTool.d.ts +5 -4
  150. package/dist/es/tools/inscriber/InscribeFromFileTool.d.ts +2 -2
  151. package/dist/es/tools/inscriber/InscribeFromUrlTool.d.ts +4 -4
  152. package/dist/es/tools/inscriber/InscribeHashinalTool.d.ts +3 -3
  153. package/dist/es/types/inscription-response.d.ts +8 -0
  154. package/dist/es/types/tx-results.d.ts +15 -0
  155. package/dist/es/utils/CodedError.d.ts +4 -0
  156. package/dist/es/utils/inscription-utils.d.ts +21 -0
  157. package/dist/es/validation/hip412-schemas.d.ts +2 -2
  158. package/dist/umd/builders/hcs10/hcs10-builder.d.ts +1 -0
  159. package/dist/umd/builders/hcs2/hcs2-builder.d.ts +8 -7
  160. package/dist/umd/builders/hcs6/hcs6-builder.d.ts +5 -4
  161. package/dist/umd/builders/inscriber/inscriber-builder.d.ts +32 -1
  162. package/dist/umd/index.d.ts +4 -0
  163. package/dist/umd/signing/bytes-registry.d.ts +17 -0
  164. package/dist/umd/signing/signer-provider.d.ts +45 -0
  165. package/dist/umd/standards-agent-kit.umd.js +1 -1
  166. package/dist/umd/standards-agent-kit.umd.js.map +1 -1
  167. package/dist/umd/tools/hcs10/InitiateConnectionTool.d.ts +4 -4
  168. package/dist/umd/tools/hcs2/CreateRegistryTool.d.ts +2 -2
  169. package/dist/umd/tools/hcs2/DeleteEntryTool.d.ts +2 -2
  170. package/dist/umd/tools/hcs2/UpdateEntryTool.d.ts +2 -2
  171. package/dist/umd/tools/hcs6/RegisterDynamicHashinalTool.d.ts +10 -10
  172. package/dist/umd/tools/hcs6/UpdateDynamicHashinalTool.d.ts +8 -8
  173. package/dist/umd/tools/inscriber/InscribeFromBufferTool.d.ts +5 -4
  174. package/dist/umd/tools/inscriber/InscribeFromFileTool.d.ts +2 -2
  175. package/dist/umd/tools/inscriber/InscribeFromUrlTool.d.ts +4 -4
  176. package/dist/umd/tools/inscriber/InscribeHashinalTool.d.ts +3 -3
  177. package/dist/umd/types/inscription-response.d.ts +8 -0
  178. package/dist/umd/types/tx-results.d.ts +15 -0
  179. package/dist/umd/utils/CodedError.d.ts +4 -0
  180. package/dist/umd/utils/inscription-utils.d.ts +21 -0
  181. package/dist/umd/validation/hip412-schemas.d.ts +2 -2
  182. package/package.json +10 -5
  183. package/src/builders/hcs10/hcs10-builder.ts +239 -6
  184. package/src/builders/hcs2/hcs2-builder.ts +302 -9
  185. package/src/builders/hcs6/hcs6-builder.ts +79 -4
  186. package/src/builders/inscriber/inscriber-builder.ts +235 -2
  187. package/src/hcs10/HCS10Client.ts +1 -1
  188. package/src/index.ts +5 -1
  189. package/src/lib/zod-render/schema-extension.ts +0 -1
  190. package/src/signing/bytes-registry.ts +501 -0
  191. package/src/signing/signer-provider.ts +120 -0
  192. package/src/tools/hcs2/CreateRegistryTool.ts +30 -5
  193. package/src/tools/hcs2/DeleteEntryTool.ts +16 -2
  194. package/src/tools/hcs2/MigrateRegistryTool.ts +16 -2
  195. package/src/tools/hcs2/QueryRegistryTool.ts +11 -2
  196. package/src/tools/hcs2/RegisterEntryTool.ts +17 -3
  197. package/src/tools/hcs2/UpdateEntryTool.ts +16 -2
  198. package/src/tools/hcs6/CreateDynamicRegistryTool.ts +17 -3
  199. package/src/tools/hcs6/RegisterDynamicHashinalTool.ts +17 -3
  200. package/src/tools/hcs6/UpdateDynamicHashinalTool.ts +17 -3
  201. package/src/tools/inscriber/InscribeFromBufferTool.ts +126 -21
  202. package/src/tools/inscriber/InscribeFromFileTool.ts +10 -13
  203. package/src/tools/inscriber/InscribeFromUrlTool.ts +15 -11
  204. package/src/tools/inscriber/InscribeHashinalTool.ts +40 -168
  205. package/src/tools/inscriber/RetrieveInscriptionTool.ts +15 -16
  206. package/src/types/inscription-response.ts +27 -0
  207. package/src/types/tx-results.ts +18 -0
  208. package/src/utils/CodedError.ts +8 -0
  209. package/src/utils/Encryption.ts +0 -2
  210. package/src/utils/ensure-agent-has-hbar.ts +4 -5
  211. package/src/utils/inscription-utils.ts +53 -0
@@ -0,0 +1,77 @@
1
+ function createInscriptionSuccess(params) {
2
+ const { hrl, topicId, standard, cdnUrl, transactionId, metadata } = params;
3
+ return {
4
+ success: true,
5
+ type: "inscription",
6
+ title: `${standard} Hashinal Inscription Complete`,
7
+ message: `Successfully inscribed "${metadata.name || "your content"}" as a ${standard} Hashinal. The content is now ready for NFT minting.`,
8
+ inscription: {
9
+ hrl,
10
+ topicId,
11
+ standard,
12
+ cdnUrl,
13
+ transactionId
14
+ },
15
+ metadata,
16
+ nextSteps: {
17
+ primary: "CRITICAL: When minting NFTs, use ONLY the mintingMetadata value as a single string in the metadata array. Do NOT create JSON objects.",
18
+ context: 'The metadata parameter for minting should be exactly: ["' + hrl + '"] - just the HRL string in an array, nothing else.',
19
+ mintingMetadata: hrl
20
+ }
21
+ };
22
+ }
23
+ function createInscriptionQuote(params) {
24
+ const { totalCostHbar, validUntil, breakdown, content } = params;
25
+ return {
26
+ success: true,
27
+ type: "quote",
28
+ title: "Inscription Cost Quote",
29
+ message: `Estimated cost to inscribe "${content.name || "your content"}" is ${totalCostHbar} HBAR.`,
30
+ quote: {
31
+ totalCostHbar,
32
+ validUntil,
33
+ breakdown
34
+ },
35
+ content
36
+ };
37
+ }
38
+ function createInscriptionError(params) {
39
+ const { code, details, suggestions } = params;
40
+ return {
41
+ success: false,
42
+ type: "error",
43
+ title: "Inscription Failed",
44
+ message: `Unable to complete inscription: ${details}`,
45
+ error: {
46
+ code,
47
+ details,
48
+ suggestions
49
+ }
50
+ };
51
+ }
52
+ function createInscriptionPending(params) {
53
+ const { transactionId, details, suggestions } = params;
54
+ const d = details || `Inscription submitted but not yet confirmed. Transaction ID: ${transactionId}`;
55
+ return {
56
+ success: false,
57
+ type: "error",
58
+ title: "Inscription Submitted (Pending)",
59
+ message: d,
60
+ error: {
61
+ code: "INSCRIPTION_PENDING",
62
+ details: d,
63
+ suggestions: suggestions || [
64
+ "Wait a few moments for confirmation",
65
+ "Check the transaction status on a Hedera explorer",
66
+ "Try the inscription again if it doesn't confirm within 5 minutes"
67
+ ]
68
+ }
69
+ };
70
+ }
71
+ export {
72
+ createInscriptionError,
73
+ createInscriptionPending,
74
+ createInscriptionQuote,
75
+ createInscriptionSuccess
76
+ };
77
+ //# sourceMappingURL=standards-agent-kit.es55.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"standards-agent-kit.es55.js","sources":["../../src/types/inscription-response.ts"],"sourcesContent":["/**\n * Structured response interface for inscription tools\n * Provides a consistent, user-friendly format for inscription results\n */\n\nexport interface InscriptionSuccessResponse {\n success: true;\n type: 'inscription';\n title: string;\n message: string;\n inscription: {\n /** The HRL (Hashinal Reference Link) for minting - e.g., \"hcs://1/0.0.123456\" */\n hrl: string;\n /** Topic ID where the inscription was stored */\n topicId: string;\n /** Type of Hashinal - Static (HCS-5) or Dynamic (HCS-6) */\n standard: 'Static' | 'Dynamic';\n /** CDN URL for direct access to the inscribed content */\n cdnUrl?: string;\n /** Transaction ID of the inscription */\n transactionId?: string;\n };\n metadata: {\n /** Name/title of the inscribed content */\n name?: string;\n /** Creator of the content */\n creator?: string;\n /** Description of the content */\n description?: string;\n /** Content type (image, text, etc.) */\n type?: string;\n /** Additional attributes */\n attributes?: Array<{ trait_type: string; value: string | number }>;\n };\n nextSteps: {\n /** Primary action the user should take next */\n primary: string;\n /** Additional context or options */\n context?: string;\n /** Specific metadata value to use for minting */\n mintingMetadata: string;\n };\n /** HashLink block data (only present when withHashLinkBlocks=true) */\n hashLinkBlock?: {\n /** Block topic ID on HCS */\n blockId: string;\n /** HashLink reference to the block */\n hashLink: string;\n /** Template topic ID */\n template: string;\n /** Block attributes for rendering */\n attributes: BlockAttributes;\n };\n}\n\nexport interface InscriptionQuoteResponse {\n success: true;\n type: 'quote';\n title: string;\n message: string;\n quote: {\n /** Total cost in HBAR */\n totalCostHbar: string;\n /** When the quote expires */\n validUntil: string;\n /** Cost breakdown details */\n breakdown?: CostBreakdown;\n };\n content: {\n /** Name of the content to be inscribed */\n name?: string;\n /** Creator of the content */\n creator?: string;\n /** Type of content */\n type?: string;\n };\n}\n\nexport interface InscriptionErrorResponse {\n success: false;\n type: 'error';\n title: string;\n message: string;\n error: {\n /** Error code for programmatic handling */\n code: string;\n /** Detailed error message */\n details: string;\n /** Suggestions for fixing the error */\n suggestions?: string[];\n };\n}\n\nexport type InscriptionResponse =\n | InscriptionSuccessResponse\n | InscriptionQuoteResponse\n | InscriptionErrorResponse;\n\n/**\n * Helper function to create a successful inscription response\n */\nexport function createInscriptionSuccess(params: {\n hrl: string;\n topicId: string;\n standard: 'Static' | 'Dynamic';\n cdnUrl?: string;\n transactionId?: string;\n metadata: {\n name?: string;\n creator?: string;\n description?: string;\n type?: string;\n attributes?: Array<{ trait_type: string; value: string | number }>;\n };\n}): InscriptionSuccessResponse {\n const { hrl, topicId, standard, cdnUrl, transactionId, metadata } = params;\n\n return {\n success: true,\n type: 'inscription',\n title: `${standard} Hashinal Inscription Complete`,\n message: `Successfully inscribed \"${\n metadata.name || 'your content'\n }\" as a ${standard} Hashinal. The content is now ready for NFT minting.`,\n inscription: {\n hrl,\n topicId,\n standard,\n cdnUrl,\n transactionId,\n },\n metadata,\n nextSteps: {\n primary: 'CRITICAL: When minting NFTs, use ONLY the mintingMetadata value as a single string in the metadata array. Do NOT create JSON objects.',\n context:\n 'The metadata parameter for minting should be exactly: [\"' + hrl + '\"] - just the HRL string in an array, nothing else.',\n mintingMetadata: hrl,\n },\n };\n}\n\n/**\n * Block attributes for HashLink rendering\n */\ninterface BlockAttributes {\n /** Display name */\n name?: string;\n /** Description text */\n description?: string;\n /** Image URL */\n image?: string;\n /** Content type */\n contentType?: string;\n /** Size in bytes */\n size?: number;\n /** Custom metadata */\n metadata?: Record<string, string | number | boolean>;\n}\n\n/**\n * Transfer details in cost breakdown\n */\ninterface TransferDetails {\n to: string;\n amount: string;\n description: string;\n}\n\n/**\n * Cost breakdown details for inscription quote\n */\ninterface CostBreakdown {\n transfers: TransferDetails[];\n baseFee?: number;\n sizeFee?: number;\n networkFee?: number;\n serviceFee?: number;\n totalFee?: number;\n currency?: string;\n}\n\n/**\n * Helper function to create a quote response\n */\nexport function createInscriptionQuote(params: {\n totalCostHbar: string;\n validUntil: string;\n breakdown?: CostBreakdown;\n content: {\n name?: string;\n creator?: string;\n type?: string;\n };\n}): InscriptionQuoteResponse {\n const { totalCostHbar, validUntil, breakdown, content } = params;\n\n return {\n success: true,\n type: 'quote',\n title: 'Inscription Cost Quote',\n message: `Estimated cost to inscribe \"${\n content.name || 'your content'\n }\" is ${totalCostHbar} HBAR.`,\n quote: {\n totalCostHbar,\n validUntil,\n breakdown,\n },\n content,\n };\n}\n\n/**\n * Helper function to create an error response\n */\nexport function createInscriptionError(params: {\n code: string;\n details: string;\n suggestions?: string[];\n}): InscriptionErrorResponse {\n const { code, details, suggestions } = params;\n\n return {\n success: false,\n type: 'error',\n title: 'Inscription Failed',\n message: `Unable to complete inscription: ${details}`,\n error: {\n code,\n details,\n suggestions,\n },\n };\n}\n\n/**\n * Helper for pending inscription state (submitted but not yet confirmed)\n */\nexport function createInscriptionPending(params: {\n transactionId: string;\n details?: string;\n suggestions?: string[];\n}): InscriptionErrorResponse {\n const { transactionId, details, suggestions } = params;\n const d = details || `Inscription submitted but not yet confirmed. Transaction ID: ${transactionId}`;\n return {\n success: false,\n type: 'error',\n title: 'Inscription Submitted (Pending)',\n message: d,\n error: {\n code: 'INSCRIPTION_PENDING',\n details: d,\n suggestions: suggestions || [\n 'Wait a few moments for confirmation',\n 'Check the transaction status on a Hedera explorer',\n \"Try the inscription again if it doesn't confirm within 5 minutes\",\n ],\n },\n };\n}\n"],"names":[],"mappings":"AAqGO,SAAS,yBAAyB,QAaV;AAC7B,QAAM,EAAE,KAAK,SAAS,UAAU,QAAQ,eAAe,aAAa;AAEpE,SAAO;AAAA,IACL,SAAS;AAAA,IACT,MAAM;AAAA,IACN,OAAO,GAAG,QAAQ;AAAA,IAClB,SAAS,2BACP,SAAS,QAAQ,cACnB,UAAU,QAAQ;AAAA,IAClB,aAAa;AAAA,MACX;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IAAA;AAAA,IAEF;AAAA,IACA,WAAW;AAAA,MACT,SAAS;AAAA,MACT,SACE,6DAA6D,MAAM;AAAA,MACrE,iBAAiB;AAAA,IAAA;AAAA,EACnB;AAEJ;AA6CO,SAAS,uBAAuB,QASV;AAC3B,QAAM,EAAE,eAAe,YAAY,WAAW,YAAY;AAE1D,SAAO;AAAA,IACL,SAAS;AAAA,IACT,MAAM;AAAA,IACN,OAAO;AAAA,IACP,SAAS,+BACP,QAAQ,QAAQ,cAClB,QAAQ,aAAa;AAAA,IACrB,OAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,IAAA;AAAA,IAEF;AAAA,EAAA;AAEJ;AAKO,SAAS,uBAAuB,QAIV;AAC3B,QAAM,EAAE,MAAM,SAAS,YAAA,IAAgB;AAEvC,SAAO;AAAA,IACL,SAAS;AAAA,IACT,MAAM;AAAA,IACN,OAAO;AAAA,IACP,SAAS,mCAAmC,OAAO;AAAA,IACnD,OAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,IAAA;AAAA,EACF;AAEJ;AAKO,SAAS,yBAAyB,QAIZ;AAC3B,QAAM,EAAE,eAAe,SAAS,YAAA,IAAgB;AAChD,QAAM,IAAI,WAAW,gEAAgE,aAAa;AAClG,SAAO;AAAA,IACL,SAAS;AAAA,IACT,MAAM;AAAA,IACN,OAAO;AAAA,IACP,SAAS;AAAA,IACT,OAAO;AAAA,MACL,MAAM;AAAA,MACN,SAAS;AAAA,MACT,aAAa,eAAe;AAAA,QAC1B;AAAA,QACA;AAAA,QACA;AAAA,MAAA;AAAA,IACF;AAAA,EACF;AAEJ;"}
@@ -0,0 +1,7 @@
1
+ function isWalletBytesResponse(value) {
2
+ return !!value && typeof value.transactionBytes === "string";
3
+ }
4
+ export {
5
+ isWalletBytesResponse
6
+ };
7
+ //# sourceMappingURL=standards-agent-kit.es56.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"standards-agent-kit.es56.js","sources":["../../src/types/tx-results.ts"],"sourcesContent":["import type { TopicRegistrationResponse, RegistryOperationResponse, HCS6TopicRegistrationResponse, HCS6RegistryOperationResponse, HCS6CreateHashinalResponse } from '@hashgraphonline/standards-sdk';\n\nexport interface WalletBytesResponse {\n success: true;\n transactionBytes: string;\n}\n\nexport function isWalletBytesResponse(value: unknown): value is WalletBytesResponse {\n return !!value && typeof (value as any).transactionBytes === 'string';\n}\n\nexport type TopicRegistrationResult = TopicRegistrationResponse | WalletBytesResponse;\nexport type RegistryOperationResult = RegistryOperationResponse | WalletBytesResponse;\nexport type SubmitMessageResult = { success: true; transactionId?: string } | WalletBytesResponse;\n\nexport type HCS6TopicRegistrationResult = HCS6TopicRegistrationResponse | WalletBytesResponse;\nexport type HCS6RegistryOperationResult = HCS6RegistryOperationResponse | WalletBytesResponse;\nexport type HCS6CreateHashinalResult = HCS6CreateHashinalResponse | WalletBytesResponse;\n"],"names":[],"mappings":"AAOO,SAAS,sBAAsB,OAA8C;AAClF,SAAO,CAAC,CAAC,SAAS,OAAQ,MAAc,qBAAqB;AAC/D;"}
@@ -1,56 +1,371 @@
1
1
  import { BaseServiceBuilder } from "hedera-agent-kit";
2
- import { inscribe, inscribeWithSigner, retrieveInscription } from "@hashgraphonline/standards-sdk";
3
- class InscriberBuilder extends BaseServiceBuilder {
2
+ import { HederaMirrorNode, HCS2Client } from "@hashgraphonline/standards-sdk";
3
+ import { SignerProviderRegistry } from "./standards-agent-kit.es3.js";
4
+ import { CodedError } from "./standards-agent-kit.es48.js";
5
+ class HCS2Builder extends BaseServiceBuilder {
4
6
  constructor(hederaKit) {
5
7
  super(hederaKit);
6
8
  }
7
9
  /**
8
- * Get or create Inscription SDK - temporarily returns null since we don't have the actual SDK
10
+ * Get or create HCS-2 client
9
11
  */
10
- async getInscriptionSDK(_options) {
11
- return null;
12
+ async getHCS2Client() {
13
+ if (!this.hcs2Client) {
14
+ const operatorId = this.hederaKit.signer.getAccountId().toString();
15
+ const operatorPrivateKey = this.hederaKit.signer?.getOperatorPrivateKey() ? this.hederaKit.signer.getOperatorPrivateKey().toStringRaw() : "";
16
+ const network = this.hederaKit.client.network;
17
+ const networkType = network.toString().includes("mainnet") ? "mainnet" : "testnet";
18
+ let keyTypeHint;
19
+ try {
20
+ const mirror = new HederaMirrorNode(networkType);
21
+ const info = await mirror.requestAccount(operatorId);
22
+ const t = info?.key?._type;
23
+ if (t) {
24
+ const upper = t.toUpperCase();
25
+ if (upper.includes("ED25519")) keyTypeHint = "ed25519";
26
+ else if (upper.includes("ECDSA")) keyTypeHint = "ecdsa";
27
+ }
28
+ } catch {
29
+ }
30
+ const config = {
31
+ network: networkType,
32
+ operatorId,
33
+ operatorKey: operatorPrivateKey,
34
+ ...keyTypeHint ? { keyType: keyTypeHint } : {}
35
+ };
36
+ this.hcs2Client = new HCS2Client(config);
37
+ }
38
+ return this.hcs2Client;
12
39
  }
13
40
  /**
14
- * Inscribe content using server-side authentication
41
+ * Create a new HCS-2 registry
42
+ * Note: This executes the transaction directly via HCS2Client
15
43
  */
16
- async inscribe(input, options) {
17
- const operatorId = this.hederaKit.signer.getAccountId().toString();
18
- const operatorPrivateKey = this.hederaKit.signer?.getOperatorPrivateKey() ? this.hederaKit.signer.getOperatorPrivateKey().toStringRaw() : "";
19
- const network = this.hederaKit.client.network;
20
- const networkType = network.toString().includes("mainnet") ? "mainnet" : "testnet";
21
- const clientConfig = {
22
- accountId: operatorId,
23
- privateKey: operatorPrivateKey,
24
- network: networkType
25
- };
26
- return await inscribe(input, clientConfig, options);
44
+ async createRegistry(options = {}) {
45
+ const exec = SignerProviderRegistry.walletExecutor;
46
+ const preferWallet = SignerProviderRegistry.preferWalletOnly;
47
+ const hasPrivateKey = !!(this.hederaKit?.signer?.getOperatorPrivateKey && this.hederaKit.signer.getOperatorPrivateKey());
48
+ if (exec) {
49
+ const start = SignerProviderRegistry.startHCSDelegate;
50
+ if (start) {
51
+ try {
52
+ const request = { options };
53
+ const network = this.hederaKit.client.network.toString().includes("mainnet") ? "mainnet" : "testnet";
54
+ const { transactionBytes } = await start("hcs2.createRegistry", request, network);
55
+ if (transactionBytes) {
56
+ return { success: true, transactionBytes };
57
+ }
58
+ } catch (err) {
59
+ if (preferWallet) {
60
+ throw new CodedError("wallet_submit_failed", `wallet_submit_failed: ${err instanceof Error ? err.message : String(err)}`);
61
+ }
62
+ }
63
+ }
64
+ if (preferWallet) {
65
+ throw new CodedError("wallet_unavailable", "WalletExecutor not configured for hcs2.createRegistry");
66
+ }
67
+ }
68
+ if (!hasPrivateKey) {
69
+ throw new CodedError("wallet_unavailable", "No wallet executor and no operator private key available for server execution");
70
+ }
71
+ const client = await this.getHCS2Client();
72
+ return await client.createRegistry(options);
27
73
  }
28
74
  /**
29
- * Inscribe content using a DApp signer
75
+ * Register a new entry in an HCS-2 registry
30
76
  */
31
- async inscribeWithSigner(input, signer, options) {
32
- return await inscribeWithSigner(input, signer, options);
77
+ async registerEntry(registryTopicId, options) {
78
+ const exec = SignerProviderRegistry.walletExecutor;
79
+ const preferWallet = SignerProviderRegistry.preferWalletOnly;
80
+ const network = this.hederaKit.client.network.toString().includes("mainnet") ? "mainnet" : "testnet";
81
+ const hasPrivateKey = !!(this.hederaKit?.signer?.getOperatorPrivateKey && this.hederaKit.signer.getOperatorPrivateKey());
82
+ try {
83
+ const { ByteBuildRegistry } = await import("./standards-agent-kit.es4.js");
84
+ if (ByteBuildRegistry.has("hcs2.registerEntry")) {
85
+ const built = await ByteBuildRegistry.build("hcs2.registerEntry", this.hederaKit, { registryTopicId, options });
86
+ if (built && built.transactionBytes) {
87
+ if (exec) {
88
+ return { success: true, transactionBytes: built.transactionBytes };
89
+ }
90
+ if (!hasPrivateKey) {
91
+ return { success: true, transactionBytes: built.transactionBytes };
92
+ }
93
+ }
94
+ }
95
+ } catch {
96
+ }
97
+ const start = SignerProviderRegistry.startHCSDelegate;
98
+ if (start) {
99
+ try {
100
+ const request = {
101
+ registryTopicId,
102
+ options
103
+ };
104
+ const { transactionBytes } = await start("hcs2.registerEntry", request, network);
105
+ if (transactionBytes) {
106
+ if (exec) {
107
+ return { success: true, transactionBytes };
108
+ }
109
+ if (!hasPrivateKey) {
110
+ return { success: true, transactionBytes };
111
+ }
112
+ }
113
+ } catch (err) {
114
+ if (preferWallet) {
115
+ const msg = `wallet_submit_failed: ${err instanceof Error ? err.message : String(err)}`;
116
+ throw new CodedError("wallet_submit_failed", msg);
117
+ }
118
+ }
119
+ }
120
+ if (preferWallet) {
121
+ throw new CodedError("wallet_unavailable", "WalletExecutor not configured for hcs2.registerEntry");
122
+ }
123
+ if (!hasPrivateKey) {
124
+ throw new CodedError("wallet_unavailable", "No wallet executor and no operator private key available for server execution");
125
+ }
126
+ const client = await this.getHCS2Client();
127
+ return await client.registerEntry(registryTopicId, options);
33
128
  }
34
129
  /**
35
- * Retrieve an existing inscription
130
+ * Update an existing entry in an HCS-2 registry
36
131
  */
37
- async retrieveInscription(transactionId, options) {
38
- const operatorId = this.hederaKit.signer.getAccountId().toString();
39
- const operatorPrivateKey = this.hederaKit.signer?.getOperatorPrivateKey() ? this.hederaKit.signer.getOperatorPrivateKey().toStringRaw() : "";
40
- return await retrieveInscription(transactionId, {
41
- ...options,
42
- accountId: operatorId,
43
- privateKey: operatorPrivateKey
44
- });
132
+ async updateEntry(registryTopicId, options) {
133
+ const exec = SignerProviderRegistry.walletExecutor;
134
+ const preferWallet = SignerProviderRegistry.preferWalletOnly;
135
+ const network = this.hederaKit.client.network.toString().includes("mainnet") ? "mainnet" : "testnet";
136
+ const hasPrivateKey = !!(this.hederaKit?.signer?.getOperatorPrivateKey && this.hederaKit.signer.getOperatorPrivateKey());
137
+ try {
138
+ const { ByteBuildRegistry } = await import("./standards-agent-kit.es4.js");
139
+ if (ByteBuildRegistry.has("hcs2.updateEntry")) {
140
+ const built = await ByteBuildRegistry.build("hcs2.updateEntry", this.hederaKit, { registryTopicId, options });
141
+ if (built && built.transactionBytes) {
142
+ if (exec) {
143
+ return { success: true, transactionBytes: built.transactionBytes };
144
+ }
145
+ if (!hasPrivateKey) {
146
+ return { success: true, transactionBytes: built.transactionBytes };
147
+ }
148
+ }
149
+ }
150
+ } catch {
151
+ }
152
+ const start = SignerProviderRegistry.startHCSDelegate;
153
+ if (start) {
154
+ try {
155
+ const request = {
156
+ registryTopicId,
157
+ options
158
+ };
159
+ const { transactionBytes } = await start("hcs2.updateEntry", request, network);
160
+ if (transactionBytes) {
161
+ if (exec) {
162
+ return { success: true, transactionBytes };
163
+ }
164
+ if (!hasPrivateKey) {
165
+ return { success: true, transactionBytes };
166
+ }
167
+ }
168
+ } catch (err) {
169
+ if (preferWallet) {
170
+ const msg = `wallet_submit_failed: ${err instanceof Error ? err.message : String(err)}`;
171
+ throw new CodedError("wallet_submit_failed", msg);
172
+ }
173
+ }
174
+ }
175
+ if (preferWallet) {
176
+ throw new CodedError("wallet_unavailable", "WalletExecutor not configured for hcs2.updateEntry");
177
+ }
178
+ if (!hasPrivateKey) {
179
+ throw new CodedError("wallet_unavailable", "No wallet executor and no operator private key available for server execution");
180
+ }
181
+ const client = await this.getHCS2Client();
182
+ return await client.updateEntry(registryTopicId, options);
45
183
  }
46
184
  /**
47
- * Close the inscription SDK
185
+ * Delete an entry from an HCS-2 registry
186
+ */
187
+ async deleteEntry(registryTopicId, options) {
188
+ const exec = SignerProviderRegistry.walletExecutor;
189
+ const preferWallet = SignerProviderRegistry.preferWalletOnly;
190
+ const network = this.hederaKit.client.network.toString().includes("mainnet") ? "mainnet" : "testnet";
191
+ const hasPrivateKey = !!(this.hederaKit?.signer?.getOperatorPrivateKey && this.hederaKit.signer.getOperatorPrivateKey());
192
+ try {
193
+ const { ByteBuildRegistry } = await import("./standards-agent-kit.es4.js");
194
+ if (ByteBuildRegistry.has("hcs2.deleteEntry")) {
195
+ const built = await ByteBuildRegistry.build("hcs2.deleteEntry", this.hederaKit, { registryTopicId, options });
196
+ if (built && built.transactionBytes) {
197
+ if (exec) {
198
+ return { success: true, transactionBytes: built.transactionBytes };
199
+ }
200
+ if (!hasPrivateKey) {
201
+ return { success: true, transactionBytes: built.transactionBytes };
202
+ }
203
+ }
204
+ }
205
+ } catch {
206
+ }
207
+ const start = SignerProviderRegistry.startHCSDelegate;
208
+ if (start) {
209
+ try {
210
+ const request = {
211
+ registryTopicId,
212
+ options
213
+ };
214
+ const { transactionBytes } = await start("hcs2.deleteEntry", request, network);
215
+ if (transactionBytes) {
216
+ if (exec) {
217
+ return { success: true, transactionBytes };
218
+ }
219
+ if (!hasPrivateKey) {
220
+ return { success: true, transactionBytes };
221
+ }
222
+ }
223
+ } catch (err) {
224
+ if (preferWallet) {
225
+ const msg = `wallet_submit_failed: ${err instanceof Error ? err.message : String(err)}`;
226
+ throw new CodedError("wallet_submit_failed", msg);
227
+ }
228
+ }
229
+ }
230
+ if (preferWallet) {
231
+ throw new CodedError("wallet_unavailable", "WalletExecutor not configured for hcs2.deleteEntry");
232
+ }
233
+ if (!hasPrivateKey) {
234
+ throw new CodedError("wallet_unavailable", "No wallet executor and no operator private key available for server execution");
235
+ }
236
+ const client = await this.getHCS2Client();
237
+ return await client.deleteEntry(registryTopicId, options);
238
+ }
239
+ /**
240
+ * Migrate an HCS-2 registry to a new topic
241
+ */
242
+ async migrateRegistry(registryTopicId, options) {
243
+ const exec = SignerProviderRegistry.walletExecutor;
244
+ const preferWallet = SignerProviderRegistry.preferWalletOnly;
245
+ const hasPrivateKey = !!(this.hederaKit?.signer?.getOperatorPrivateKey && this.hederaKit.signer.getOperatorPrivateKey());
246
+ try {
247
+ const { ByteBuildRegistry } = await import("./standards-agent-kit.es4.js");
248
+ if (ByteBuildRegistry.has("hcs2.migrateRegistry")) {
249
+ const built = await ByteBuildRegistry.build("hcs2.migrateRegistry", this.hederaKit, { registryTopicId, options });
250
+ if (built && built.transactionBytes) {
251
+ if (exec) {
252
+ return { success: true, transactionBytes: built.transactionBytes };
253
+ }
254
+ if (!hasPrivateKey) {
255
+ return { success: true, transactionBytes: built.transactionBytes };
256
+ }
257
+ }
258
+ }
259
+ } catch {
260
+ }
261
+ const start = SignerProviderRegistry.startHCSDelegate;
262
+ if (start) {
263
+ try {
264
+ const request = { registryTopicId, options };
265
+ const network = this.hederaKit.client.network.toString().includes("mainnet") ? "mainnet" : "testnet";
266
+ const { transactionBytes } = await start("hcs2.migrateRegistry", request, network);
267
+ if (transactionBytes) {
268
+ if (exec) {
269
+ return { success: true, transactionBytes };
270
+ }
271
+ if (!hasPrivateKey) {
272
+ return { success: true, transactionBytes };
273
+ }
274
+ }
275
+ } catch (err) {
276
+ if (preferWallet) {
277
+ const msg = `wallet_submit_failed: ${err instanceof Error ? err.message : String(err)}`;
278
+ throw new CodedError("wallet_submit_failed", msg);
279
+ }
280
+ }
281
+ }
282
+ if (preferWallet) {
283
+ throw new CodedError("wallet_unavailable", "WalletExecutor not configured for hcs2.migrateRegistry");
284
+ }
285
+ if (!hasPrivateKey) {
286
+ throw new CodedError("wallet_unavailable", "No wallet executor and no operator private key available for server execution");
287
+ }
288
+ const client = await this.getHCS2Client();
289
+ return await client.migrateRegistry(registryTopicId, options);
290
+ }
291
+ /**
292
+ * Query entries from an HCS-2 registry
293
+ */
294
+ async getRegistry(topicId, options = {}) {
295
+ const client = await this.getHCS2Client();
296
+ return await client.getRegistry(topicId, options);
297
+ }
298
+ /**
299
+ * Submit a raw message to an HCS-2 topic
300
+ */
301
+ async submitMessage(topicId, payload) {
302
+ const exec = SignerProviderRegistry.walletExecutor;
303
+ const preferWallet = SignerProviderRegistry.preferWalletOnly;
304
+ const network = this.hederaKit.client.network.toString().includes("mainnet") ? "mainnet" : "testnet";
305
+ const hasPrivateKey = !!(this.hederaKit?.signer?.getOperatorPrivateKey && this.hederaKit.signer.getOperatorPrivateKey());
306
+ try {
307
+ const { ByteBuildRegistry } = await import("./standards-agent-kit.es4.js");
308
+ if (ByteBuildRegistry.has("hcs2.submitMessage")) {
309
+ const built = await ByteBuildRegistry.build("hcs2.submitMessage", this.hederaKit, { topicId, payload });
310
+ if (built && built.transactionBytes) {
311
+ if (exec) {
312
+ return { success: true, transactionBytes: built.transactionBytes };
313
+ }
314
+ if (!hasPrivateKey) {
315
+ return { success: true, transactionBytes: built.transactionBytes };
316
+ }
317
+ }
318
+ }
319
+ } catch {
320
+ }
321
+ const start = SignerProviderRegistry.startHCSDelegate;
322
+ if (start) {
323
+ try {
324
+ const request = { topicId, payload };
325
+ const { transactionBytes } = await start("hcs2.submitMessage", request, network);
326
+ if (transactionBytes) {
327
+ if (exec) {
328
+ return { success: true, transactionBytes };
329
+ }
330
+ if (!hasPrivateKey) {
331
+ return { success: true, transactionBytes };
332
+ }
333
+ }
334
+ } catch (err) {
335
+ if (preferWallet) {
336
+ const msg = `wallet_submit_failed: ${err instanceof Error ? err.message : String(err)}`;
337
+ throw new CodedError("wallet_submit_failed", msg);
338
+ }
339
+ }
340
+ }
341
+ if (preferWallet) {
342
+ throw new CodedError("wallet_unavailable", "WalletExecutor not configured for hcs2.submitMessage");
343
+ }
344
+ if (!hasPrivateKey) {
345
+ throw new CodedError("wallet_unavailable", "No wallet executor and no operator private key available for server execution");
346
+ }
347
+ const client = await this.getHCS2Client();
348
+ await client.submitMessage(topicId, payload);
349
+ return { success: true };
350
+ }
351
+ /**
352
+ * Get topic info from mirror node
353
+ */
354
+ async getTopicInfo(topicId) {
355
+ const client = await this.getHCS2Client();
356
+ return await client.getTopicInfo(topicId);
357
+ }
358
+ /**
359
+ * Close the HCS-2 client
48
360
  */
49
361
  async close() {
50
- this.inscriptionSDK = void 0;
362
+ if (this.hcs2Client) {
363
+ this.hcs2Client.close();
364
+ this.hcs2Client = void 0;
365
+ }
51
366
  }
52
367
  }
53
368
  export {
54
- InscriberBuilder
369
+ HCS2Builder
55
370
  };
56
371
  //# sourceMappingURL=standards-agent-kit.es6.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"standards-agent-kit.es6.js","sources":["../../src/builders/inscriber/inscriber-builder.ts"],"sourcesContent":["import { BaseServiceBuilder } from 'hedera-agent-kit';\nimport type { HederaAgentKit } from 'hedera-agent-kit';\nimport {\n inscribe,\n inscribeWithSigner,\n retrieveInscription,\n InscriptionInput,\n InscriptionOptions,\n InscriptionResponse,\n RetrievedInscriptionResult,\n HederaClientConfig,\n NetworkType,\n} from '@hashgraphonline/standards-sdk';\nimport { InscriptionSDK } from '@kiloscribe/inscription-sdk';\n\n/**\n * Type definition for DAppSigner interface compatible with inscription SDK\n */\ninterface DAppSigner {\n getAccountId(): { toString(): string };\n [key: string]: unknown;\n}\n\n/**\n * Builder for Inscription operations\n */\nexport class InscriberBuilder extends BaseServiceBuilder {\n protected inscriptionSDK?: InscriptionSDK;\n\n constructor(hederaKit: HederaAgentKit) {\n super(hederaKit);\n }\n\n /**\n * Get or create Inscription SDK - temporarily returns null since we don't have the actual SDK\n */\n protected async getInscriptionSDK(\n _options: InscriptionOptions\n ): Promise<InscriptionSDK | null> {\n return null;\n }\n\n /**\n * Inscribe content using server-side authentication\n */\n async inscribe(\n input: InscriptionInput,\n options: InscriptionOptions\n ): Promise<InscriptionResponse> {\n const operatorId = this.hederaKit.signer.getAccountId().toString();\n const operatorPrivateKey = this.hederaKit.signer?.getOperatorPrivateKey()\n ? this.hederaKit.signer.getOperatorPrivateKey().toStringRaw()\n : '';\n\n const network = this.hederaKit.client.network;\n const networkType: NetworkType = network.toString().includes('mainnet')\n ? 'mainnet'\n : 'testnet';\n\n const clientConfig: HederaClientConfig = {\n accountId: operatorId,\n privateKey: operatorPrivateKey,\n network: networkType,\n };\n\n return await inscribe(input, clientConfig, options);\n }\n\n /**\n * Inscribe content using a DApp signer\n */\n async inscribeWithSigner(\n input: InscriptionInput,\n signer: DAppSigner,\n options: InscriptionOptions\n ): Promise<InscriptionResponse> {\n return await inscribeWithSigner(input, signer as unknown as Parameters<typeof inscribeWithSigner>[1], options);\n }\n\n /**\n * Retrieve an existing inscription\n */\n async retrieveInscription(\n transactionId: string,\n options: InscriptionOptions\n ): Promise<RetrievedInscriptionResult> {\n const operatorId = this.hederaKit.signer.getAccountId().toString();\n const operatorPrivateKey = this.hederaKit.signer?.getOperatorPrivateKey()\n ? this.hederaKit.signer.getOperatorPrivateKey().toStringRaw()\n : '';\n\n return await retrieveInscription(transactionId, {\n ...options,\n accountId: operatorId,\n privateKey: operatorPrivateKey,\n });\n }\n\n /**\n * Close the inscription SDK\n */\n async close(): Promise<void> {\n this.inscriptionSDK = undefined;\n }\n}"],"names":[],"mappings":";;AA0BO,MAAM,yBAAyB,mBAAmB;AAAA,EAGvD,YAAY,WAA2B;AACrC,UAAM,SAAS;AAAA,EACjB;AAAA;AAAA;AAAA;AAAA,EAKA,MAAgB,kBACd,UACgC;AAChC,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,SACJ,OACA,SAC8B;AAC9B,UAAM,aAAa,KAAK,UAAU,OAAO,aAAA,EAAe,SAAA;AACxD,UAAM,qBAAqB,KAAK,UAAU,QAAQ,sBAAA,IAC9C,KAAK,UAAU,OAAO,wBAAwB,YAAA,IAC9C;AAEJ,UAAM,UAAU,KAAK,UAAU,OAAO;AACtC,UAAM,cAA2B,QAAQ,SAAA,EAAW,SAAS,SAAS,IAClE,YACA;AAEJ,UAAM,eAAmC;AAAA,MACvC,WAAW;AAAA,MACX,YAAY;AAAA,MACZ,SAAS;AAAA,IAAA;AAGX,WAAO,MAAM,SAAS,OAAO,cAAc,OAAO;AAAA,EACpD;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,mBACJ,OACA,QACA,SAC8B;AAC9B,WAAO,MAAM,mBAAmB,OAAO,QAA+D,OAAO;AAAA,EAC/G;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,oBACJ,eACA,SACqC;AACrC,UAAM,aAAa,KAAK,UAAU,OAAO,aAAA,EAAe,SAAA;AACxD,UAAM,qBAAqB,KAAK,UAAU,QAAQ,sBAAA,IAC9C,KAAK,UAAU,OAAO,wBAAwB,YAAA,IAC9C;AAEJ,WAAO,MAAM,oBAAoB,eAAe;AAAA,MAC9C,GAAG;AAAA,MACH,WAAW;AAAA,MACX,YAAY;AAAA,IAAA,CACb;AAAA,EACH;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,QAAuB;AAC3B,SAAK,iBAAiB;AAAA,EACxB;AACF;"}
1
+ {"version":3,"file":"standards-agent-kit.es6.js","sources":["../../src/builders/hcs2/hcs2-builder.ts"],"sourcesContent":["import { BaseServiceBuilder } from 'hedera-agent-kit';\nimport type { HederaAgentKit } from 'hedera-agent-kit';\nimport {\n HCS2Client,\n SDKHCS2ClientConfig,\n CreateRegistryOptions,\n RegisterEntryOptions,\n UpdateEntryOptions,\n DeleteEntryOptions,\n MigrateTopicOptions,\n QueryRegistryOptions,\n TopicRegistrationResponse,\n RegistryOperationResponse,\n TopicRegistry,\n NetworkType,\n HederaMirrorNode,\n} from '@hashgraphonline/standards-sdk';\nimport { SignerProviderRegistry, type NetworkString } from '../../signing/signer-provider';\nimport type { TopicRegistrationResult, RegistryOperationResult, SubmitMessageResult } from '../../types/tx-results';\nimport { CodedError } from '../../utils/CodedError';\n\n/**\n * Builder for HCS-2 operations that delegates to HCS2Client\n */\nexport class HCS2Builder extends BaseServiceBuilder {\n protected hcs2Client?: HCS2Client;\n\n constructor(hederaKit: HederaAgentKit) {\n super(hederaKit);\n }\n\n /**\n * Get or create HCS-2 client\n */\n protected async getHCS2Client(): Promise<HCS2Client> {\n if (!this.hcs2Client) {\n const operatorId = this.hederaKit.signer.getAccountId().toString();\n const operatorPrivateKey = this.hederaKit.signer?.getOperatorPrivateKey()\n ? this.hederaKit.signer.getOperatorPrivateKey().toStringRaw()\n : '';\n\n const network = this.hederaKit.client.network;\n const networkType: NetworkType = network.toString().includes('mainnet')\n ? 'mainnet'\n : 'testnet';\n\n let keyTypeHint: 'ed25519' | 'ecdsa' | undefined;\n try {\n const mirror = new HederaMirrorNode(networkType);\n const info = await mirror.requestAccount(operatorId);\n const t = (info as any)?.key?._type as string | undefined;\n if (t) {\n const upper = t.toUpperCase();\n if (upper.includes('ED25519')) keyTypeHint = 'ed25519';\n else if (upper.includes('ECDSA')) keyTypeHint = 'ecdsa';\n }\n } catch {}\n\n const config: SDKHCS2ClientConfig = {\n network: networkType,\n operatorId: operatorId,\n operatorKey: operatorPrivateKey,\n ...(keyTypeHint ? { keyType: keyTypeHint } : {}),\n };\n\n this.hcs2Client = new HCS2Client(config);\n }\n return this.hcs2Client;\n }\n\n /**\n * Create a new HCS-2 registry\n * Note: This executes the transaction directly via HCS2Client\n */\n async createRegistry(\n options: CreateRegistryOptions = {}\n ): Promise<TopicRegistrationResult> {\n const exec = SignerProviderRegistry.walletExecutor;\n const preferWallet = SignerProviderRegistry.preferWalletOnly;\n const hasPrivateKey = !!(this.hederaKit?.signer?.getOperatorPrivateKey && this.hederaKit.signer.getOperatorPrivateKey());\n\n if (exec) {\n const start = SignerProviderRegistry.startHCSDelegate;\n if (start) {\n try {\n const request: Record<string, unknown> = { options };\n const network = (this.hederaKit.client.network.toString().includes('mainnet') ? 'mainnet' : 'testnet') as NetworkString;\n const { transactionBytes } = await start('hcs2.createRegistry', request, network);\n if (transactionBytes) {\n return { success: true, transactionBytes };\n }\n } catch (err) {\n if (preferWallet) {\n throw new CodedError('wallet_submit_failed', `wallet_submit_failed: ${err instanceof Error ? err.message : String(err)}`);\n }\n }\n }\n if (preferWallet) {\n throw new CodedError('wallet_unavailable', 'WalletExecutor not configured for hcs2.createRegistry');\n }\n }\n\n if (!hasPrivateKey) {\n throw new CodedError('wallet_unavailable', 'No wallet executor and no operator private key available for server execution');\n }\n const client = await this.getHCS2Client();\n return await client.createRegistry(options);\n }\n /**\n * Register a new entry in an HCS-2 registry\n */\n async registerEntry(\n registryTopicId: string,\n options: RegisterEntryOptions\n ): Promise<RegistryOperationResult> {\n const exec = SignerProviderRegistry.walletExecutor;\n const preferWallet = SignerProviderRegistry.preferWalletOnly;\n const network = (this.hederaKit.client.network.toString().includes('mainnet') ? 'mainnet' : 'testnet') as NetworkString;\n const hasPrivateKey = !!(this.hederaKit?.signer?.getOperatorPrivateKey && this.hederaKit.signer.getOperatorPrivateKey());\n\n try {\n const { ByteBuildRegistry } = await import('../../signing/bytes-registry');\n if (ByteBuildRegistry.has('hcs2.registerEntry')) {\n const built = await ByteBuildRegistry.build('hcs2.registerEntry', this.hederaKit, { registryTopicId, options });\n if (built && built.transactionBytes) {\n if (exec) {\n return { success: true, transactionBytes: built.transactionBytes };\n }\n if (!hasPrivateKey) {\n return { success: true, transactionBytes: built.transactionBytes };\n }\n }\n }\n } catch {}\n\n const start = SignerProviderRegistry.startHCSDelegate;\n if (start) {\n try {\n const request: Record<string, unknown> = {\n registryTopicId,\n options,\n };\n const { transactionBytes } = await start('hcs2.registerEntry', request, network);\n if (transactionBytes) {\n if (exec) {\n return { success: true, transactionBytes };\n }\n if (!hasPrivateKey) {\n return { success: true, transactionBytes };\n }\n }\n } catch (err) {\n if (preferWallet) {\n const msg = `wallet_submit_failed: ${err instanceof Error ? err.message : String(err)}`;\n throw new CodedError('wallet_submit_failed', msg);\n }\n }\n }\n\n if (preferWallet) {\n throw new CodedError('wallet_unavailable', 'WalletExecutor not configured for hcs2.registerEntry');\n }\n\n if (!hasPrivateKey) {\n throw new CodedError('wallet_unavailable', 'No wallet executor and no operator private key available for server execution');\n }\n const client = await this.getHCS2Client();\n return await client.registerEntry(registryTopicId, options);\n }\n\n /**\n * Update an existing entry in an HCS-2 registry\n */\n async updateEntry(\n registryTopicId: string,\n options: UpdateEntryOptions\n ): Promise<RegistryOperationResult> {\n const exec = SignerProviderRegistry.walletExecutor;\n const preferWallet = SignerProviderRegistry.preferWalletOnly;\n const network = (this.hederaKit.client.network.toString().includes('mainnet') ? 'mainnet' : 'testnet') as NetworkString;\n const hasPrivateKey = !!(this.hederaKit?.signer?.getOperatorPrivateKey && this.hederaKit.signer.getOperatorPrivateKey());\n\n try {\n const { ByteBuildRegistry } = await import('../../signing/bytes-registry');\n if (ByteBuildRegistry.has('hcs2.updateEntry')) {\n const built = await ByteBuildRegistry.build('hcs2.updateEntry', this.hederaKit, { registryTopicId, options });\n if (built && built.transactionBytes) {\n if (exec) {\n return { success: true, transactionBytes: built.transactionBytes };\n }\n if (!hasPrivateKey) {\n return { success: true, transactionBytes: built.transactionBytes };\n }\n }\n }\n } catch {}\n\n const start = SignerProviderRegistry.startHCSDelegate;\n if (start) {\n try {\n const request: Record<string, unknown> = {\n registryTopicId,\n options,\n };\n const { transactionBytes } = await start('hcs2.updateEntry', request, network);\n if (transactionBytes) {\n if (exec) {\n return { success: true, transactionBytes };\n }\n if (!hasPrivateKey) {\n return { success: true, transactionBytes };\n }\n }\n } catch (err) {\n if (preferWallet) {\n const msg = `wallet_submit_failed: ${err instanceof Error ? err.message : String(err)}`;\n throw new CodedError('wallet_submit_failed', msg);\n }\n }\n }\n\n if (preferWallet) {\n throw new CodedError('wallet_unavailable', 'WalletExecutor not configured for hcs2.updateEntry');\n }\n\n if (!hasPrivateKey) {\n throw new CodedError('wallet_unavailable', 'No wallet executor and no operator private key available for server execution');\n }\n const client = await this.getHCS2Client();\n return await client.updateEntry(registryTopicId, options);\n }\n\n /**\n * Delete an entry from an HCS-2 registry\n */\n async deleteEntry(\n registryTopicId: string,\n options: DeleteEntryOptions\n ): Promise<RegistryOperationResult> {\n const exec = SignerProviderRegistry.walletExecutor;\n const preferWallet = SignerProviderRegistry.preferWalletOnly;\n const network = (this.hederaKit.client.network.toString().includes('mainnet') ? 'mainnet' : 'testnet') as NetworkString;\n const hasPrivateKey = !!(this.hederaKit?.signer?.getOperatorPrivateKey && this.hederaKit.signer.getOperatorPrivateKey());\n\n try {\n const { ByteBuildRegistry } = await import('../../signing/bytes-registry');\n if (ByteBuildRegistry.has('hcs2.deleteEntry')) {\n const built = await ByteBuildRegistry.build('hcs2.deleteEntry', this.hederaKit, { registryTopicId, options });\n if (built && built.transactionBytes) {\n if (exec) {\n return { success: true, transactionBytes: built.transactionBytes };\n }\n if (!hasPrivateKey) {\n return { success: true, transactionBytes: built.transactionBytes };\n }\n }\n }\n } catch {}\n\n const start = SignerProviderRegistry.startHCSDelegate;\n if (start) {\n try {\n const request: Record<string, unknown> = {\n registryTopicId,\n options,\n };\n const { transactionBytes } = await start('hcs2.deleteEntry', request, network);\n if (transactionBytes) {\n if (exec) {\n return { success: true, transactionBytes };\n }\n if (!hasPrivateKey) {\n return { success: true, transactionBytes };\n }\n }\n } catch (err) {\n if (preferWallet) {\n const msg = `wallet_submit_failed: ${err instanceof Error ? err.message : String(err)}`;\n throw new CodedError('wallet_submit_failed', msg);\n }\n }\n }\n\n if (preferWallet) {\n throw new CodedError('wallet_unavailable', 'WalletExecutor not configured for hcs2.deleteEntry');\n }\n\n if (!hasPrivateKey) {\n throw new CodedError('wallet_unavailable', 'No wallet executor and no operator private key available for server execution');\n }\n const client = await this.getHCS2Client();\n return await client.deleteEntry(registryTopicId, options);\n }\n\n /**\n * Migrate an HCS-2 registry to a new topic\n */\n async migrateRegistry(\n registryTopicId: string,\n options: MigrateTopicOptions\n ): Promise<RegistryOperationResult> {\n const exec = SignerProviderRegistry.walletExecutor;\n const preferWallet = SignerProviderRegistry.preferWalletOnly;\n const hasPrivateKey = !!(this.hederaKit?.signer?.getOperatorPrivateKey && this.hederaKit.signer.getOperatorPrivateKey());\n\n try {\n const { ByteBuildRegistry } = await import('../../signing/bytes-registry');\n if (ByteBuildRegistry.has('hcs2.migrateRegistry')) {\n const built = await ByteBuildRegistry.build('hcs2.migrateRegistry', this.hederaKit, { registryTopicId, options });\n if (built && built.transactionBytes) {\n if (exec) {\n return { success: true, transactionBytes: built.transactionBytes };\n }\n if (!hasPrivateKey) {\n return { success: true, transactionBytes: built.transactionBytes };\n }\n }\n }\n } catch {}\n\n const start = SignerProviderRegistry.startHCSDelegate;\n if (start) {\n try {\n const request: Record<string, unknown> = { registryTopicId, options };\n const network = (this.hederaKit.client.network.toString().includes('mainnet') ? 'mainnet' : 'testnet') as NetworkString;\n const { transactionBytes } = await start('hcs2.migrateRegistry', request, network);\n if (transactionBytes) {\n if (exec) {\n return { success: true, transactionBytes };\n }\n if (!hasPrivateKey) {\n return { success: true, transactionBytes };\n }\n }\n } catch (err) {\n if (preferWallet) {\n const msg = `wallet_submit_failed: ${err instanceof Error ? err.message : String(err)}`;\n throw new CodedError('wallet_submit_failed', msg);\n }\n }\n }\n\n if (preferWallet) {\n throw new CodedError('wallet_unavailable', 'WalletExecutor not configured for hcs2.migrateRegistry');\n }\n\n if (!hasPrivateKey) {\n throw new CodedError('wallet_unavailable', 'No wallet executor and no operator private key available for server execution');\n }\n const client = await this.getHCS2Client();\n return await client.migrateRegistry(registryTopicId, options);\n }\n\n /**\n * Query entries from an HCS-2 registry\n */\n async getRegistry(\n topicId: string,\n options: QueryRegistryOptions = {}\n ): Promise<TopicRegistry> {\n const client = await this.getHCS2Client();\n return await client.getRegistry(topicId, options);\n }\n\n /**\n * Submit a raw message to an HCS-2 topic\n */\n async submitMessage(\n topicId: string,\n payload: any\n ): Promise<SubmitMessageResult> {\n const exec = SignerProviderRegistry.walletExecutor;\n const preferWallet = SignerProviderRegistry.preferWalletOnly;\n const network = (this.hederaKit.client.network.toString().includes('mainnet') ? 'mainnet' : 'testnet') as NetworkString;\n const hasPrivateKey = !!(this.hederaKit?.signer?.getOperatorPrivateKey && this.hederaKit.signer.getOperatorPrivateKey());\n\n try {\n const { ByteBuildRegistry } = await import('../../signing/bytes-registry');\n if (ByteBuildRegistry.has('hcs2.submitMessage')) {\n const built = await ByteBuildRegistry.build('hcs2.submitMessage', this.hederaKit, { topicId, payload });\n if (built && built.transactionBytes) {\n if (exec) {\n return { success: true, transactionBytes: built.transactionBytes };\n }\n if (!hasPrivateKey) {\n return { success: true, transactionBytes: built.transactionBytes };\n }\n }\n }\n } catch {}\n\n const start = SignerProviderRegistry.startHCSDelegate;\n if (start) {\n try {\n const request: Record<string, unknown> = { topicId, payload };\n const { transactionBytes } = await start('hcs2.submitMessage', request, network);\n if (transactionBytes) {\n if (exec) {\n return { success: true, transactionBytes };\n }\n if (!hasPrivateKey) {\n return { success: true, transactionBytes };\n }\n }\n } catch (err) {\n if (preferWallet) {\n const msg = `wallet_submit_failed: ${err instanceof Error ? err.message : String(err)}`;\n throw new CodedError('wallet_submit_failed', msg);\n }\n }\n }\n\n if (preferWallet) {\n throw new CodedError('wallet_unavailable', 'WalletExecutor not configured for hcs2.submitMessage');\n }\n\n if (!hasPrivateKey) {\n throw new CodedError('wallet_unavailable', 'No wallet executor and no operator private key available for server execution');\n }\n const client = await this.getHCS2Client();\n await client.submitMessage(topicId, payload);\n return { success: true };\n }\n /**\n * Get topic info from mirror node\n */\n async getTopicInfo(topicId: string): Promise<any> {\n const client = await this.getHCS2Client();\n return await client.getTopicInfo(topicId);\n }\n\n /**\n * Close the HCS-2 client\n */\n async close(): Promise<void> {\n if (this.hcs2Client) {\n this.hcs2Client.close();\n this.hcs2Client = undefined;\n }\n }\n}"],"names":[],"mappings":"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"}