@hashgraphonline/standards-sdk 0.0.81 → 0.0.83

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 (214) hide show
  1. package/dist/es/hcs-10/base-client.d.ts.map +1 -1
  2. package/dist/es/hcs-10/browser.d.ts.map +1 -1
  3. package/dist/es/hcs-10/sdk.d.ts.map +1 -1
  4. package/dist/es/services/mirror-node.d.ts.map +1 -1
  5. package/dist/es/standards-sdk.es100.js +157 -13
  6. package/dist/es/standards-sdk.es100.js.map +1 -1
  7. package/dist/es/standards-sdk.es101.js +22 -3
  8. package/dist/es/standards-sdk.es101.js.map +1 -1
  9. package/dist/es/standards-sdk.es102.js +792 -3
  10. package/dist/es/standards-sdk.es102.js.map +1 -1
  11. package/dist/es/standards-sdk.es103.js +3 -15
  12. package/dist/es/standards-sdk.es103.js.map +1 -1
  13. package/dist/es/standards-sdk.es104.js +142 -4
  14. package/dist/es/standards-sdk.es104.js.map +1 -1
  15. package/dist/es/standards-sdk.es105.js +174 -39
  16. package/dist/es/standards-sdk.es105.js.map +1 -1
  17. package/dist/es/standards-sdk.es106.js +32 -38
  18. package/dist/es/standards-sdk.es106.js.map +1 -1
  19. package/dist/es/standards-sdk.es107.js +31 -35
  20. package/dist/es/standards-sdk.es107.js.map +1 -1
  21. package/dist/es/standards-sdk.es108.js +9 -78
  22. package/dist/es/standards-sdk.es108.js.map +1 -1
  23. package/dist/es/standards-sdk.es109.js +34 -4
  24. package/dist/es/standards-sdk.es109.js.map +1 -1
  25. package/dist/es/standards-sdk.es110.js +419 -3
  26. package/dist/es/standards-sdk.es110.js.map +1 -1
  27. package/dist/es/standards-sdk.es111.js +2 -2
  28. package/dist/es/standards-sdk.es111.js.map +1 -1
  29. package/dist/es/standards-sdk.es112.js +120 -2
  30. package/dist/es/standards-sdk.es112.js.map +1 -1
  31. package/dist/es/standards-sdk.es113.js +20 -33
  32. package/dist/es/standards-sdk.es113.js.map +1 -1
  33. package/dist/es/standards-sdk.es114.js +26 -32
  34. package/dist/es/standards-sdk.es114.js.map +1 -1
  35. package/dist/es/standards-sdk.es115.js +26 -9
  36. package/dist/es/standards-sdk.es115.js.map +1 -1
  37. package/dist/es/standards-sdk.es116.js +37 -33
  38. package/dist/es/standards-sdk.es116.js.map +1 -1
  39. package/dist/es/standards-sdk.es12.js +3 -3
  40. package/dist/es/standards-sdk.es17.js +2 -2
  41. package/dist/es/standards-sdk.es18.js +57 -41
  42. package/dist/es/standards-sdk.es18.js.map +1 -1
  43. package/dist/es/standards-sdk.es21.js +1692 -966
  44. package/dist/es/standards-sdk.es21.js.map +1 -1
  45. package/dist/es/standards-sdk.es22.js +36 -1767
  46. package/dist/es/standards-sdk.es22.js.map +1 -1
  47. package/dist/es/standards-sdk.es23.js +48 -36
  48. package/dist/es/standards-sdk.es23.js.map +1 -1
  49. package/dist/es/standards-sdk.es24.js +7163 -21
  50. package/dist/es/standards-sdk.es24.js.map +1 -1
  51. package/dist/es/standards-sdk.es25.js +3 -7190
  52. package/dist/es/standards-sdk.es25.js.map +1 -1
  53. package/dist/es/standards-sdk.es26.js +2 -3
  54. package/dist/es/standards-sdk.es26.js.map +1 -1
  55. package/dist/es/standards-sdk.es27.js +4167 -2
  56. package/dist/es/standards-sdk.es27.js.map +1 -1
  57. package/dist/es/standards-sdk.es28.js +961 -4087
  58. package/dist/es/standards-sdk.es28.js.map +1 -1
  59. package/dist/es/standards-sdk.es29.js +2 -2
  60. package/dist/es/standards-sdk.es30.js +101 -2
  61. package/dist/es/standards-sdk.es30.js.map +1 -1
  62. package/dist/es/standards-sdk.es31.js +2 -6
  63. package/dist/es/standards-sdk.es31.js.map +1 -1
  64. package/dist/es/standards-sdk.es32.js +15 -22
  65. package/dist/es/standards-sdk.es32.js.map +1 -1
  66. package/dist/es/standards-sdk.es33.js +400 -134
  67. package/dist/es/standards-sdk.es33.js.map +1 -1
  68. package/dist/es/standards-sdk.es34.js +347 -178
  69. package/dist/es/standards-sdk.es34.js.map +1 -1
  70. package/dist/es/standards-sdk.es35.js +5 -437
  71. package/dist/es/standards-sdk.es35.js.map +1 -1
  72. package/dist/es/standards-sdk.es36.js +171 -17
  73. package/dist/es/standards-sdk.es36.js.map +1 -1
  74. package/dist/es/standards-sdk.es37.js +71 -129
  75. package/dist/es/standards-sdk.es37.js.map +1 -1
  76. package/dist/es/standards-sdk.es38.js +112 -16
  77. package/dist/es/standards-sdk.es38.js.map +1 -1
  78. package/dist/es/standards-sdk.es39.js +47 -24
  79. package/dist/es/standards-sdk.es39.js.map +1 -1
  80. package/dist/es/standards-sdk.es4.js +1 -1
  81. package/dist/es/standards-sdk.es40.js +9 -28
  82. package/dist/es/standards-sdk.es40.js.map +1 -1
  83. package/dist/es/standards-sdk.es41.js +91 -15
  84. package/dist/es/standards-sdk.es41.js.map +1 -1
  85. package/dist/es/standards-sdk.es42.js +3 -43
  86. package/dist/es/standards-sdk.es42.js.map +1 -1
  87. package/dist/es/standards-sdk.es43.js +2 -18
  88. package/dist/es/standards-sdk.es43.js.map +1 -1
  89. package/dist/es/standards-sdk.es44.js +106 -54
  90. package/dist/es/standards-sdk.es44.js.map +1 -1
  91. package/dist/es/standards-sdk.es45.js +71 -1286
  92. package/dist/es/standards-sdk.es45.js.map +1 -1
  93. package/dist/es/standards-sdk.es46.js +5 -147
  94. package/dist/es/standards-sdk.es46.js.map +1 -1
  95. package/dist/es/standards-sdk.es47.js +4 -90
  96. package/dist/es/standards-sdk.es47.js.map +1 -1
  97. package/dist/es/standards-sdk.es48.js +211 -74
  98. package/dist/es/standards-sdk.es48.js.map +1 -1
  99. package/dist/es/standards-sdk.es49.js +55 -29
  100. package/dist/es/standards-sdk.es49.js.map +1 -1
  101. package/dist/es/standards-sdk.es5.js +29 -21
  102. package/dist/es/standards-sdk.es5.js.map +1 -1
  103. package/dist/es/standards-sdk.es50.js +69 -159
  104. package/dist/es/standards-sdk.es50.js.map +1 -1
  105. package/dist/es/standards-sdk.es51.js +2281 -792
  106. package/dist/es/standards-sdk.es51.js.map +1 -1
  107. package/dist/es/standards-sdk.es52.js +146 -156
  108. package/dist/es/standards-sdk.es52.js.map +1 -1
  109. package/dist/es/standards-sdk.es53.js +7109 -74
  110. package/dist/es/standards-sdk.es53.js.map +1 -1
  111. package/dist/es/standards-sdk.es54.js +3 -2
  112. package/dist/es/standards-sdk.es54.js.map +1 -1
  113. package/dist/es/standards-sdk.es55.js +31 -15
  114. package/dist/es/standards-sdk.es55.js.map +1 -1
  115. package/dist/es/standards-sdk.es56.js +57 -403
  116. package/dist/es/standards-sdk.es56.js.map +1 -1
  117. package/dist/es/standards-sdk.es57.js +44 -358
  118. package/dist/es/standards-sdk.es57.js.map +1 -1
  119. package/dist/es/standards-sdk.es58.js +9 -5
  120. package/dist/es/standards-sdk.es58.js.map +1 -1
  121. package/dist/es/standards-sdk.es59.js +57 -171
  122. package/dist/es/standards-sdk.es59.js.map +1 -1
  123. package/dist/es/standards-sdk.es60.js +6 -81
  124. package/dist/es/standards-sdk.es60.js.map +1 -1
  125. package/dist/es/standards-sdk.es61.js +12 -111
  126. package/dist/es/standards-sdk.es61.js.map +1 -1
  127. package/dist/es/standards-sdk.es62.js +7 -52
  128. package/dist/es/standards-sdk.es62.js.map +1 -1
  129. package/dist/es/standards-sdk.es63.js +45 -10
  130. package/dist/es/standards-sdk.es63.js.map +1 -1
  131. package/dist/es/standards-sdk.es64.js +2 -97
  132. package/dist/es/standards-sdk.es64.js.map +1 -1
  133. package/dist/es/standards-sdk.es65.js +136 -4
  134. package/dist/es/standards-sdk.es65.js.map +1 -1
  135. package/dist/es/standards-sdk.es66.js +172 -2
  136. package/dist/es/standards-sdk.es66.js.map +1 -1
  137. package/dist/es/standards-sdk.es67.js +13 -113
  138. package/dist/es/standards-sdk.es67.js.map +1 -1
  139. package/dist/es/standards-sdk.es68.js +13 -74
  140. package/dist/es/standards-sdk.es68.js.map +1 -1
  141. package/dist/es/standards-sdk.es69.js +2 -6
  142. package/dist/es/standards-sdk.es69.js.map +1 -1
  143. package/dist/es/standards-sdk.es7.js +34 -28
  144. package/dist/es/standards-sdk.es7.js.map +1 -1
  145. package/dist/es/standards-sdk.es70.js +31 -4
  146. package/dist/es/standards-sdk.es70.js.map +1 -1
  147. package/dist/es/standards-sdk.es71.js +13 -219
  148. package/dist/es/standards-sdk.es71.js.map +1 -1
  149. package/dist/es/standards-sdk.es72.js +4 -58
  150. package/dist/es/standards-sdk.es72.js.map +1 -1
  151. package/dist/es/standards-sdk.es73.js +4 -69
  152. package/dist/es/standards-sdk.es73.js.map +1 -1
  153. package/dist/es/standards-sdk.es74.js +14 -19
  154. package/dist/es/standards-sdk.es74.js.map +1 -1
  155. package/dist/es/standards-sdk.es75.js +4 -26
  156. package/dist/es/standards-sdk.es75.js.map +1 -1
  157. package/dist/es/standards-sdk.es76.js +39 -26
  158. package/dist/es/standards-sdk.es76.js.map +1 -1
  159. package/dist/es/standards-sdk.es77.js +39 -37
  160. package/dist/es/standards-sdk.es77.js.map +1 -1
  161. package/dist/es/standards-sdk.es78.js +32 -414
  162. package/dist/es/standards-sdk.es78.js.map +1 -1
  163. package/dist/es/standards-sdk.es79.js +78 -2
  164. package/dist/es/standards-sdk.es79.js.map +1 -1
  165. package/dist/es/standards-sdk.es8.js +8 -4
  166. package/dist/es/standards-sdk.es8.js.map +1 -1
  167. package/dist/es/standards-sdk.es80.js +3 -120
  168. package/dist/es/standards-sdk.es80.js.map +1 -1
  169. package/dist/es/standards-sdk.es81.js +2 -2282
  170. package/dist/es/standards-sdk.es81.js.map +1 -1
  171. package/dist/es/standards-sdk.es82.js +2 -164
  172. package/dist/es/standards-sdk.es82.js.map +1 -1
  173. package/dist/es/standards-sdk.es83.js +195 -3
  174. package/dist/es/standards-sdk.es83.js.map +1 -1
  175. package/dist/es/standards-sdk.es84.js +432 -26
  176. package/dist/es/standards-sdk.es84.js.map +1 -1
  177. package/dist/es/standards-sdk.es85.js +19 -57
  178. package/dist/es/standards-sdk.es85.js.map +1 -1
  179. package/dist/es/standards-sdk.es86.js +133 -44
  180. package/dist/es/standards-sdk.es86.js.map +1 -1
  181. package/dist/es/standards-sdk.es87.js +17 -9
  182. package/dist/es/standards-sdk.es87.js.map +1 -1
  183. package/dist/es/standards-sdk.es88.js +25 -61
  184. package/dist/es/standards-sdk.es88.js.map +1 -1
  185. package/dist/es/standards-sdk.es89.js +29 -6
  186. package/dist/es/standards-sdk.es89.js.map +1 -1
  187. package/dist/es/standards-sdk.es9.js +1 -1
  188. package/dist/es/standards-sdk.es90.js +19 -13
  189. package/dist/es/standards-sdk.es90.js.map +1 -1
  190. package/dist/es/standards-sdk.es91.js +44 -7
  191. package/dist/es/standards-sdk.es91.js.map +1 -1
  192. package/dist/es/standards-sdk.es92.js +18 -45
  193. package/dist/es/standards-sdk.es92.js.map +1 -1
  194. package/dist/es/standards-sdk.es93.js +61 -2
  195. package/dist/es/standards-sdk.es93.js.map +1 -1
  196. package/dist/es/standards-sdk.es94.js +1274 -121
  197. package/dist/es/standards-sdk.es94.js.map +1 -1
  198. package/dist/es/standards-sdk.es95.js +133 -157
  199. package/dist/es/standards-sdk.es95.js.map +1 -1
  200. package/dist/es/standards-sdk.es96.js +69 -7114
  201. package/dist/es/standards-sdk.es96.js.map +1 -1
  202. package/dist/es/standards-sdk.es97.js +84 -13
  203. package/dist/es/standards-sdk.es97.js.map +1 -1
  204. package/dist/es/standards-sdk.es98.js +32 -13
  205. package/dist/es/standards-sdk.es98.js.map +1 -1
  206. package/dist/es/standards-sdk.es99.js +5 -31
  207. package/dist/es/standards-sdk.es99.js.map +1 -1
  208. package/dist/umd/hcs-10/base-client.d.ts.map +1 -1
  209. package/dist/umd/hcs-10/browser.d.ts.map +1 -1
  210. package/dist/umd/hcs-10/sdk.d.ts.map +1 -1
  211. package/dist/umd/services/mirror-node.d.ts.map +1 -1
  212. package/dist/umd/standards-sdk.umd.js +1 -1
  213. package/dist/umd/standards-sdk.umd.js.map +1 -1
  214. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"standards-sdk.es5.js","sources":["../../src/hcs-10/base-client.ts"],"sourcesContent":["import { Logger, LogLevel } from '../utils/logger';\nimport { Registration } from './registrations';\nimport { HCS11Client } from '../hcs-11/client';\nimport { AccountResponse, TopicResponse } from '../services/types';\nimport { TopicInfo } from '../services/types';\nimport { TransactionReceipt, PrivateKey, PublicKey } from '@hashgraph/sdk';\nimport axios from 'axios';\nimport { NetworkType } from '../utils/types';\nimport { HederaMirrorNode } from '../services';\nimport { WaitForConnectionConfirmationResponse } from './types';\n\nexport enum Hcs10MemoType {\n INBOUND = 'inbound',\n OUTBOUND = 'outbound',\n CONNECTION = 'connection',\n}\n\nexport interface HCS10Config {\n network: 'mainnet' | 'testnet';\n logLevel?: LogLevel;\n prettyPrint?: boolean;\n feeAmount?: number;\n}\n\nexport interface HCSMessage {\n p: 'hcs-10';\n op:\n | 'connection_request'\n | 'connection_created'\n | 'message'\n | 'close_connection';\n data: string;\n created?: Date;\n consensus_timestamp?: string;\n m?: string;\n payer: string;\n outbound_topic_id?: string;\n connection_request_id?: number;\n confirmed_request_id?: number;\n connection_topic_id?: string;\n connected_account_id?: string;\n requesting_account_id?: string;\n connection_id?: number;\n sequence_number: number;\n operator_id?: string;\n reason?: string;\n close_method?: string;\n}\n\nexport interface ProfileResponse {\n profile: any;\n topicInfo?: TopicInfo;\n success: boolean;\n error?: string;\n}\n\nexport abstract class HCS10BaseClient extends Registration {\n protected network: string;\n protected logger: Logger;\n protected mirrorNode: HederaMirrorNode;\n protected feeAmount: number;\n\n protected operatorId: string;\n\n constructor(config: HCS10Config) {\n super();\n this.network = config.network;\n this.logger = Logger.getInstance({\n level: config.logLevel || 'info',\n module: 'HCS10-BaseClient',\n prettyPrint: config.prettyPrint,\n });\n this.mirrorNode = new HederaMirrorNode(\n config.network as NetworkType,\n this.logger\n );\n this.feeAmount = config.feeAmount || 0.001;\n }\n\n abstract submitPayload(\n topicId: string,\n payload: object | string,\n submitKey?: PrivateKey,\n requiresFee?: boolean\n ): Promise<TransactionReceipt>;\n\n abstract getAccountAndSigner(): { accountId: string; signer: any };\n\n public extractTopicFromOperatorId(operatorId: string): string {\n if (!operatorId) {\n return '';\n }\n const parts = operatorId.split('@');\n if (parts.length > 0) {\n return parts[0];\n }\n return '';\n }\n\n public extractAccountFromOperatorId(operatorId: string): string {\n if (!operatorId) {\n return '';\n }\n const parts = operatorId.split('@');\n if (parts.length > 1) {\n return parts[1];\n }\n return '';\n }\n\n /**\n * Get a stream of messages from a connection topic\n * @param topicId The connection topic ID to get messages from\n * @returns A stream of filtered messages valid for connection topics\n */\n public async getMessageStream(\n topicId: string\n ): Promise<{ messages: HCSMessage[] }> {\n try {\n const messages = await this.mirrorNode.getTopicMessages(topicId);\n const validOps = ['message', 'close_connection'];\n\n const filteredMessages = messages.filter((msg) => {\n if (msg.p !== 'hcs-10' || !validOps.includes(msg.op)) {\n return false;\n }\n\n if (msg.op === 'message') {\n if (!msg.data) {\n return false;\n }\n\n if (!msg.operator_id) {\n return false;\n }\n\n if (!this.isValidOperatorId(msg.operator_id)) {\n return false;\n }\n }\n\n if (msg.op === 'close_connection') {\n if (!msg.operator_id) {\n return false;\n }\n\n if (!this.isValidOperatorId(msg.operator_id)) {\n return false;\n }\n }\n\n return true;\n });\n\n return {\n messages: filteredMessages,\n };\n } catch (error: any) {\n if (this.logger) {\n this.logger.error(`Error fetching messages: ${error.message}`);\n }\n return { messages: [] };\n }\n }\n\n /**\n * Public method to retrieve topic information using the internal mirror node client.\n *\n * @param topicId The ID of the topic to query.\n * @returns Topic information or null if not found or an error occurs.\n */\n async getPublicTopicInfo(topicId: string): Promise<TopicResponse | null> {\n try {\n return await this.mirrorNode.getTopicInfo(topicId);\n } catch (error) {\n this.logger.error(\n `Error getting public topic info for ${topicId}:`,\n error\n );\n return null;\n }\n }\n\n /**\n * Checks if a user can submit to a topic and determines if a fee is required\n * @param topicId The topic ID to check\n * @param userAccountId The account ID of the user attempting to submit\n * @returns Object with canSubmit, requiresFee, and optional reason\n */\n public async canSubmitToTopic(\n topicId: string,\n userAccountId: string\n ): Promise<{ canSubmit: boolean; requiresFee: boolean; reason?: string }> {\n try {\n const topicInfo = await this.mirrorNode.getTopicInfo(topicId);\n\n if (!topicInfo) {\n return {\n canSubmit: false,\n requiresFee: false,\n reason: 'Topic does not exist',\n };\n }\n\n if (!topicInfo.submit_key?.key) {\n return { canSubmit: true, requiresFee: false };\n }\n\n try {\n const userPublicKey = await this.mirrorNode.getPublicKey(userAccountId);\n\n if (topicInfo.submit_key._type === 'ProtobufEncoded') {\n const keyBytes = Buffer.from(topicInfo.submit_key.key, 'hex');\n const hasAccess = await this.mirrorNode.checkKeyListAccess(\n keyBytes,\n userPublicKey\n );\n\n if (hasAccess) {\n return { canSubmit: true, requiresFee: false };\n }\n } else {\n const topicSubmitKey = PublicKey.fromString(topicInfo.submit_key.key);\n if (userPublicKey.toString() === topicSubmitKey.toString()) {\n return { canSubmit: true, requiresFee: false };\n }\n }\n } catch (error) {\n this.logger.error(\n `Key validation error: ${\n error instanceof Error ? error.message : String(error)\n }`\n );\n }\n\n if (\n topicInfo.fee_schedule_key?.key &&\n topicInfo.custom_fees?.fixed_fees?.length > 0\n ) {\n return {\n canSubmit: true,\n requiresFee: true,\n reason: 'Requires fee payment via HIP-991',\n };\n }\n\n return {\n canSubmit: false,\n requiresFee: false,\n reason: 'User does not have submit permission for this topic',\n };\n } catch (error) {\n const errorMessage =\n error instanceof Error ? error.message : String(error);\n this.logger.error(`Topic submission validation error: ${errorMessage}`);\n return {\n canSubmit: false,\n requiresFee: false,\n reason: `Error: ${errorMessage}`,\n };\n }\n }\n\n /**\n * Get all messages from a topic\n * @param topicId The topic ID to get messages from\n * @returns All messages from the topic\n */\n public async getMessages(\n topicId: string\n ): Promise<{ messages: HCSMessage[] }> {\n try {\n const messages = await this.mirrorNode.getTopicMessages(topicId);\n\n const validatedMessages = messages.filter((msg) => {\n if (msg.p !== 'hcs-10') {\n return false;\n }\n\n if (msg.op === 'message') {\n if (!msg.data) {\n return false;\n }\n\n if (msg.operator_id) {\n if (!this.isValidOperatorId(msg.operator_id)) {\n return false;\n }\n }\n }\n\n return true;\n });\n\n return {\n messages: validatedMessages,\n };\n } catch (error: any) {\n if (this.logger) {\n this.logger.error(`Error fetching messages: ${error.message}`);\n }\n return { messages: [] };\n }\n }\n\n /**\n * Requests an account from the mirror node\n * @param account The account ID to request\n * @returns The account response\n */\n public async requestAccount(account: string): Promise<AccountResponse> {\n try {\n return await this.mirrorNode.requestAccount(account);\n } catch (e) {\n this.logger.error('Failed to fetch account', e);\n throw e;\n }\n }\n\n /**\n * Retrieves the memo for an account\n * @param accountId The account ID to retrieve the memo for\n * @returns The memo\n */\n public async getAccountMemo(accountId: string): Promise<string | null> {\n return await this.mirrorNode.getAccountMemo(accountId);\n }\n\n /**\n * Retrieves the profile for an account\n * @param accountId The account ID to retrieve the profile for\n * @param disableCache Whether to disable caching of the result\n * @returns The profile\n */\n public async retrieveProfile(\n accountId: string,\n disableCache?: boolean\n ): Promise<ProfileResponse> {\n this.logger.debug(`Retrieving profile for account: ${accountId}`);\n\n const cacheKey = `${accountId}-${this.network}`;\n\n if (!disableCache) {\n const cachedProfileResponse = HCS10Cache.getInstance().get(cacheKey);\n if (cachedProfileResponse) {\n this.logger.debug(`Cache hit for profile: ${accountId}`);\n return cachedProfileResponse;\n }\n }\n try {\n const hcs11Client = new HCS11Client({\n network: this.network as 'mainnet' | 'testnet',\n auth: {\n operatorId: '0.0.0', // Read-only operations only\n },\n logLevel: 'info',\n });\n\n const profileResult = await hcs11Client.fetchProfileByAccountId(\n accountId,\n this.network\n );\n\n if (!profileResult?.success) {\n this.logger.error(\n `Failed to retrieve profile for account ID: ${accountId}`,\n profileResult?.error\n );\n return {\n profile: null,\n success: false,\n error:\n profileResult?.error ||\n `Failed to retrieve profile for account ID: ${accountId}`,\n };\n }\n\n const profile = profileResult.profile;\n let topicInfo: TopicInfo | null = null;\n\n if (\n profileResult.topicInfo?.inboundTopic &&\n profileResult.topicInfo?.outboundTopic &&\n profileResult.topicInfo?.profileTopicId\n ) {\n topicInfo = {\n inboundTopic: profileResult.topicInfo.inboundTopic,\n outboundTopic: profileResult.topicInfo.outboundTopic,\n profileTopicId: profileResult.topicInfo.profileTopicId,\n };\n }\n\n const responseToCache: ProfileResponse = {\n profile,\n topicInfo,\n success: true,\n };\n HCS10Cache.getInstance().set(cacheKey, responseToCache);\n return responseToCache;\n } catch (error) {\n this.logger.error('Failed to retrieve profile:', error);\n return {\n profile: null,\n success: false,\n error: error instanceof Error ? error.message : String(error),\n };\n }\n }\n\n /**\n * @deprecated Use retrieveCommunicationTopics instead\n * @param accountId The account ID to retrieve the outbound connect topic for\n * @returns {TopicInfo} Topic Info from target profile.\n */\n public async retrieveOutboundConnectTopic(\n accountId: string\n ): Promise<TopicInfo> {\n return await this.retrieveCommunicationTopics(accountId, true);\n }\n\n /**\n * Retrieves the communication topics for an account\n * @param accountId The account ID to retrieve the communication topics for\n * @param disableCache Whether to disable caching of the result\n * @returns {TopicInfo} Topic Info from target profile.\n */\n public async retrieveCommunicationTopics(\n accountId: string,\n disableCache?: boolean\n ): Promise<TopicInfo> {\n this.logger.info(`Retrieving topics for account: ${accountId}`);\n const cacheKey = `${accountId}-${this.network}`;\n\n try {\n const profileResponse = await this.retrieveProfile(\n accountId,\n disableCache\n );\n\n if (!profileResponse?.success) {\n throw new Error(profileResponse.error || 'Failed to retrieve profile');\n }\n\n const profile = profileResponse.profile;\n\n if (!profile.inboundTopicId || !profile.outboundTopicId) {\n throw new Error(\n `Invalid HCS-11 profile for HCS-10 agent: missing inboundTopicId or outboundTopicId`\n );\n }\n\n if (!profileResponse.topicInfo) {\n throw new Error(\n `TopicInfo is missing in the profile for account ${accountId}`\n );\n }\n\n return profileResponse.topicInfo;\n } catch (error) {\n this.logger.error('Failed to retrieve topic info:', error);\n throw error;\n }\n }\n\n /**\n * Retrieves outbound messages for an agent\n * @param agentAccountId The account ID of the agent\n * @returns The outbound messages\n */\n public async retrieveOutboundMessages(\n agentAccountId: string\n ): Promise<HCSMessage[]> {\n try {\n const topicInfo = await this.retrieveCommunicationTopics(agentAccountId);\n if (!topicInfo) {\n this.logger.warn(\n `No outbound connect topic found for agentAccountId: ${agentAccountId}`\n );\n return [];\n }\n const response = await this.getMessages(topicInfo.outboundTopic);\n return response.messages.filter(\n (msg) =>\n msg.p === 'hcs-10' &&\n (msg.op === 'connection_request' ||\n msg.op === 'connection_created' ||\n msg.op === 'message')\n );\n } catch (error) {\n this.logger.error('Failed to retrieve outbound messages:', error);\n return [];\n }\n }\n\n /**\n * Checks if a connection has been created for an agent\n * @param agentAccountId The account ID of the agent\n * @param connectionId The ID of the connection\n * @returns True if the connection has been created, false otherwise\n */\n public async hasConnectionCreated(\n agentAccountId: string,\n connectionId: number\n ): Promise<boolean> {\n try {\n const outBoundTopic = await this.retrieveCommunicationTopics(\n agentAccountId\n );\n const messages = await this.retrieveOutboundMessages(\n outBoundTopic.outboundTopic\n );\n return messages.some(\n (msg) =>\n msg.op === 'connection_created' && msg.connection_id === connectionId\n );\n } catch (error) {\n this.logger.error('Failed to check connection created:', error);\n return false;\n }\n }\n\n /**\n * Gets message content, resolving any HRL references if needed\n * @param data The message data which might be an HRL reference\n * @returns The resolved content\n */\n async getMessageContent(data: string): Promise<string> {\n const hrlPattern = /^hcs:\\/\\/(\\d+)\\/([0-9.]+)$/;\n const match = data.match(hrlPattern);\n\n if (!match) {\n return data;\n }\n\n const [_, standard, topicId] = match;\n\n this.logger.info(\n `Resolving HRL reference: standard=${standard}, topicId=${topicId}`\n );\n\n try {\n const cdnUrl = `https://kiloscribe.com/api/inscription-cdn/${topicId}?network=${this.network}`;\n const response = await axios.get(cdnUrl);\n\n if (!response.data) {\n throw new Error(`Failed to fetch content from topic: ${topicId}`);\n }\n\n return (\n response.data.content ||\n response.data.text ||\n JSON.stringify(response.data)\n );\n } catch (error) {\n this.logger.error(\n `Error resolving HRL reference: ${\n error instanceof Error ? error.message : 'Unknown error'\n }`\n );\n throw new Error(\n `Failed to resolve HRL reference: ${\n error instanceof Error ? error.message : 'Unknown error'\n }`\n );\n }\n }\n\n /**\n * Submits a connection request to an inbound topic\n * @param inboundTopicId The ID of the inbound topic\n * @param memo An optional memo for the message\n * @returns The transaction receipt\n */\n async submitConnectionRequest(\n inboundTopicId: string,\n memo: string\n ): Promise<TransactionReceipt> {\n const accountResponse = this.getAccountAndSigner();\n if (!accountResponse?.accountId) {\n throw new Error('Operator account ID is not set');\n }\n const operatorId = await this.getOperatorId();\n const accountId = accountResponse.accountId;\n\n const submissionCheck = await this.canSubmitToTopic(\n inboundTopicId,\n accountId\n );\n\n if (!submissionCheck?.canSubmit) {\n throw new Error(`Cannot submit to topic: ${submissionCheck.reason}`);\n }\n\n const inboundAccountOwner = await this.retrieveInboundAccountId(\n inboundTopicId\n );\n\n if (!inboundAccountOwner) {\n throw new Error('Failed to retrieve topic info account ID');\n }\n\n const connectionRequestMessage = {\n p: 'hcs-10',\n op: 'connection_request',\n operator_id: operatorId,\n m: memo,\n };\n\n const requiresFee = submissionCheck.requiresFee;\n const response = await this.submitPayload(\n inboundTopicId,\n connectionRequestMessage,\n undefined,\n requiresFee\n );\n\n this.logger.info(\n `Submitted connection request to topic ID: ${inboundTopicId}`\n );\n\n const outboundTopic = await this.retrieveCommunicationTopics(accountId);\n\n if (!outboundTopic) {\n throw new Error('Failed to retrieve outbound topic');\n }\n\n const responseSequenceNumber = response.topicSequenceNumber?.toNumber();\n\n if (!responseSequenceNumber) {\n throw new Error('Failed to get response sequence number');\n }\n\n const requestorOperatorId = `${inboundTopicId}@${inboundAccountOwner}`;\n\n await this.submitPayload(outboundTopic.outboundTopic, {\n ...connectionRequestMessage,\n outbound_topic_id: outboundTopic.outboundTopic,\n connection_request_id: responseSequenceNumber,\n operator_id: requestorOperatorId,\n });\n\n return response;\n }\n\n /**\n * Records an outbound connection confirmation\n * @param outboundTopicId The ID of the outbound topic\n * @param connectionRequestId The ID of the connection request\n * @param confirmedRequestId The ID of the confirmed request\n * @param connectionTopicId The ID of the connection topic\n * @param operatorId The operator ID of the original message sender.\n * @param memo An optional memo for the message\n */\n public async recordOutboundConnectionConfirmation({\n outboundTopicId,\n requestorOutboundTopicId,\n connectionRequestId,\n confirmedRequestId,\n connectionTopicId,\n operatorId,\n memo,\n }: {\n outboundTopicId: string;\n requestorOutboundTopicId: string;\n connectionRequestId: number;\n confirmedRequestId: number;\n connectionTopicId: string;\n operatorId: string;\n memo: string;\n }): Promise<TransactionReceipt> {\n const payload = {\n p: 'hcs-10',\n op: 'connection_created',\n connection_topic_id: connectionTopicId,\n outbound_topic_id: outboundTopicId,\n requestor_outbound_topic_id: requestorOutboundTopicId,\n confirmed_request_id: confirmedRequestId,\n connection_request_id: connectionRequestId,\n operator_id: operatorId,\n m: memo,\n };\n return await this.submitPayload(outboundTopicId, payload);\n }\n\n /**\n * Waits for confirmation of a connection request\n * @param inboundTopicId Inbound topic ID\n * @param connectionRequestId Connection request ID\n * @param maxAttempts Maximum number of attempts\n * @param delayMs Delay between attempts in milliseconds\n * @returns Connection confirmation details\n */\n async waitForConnectionConfirmation(\n inboundTopicId: string,\n connectionRequestId: number,\n maxAttempts = 60,\n delayMs = 2000,\n recordConfirmation = true\n ): Promise<WaitForConnectionConfirmationResponse> {\n this.logger.info(\n `Waiting for connection confirmation on inbound topic ${inboundTopicId} for request ID ${connectionRequestId}`\n );\n\n for (let attempt = 0; attempt < maxAttempts; attempt++) {\n this.logger.info(\n `Attempt ${attempt + 1}/${maxAttempts} to find connection confirmation`\n );\n const messages = await this.mirrorNode.getTopicMessages(inboundTopicId);\n\n const connectionCreatedMessages = messages.filter(\n (m) => m.op === 'connection_created'\n );\n\n this.logger.info(\n `Found ${connectionCreatedMessages.length} connection_created messages`\n );\n\n if (connectionCreatedMessages.length > 0) {\n for (const message of connectionCreatedMessages) {\n if (Number(message.connection_id) === Number(connectionRequestId)) {\n const confirmationResult = {\n connectionTopicId: message.connection_topic_id,\n sequence_number: Number(message.sequence_number),\n confirmedBy: message.operator_id,\n memo: message.m,\n };\n\n const confirmedByAccountId = this.extractAccountFromOperatorId(\n confirmationResult.confirmedBy\n );\n\n const account = this.getAccountAndSigner();\n const confirmedByConnectionTopics =\n await this.retrieveCommunicationTopics(confirmedByAccountId);\n\n const agentConnectionTopics =\n await this.retrieveCommunicationTopics(account.accountId);\n\n this.logger.info(\n 'Connection confirmation found',\n confirmationResult\n );\n\n if (recordConfirmation) {\n /**\n * Record's the confirmation of the connection request from the\n * confirmedBy account to the agent account.\n */\n await this.recordOutboundConnectionConfirmation({\n requestorOutboundTopicId:\n confirmedByConnectionTopics.outboundTopic,\n outboundTopicId: agentConnectionTopics.outboundTopic,\n connectionRequestId,\n confirmedRequestId: confirmationResult.sequence_number,\n connectionTopicId: confirmationResult.connectionTopicId,\n operatorId: confirmationResult.confirmedBy,\n memo: confirmationResult.memo || 'Connection confirmed',\n });\n }\n\n return confirmationResult;\n }\n }\n }\n\n if (attempt < maxAttempts - 1) {\n this.logger.info(\n `No matching confirmation found, waiting ${delayMs}ms before retrying...`\n );\n await new Promise((resolve) => setTimeout(resolve, delayMs));\n }\n }\n\n throw new Error(\n `Connection confirmation not found after ${maxAttempts} attempts for request ID ${connectionRequestId}`\n );\n }\n\n /**\n * Retrieves the operator ID for the current agent\n * @param disableCache Whether to disable caching of the result\n * @returns The operator ID\n */\n public async getOperatorId(disableCache?: boolean): Promise<string> {\n if (this.operatorId && !disableCache) {\n return this.operatorId;\n }\n\n const accountResponse = this.getAccountAndSigner();\n\n if (!accountResponse.accountId) {\n throw new Error('Operator ID not found');\n }\n\n const profile = await this.retrieveProfile(accountResponse.accountId);\n\n if (!profile.success) {\n throw new Error('Failed to retrieve profile');\n }\n\n const operatorId = `${profile.topicInfo?.inboundTopic}@${accountResponse.accountId}`;\n this.operatorId = operatorId;\n return operatorId;\n }\n\n /**\n * Retrieves the account ID of the owner of an inbound topic\n * @param inboundTopicId The ID of the inbound topic\n * @returns The account ID of the owner of the inbound topic\n */\n public async retrieveInboundAccountId(\n inboundTopicId: string\n ): Promise<string> {\n const topicInfo = await this.mirrorNode.getTopicInfo(inboundTopicId);\n\n if (!topicInfo?.memo) {\n throw new Error('Failed to retrieve topic info');\n }\n\n const topicInfoMemo = topicInfo.memo.toString();\n const topicInfoParts = topicInfoMemo.split(':');\n const inboundAccountOwner = topicInfoParts?.[4];\n\n if (!inboundAccountOwner) {\n throw new Error('Failed to retrieve topic info account ID');\n }\n\n return inboundAccountOwner;\n }\n\n public clearCache(): void {\n HCS10Cache.getInstance().clear();\n }\n\n /**\n * Generates a standard HCS-10 memo string.\n * @param type The type of topic memo ('inbound', 'outbound', 'connection').\n * @param options Configuration options for the memo.\n * @returns The formatted memo string.\n * @protected\n */\n protected _generateHcs10Memo(\n type: Hcs10MemoType,\n options: {\n ttl?: number;\n accountId?: string;\n inboundTopicId?: string;\n connectionId?: number;\n }\n ): string {\n const ttl = options.ttl ?? 60; // Default TTL to 60 if not provided\n\n switch (type) {\n case Hcs10MemoType.INBOUND:\n if (!options.accountId) {\n throw new Error('accountId is required for inbound memo');\n }\n return `hcs-10:0:${ttl}:0:${options.accountId}`;\n case Hcs10MemoType.OUTBOUND:\n return `hcs-10:0:${ttl}:1`;\n case Hcs10MemoType.CONNECTION:\n if (!options.inboundTopicId || options.connectionId === undefined) {\n throw new Error(\n 'inboundTopicId and connectionId are required for connection memo'\n );\n }\n return `hcs-10:1:${ttl}:2:${options.inboundTopicId}:${options.connectionId}`;\n default:\n throw new Error(`Invalid HCS-10 memo type: ${type}`);\n }\n }\n\n protected async checkRegistrationStatus(\n transactionId: string,\n network: string,\n baseUrl: string\n ): Promise<{ status: 'pending' | 'success' | 'failed' }> {\n try {\n const response = await fetch(`${baseUrl}/api/request-confirm`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'X-Network': network,\n },\n body: JSON.stringify({ transaction_id: transactionId }),\n });\n\n if (!response.ok) {\n throw new Error(\n `Failed to confirm registration: ${response.statusText}`\n );\n }\n\n return await response.json();\n } catch (error) {\n this.logger.error(`Error checking registration status: ${error}`);\n throw error;\n }\n }\n\n /**\n * Validates if an operator_id follows the correct format (agentTopicId@accountId)\n * @param operatorId The operator ID to validate\n * @returns True if the format is valid, false otherwise\n */\n protected isValidOperatorId(operatorId: string): boolean {\n if (!operatorId) {\n return false;\n }\n\n const parts = operatorId.split('@');\n\n if (parts.length !== 2) {\n return false;\n }\n\n const agentTopicId = parts[0];\n const accountId = parts[1];\n\n if (!agentTopicId) {\n return false;\n }\n\n if (!accountId) {\n return false;\n }\n\n const hederaIdPattern = /^[0-9]+\\.[0-9]+\\.[0-9]+$/;\n\n if (!hederaIdPattern.test(accountId)) {\n return false;\n }\n\n if (!hederaIdPattern.test(agentTopicId)) {\n return false;\n }\n\n return true;\n }\n}\n\nexport class HCS10Cache {\n private static instance: HCS10Cache;\n private cache: Map<string, ProfileResponse>;\n private cacheExpiry: Map<string, number>;\n private readonly CACHE_TTL = 3600000;\n\n private constructor() {\n this.cache = new Map();\n this.cacheExpiry = new Map();\n }\n\n static getInstance(): HCS10Cache {\n if (!HCS10Cache.instance) {\n HCS10Cache.instance = new HCS10Cache();\n }\n return HCS10Cache.instance;\n }\n\n set(key: string, value: ProfileResponse): void {\n this.cache.set(key, value);\n this.cacheExpiry.set(key, Date.now() + this.CACHE_TTL);\n }\n\n get(key: string): ProfileResponse | undefined {\n const expiry = this.cacheExpiry.get(key);\n if (expiry && expiry > Date.now()) {\n return this.cache.get(key);\n }\n if (expiry) {\n this.cache.delete(key);\n this.cacheExpiry.delete(key);\n }\n return undefined;\n }\n\n clear(): void {\n this.cache.clear();\n this.cacheExpiry.clear();\n }\n}\n"],"names":["Hcs10MemoType"],"mappings":"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"}
1
+ {"version":3,"file":"standards-sdk.es5.js","sources":["../../src/hcs-10/base-client.ts"],"sourcesContent":["import { Logger, LogLevel } from '../utils/logger';\nimport { Registration } from './registrations';\nimport { HCS11Client } from '../hcs-11/client';\nimport { AccountResponse, TopicResponse } from '../services/types';\nimport { TopicInfo } from '../services/types';\nimport { TransactionReceipt, PrivateKey, PublicKey } from '@hashgraph/sdk';\nimport axios from 'axios';\nimport { NetworkType } from '../utils/types';\nimport { HederaMirrorNode } from '../services';\nimport { WaitForConnectionConfirmationResponse } from './types';\n\nexport enum Hcs10MemoType {\n INBOUND = 'inbound',\n OUTBOUND = 'outbound',\n CONNECTION = 'connection',\n}\n\nexport interface HCS10Config {\n network: 'mainnet' | 'testnet';\n logLevel?: LogLevel;\n prettyPrint?: boolean;\n feeAmount?: number;\n}\n\nexport interface HCSMessage {\n p: 'hcs-10';\n op:\n | 'connection_request'\n | 'connection_created'\n | 'message'\n | 'close_connection';\n data: string;\n created?: Date;\n consensus_timestamp?: string;\n m?: string;\n payer: string;\n outbound_topic_id?: string;\n connection_request_id?: number;\n confirmed_request_id?: number;\n connection_topic_id?: string;\n connected_account_id?: string;\n requesting_account_id?: string;\n connection_id?: number;\n sequence_number: number;\n operator_id?: string;\n reason?: string;\n close_method?: string;\n}\n\nexport interface ProfileResponse {\n profile: any;\n topicInfo?: TopicInfo;\n success: boolean;\n error?: string;\n}\n\nexport abstract class HCS10BaseClient extends Registration {\n protected network: string;\n protected logger: Logger;\n protected mirrorNode: HederaMirrorNode;\n protected feeAmount: number;\n\n protected operatorId: string;\n\n constructor(config: HCS10Config) {\n super();\n this.network = config.network;\n this.logger = Logger.getInstance({\n level: config.logLevel || 'info',\n module: 'HCS10-BaseClient',\n prettyPrint: config.prettyPrint,\n });\n this.mirrorNode = new HederaMirrorNode(\n config.network as NetworkType,\n this.logger\n );\n this.feeAmount = config.feeAmount || 0.001;\n }\n\n abstract submitPayload(\n topicId: string,\n payload: object | string,\n submitKey?: PrivateKey,\n requiresFee?: boolean\n ): Promise<TransactionReceipt>;\n\n abstract getAccountAndSigner(): { accountId: string; signer: any };\n\n public extractTopicFromOperatorId(operatorId: string): string {\n if (!operatorId) {\n return '';\n }\n const parts = operatorId.split('@');\n if (parts.length > 0) {\n return parts[0];\n }\n return '';\n }\n\n public extractAccountFromOperatorId(operatorId: string): string {\n if (!operatorId) {\n return '';\n }\n const parts = operatorId.split('@');\n if (parts.length > 1) {\n return parts[1];\n }\n return '';\n }\n\n /**\n * Get a stream of messages from a connection topic\n * @param topicId The connection topic ID to get messages from\n * @returns A stream of filtered messages valid for connection topics\n */\n public async getMessageStream(\n topicId: string\n ): Promise<{ messages: HCSMessage[] }> {\n try {\n const messages = await this.mirrorNode.getTopicMessages(topicId);\n const validOps = ['message', 'close_connection'];\n\n const filteredMessages = messages.filter((msg) => {\n if (msg.p !== 'hcs-10' || !validOps.includes(msg.op)) {\n return false;\n }\n\n if (msg.op === 'message') {\n if (!msg.data) {\n return false;\n }\n\n if (!msg.operator_id) {\n return false;\n }\n\n if (!this.isValidOperatorId(msg.operator_id)) {\n return false;\n }\n }\n\n if (msg.op === 'close_connection') {\n if (!msg.operator_id) {\n return false;\n }\n\n if (!this.isValidOperatorId(msg.operator_id)) {\n return false;\n }\n }\n\n return true;\n });\n\n return {\n messages: filteredMessages,\n };\n } catch (error: any) {\n if (this.logger) {\n this.logger.error(`Error fetching messages: ${error.message}`);\n }\n return { messages: [] };\n }\n }\n\n /**\n * Public method to retrieve topic information using the internal mirror node client.\n *\n * @param topicId The ID of the topic to query.\n * @returns Topic information or null if not found or an error occurs.\n */\n async getPublicTopicInfo(topicId: string): Promise<TopicResponse | null> {\n try {\n return await this.mirrorNode.getTopicInfo(topicId);\n } catch (error) {\n this.logger.error(\n `Error getting public topic info for ${topicId}:`,\n error\n );\n return null;\n }\n }\n\n /**\n * Checks if a user can submit to a topic and determines if a fee is required\n * @param topicId The topic ID to check\n * @param userAccountId The account ID of the user attempting to submit\n * @returns Object with canSubmit, requiresFee, and optional reason\n */\n public async canSubmitToTopic(\n topicId: string,\n userAccountId: string\n ): Promise<{ canSubmit: boolean; requiresFee: boolean; reason?: string }> {\n try {\n const topicInfo = await this.mirrorNode.getTopicInfo(topicId);\n\n if (!topicInfo) {\n return {\n canSubmit: false,\n requiresFee: false,\n reason: 'Topic does not exist',\n };\n }\n\n if (!topicInfo.submit_key?.key) {\n return { canSubmit: true, requiresFee: false };\n }\n\n try {\n const userPublicKey = await this.mirrorNode.getPublicKey(userAccountId);\n\n if (topicInfo.submit_key._type === 'ProtobufEncoded') {\n const keyBytes = Buffer.from(topicInfo.submit_key.key, 'hex');\n const hasAccess = await this.mirrorNode.checkKeyListAccess(\n keyBytes,\n userPublicKey\n );\n\n if (hasAccess) {\n return { canSubmit: true, requiresFee: false };\n }\n } else {\n const topicSubmitKey = PublicKey.fromString(topicInfo.submit_key.key);\n if (userPublicKey.toString() === topicSubmitKey.toString()) {\n return { canSubmit: true, requiresFee: false };\n }\n }\n } catch (error) {\n this.logger.error(\n `Key validation error: ${\n error instanceof Error ? error.message : String(error)\n }`\n );\n }\n\n if (\n topicInfo.fee_schedule_key?.key &&\n topicInfo.custom_fees?.fixed_fees?.length > 0\n ) {\n return {\n canSubmit: true,\n requiresFee: true,\n reason: 'Requires fee payment via HIP-991',\n };\n }\n\n return {\n canSubmit: false,\n requiresFee: false,\n reason: 'User does not have submit permission for this topic',\n };\n } catch (error) {\n const errorMessage =\n error instanceof Error ? error.message : String(error);\n this.logger.error(`Topic submission validation error: ${errorMessage}`);\n return {\n canSubmit: false,\n requiresFee: false,\n reason: `Error: ${errorMessage}`,\n };\n }\n }\n\n /**\n * Get all messages from a topic\n * @param topicId The topic ID to get messages from\n * @returns All messages from the topic\n */\n public async getMessages(\n topicId: string\n ): Promise<{ messages: HCSMessage[] }> {\n try {\n const messages = await this.mirrorNode.getTopicMessages(topicId);\n\n const validatedMessages = messages.filter((msg) => {\n if (msg.p !== 'hcs-10') {\n return false;\n }\n\n if (msg.op === 'message') {\n if (!msg.data) {\n return false;\n }\n\n if (msg.operator_id) {\n if (!this.isValidOperatorId(msg.operator_id)) {\n return false;\n }\n }\n }\n\n return true;\n });\n\n return {\n messages: validatedMessages,\n };\n } catch (error: any) {\n if (this.logger) {\n this.logger.error(`Error fetching messages: ${error.message}`);\n }\n return { messages: [] };\n }\n }\n\n /**\n * Requests an account from the mirror node\n * @param account The account ID to request\n * @returns The account response\n */\n public async requestAccount(account: string): Promise<AccountResponse> {\n try {\n return await this.mirrorNode.requestAccount(account);\n } catch (e) {\n this.logger.error('Failed to fetch account', e);\n throw e;\n }\n }\n\n /**\n * Retrieves the memo for an account\n * @param accountId The account ID to retrieve the memo for\n * @returns The memo\n */\n public async getAccountMemo(accountId: string): Promise<string | null> {\n return await this.mirrorNode.getAccountMemo(accountId);\n }\n\n /**\n * Retrieves the profile for an account\n * @param accountId The account ID to retrieve the profile for\n * @param disableCache Whether to disable caching of the result\n * @returns The profile\n */\n public async retrieveProfile(\n accountId: string,\n disableCache?: boolean\n ): Promise<ProfileResponse> {\n this.logger.debug(`Retrieving profile for account: ${accountId}`);\n\n const cacheKey = `${accountId}-${this.network}`;\n\n if (!disableCache) {\n const cachedProfileResponse = HCS10Cache.getInstance().get(cacheKey);\n if (cachedProfileResponse) {\n this.logger.debug(`Cache hit for profile: ${accountId}`);\n return cachedProfileResponse;\n }\n }\n try {\n const hcs11Client = new HCS11Client({\n network: this.network as 'mainnet' | 'testnet',\n auth: {\n operatorId: '0.0.0', // Read-only operations only\n },\n logLevel: 'info',\n });\n\n const profileResult = await hcs11Client.fetchProfileByAccountId(\n accountId,\n this.network\n );\n\n if (!profileResult?.success) {\n this.logger.error(\n `Failed to retrieve profile for account ID: ${accountId}`,\n profileResult?.error\n );\n return {\n profile: null,\n success: false,\n error:\n profileResult?.error ||\n `Failed to retrieve profile for account ID: ${accountId}`,\n };\n }\n\n const profile = profileResult.profile;\n let topicInfo: TopicInfo | null = null;\n\n if (\n profileResult.topicInfo?.inboundTopic &&\n profileResult.topicInfo?.outboundTopic &&\n profileResult.topicInfo?.profileTopicId\n ) {\n topicInfo = {\n inboundTopic: profileResult.topicInfo.inboundTopic,\n outboundTopic: profileResult.topicInfo.outboundTopic,\n profileTopicId: profileResult.topicInfo.profileTopicId,\n };\n }\n\n const responseToCache: ProfileResponse = {\n profile,\n topicInfo,\n success: true,\n };\n HCS10Cache.getInstance().set(cacheKey, responseToCache);\n return responseToCache;\n } catch (e: any) {\n const error = e as Error;\n const logMessage = `Failed to retrieve profile: ${error.message}`;\n this.logger.error(logMessage);\n return {\n profile: null,\n success: false,\n error: logMessage,\n };\n }\n }\n\n /**\n * @deprecated Use retrieveCommunicationTopics instead\n * @param accountId The account ID to retrieve the outbound connect topic for\n * @returns {TopicInfo} Topic Info from target profile.\n */\n public async retrieveOutboundConnectTopic(\n accountId: string\n ): Promise<TopicInfo> {\n return await this.retrieveCommunicationTopics(accountId, true);\n }\n\n /**\n * Retrieves the communication topics for an account\n * @param accountId The account ID to retrieve the communication topics for\n * @param disableCache Whether to disable caching of the result\n * @returns {TopicInfo} Topic Info from target profile.\n */\n public async retrieveCommunicationTopics(\n accountId: string,\n disableCache?: boolean\n ): Promise<TopicInfo> {\n this.logger.info(`Retrieving topics for account: ${accountId}`);\n const cacheKey = `${accountId}-${this.network}`;\n\n try {\n const profileResponse = await this.retrieveProfile(\n accountId,\n disableCache\n );\n\n if (!profileResponse?.success) {\n throw new Error(profileResponse.error || 'Failed to retrieve profile');\n }\n\n const profile = profileResponse.profile;\n\n if (!profile.inboundTopicId || !profile.outboundTopicId) {\n throw new Error(\n `Invalid HCS-11 profile for HCS-10 agent: missing inboundTopicId or outboundTopicId`\n );\n }\n\n if (!profileResponse.topicInfo) {\n throw new Error(\n `TopicInfo is missing in the profile for account ${accountId}`\n );\n }\n\n return profileResponse.topicInfo;\n } catch (e: any) {\n const error = e as Error;\n const logMessage = `Failed to retrieve topic info: ${error.message}`;\n this.logger.error(logMessage);\n throw error;\n }\n }\n\n /**\n * Retrieves outbound messages for an agent\n * @param agentAccountId The account ID of the agent\n * @returns The outbound messages\n */\n public async retrieveOutboundMessages(\n agentAccountId: string\n ): Promise<HCSMessage[]> {\n try {\n const topicInfo = await this.retrieveCommunicationTopics(agentAccountId);\n if (!topicInfo) {\n this.logger.warn(\n `No outbound connect topic found for agentAccountId: ${agentAccountId}`\n );\n return [];\n }\n const response = await this.getMessages(topicInfo.outboundTopic);\n return response.messages.filter(\n (msg) =>\n msg.p === 'hcs-10' &&\n (msg.op === 'connection_request' ||\n msg.op === 'connection_created' ||\n msg.op === 'message')\n );\n } catch (e: any) {\n const error = e as Error;\n const logMessage = `Failed to retrieve outbound messages: ${error.message}`;\n this.logger.error(logMessage);\n return [];\n }\n }\n\n /**\n * Checks if a connection has been created for an agent\n * @param agentAccountId The account ID of the agent\n * @param connectionId The ID of the connection\n * @returns True if the connection has been created, false otherwise\n */\n public async hasConnectionCreated(\n agentAccountId: string,\n connectionId: number\n ): Promise<boolean> {\n try {\n const outBoundTopic = await this.retrieveCommunicationTopics(\n agentAccountId\n );\n const messages = await this.retrieveOutboundMessages(\n outBoundTopic.outboundTopic\n );\n return messages.some(\n (msg) =>\n msg.op === 'connection_created' && msg.connection_id === connectionId\n );\n } catch (e: any) {\n const error = e as Error;\n const logMessage = `Failed to check connection created: ${error.message}`;\n this.logger.error(logMessage);\n return false;\n }\n }\n\n /**\n * Gets message content, resolving any HRL references if needed\n * @param data The message data which might be an HRL reference\n * @returns The resolved content\n */\n async getMessageContent(data: string): Promise<string> {\n const hrlPattern = /^hcs:\\/\\/(\\d+)\\/([0-9.]+)$/;\n const match = data.match(hrlPattern);\n\n if (!match) {\n return data;\n }\n\n const [_, standard, topicId] = match;\n\n this.logger.info(\n `Resolving HRL reference: standard=${standard}, topicId=${topicId}`\n );\n\n try {\n const cdnUrl = `https://kiloscribe.com/api/inscription-cdn/${topicId}?network=${this.network}`;\n const response = await axios.get(cdnUrl);\n\n if (!response.data) {\n throw new Error(`Failed to fetch content from topic: ${topicId}`);\n }\n\n return (\n response.data.content ||\n response.data.text ||\n JSON.stringify(response.data)\n );\n } catch (e: any) {\n const error = e as Error;\n const logMessage = `Error resolving HRL reference: ${error.message}`;\n this.logger.error(logMessage);\n throw new Error(logMessage);\n }\n }\n\n /**\n * Submits a connection request to an inbound topic\n * @param inboundTopicId The ID of the inbound topic\n * @param memo An optional memo for the message\n * @returns The transaction receipt\n */\n async submitConnectionRequest(\n inboundTopicId: string,\n memo: string\n ): Promise<TransactionReceipt> {\n const accountResponse = this.getAccountAndSigner();\n if (!accountResponse?.accountId) {\n throw new Error('Operator account ID is not set');\n }\n const operatorId = await this.getOperatorId();\n const accountId = accountResponse.accountId;\n\n const submissionCheck = await this.canSubmitToTopic(\n inboundTopicId,\n accountId\n );\n\n if (!submissionCheck?.canSubmit) {\n throw new Error(`Cannot submit to topic: ${submissionCheck.reason}`);\n }\n\n const inboundAccountOwner = await this.retrieveInboundAccountId(\n inboundTopicId\n );\n\n if (!inboundAccountOwner) {\n throw new Error('Failed to retrieve topic info account ID');\n }\n\n const connectionRequestMessage = {\n p: 'hcs-10',\n op: 'connection_request',\n operator_id: operatorId,\n m: memo,\n };\n\n const requiresFee = submissionCheck.requiresFee;\n const response = await this.submitPayload(\n inboundTopicId,\n connectionRequestMessage,\n undefined,\n requiresFee\n );\n\n this.logger.info(\n `Submitted connection request to topic ID: ${inboundTopicId}`\n );\n\n const outboundTopic = await this.retrieveCommunicationTopics(accountId);\n\n if (!outboundTopic) {\n throw new Error('Failed to retrieve outbound topic');\n }\n\n const responseSequenceNumber = response.topicSequenceNumber?.toNumber();\n\n if (!responseSequenceNumber) {\n throw new Error('Failed to get response sequence number');\n }\n\n const requestorOperatorId = `${inboundTopicId}@${inboundAccountOwner}`;\n\n await this.submitPayload(outboundTopic.outboundTopic, {\n ...connectionRequestMessage,\n outbound_topic_id: outboundTopic.outboundTopic,\n connection_request_id: responseSequenceNumber,\n operator_id: requestorOperatorId,\n });\n\n return response;\n }\n\n /**\n * Records an outbound connection confirmation\n * @param outboundTopicId The ID of the outbound topic\n * @param connectionRequestId The ID of the connection request\n * @param confirmedRequestId The ID of the confirmed request\n * @param connectionTopicId The ID of the connection topic\n * @param operatorId The operator ID of the original message sender.\n * @param memo An optional memo for the message\n */\n public async recordOutboundConnectionConfirmation({\n outboundTopicId,\n requestorOutboundTopicId,\n connectionRequestId,\n confirmedRequestId,\n connectionTopicId,\n operatorId,\n memo,\n }: {\n outboundTopicId: string;\n requestorOutboundTopicId: string;\n connectionRequestId: number;\n confirmedRequestId: number;\n connectionTopicId: string;\n operatorId: string;\n memo: string;\n }): Promise<TransactionReceipt> {\n const payload = {\n p: 'hcs-10',\n op: 'connection_created',\n connection_topic_id: connectionTopicId,\n outbound_topic_id: outboundTopicId,\n requestor_outbound_topic_id: requestorOutboundTopicId,\n confirmed_request_id: confirmedRequestId,\n connection_request_id: connectionRequestId,\n operator_id: operatorId,\n m: memo,\n };\n return await this.submitPayload(outboundTopicId, payload);\n }\n\n /**\n * Waits for confirmation of a connection request\n * @param inboundTopicId Inbound topic ID\n * @param connectionRequestId Connection request ID\n * @param maxAttempts Maximum number of attempts\n * @param delayMs Delay between attempts in milliseconds\n * @returns Connection confirmation details\n */\n async waitForConnectionConfirmation(\n inboundTopicId: string,\n connectionRequestId: number,\n maxAttempts = 60,\n delayMs = 2000,\n recordConfirmation = true\n ): Promise<WaitForConnectionConfirmationResponse> {\n this.logger.info(\n `Waiting for connection confirmation on inbound topic ${inboundTopicId} for request ID ${connectionRequestId}`\n );\n\n for (let attempt = 0; attempt < maxAttempts; attempt++) {\n this.logger.info(\n `Attempt ${attempt + 1}/${maxAttempts} to find connection confirmation`\n );\n const messages = await this.mirrorNode.getTopicMessages(inboundTopicId);\n\n const connectionCreatedMessages = messages.filter(\n (m) => m.op === 'connection_created'\n );\n\n this.logger.info(\n `Found ${connectionCreatedMessages.length} connection_created messages`\n );\n\n if (connectionCreatedMessages.length > 0) {\n for (const message of connectionCreatedMessages) {\n if (Number(message.connection_id) === Number(connectionRequestId)) {\n const confirmationResult = {\n connectionTopicId: message.connection_topic_id,\n sequence_number: Number(message.sequence_number),\n confirmedBy: message.operator_id,\n memo: message.m,\n };\n\n const confirmedByAccountId = this.extractAccountFromOperatorId(\n confirmationResult.confirmedBy\n );\n\n const account = this.getAccountAndSigner();\n const confirmedByConnectionTopics =\n await this.retrieveCommunicationTopics(confirmedByAccountId);\n\n const agentConnectionTopics =\n await this.retrieveCommunicationTopics(account.accountId);\n\n this.logger.info(\n 'Connection confirmation found',\n confirmationResult\n );\n\n if (recordConfirmation) {\n /**\n * Record's the confirmation of the connection request from the\n * confirmedBy account to the agent account.\n */\n await this.recordOutboundConnectionConfirmation({\n requestorOutboundTopicId:\n confirmedByConnectionTopics.outboundTopic,\n outboundTopicId: agentConnectionTopics.outboundTopic,\n connectionRequestId,\n confirmedRequestId: confirmationResult.sequence_number,\n connectionTopicId: confirmationResult.connectionTopicId,\n operatorId: confirmationResult.confirmedBy,\n memo: confirmationResult.memo || 'Connection confirmed',\n });\n }\n\n return confirmationResult;\n }\n }\n }\n\n if (attempt < maxAttempts - 1) {\n this.logger.info(\n `No matching confirmation found, waiting ${delayMs}ms before retrying...`\n );\n await new Promise((resolve) => setTimeout(resolve, delayMs));\n }\n }\n\n throw new Error(\n `Connection confirmation not found after ${maxAttempts} attempts for request ID ${connectionRequestId}`\n );\n }\n\n /**\n * Retrieves the operator ID for the current agent\n * @param disableCache Whether to disable caching of the result\n * @returns The operator ID\n */\n public async getOperatorId(disableCache?: boolean): Promise<string> {\n if (this.operatorId && !disableCache) {\n return this.operatorId;\n }\n\n const accountResponse = this.getAccountAndSigner();\n\n if (!accountResponse.accountId) {\n throw new Error('Operator ID not found');\n }\n\n const profile = await this.retrieveProfile(accountResponse.accountId);\n\n if (!profile.success) {\n throw new Error('Failed to retrieve profile');\n }\n\n const operatorId = `${profile.topicInfo?.inboundTopic}@${accountResponse.accountId}`;\n this.operatorId = operatorId;\n return operatorId;\n }\n\n /**\n * Retrieves the account ID of the owner of an inbound topic\n * @param inboundTopicId The ID of the inbound topic\n * @returns The account ID of the owner of the inbound topic\n */\n public async retrieveInboundAccountId(\n inboundTopicId: string\n ): Promise<string> {\n const topicInfo = await this.mirrorNode.getTopicInfo(inboundTopicId);\n\n if (!topicInfo?.memo) {\n throw new Error('Failed to retrieve topic info');\n }\n\n const topicInfoMemo = topicInfo.memo.toString();\n const topicInfoParts = topicInfoMemo.split(':');\n const inboundAccountOwner = topicInfoParts?.[4];\n\n if (!inboundAccountOwner) {\n throw new Error('Failed to retrieve topic info account ID');\n }\n\n return inboundAccountOwner;\n }\n\n public clearCache(): void {\n HCS10Cache.getInstance().clear();\n }\n\n /**\n * Generates a standard HCS-10 memo string.\n * @param type The type of topic memo ('inbound', 'outbound', 'connection').\n * @param options Configuration options for the memo.\n * @returns The formatted memo string.\n * @protected\n */\n protected _generateHcs10Memo(\n type: Hcs10MemoType,\n options: {\n ttl?: number;\n accountId?: string;\n inboundTopicId?: string;\n connectionId?: number;\n }\n ): string {\n const ttl = options.ttl ?? 60; // Default TTL to 60 if not provided\n\n switch (type) {\n case Hcs10MemoType.INBOUND:\n if (!options.accountId) {\n throw new Error('accountId is required for inbound memo');\n }\n return `hcs-10:0:${ttl}:0:${options.accountId}`;\n case Hcs10MemoType.OUTBOUND:\n return `hcs-10:0:${ttl}:1`;\n case Hcs10MemoType.CONNECTION:\n if (!options.inboundTopicId || options.connectionId === undefined) {\n throw new Error(\n 'inboundTopicId and connectionId are required for connection memo'\n );\n }\n return `hcs-10:1:${ttl}:2:${options.inboundTopicId}:${options.connectionId}`;\n default:\n throw new Error(`Invalid HCS-10 memo type: ${type}`);\n }\n }\n\n protected async checkRegistrationStatus(\n transactionId: string,\n network: string,\n baseUrl: string\n ): Promise<{ status: 'pending' | 'success' | 'failed' }> {\n try {\n const response = await fetch(`${baseUrl}/api/request-confirm`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'X-Network': network,\n },\n body: JSON.stringify({ transaction_id: transactionId }),\n });\n\n if (!response.ok) {\n throw new Error(\n `Failed to confirm registration: ${response.statusText}`\n );\n }\n\n return await response.json();\n } catch (e: any) {\n const error = e as Error;\n const logMessage = `Error checking registration status: ${error.message}`;\n this.logger.error(logMessage);\n throw error;\n }\n }\n\n /**\n * Validates if an operator_id follows the correct format (agentTopicId@accountId)\n * @param operatorId The operator ID to validate\n * @returns True if the format is valid, false otherwise\n */\n protected isValidOperatorId(operatorId: string): boolean {\n if (!operatorId) {\n return false;\n }\n\n const parts = operatorId.split('@');\n\n if (parts.length !== 2) {\n return false;\n }\n\n const agentTopicId = parts[0];\n const accountId = parts[1];\n\n if (!agentTopicId) {\n return false;\n }\n\n if (!accountId) {\n return false;\n }\n\n const hederaIdPattern = /^[0-9]+\\.[0-9]+\\.[0-9]+$/;\n\n if (!hederaIdPattern.test(accountId)) {\n return false;\n }\n\n if (!hederaIdPattern.test(agentTopicId)) {\n return false;\n }\n\n return true;\n }\n}\n\nexport class HCS10Cache {\n private static instance: HCS10Cache;\n private cache: Map<string, ProfileResponse>;\n private cacheExpiry: Map<string, number>;\n private readonly CACHE_TTL = 3600000;\n\n private constructor() {\n this.cache = new Map();\n this.cacheExpiry = new Map();\n }\n\n static getInstance(): HCS10Cache {\n if (!HCS10Cache.instance) {\n HCS10Cache.instance = new HCS10Cache();\n }\n return HCS10Cache.instance;\n }\n\n set(key: string, value: ProfileResponse): void {\n this.cache.set(key, value);\n this.cacheExpiry.set(key, Date.now() + this.CACHE_TTL);\n }\n\n get(key: string): ProfileResponse | undefined {\n const expiry = this.cacheExpiry.get(key);\n if (expiry && expiry > Date.now()) {\n return this.cache.get(key);\n }\n if (expiry) {\n this.cache.delete(key);\n this.cacheExpiry.delete(key);\n }\n return undefined;\n }\n\n clear(): void {\n this.cache.clear();\n this.cacheExpiry.clear();\n }\n}\n"],"names":["Hcs10MemoType"],"mappings":"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"}
@@ -1,162 +1,72 @@
1
- import { assertArgument, assert } from "./standards-sdk.es46.js";
2
- const BN_0 = BigInt(0);
3
- const BN_1 = BigInt(1);
4
- const maxValue = 9007199254740991;
5
- function fromTwos(_value, _width) {
6
- const value = getUint(_value, "value");
7
- const width = BigInt(getNumber(_width, "width"));
8
- assert(value >> width === BN_0, "overflow", "NUMERIC_FAULT", {
9
- operation: "fromTwos",
10
- fault: "overflow",
11
- value: _value
12
- });
13
- if (value >> width - BN_1) {
14
- const mask2 = (BN_1 << width) - BN_1;
15
- return -((~value & mask2) + BN_1);
16
- }
17
- return value;
18
- }
19
- function toTwos(_value, _width) {
20
- let value = getBigInt(_value, "value");
21
- const width = BigInt(getNumber(_width, "width"));
22
- const limit = BN_1 << width - BN_1;
23
- if (value < BN_0) {
24
- value = -value;
25
- assert(value <= limit, "too low", "NUMERIC_FAULT", {
26
- operation: "toTwos",
27
- fault: "overflow",
28
- value: _value
29
- });
30
- const mask2 = (BN_1 << width) - BN_1;
31
- return (~value & mask2) + BN_1;
32
- } else {
33
- assert(value < limit, "too high", "NUMERIC_FAULT", {
34
- operation: "toTwos",
35
- fault: "overflow",
36
- value: _value
37
- });
38
- }
39
- return value;
40
- }
41
- function mask(_value, _bits) {
42
- const value = getUint(_value, "value");
43
- const bits = BigInt(getNumber(_bits, "bits"));
44
- return value & (BN_1 << bits) - BN_1;
45
- }
46
- function getBigInt(value, name) {
47
- switch (typeof value) {
48
- case "bigint":
49
- return value;
50
- case "number":
51
- assertArgument(Number.isInteger(value), "underflow", name || "value", value);
52
- assertArgument(value >= -9007199254740991 && value <= maxValue, "overflow", name || "value", value);
53
- return BigInt(value);
54
- case "string":
55
- try {
56
- if (value === "") {
57
- throw new Error("empty string");
58
- }
59
- if (value[0] === "-" && value[1] !== "-") {
60
- return -BigInt(value.substring(1));
61
- }
62
- return BigInt(value);
63
- } catch (e) {
64
- assertArgument(false, `invalid BigNumberish string: ${e.message}`, name || "value", value);
65
- }
66
- }
67
- assertArgument(false, "invalid BigNumberish value", name || "value", value);
68
- }
69
- function getUint(value, name) {
70
- const result = getBigInt(value, name);
71
- assert(result >= BN_0, "unsigned value cannot be negative", "NUMERIC_FAULT", {
72
- fault: "overflow",
73
- operation: "getUint",
74
- value
75
- });
76
- return result;
77
- }
78
- const Nibbles = "0123456789abcdef";
79
- function toBigInt(value) {
80
- if (value instanceof Uint8Array) {
81
- let result = "0x0";
82
- for (const v of value) {
83
- result += Nibbles[v >> 4];
84
- result += Nibbles[v & 15];
85
- }
86
- return BigInt(result);
87
- }
88
- return getBigInt(value);
89
- }
90
- function getNumber(value, name) {
91
- switch (typeof value) {
92
- case "bigint":
93
- assertArgument(value >= -9007199254740991 && value <= maxValue, "overflow", name || "value", value);
94
- return Number(value);
95
- case "number":
96
- assertArgument(Number.isInteger(value), "underflow", name || "value", value);
97
- assertArgument(value >= -9007199254740991 && value <= maxValue, "overflow", name || "value", value);
98
- return value;
99
- case "string":
100
- try {
101
- if (value === "") {
102
- throw new Error("empty string");
103
- }
104
- return getNumber(BigInt(value), name);
105
- } catch (e) {
106
- assertArgument(false, `invalid numeric string: ${e.message}`, name || "value", value);
107
- }
108
- }
109
- assertArgument(false, "invalid numeric value", name || "value", value);
110
- }
111
- function toNumber(value) {
112
- return getNumber(toBigInt(value));
113
- }
114
- function toBeHex(_value, _width) {
115
- const value = getUint(_value, "value");
116
- let result = value.toString(16);
117
- if (_width == null) {
118
- if (result.length % 2) {
119
- result = "0" + result;
120
- }
121
- } else {
122
- const width = getNumber(_width, "width");
123
- assert(width * 2 >= result.length, `value exceeds width (${width} bytes)`, "NUMERIC_FAULT", {
124
- operation: "toBeHex",
125
- fault: "overflow",
126
- value: _value
127
- });
128
- while (result.length < width * 2) {
129
- result = "0" + result;
130
- }
131
- }
132
- return "0x" + result;
133
- }
134
- function toBeArray(_value) {
135
- const value = getUint(_value, "value");
136
- if (value === BN_0) {
137
- return new Uint8Array([]);
138
- }
139
- let hex = value.toString(16);
140
- if (hex.length % 2) {
141
- hex = "0" + hex;
142
- }
143
- const result = new Uint8Array(hex.length / 2);
144
- for (let i = 0; i < result.length; i++) {
145
- const offset = i * 2;
146
- result[i] = parseInt(hex.substring(offset, offset + 2), 16);
147
- }
148
- return result;
149
- }
1
+ const HttpStatusCode = {
2
+ Continue: 100,
3
+ SwitchingProtocols: 101,
4
+ Processing: 102,
5
+ EarlyHints: 103,
6
+ Ok: 200,
7
+ Created: 201,
8
+ Accepted: 202,
9
+ NonAuthoritativeInformation: 203,
10
+ NoContent: 204,
11
+ ResetContent: 205,
12
+ PartialContent: 206,
13
+ MultiStatus: 207,
14
+ AlreadyReported: 208,
15
+ ImUsed: 226,
16
+ MultipleChoices: 300,
17
+ MovedPermanently: 301,
18
+ Found: 302,
19
+ SeeOther: 303,
20
+ NotModified: 304,
21
+ UseProxy: 305,
22
+ Unused: 306,
23
+ TemporaryRedirect: 307,
24
+ PermanentRedirect: 308,
25
+ BadRequest: 400,
26
+ Unauthorized: 401,
27
+ PaymentRequired: 402,
28
+ Forbidden: 403,
29
+ NotFound: 404,
30
+ MethodNotAllowed: 405,
31
+ NotAcceptable: 406,
32
+ ProxyAuthenticationRequired: 407,
33
+ RequestTimeout: 408,
34
+ Conflict: 409,
35
+ Gone: 410,
36
+ LengthRequired: 411,
37
+ PreconditionFailed: 412,
38
+ PayloadTooLarge: 413,
39
+ UriTooLong: 414,
40
+ UnsupportedMediaType: 415,
41
+ RangeNotSatisfiable: 416,
42
+ ExpectationFailed: 417,
43
+ ImATeapot: 418,
44
+ MisdirectedRequest: 421,
45
+ UnprocessableEntity: 422,
46
+ Locked: 423,
47
+ FailedDependency: 424,
48
+ TooEarly: 425,
49
+ UpgradeRequired: 426,
50
+ PreconditionRequired: 428,
51
+ TooManyRequests: 429,
52
+ RequestHeaderFieldsTooLarge: 431,
53
+ UnavailableForLegalReasons: 451,
54
+ InternalServerError: 500,
55
+ NotImplemented: 501,
56
+ BadGateway: 502,
57
+ ServiceUnavailable: 503,
58
+ GatewayTimeout: 504,
59
+ HttpVersionNotSupported: 505,
60
+ VariantAlsoNegotiates: 506,
61
+ InsufficientStorage: 507,
62
+ LoopDetected: 508,
63
+ NotExtended: 510,
64
+ NetworkAuthenticationRequired: 511
65
+ };
66
+ Object.entries(HttpStatusCode).forEach(([key, value]) => {
67
+ HttpStatusCode[value] = key;
68
+ });
150
69
  export {
151
- fromTwos,
152
- getBigInt,
153
- getNumber,
154
- getUint,
155
- mask,
156
- toBeArray,
157
- toBeHex,
158
- toBigInt,
159
- toNumber,
160
- toTwos
70
+ HttpStatusCode as default
161
71
  };
162
72
  //# sourceMappingURL=standards-sdk.es50.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"standards-sdk.es50.js","sources":["../../node_modules/ethers/lib.esm/utils/maths.js"],"sourcesContent":["/**\n * Some mathematic operations.\n *\n * @_subsection: api/utils:Math Helpers [about-maths]\n */\nimport { hexlify, isBytesLike } from \"./data.js\";\nimport { assert, assertArgument } from \"./errors.js\";\nconst BN_0 = BigInt(0);\nconst BN_1 = BigInt(1);\n//const BN_Max256 = (BN_1 << BigInt(256)) - BN_1;\n// IEEE 754 support 53-bits of mantissa\nconst maxValue = 0x1fffffffffffff;\n/**\n * Convert %%value%% from a twos-compliment representation of %%width%%\n * bits to its value.\n *\n * If the highest bit is ``1``, the result will be negative.\n */\nexport function fromTwos(_value, _width) {\n const value = getUint(_value, \"value\");\n const width = BigInt(getNumber(_width, \"width\"));\n assert((value >> width) === BN_0, \"overflow\", \"NUMERIC_FAULT\", {\n operation: \"fromTwos\", fault: \"overflow\", value: _value\n });\n // Top bit set; treat as a negative value\n if (value >> (width - BN_1)) {\n const mask = (BN_1 << width) - BN_1;\n return -(((~value) & mask) + BN_1);\n }\n return value;\n}\n/**\n * Convert %%value%% to a twos-compliment representation of\n * %%width%% bits.\n *\n * The result will always be positive.\n */\nexport function toTwos(_value, _width) {\n let value = getBigInt(_value, \"value\");\n const width = BigInt(getNumber(_width, \"width\"));\n const limit = (BN_1 << (width - BN_1));\n if (value < BN_0) {\n value = -value;\n assert(value <= limit, \"too low\", \"NUMERIC_FAULT\", {\n operation: \"toTwos\", fault: \"overflow\", value: _value\n });\n const mask = (BN_1 << width) - BN_1;\n return ((~value) & mask) + BN_1;\n }\n else {\n assert(value < limit, \"too high\", \"NUMERIC_FAULT\", {\n operation: \"toTwos\", fault: \"overflow\", value: _value\n });\n }\n return value;\n}\n/**\n * Mask %%value%% with a bitmask of %%bits%% ones.\n */\nexport function mask(_value, _bits) {\n const value = getUint(_value, \"value\");\n const bits = BigInt(getNumber(_bits, \"bits\"));\n return value & ((BN_1 << bits) - BN_1);\n}\n/**\n * Gets a BigInt from %%value%%. If it is an invalid value for\n * a BigInt, then an ArgumentError will be thrown for %%name%%.\n */\nexport function getBigInt(value, name) {\n switch (typeof (value)) {\n case \"bigint\": return value;\n case \"number\":\n assertArgument(Number.isInteger(value), \"underflow\", name || \"value\", value);\n assertArgument(value >= -maxValue && value <= maxValue, \"overflow\", name || \"value\", value);\n return BigInt(value);\n case \"string\":\n try {\n if (value === \"\") {\n throw new Error(\"empty string\");\n }\n if (value[0] === \"-\" && value[1] !== \"-\") {\n return -BigInt(value.substring(1));\n }\n return BigInt(value);\n }\n catch (e) {\n assertArgument(false, `invalid BigNumberish string: ${e.message}`, name || \"value\", value);\n }\n }\n assertArgument(false, \"invalid BigNumberish value\", name || \"value\", value);\n}\n/**\n * Returns %%value%% as a bigint, validating it is valid as a bigint\n * value and that it is positive.\n */\nexport function getUint(value, name) {\n const result = getBigInt(value, name);\n assert(result >= BN_0, \"unsigned value cannot be negative\", \"NUMERIC_FAULT\", {\n fault: \"overflow\", operation: \"getUint\", value\n });\n return result;\n}\nconst Nibbles = \"0123456789abcdef\";\n/*\n * Converts %%value%% to a BigInt. If %%value%% is a Uint8Array, it\n * is treated as Big Endian data.\n */\nexport function toBigInt(value) {\n if (value instanceof Uint8Array) {\n let result = \"0x0\";\n for (const v of value) {\n result += Nibbles[v >> 4];\n result += Nibbles[v & 0x0f];\n }\n return BigInt(result);\n }\n return getBigInt(value);\n}\n/**\n * Gets a //number// from %%value%%. If it is an invalid value for\n * a //number//, then an ArgumentError will be thrown for %%name%%.\n */\nexport function getNumber(value, name) {\n switch (typeof (value)) {\n case \"bigint\":\n assertArgument(value >= -maxValue && value <= maxValue, \"overflow\", name || \"value\", value);\n return Number(value);\n case \"number\":\n assertArgument(Number.isInteger(value), \"underflow\", name || \"value\", value);\n assertArgument(value >= -maxValue && value <= maxValue, \"overflow\", name || \"value\", value);\n return value;\n case \"string\":\n try {\n if (value === \"\") {\n throw new Error(\"empty string\");\n }\n return getNumber(BigInt(value), name);\n }\n catch (e) {\n assertArgument(false, `invalid numeric string: ${e.message}`, name || \"value\", value);\n }\n }\n assertArgument(false, \"invalid numeric value\", name || \"value\", value);\n}\n/**\n * Converts %%value%% to a number. If %%value%% is a Uint8Array, it\n * is treated as Big Endian data. Throws if the value is not safe.\n */\nexport function toNumber(value) {\n return getNumber(toBigInt(value));\n}\n/**\n * Converts %%value%% to a Big Endian hexstring, optionally padded to\n * %%width%% bytes.\n */\nexport function toBeHex(_value, _width) {\n const value = getUint(_value, \"value\");\n let result = value.toString(16);\n if (_width == null) {\n // Ensure the value is of even length\n if (result.length % 2) {\n result = \"0\" + result;\n }\n }\n else {\n const width = getNumber(_width, \"width\");\n assert(width * 2 >= result.length, `value exceeds width (${width} bytes)`, \"NUMERIC_FAULT\", {\n operation: \"toBeHex\",\n fault: \"overflow\",\n value: _value\n });\n // Pad the value to the required width\n while (result.length < (width * 2)) {\n result = \"0\" + result;\n }\n }\n return \"0x\" + result;\n}\n/**\n * Converts %%value%% to a Big Endian Uint8Array.\n */\nexport function toBeArray(_value) {\n const value = getUint(_value, \"value\");\n if (value === BN_0) {\n return new Uint8Array([]);\n }\n let hex = value.toString(16);\n if (hex.length % 2) {\n hex = \"0\" + hex;\n }\n const result = new Uint8Array(hex.length / 2);\n for (let i = 0; i < result.length; i++) {\n const offset = i * 2;\n result[i] = parseInt(hex.substring(offset, offset + 2), 16);\n }\n return result;\n}\n/**\n * Returns a [[HexString]] for %%value%% safe to use as a //Quantity//.\n *\n * A //Quantity// does not have and leading 0 values unless the value is\n * the literal value `0x0`. This is most commonly used for JSSON-RPC\n * numeric values.\n */\nexport function toQuantity(value) {\n let result = hexlify(isBytesLike(value) ? value : toBeArray(value)).substring(2);\n while (result.startsWith(\"0\")) {\n result = result.substring(1);\n }\n if (result === \"\") {\n result = \"0\";\n }\n return \"0x\" + result;\n}\n//# sourceMappingURL=maths.js.map"],"names":["mask"],"mappings":"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","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"standards-sdk.es50.js","sources":["../../node_modules/axios/lib/helpers/HttpStatusCode.js"],"sourcesContent":["const HttpStatusCode = {\n Continue: 100,\n SwitchingProtocols: 101,\n Processing: 102,\n EarlyHints: 103,\n Ok: 200,\n Created: 201,\n Accepted: 202,\n NonAuthoritativeInformation: 203,\n NoContent: 204,\n ResetContent: 205,\n PartialContent: 206,\n MultiStatus: 207,\n AlreadyReported: 208,\n ImUsed: 226,\n MultipleChoices: 300,\n MovedPermanently: 301,\n Found: 302,\n SeeOther: 303,\n NotModified: 304,\n UseProxy: 305,\n Unused: 306,\n TemporaryRedirect: 307,\n PermanentRedirect: 308,\n BadRequest: 400,\n Unauthorized: 401,\n PaymentRequired: 402,\n Forbidden: 403,\n NotFound: 404,\n MethodNotAllowed: 405,\n NotAcceptable: 406,\n ProxyAuthenticationRequired: 407,\n RequestTimeout: 408,\n Conflict: 409,\n Gone: 410,\n LengthRequired: 411,\n PreconditionFailed: 412,\n PayloadTooLarge: 413,\n UriTooLong: 414,\n UnsupportedMediaType: 415,\n RangeNotSatisfiable: 416,\n ExpectationFailed: 417,\n ImATeapot: 418,\n MisdirectedRequest: 421,\n UnprocessableEntity: 422,\n Locked: 423,\n FailedDependency: 424,\n TooEarly: 425,\n UpgradeRequired: 426,\n PreconditionRequired: 428,\n TooManyRequests: 429,\n RequestHeaderFieldsTooLarge: 431,\n UnavailableForLegalReasons: 451,\n InternalServerError: 500,\n NotImplemented: 501,\n BadGateway: 502,\n ServiceUnavailable: 503,\n GatewayTimeout: 504,\n HttpVersionNotSupported: 505,\n VariantAlsoNegotiates: 506,\n InsufficientStorage: 507,\n LoopDetected: 508,\n NotExtended: 510,\n NetworkAuthenticationRequired: 511,\n};\n\nObject.entries(HttpStatusCode).forEach(([key, value]) => {\n HttpStatusCode[value] = key;\n});\n\nexport default HttpStatusCode;\n"],"names":[],"mappings":"AAAK,MAAC,iBAAiB;AAAA,EACrB,UAAU;AAAA,EACV,oBAAoB;AAAA,EACpB,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,IAAI;AAAA,EACJ,SAAS;AAAA,EACT,UAAU;AAAA,EACV,6BAA6B;AAAA,EAC7B,WAAW;AAAA,EACX,cAAc;AAAA,EACd,gBAAgB;AAAA,EAChB,aAAa;AAAA,EACb,iBAAiB;AAAA,EACjB,QAAQ;AAAA,EACR,iBAAiB;AAAA,EACjB,kBAAkB;AAAA,EAClB,OAAO;AAAA,EACP,UAAU;AAAA,EACV,aAAa;AAAA,EACb,UAAU;AAAA,EACV,QAAQ;AAAA,EACR,mBAAmB;AAAA,EACnB,mBAAmB;AAAA,EACnB,YAAY;AAAA,EACZ,cAAc;AAAA,EACd,iBAAiB;AAAA,EACjB,WAAW;AAAA,EACX,UAAU;AAAA,EACV,kBAAkB;AAAA,EAClB,eAAe;AAAA,EACf,6BAA6B;AAAA,EAC7B,gBAAgB;AAAA,EAChB,UAAU;AAAA,EACV,MAAM;AAAA,EACN,gBAAgB;AAAA,EAChB,oBAAoB;AAAA,EACpB,iBAAiB;AAAA,EACjB,YAAY;AAAA,EACZ,sBAAsB;AAAA,EACtB,qBAAqB;AAAA,EACrB,mBAAmB;AAAA,EACnB,WAAW;AAAA,EACX,oBAAoB;AAAA,EACpB,qBAAqB;AAAA,EACrB,QAAQ;AAAA,EACR,kBAAkB;AAAA,EAClB,UAAU;AAAA,EACV,iBAAiB;AAAA,EACjB,sBAAsB;AAAA,EACtB,iBAAiB;AAAA,EACjB,6BAA6B;AAAA,EAC7B,4BAA4B;AAAA,EAC5B,qBAAqB;AAAA,EACrB,gBAAgB;AAAA,EAChB,YAAY;AAAA,EACZ,oBAAoB;AAAA,EACpB,gBAAgB;AAAA,EAChB,yBAAyB;AAAA,EACzB,uBAAuB;AAAA,EACvB,qBAAqB;AAAA,EACrB,cAAc;AAAA,EACd,aAAa;AAAA,EACb,+BAA+B;AACjC;AAEA,OAAO,QAAQ,cAAc,EAAE,QAAQ,CAAC,CAAC,KAAK,KAAK,MAAM;AACvD,iBAAe,KAAK,IAAI;AAC1B,CAAC;","x_google_ignoreList":[0]}