@hiero-ledger/sdk 2.80.0 → 2.81.0

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 (400) hide show
  1. package/README.md +107 -64
  2. package/dist/umd.js +444 -217
  3. package/dist/umd.js.map +1 -0
  4. package/dist/umd.min.js +8 -7
  5. package/dist/umd.min.js.map +1 -0
  6. package/lib/BadEntityIdError.js.map +1 -1
  7. package/lib/Cache.js.map +1 -1
  8. package/lib/Duration.js.map +1 -1
  9. package/lib/EntityIdHelper.js.map +1 -1
  10. package/lib/EthereumFlow.js.map +1 -1
  11. package/lib/EthereumTransaction.d.ts +4 -0
  12. package/lib/EthereumTransaction.js.map +1 -1
  13. package/lib/EthereumTransactionData.js.map +1 -1
  14. package/lib/EthereumTransactionDataEip1559.js.map +1 -1
  15. package/lib/EthereumTransactionDataEip2930.js.map +1 -1
  16. package/lib/EthereumTransactionDataEip7702.js.map +1 -1
  17. package/lib/EthereumTransactionDataLegacy.js.map +1 -1
  18. package/lib/EvmAddress.js.map +1 -1
  19. package/lib/ExchangeRate.js.map +1 -1
  20. package/lib/ExchangeRates.js.map +1 -1
  21. package/lib/Executable.cjs +8 -5
  22. package/lib/Executable.js +1 -1
  23. package/lib/Executable.js.map +1 -1
  24. package/lib/FeeComponents.js.map +1 -1
  25. package/lib/FeeData.js.map +1 -1
  26. package/lib/FeeDataType.js.map +1 -1
  27. package/lib/FeeSchedule.js.map +1 -1
  28. package/lib/FeeSchedules.js.map +1 -1
  29. package/lib/FreezeType.js.map +1 -1
  30. package/lib/Hbar.js.map +1 -1
  31. package/lib/HbarUnit.js.map +1 -1
  32. package/lib/Key.js.map +1 -1
  33. package/lib/KeyList.js.map +1 -1
  34. package/lib/LedgerId.js.map +1 -1
  35. package/lib/LocalProvider.js.map +1 -1
  36. package/lib/LocalProviderWeb.js.map +1 -1
  37. package/lib/ManagedNode.js.map +1 -1
  38. package/lib/ManagedNodeAddress.js.map +1 -1
  39. package/lib/MaxAttemptsOrTimeoutError.js.map +1 -1
  40. package/lib/MaxQueryPaymentExceeded.js.map +1 -1
  41. package/lib/MirrorNode.js.map +1 -1
  42. package/lib/Mnemonic.js.map +1 -1
  43. package/lib/Node.js.map +1 -1
  44. package/lib/ObjectMap.js.map +1 -1
  45. package/lib/PrecheckStatusError.js.map +1 -1
  46. package/lib/PrivateKey.js.map +1 -1
  47. package/lib/PrngTransaction.d.ts +4 -0
  48. package/lib/PrngTransaction.js.map +1 -1
  49. package/lib/Provider.js.map +1 -1
  50. package/lib/PublicKey.js.map +1 -1
  51. package/lib/ReceiptStatusError.js.map +1 -1
  52. package/lib/RecordStatusError.js.map +1 -1
  53. package/lib/RequestType.js.map +1 -1
  54. package/lib/Signer.js.map +1 -1
  55. package/lib/SignerSignature.js.map +1 -1
  56. package/lib/StakingInfo.js.map +1 -1
  57. package/lib/Status.js.map +1 -1
  58. package/lib/StatusError.js.map +1 -1
  59. package/lib/Timestamp.js.map +1 -1
  60. package/lib/TransactionFeeSchedule.js.map +1 -1
  61. package/lib/Transfer.js.map +1 -1
  62. package/lib/Wallet.js.map +1 -1
  63. package/lib/account/AccountAllowanceAdjustTransaction.cjs +2 -1
  64. package/lib/account/AccountAllowanceAdjustTransaction.d.ts +4 -2
  65. package/lib/account/AccountAllowanceAdjustTransaction.js.map +1 -1
  66. package/lib/account/AccountAllowanceApproveTransaction.cjs +2 -1
  67. package/lib/account/AccountAllowanceApproveTransaction.d.ts +4 -2
  68. package/lib/account/AccountAllowanceApproveTransaction.js.map +1 -1
  69. package/lib/account/AccountAllowanceDeleteTransaction.cjs +2 -1
  70. package/lib/account/AccountAllowanceDeleteTransaction.d.ts +4 -2
  71. package/lib/account/AccountAllowanceDeleteTransaction.js.map +1 -1
  72. package/lib/account/AccountBalance.cjs +6 -15
  73. package/lib/account/AccountBalance.d.ts +2 -2
  74. package/lib/account/AccountBalance.js +1 -1
  75. package/lib/account/AccountBalance.js.map +1 -1
  76. package/lib/account/AccountBalanceQuery.cjs +5 -10
  77. package/lib/account/AccountBalanceQuery.d.ts +15 -2
  78. package/lib/account/AccountBalanceQuery.js +1 -1
  79. package/lib/account/AccountBalanceQuery.js.map +1 -1
  80. package/lib/account/AccountCreateTransaction.cjs +2 -1
  81. package/lib/account/AccountCreateTransaction.d.ts +4 -2
  82. package/lib/account/AccountCreateTransaction.js.map +1 -1
  83. package/lib/account/AccountDeleteTransaction.cjs +2 -1
  84. package/lib/account/AccountDeleteTransaction.d.ts +4 -2
  85. package/lib/account/AccountDeleteTransaction.js.map +1 -1
  86. package/lib/account/AccountId.js.map +1 -1
  87. package/lib/account/AccountInfo.js.map +1 -1
  88. package/lib/account/AccountInfoFlow.js.map +1 -1
  89. package/lib/account/AccountInfoQuery.cjs +2 -1
  90. package/lib/account/AccountInfoQuery.d.ts +8 -2
  91. package/lib/account/AccountInfoQuery.js.map +1 -1
  92. package/lib/account/AccountRecordsQuery.cjs +2 -1
  93. package/lib/account/AccountRecordsQuery.d.ts +8 -2
  94. package/lib/account/AccountRecordsQuery.js.map +1 -1
  95. package/lib/account/AccountUpdateTransaction.cjs +2 -1
  96. package/lib/account/AccountUpdateTransaction.d.ts +4 -2
  97. package/lib/account/AccountUpdateTransaction.js.map +1 -1
  98. package/lib/account/HbarAllowance.cjs +3 -1
  99. package/lib/account/HbarAllowance.d.ts +6 -2
  100. package/lib/account/HbarAllowance.js.map +1 -1
  101. package/lib/account/HbarTransferMap.js.map +1 -1
  102. package/lib/account/LiveHash.js.map +1 -1
  103. package/lib/account/LiveHashAddTransaction.cjs +2 -1
  104. package/lib/account/LiveHashAddTransaction.d.ts +4 -2
  105. package/lib/account/LiveHashAddTransaction.js.map +1 -1
  106. package/lib/account/LiveHashDeleteTransaction.cjs +2 -1
  107. package/lib/account/LiveHashDeleteTransaction.d.ts +4 -2
  108. package/lib/account/LiveHashDeleteTransaction.js.map +1 -1
  109. package/lib/account/LiveHashQuery.cjs +2 -1
  110. package/lib/account/LiveHashQuery.d.ts +8 -2
  111. package/lib/account/LiveHashQuery.js.map +1 -1
  112. package/lib/account/NullableTokenDecimalMap.js.map +1 -1
  113. package/lib/account/ProxyStaker.js.map +1 -1
  114. package/lib/account/TokenAllowance.cjs +3 -1
  115. package/lib/account/TokenAllowance.d.ts +6 -2
  116. package/lib/account/TokenAllowance.js.map +1 -1
  117. package/lib/account/TokenBalanceMap.js.map +1 -1
  118. package/lib/account/TokenDecimalMap.js.map +1 -1
  119. package/lib/account/TokenNftAllowance.cjs +3 -1
  120. package/lib/account/TokenNftAllowance.d.ts +6 -2
  121. package/lib/account/TokenNftAllowance.js.map +1 -1
  122. package/lib/account/TokenNftTransferMap.js.map +1 -1
  123. package/lib/account/TokenRelationship.js.map +1 -1
  124. package/lib/account/TokenRelationshipMap.js.map +1 -1
  125. package/lib/account/TokenTransferAccountMap.js.map +1 -1
  126. package/lib/account/TokenTransferMap.js.map +1 -1
  127. package/lib/account/TransferTransaction.cjs +6 -5
  128. package/lib/account/TransferTransaction.d.ts +6 -2
  129. package/lib/account/TransferTransaction.js +1 -1
  130. package/lib/account/TransferTransaction.js.map +1 -1
  131. package/lib/address_book/Endpoint.js.map +1 -1
  132. package/lib/address_book/IPv4Address.js.map +1 -1
  133. package/lib/address_book/IPv4AddressPart.js.map +1 -1
  134. package/lib/address_book/NodeAddress.js.map +1 -1
  135. package/lib/address_book/NodeAddressBook.js.map +1 -1
  136. package/lib/base32.js.map +1 -1
  137. package/lib/browser.js +1 -1
  138. package/lib/channel/Channel.js.map +1 -1
  139. package/lib/channel/MirrorChannel.js.map +1 -1
  140. package/lib/channel/NativeChannel.js.map +1 -1
  141. package/lib/channel/NodeChannel.js.map +1 -1
  142. package/lib/channel/NodeMirrorChannel.js.map +1 -1
  143. package/lib/channel/WebChannel.js.map +1 -1
  144. package/lib/client/Client.cjs +38 -0
  145. package/lib/client/Client.d.ts +30 -0
  146. package/lib/client/Client.js +1 -1
  147. package/lib/client/Client.js.map +1 -1
  148. package/lib/client/ManagedNetwork.js.map +1 -1
  149. package/lib/client/MirrorNetwork.js.map +1 -1
  150. package/lib/client/NativeClient.js.map +1 -1
  151. package/lib/client/Network.js.map +1 -1
  152. package/lib/client/NodeClient.js.map +1 -1
  153. package/lib/client/WebClient.js.map +1 -1
  154. package/lib/client/addressbooks/mainnet.cjs +1 -1
  155. package/lib/client/addressbooks/mainnet.d.ts +1 -1
  156. package/lib/client/addressbooks/mainnet.js +1 -1
  157. package/lib/client/addressbooks/mainnet.js.map +1 -1
  158. package/lib/client/addressbooks/previewnet.cjs +1 -1
  159. package/lib/client/addressbooks/previewnet.d.ts +1 -1
  160. package/lib/client/addressbooks/previewnet.js +1 -1
  161. package/lib/client/addressbooks/previewnet.js.map +1 -1
  162. package/lib/client/addressbooks/testnet.cjs +1 -1
  163. package/lib/client/addressbooks/testnet.d.ts +1 -1
  164. package/lib/client/addressbooks/testnet.js +1 -1
  165. package/lib/client/addressbooks/testnet.js.map +1 -1
  166. package/lib/constants/ClientConstants.js.map +1 -1
  167. package/lib/contract/ContractByteCodeQuery.js.map +1 -1
  168. package/lib/contract/ContractCallQuery.js.map +1 -1
  169. package/lib/contract/ContractCreateFlow.js.map +1 -1
  170. package/lib/contract/ContractCreateTransaction.cjs +2 -1
  171. package/lib/contract/ContractCreateTransaction.d.ts +4 -2
  172. package/lib/contract/ContractCreateTransaction.js.map +1 -1
  173. package/lib/contract/ContractDeleteTransaction.cjs +2 -1
  174. package/lib/contract/ContractDeleteTransaction.d.ts +4 -2
  175. package/lib/contract/ContractDeleteTransaction.js.map +1 -1
  176. package/lib/contract/ContractExecuteTransaction.d.ts +4 -0
  177. package/lib/contract/ContractExecuteTransaction.js.map +1 -1
  178. package/lib/contract/ContractFunctionParameters.js.map +1 -1
  179. package/lib/contract/ContractFunctionResult.js.map +1 -1
  180. package/lib/contract/ContractFunctionSelector.js.map +1 -1
  181. package/lib/contract/ContractId.js.map +1 -1
  182. package/lib/contract/ContractInfo.js.map +1 -1
  183. package/lib/contract/ContractInfoQuery.js.map +1 -1
  184. package/lib/contract/ContractLogInfo.js.map +1 -1
  185. package/lib/contract/ContractNonceInfo.js.map +1 -1
  186. package/lib/contract/ContractUpdateTransaction.cjs +2 -1
  187. package/lib/contract/ContractUpdateTransaction.d.ts +4 -2
  188. package/lib/contract/ContractUpdateTransaction.js.map +1 -1
  189. package/lib/contract/DelegateContractId.js.map +1 -1
  190. package/lib/cryptography/keccak.js.map +1 -1
  191. package/lib/encoding/hex.js.map +1 -1
  192. package/lib/file/FileAppendTransaction.cjs +5 -4
  193. package/lib/file/FileAppendTransaction.d.ts +10 -12
  194. package/lib/file/FileAppendTransaction.js.map +1 -1
  195. package/lib/file/FileContentsQuery.js.map +1 -1
  196. package/lib/file/FileCreateTransaction.js.map +1 -1
  197. package/lib/file/FileDeleteTransaction.d.ts +4 -0
  198. package/lib/file/FileDeleteTransaction.js.map +1 -1
  199. package/lib/file/FileId.js.map +1 -1
  200. package/lib/file/FileInfo.js.map +1 -1
  201. package/lib/file/FileInfoQuery.js.map +1 -1
  202. package/lib/file/FileUpdateTransaction.d.ts +4 -0
  203. package/lib/file/FileUpdateTransaction.js.map +1 -1
  204. package/lib/grpc/GrpcServiceError.js.map +1 -1
  205. package/lib/grpc/GrpcStatus.js.map +1 -1
  206. package/lib/http/HttpError.js.map +1 -1
  207. package/lib/http/HttpStatus.js.map +1 -1
  208. package/lib/index.js +1 -1
  209. package/lib/logger/LogLevel.js.map +1 -1
  210. package/lib/logger/Logger.js.map +1 -1
  211. package/lib/native.js +1 -1
  212. package/lib/network/AddressBookQuery.js.map +1 -1
  213. package/lib/network/AddressBookQueryWeb.js.map +1 -1
  214. package/lib/network/NetworkVersionInfo.js.map +1 -1
  215. package/lib/network/NetworkVersionInfoQuery.js.map +1 -1
  216. package/lib/network/SemanticVersion.js.map +1 -1
  217. package/lib/node/NodeCreateTransaction.js.map +1 -1
  218. package/lib/node/NodeDeleteTransaction.js.map +1 -1
  219. package/lib/node/NodeUpdateTransaction.js.map +1 -1
  220. package/lib/node/ServiceEndpoint.js.map +1 -1
  221. package/lib/query/CostQuery.js.map +1 -1
  222. package/lib/query/MirrorNodeContractCallQuery.js.map +1 -1
  223. package/lib/query/MirrorNodeContractEstimateQuery.js.map +1 -1
  224. package/lib/query/MirrorNodeContractQuery.js.map +1 -1
  225. package/lib/query/Query.js.map +1 -1
  226. package/lib/query/QueryBase.js.map +1 -1
  227. package/lib/schedule/ScheduleCreateTransaction.cjs +2 -1
  228. package/lib/schedule/ScheduleCreateTransaction.d.ts +4 -2
  229. package/lib/schedule/ScheduleCreateTransaction.js.map +1 -1
  230. package/lib/schedule/ScheduleDeleteTransaction.d.ts +4 -0
  231. package/lib/schedule/ScheduleDeleteTransaction.js.map +1 -1
  232. package/lib/schedule/ScheduleId.js.map +1 -1
  233. package/lib/schedule/ScheduleInfo.js.map +1 -1
  234. package/lib/schedule/ScheduleInfoQuery.js.map +1 -1
  235. package/lib/schedule/ScheduleSignTransaction.d.ts +4 -0
  236. package/lib/schedule/ScheduleSignTransaction.js.map +1 -1
  237. package/lib/system/FreezeTransaction.js.map +1 -1
  238. package/lib/system/SystemDeleteTransaction.js.map +1 -1
  239. package/lib/system/SystemUndeleteTransaction.js.map +1 -1
  240. package/lib/token/AbstractTokenTransferTransaction.js.map +1 -1
  241. package/lib/token/AirdropPendingTransaction.js.map +1 -1
  242. package/lib/token/AssessedCustomFee.js.map +1 -1
  243. package/lib/token/CustomFee.js.map +1 -1
  244. package/lib/token/CustomFixedFee.js.map +1 -1
  245. package/lib/token/CustomFractionalFee.js.map +1 -1
  246. package/lib/token/CustomRoyaltyFee.js.map +1 -1
  247. package/lib/token/FeeAssessmentMethod.js.map +1 -1
  248. package/lib/token/NftId.js.map +1 -1
  249. package/lib/token/PendingAirdropId.js.map +1 -1
  250. package/lib/token/PendingAirdropRecord.js.map +1 -1
  251. package/lib/token/TokenAirdropTransaction.js.map +1 -1
  252. package/lib/token/TokenAssociateTransaction.cjs +2 -1
  253. package/lib/token/TokenAssociateTransaction.d.ts +4 -2
  254. package/lib/token/TokenAssociateTransaction.js.map +1 -1
  255. package/lib/token/TokenAssociation.js.map +1 -1
  256. package/lib/token/TokenBurnTransaction.d.ts +4 -0
  257. package/lib/token/TokenBurnTransaction.js.map +1 -1
  258. package/lib/token/TokenCancelAirdropTransaction.js.map +1 -1
  259. package/lib/token/TokenClaimAirdropTransaction.js.map +1 -1
  260. package/lib/token/TokenCreateTransaction.cjs +2 -1
  261. package/lib/token/TokenCreateTransaction.d.ts +4 -2
  262. package/lib/token/TokenCreateTransaction.js.map +1 -1
  263. package/lib/token/TokenDeleteTransaction.d.ts +4 -0
  264. package/lib/token/TokenDeleteTransaction.js.map +1 -1
  265. package/lib/token/TokenDissociateTransaction.cjs +2 -1
  266. package/lib/token/TokenDissociateTransaction.d.ts +4 -2
  267. package/lib/token/TokenDissociateTransaction.js.map +1 -1
  268. package/lib/token/TokenFeeScheduleUpdateTransaction.js.map +1 -1
  269. package/lib/token/TokenFreezeTransaction.cjs +2 -1
  270. package/lib/token/TokenFreezeTransaction.d.ts +4 -2
  271. package/lib/token/TokenFreezeTransaction.js.map +1 -1
  272. package/lib/token/TokenGrantKycTransaction.cjs +2 -1
  273. package/lib/token/TokenGrantKycTransaction.d.ts +4 -2
  274. package/lib/token/TokenGrantKycTransaction.js.map +1 -1
  275. package/lib/token/TokenId.js.map +1 -1
  276. package/lib/token/TokenInfo.js.map +1 -1
  277. package/lib/token/TokenInfoQuery.js.map +1 -1
  278. package/lib/token/TokenKeyValidation.js.map +1 -1
  279. package/lib/token/TokenMintTransaction.d.ts +4 -0
  280. package/lib/token/TokenMintTransaction.js.map +1 -1
  281. package/lib/token/TokenNftInfo.js.map +1 -1
  282. package/lib/token/TokenNftInfoQuery.js.map +1 -1
  283. package/lib/token/TokenNftTransfer.js.map +1 -1
  284. package/lib/token/TokenNftsUpdateTransaction.d.ts +4 -0
  285. package/lib/token/TokenPauseTransaction.d.ts +4 -0
  286. package/lib/token/TokenPauseTransaction.js.map +1 -1
  287. package/lib/token/TokenReference.js.map +1 -1
  288. package/lib/token/TokenRejectFlow.cjs +3 -1
  289. package/lib/token/TokenRejectFlow.d.ts +6 -2
  290. package/lib/token/TokenRejectFlow.js.map +1 -1
  291. package/lib/token/TokenRejectTransaction.js.map +1 -1
  292. package/lib/token/TokenRevokeKycTransaction.cjs +2 -1
  293. package/lib/token/TokenRevokeKycTransaction.d.ts +4 -2
  294. package/lib/token/TokenRevokeKycTransaction.js.map +1 -1
  295. package/lib/token/TokenSupplyType.js.map +1 -1
  296. package/lib/token/TokenTransfer.js.map +1 -1
  297. package/lib/token/TokenType.js.map +1 -1
  298. package/lib/token/TokenUnfreezeTransaction.cjs +2 -1
  299. package/lib/token/TokenUnfreezeTransaction.d.ts +4 -2
  300. package/lib/token/TokenUnfreezeTransaction.js.map +1 -1
  301. package/lib/token/TokenUnpauseTransaction.d.ts +4 -0
  302. package/lib/token/TokenUnpauseTransaction.js.map +1 -1
  303. package/lib/token/TokenUpdateNftsTransaction.d.ts +4 -0
  304. package/lib/token/TokenUpdateNftsTransaction.js.map +1 -1
  305. package/lib/token/TokenUpdateTransaction.cjs +2 -1
  306. package/lib/token/TokenUpdateTransaction.d.ts +4 -2
  307. package/lib/token/TokenUpdateTransaction.js.map +1 -1
  308. package/lib/token/TokenWipeTransaction.cjs +2 -1
  309. package/lib/token/TokenWipeTransaction.d.ts +4 -2
  310. package/lib/token/TokenWipeTransaction.js.map +1 -1
  311. package/lib/topic/SubscriptionHandle.js.map +1 -1
  312. package/lib/topic/TopicCreateTransaction.cjs +2 -1
  313. package/lib/topic/TopicCreateTransaction.d.ts +4 -2
  314. package/lib/topic/TopicCreateTransaction.js.map +1 -1
  315. package/lib/topic/TopicDeleteTransaction.d.ts +4 -0
  316. package/lib/topic/TopicDeleteTransaction.js.map +1 -1
  317. package/lib/topic/TopicId.js.map +1 -1
  318. package/lib/topic/TopicInfo.js.map +1 -1
  319. package/lib/topic/TopicInfoQuery.js.map +1 -1
  320. package/lib/topic/TopicMessage.js.map +1 -1
  321. package/lib/topic/TopicMessageChunk.js.map +1 -1
  322. package/lib/topic/TopicMessageQuery.js.map +1 -1
  323. package/lib/topic/TopicMessageSubmitTransaction.js.map +1 -1
  324. package/lib/topic/TopicUpdateTransaction.cjs +2 -1
  325. package/lib/topic/TopicUpdateTransaction.d.ts +4 -2
  326. package/lib/topic/TopicUpdateTransaction.js.map +1 -1
  327. package/lib/transaction/BatchTransaction.js.map +1 -1
  328. package/lib/transaction/CustomFeeLimit.js.map +1 -1
  329. package/lib/transaction/List.js.map +1 -1
  330. package/lib/transaction/NodeAccountIdSignatureMap.js.map +1 -1
  331. package/lib/transaction/NodeAccountIdSignatureMapLegacy.js.map +1 -1
  332. package/lib/transaction/SignableNodeTransactionBodyBytes.js.map +1 -1
  333. package/lib/transaction/SignatureMap.js.map +1 -1
  334. package/lib/transaction/SignatureMapLegacy.js.map +1 -1
  335. package/lib/transaction/SignaturePairMap.js.map +1 -1
  336. package/lib/transaction/Transaction.cjs +83 -15
  337. package/lib/transaction/Transaction.d.ts +33 -4
  338. package/lib/transaction/Transaction.js +1 -1
  339. package/lib/transaction/Transaction.js.map +1 -1
  340. package/lib/transaction/TransactionHashMap.js.map +1 -1
  341. package/lib/transaction/TransactionId.js.map +1 -1
  342. package/lib/transaction/TransactionReceipt.js.map +1 -1
  343. package/lib/transaction/TransactionReceiptQuery.cjs +2 -1
  344. package/lib/transaction/TransactionReceiptQuery.d.ts +8 -2
  345. package/lib/transaction/TransactionReceiptQuery.js.map +1 -1
  346. package/lib/transaction/TransactionRecord.js.map +1 -1
  347. package/lib/transaction/TransactionRecordQuery.cjs +2 -1
  348. package/lib/transaction/TransactionRecordQuery.d.ts +8 -2
  349. package/lib/transaction/TransactionRecordQuery.js.map +1 -1
  350. package/lib/transaction/TransactionResponse.cjs +85 -10
  351. package/lib/transaction/TransactionResponse.d.ts +39 -4
  352. package/lib/transaction/TransactionResponse.js +1 -1
  353. package/lib/transaction/TransactionResponse.js.map +1 -1
  354. package/lib/util/ASN1-Decoder.js.map +1 -1
  355. package/lib/util.js.map +1 -1
  356. package/lib/version.js +1 -1
  357. package/package.json +21 -19
  358. package/src/Executable.js +13 -8
  359. package/src/account/AccountAllowanceAdjustTransaction.js +2 -1
  360. package/src/account/AccountAllowanceApproveTransaction.js +2 -1
  361. package/src/account/AccountAllowanceDeleteTransaction.js +2 -1
  362. package/src/account/AccountBalance.js +7 -15
  363. package/src/account/AccountBalanceQuery.js +5 -9
  364. package/src/account/AccountCreateTransaction.js +2 -1
  365. package/src/account/AccountDeleteTransaction.js +2 -1
  366. package/src/account/AccountInfoQuery.js +2 -1
  367. package/src/account/AccountRecordsQuery.js +2 -1
  368. package/src/account/AccountUpdateTransaction.js +2 -1
  369. package/src/account/HbarAllowance.js +3 -1
  370. package/src/account/LiveHashAddTransaction.js +2 -1
  371. package/src/account/LiveHashDeleteTransaction.js +2 -1
  372. package/src/account/LiveHashQuery.js +2 -1
  373. package/src/account/TokenAllowance.js +3 -1
  374. package/src/account/TokenNftAllowance.js +3 -1
  375. package/src/account/TransferTransaction.js +6 -4
  376. package/src/client/Client.js +38 -0
  377. package/src/client/addressbooks/mainnet.js +1 -1
  378. package/src/client/addressbooks/previewnet.js +1 -1
  379. package/src/client/addressbooks/testnet.js +1 -1
  380. package/src/contract/ContractCreateTransaction.js +2 -1
  381. package/src/contract/ContractDeleteTransaction.js +2 -1
  382. package/src/contract/ContractUpdateTransaction.js +2 -1
  383. package/src/file/FileAppendTransaction.js +5 -4
  384. package/src/schedule/ScheduleCreateTransaction.js +2 -1
  385. package/src/token/TokenAssociateTransaction.js +2 -1
  386. package/src/token/TokenCreateTransaction.js +2 -1
  387. package/src/token/TokenDissociateTransaction.js +2 -1
  388. package/src/token/TokenFreezeTransaction.js +2 -1
  389. package/src/token/TokenGrantKycTransaction.js +2 -1
  390. package/src/token/TokenRejectFlow.js +3 -1
  391. package/src/token/TokenRevokeKycTransaction.js +2 -1
  392. package/src/token/TokenUnfreezeTransaction.js +2 -1
  393. package/src/token/TokenUpdateTransaction.js +2 -1
  394. package/src/token/TokenWipeTransaction.js +2 -1
  395. package/src/topic/TopicCreateTransaction.js +2 -1
  396. package/src/topic/TopicUpdateTransaction.js +2 -1
  397. package/src/transaction/Transaction.js +139 -19
  398. package/src/transaction/TransactionReceiptQuery.js +2 -1
  399. package/src/transaction/TransactionRecordQuery.js +2 -1
  400. package/src/transaction/TransactionResponse.js +101 -14
package/lib/Key.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"Key.js","sources":["../src/Key.js"],"sourcesContent":["// SPDX-License-Identifier: Apache-2.0\n\nimport CACHE from \"./Cache.js\";\n\n/**\n * @namespace proto\n * @typedef {import(\"@hiero-ledger/proto\").proto.IKey} HieroProto.proto.IKey\n */\n\nexport default class Key {\n /**\n * @internal\n * @abstract\n * @returns {HieroProto.proto.IKey}\n */\n // eslint-disable-next-line jsdoc/require-returns-check\n _toProtobufKey() {\n throw new Error(\"not implemented\");\n }\n\n /**\n * @internal\n * @param {HieroProto.proto.IKey} key\n * @returns {Key}\n */\n static _fromProtobufKey(key) {\n if (key.contractID != null) {\n return CACHE.contractId(key.contractID);\n }\n\n if (key.delegatableContractId != null) {\n return CACHE.delegateContractId(key.delegatableContractId);\n }\n\n if (key.ed25519 != null && key.ed25519.byteLength > 0) {\n return CACHE.publicKeyED25519(key.ed25519);\n }\n\n if (key.ECDSASecp256k1 != null && key.ECDSASecp256k1.byteLength > 0) {\n return CACHE.publicKeyECDSA(key.ECDSASecp256k1);\n }\n\n if (key.thresholdKey != null && key.thresholdKey.threshold != null) {\n return CACHE.thresholdKey(key.thresholdKey);\n }\n\n if (key.keyList != null) {\n return CACHE.keyList(key.keyList);\n }\n\n // @ts-ignore\n return null;\n\n /* throw new Error(\n `(BUG) keyFromProtobuf: not implemented key case: ${JSON.stringify(\n key\n )}`\n ); */\n }\n}\n"],"names":["Key","_toProtobufKey","Error","_fromProtobufKey","key","contractID","CACHE","contractId","delegatableContractId","delegateContractId","ed25519","byteLength","publicKeyED25519","ECDSASecp256k1","publicKeyECDSA","thresholdKey","threshold","keyList"],"mappings":"0BASe,MAAMA,EAOjB,cAAAC,GACI,MAAM,IAAIC,MAAM,kBACxB,CAOI,uBAAOC,CAAiBC,GACpB,OAAsB,MAAlBA,EAAIC,WACGC,EAAMC,WAAWH,EAAIC,YAGC,MAA7BD,EAAII,sBACGF,EAAMG,mBAAmBL,EAAII,uBAGrB,MAAfJ,EAAIM,SAAmBN,EAAIM,QAAQC,WAAa,EACzCL,EAAMM,iBAAiBR,EAAIM,SAGZ,MAAtBN,EAAIS,gBAA0BT,EAAIS,eAAeF,WAAa,EACvDL,EAAMQ,eAAeV,EAAIS,gBAGZ,MAApBT,EAAIW,cAAsD,MAA9BX,EAAIW,aAAaC,UACtCV,EAAMS,aAAaX,EAAIW,cAGf,MAAfX,EAAIa,QACGX,EAAMW,QAAQb,EAAIa,SAItB,IAOf"}
1
+ {"version":3,"file":"Key.js","sources":["../src/Key.js"],"sourcesContent":["// SPDX-License-Identifier: Apache-2.0\n\nimport CACHE from \"./Cache.js\";\n\n/**\n * @namespace proto\n * @typedef {import(\"@hiero-ledger/proto\").proto.IKey} HieroProto.proto.IKey\n */\n\nexport default class Key {\n /**\n * @internal\n * @abstract\n * @returns {HieroProto.proto.IKey}\n */\n // eslint-disable-next-line jsdoc/require-returns-check\n _toProtobufKey() {\n throw new Error(\"not implemented\");\n }\n\n /**\n * @internal\n * @param {HieroProto.proto.IKey} key\n * @returns {Key}\n */\n static _fromProtobufKey(key) {\n if (key.contractID != null) {\n return CACHE.contractId(key.contractID);\n }\n\n if (key.delegatableContractId != null) {\n return CACHE.delegateContractId(key.delegatableContractId);\n }\n\n if (key.ed25519 != null && key.ed25519.byteLength > 0) {\n return CACHE.publicKeyED25519(key.ed25519);\n }\n\n if (key.ECDSASecp256k1 != null && key.ECDSASecp256k1.byteLength > 0) {\n return CACHE.publicKeyECDSA(key.ECDSASecp256k1);\n }\n\n if (key.thresholdKey != null && key.thresholdKey.threshold != null) {\n return CACHE.thresholdKey(key.thresholdKey);\n }\n\n if (key.keyList != null) {\n return CACHE.keyList(key.keyList);\n }\n\n // @ts-ignore\n return null;\n\n /* throw new Error(\n `(BUG) keyFromProtobuf: not implemented key case: ${JSON.stringify(\n key\n )}`\n ); */\n }\n}\n"],"names":["Key","_toProtobufKey","Error","_fromProtobufKey","key","contractID","CACHE","contractId","delegatableContractId","delegateContractId","ed25519","byteLength","publicKeyED25519","ECDSASecp256k1","publicKeyECDSA","thresholdKey","threshold","keyList"],"mappings":"0BASe,MAAMA,EAOjB,cAAAC,GACI,MAAM,IAAIC,MAAM,kBACpB,CAOA,uBAAOC,CAAiBC,GACpB,OAAsB,MAAlBA,EAAIC,WACGC,EAAMC,WAAWH,EAAIC,YAGC,MAA7BD,EAAII,sBACGF,EAAMG,mBAAmBL,EAAII,uBAGrB,MAAfJ,EAAIM,SAAmBN,EAAIM,QAAQC,WAAa,EACzCL,EAAMM,iBAAiBR,EAAIM,SAGZ,MAAtBN,EAAIS,gBAA0BT,EAAIS,eAAeF,WAAa,EACvDL,EAAMQ,eAAeV,EAAIS,gBAGZ,MAApBT,EAAIW,cAAsD,MAA9BX,EAAIW,aAAaC,UACtCV,EAAMS,aAAaX,EAAIW,cAGf,MAAfX,EAAIa,QACGX,EAAMW,QAAQb,EAAIa,SAItB,IAOX"}
@@ -1 +1 @@
1
- {"version":3,"file":"KeyList.js","sources":["../src/KeyList.js"],"sourcesContent":["// SPDX-License-Identifier: Apache-2.0\n\nimport Key from \"./Key.js\";\nimport CACHE from \"./Cache.js\";\n\n/**\n * @namespace proto\n * @typedef {import(\"@hiero-ledger/proto\").proto.IKey} HieroProto.proto.IKey\n * @typedef {import(\"@hiero-ledger/proto\").proto.IKeyList} HieroProto.proto.IKeyList\n * @typedef {import(\"@hiero-ledger/proto\").proto.IThresholdKey} HieroProto.proto.IThresholdKey\n */\n\n/**\n * A list of Keys (`Key`) with an optional threshold.\n */\nexport default class KeyList extends Key {\n /**\n * @param {?Key[]} [keys]\n * @param {?number} [threshold]\n */\n constructor(keys, threshold) {\n super();\n\n /**\n * @private\n * @type {Key[]}\n */\n // @ts-ignore\n if (keys == null) this._keys = [];\n //checks if the value for `keys` is passed as a single key\n //rather than a list that contains just one key\n else if (keys instanceof Key) this._keys = [keys];\n else this._keys = keys;\n\n /**\n * @type {?number}\n */\n this._threshold = threshold == null ? null : threshold;\n }\n\n /**\n * @param {Key[]} keys\n * @returns {KeyList}\n */\n static of(...keys) {\n return new KeyList(keys, null);\n }\n\n /**\n * @template T\n * @param {ArrayLike<Key>} arrayLike\n * @param {((key: Key) => Key)} [mapFn]\n * @param {T} [thisArg]\n * @returns {KeyList}\n */\n static from(arrayLike, mapFn, thisArg) {\n if (mapFn == null) {\n return new KeyList(Array.from(arrayLike));\n }\n\n return new KeyList(Array.from(arrayLike, mapFn, thisArg));\n }\n\n /**\n * @returns {?number}\n */\n get threshold() {\n return this._threshold;\n }\n\n /**\n * @param {number} threshold\n * @returns {this}\n */\n setThreshold(threshold) {\n this._threshold = threshold;\n return this;\n }\n\n /**\n * @param {Key[]} keys\n * @returns {number}\n */\n push(...keys) {\n return this._keys.push(...keys);\n }\n\n /**\n * @param {number} start\n * @param {number} deleteCount\n * @param {Key[]} items\n * @returns {KeyList}\n */\n splice(start, deleteCount, ...items) {\n return new KeyList(\n this._keys.splice(start, deleteCount, ...items),\n this.threshold,\n );\n }\n\n /**\n * @param {number=} start\n * @param {number=} end\n * @returns {KeyList}\n */\n slice(start, end) {\n return new KeyList(this._keys.slice(start, end), this.threshold);\n }\n\n /**\n * @returns {Iterator<Key>}\n */\n [Symbol.iterator]() {\n return this._keys[Symbol.iterator]();\n }\n\n /**\n * @returns {Key[]}\n */\n toArray() {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return this._keys.slice();\n }\n\n /**\n * @returns {string}\n */\n toString() {\n return JSON.stringify({\n threshold: this._threshold,\n keys: this._keys.toString(),\n });\n }\n\n /**\n * @returns {HieroProto.proto.IKey}\n */\n _toProtobufKey() {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-return\n const keys = this._keys.map((key) => key._toProtobufKey());\n\n if (this.threshold == null) {\n return { keyList: { keys } };\n } else {\n return {\n thresholdKey: {\n threshold: this.threshold,\n keys: { keys },\n },\n };\n }\n }\n\n /**\n * @param {HieroProto.proto.IKeyList} key\n * @returns {KeyList}\n */\n static __fromProtobufKeyList(key) {\n const keys = (key.keys != null ? key.keys : []).map((key) =>\n Key._fromProtobufKey(key),\n );\n return new KeyList(keys);\n }\n\n /**\n * @param {HieroProto.proto.IThresholdKey} key\n * @returns {KeyList}\n */\n static __fromProtobufThresoldKey(key) {\n const list = KeyList.__fromProtobufKeyList(\n key.keys != null ? key.keys : {},\n );\n list.setThreshold(key.threshold != null ? key.threshold : 0);\n return list;\n }\n}\n\nCACHE.setKeyList((key) => KeyList.__fromProtobufKeyList(key));\nCACHE.setThresholdKey((key) => KeyList.__fromProtobufThresoldKey(key));\n"],"names":["KeyList","Key","constructor","keys","threshold","super","this","_keys","_threshold","of","from","arrayLike","mapFn","thisArg","Array","setThreshold","push","splice","start","deleteCount","items","slice","end","Symbol","iterator","toArray","toString","JSON","stringify","_toProtobufKey","map","key","keyList","thresholdKey","__fromProtobufKeyList","_fromProtobufKey","__fromProtobufThresoldKey","list","CACHE","setKeyList","setThresholdKey"],"mappings":"kDAee,MAAMA,UAAgBC,EAKjC,WAAAC,CAAYC,EAAMC,GACdC,QAOkBC,KAAKC,MAAX,MAARJ,EAA2B,GAGtBA,aAAgBF,EAAkB,CAACE,GAC1BA,EAKlBG,KAAKE,WAA0B,MAAbJ,EAAoB,KAAOA,CACrD,CAMI,SAAOK,IAAMN,GACT,OAAO,IAAIH,EAAQG,EAAM,KACjC,CASI,WAAOO,CAAKC,EAAWC,EAAOC,GAC1B,OACW,IAAIb,EADF,MAATY,EACmBE,MAAMJ,KAAKC,GAGfG,MAAMJ,KAAKC,EAAWC,EAAOC,GACxD,CAKI,aAAIT,GACA,OAAOE,KAAKE,UACpB,CAMI,YAAAO,CAAaX,GAET,OADAE,KAAKE,WAAaJ,EACXE,IACf,CAMI,IAAAU,IAAQb,GACJ,OAAOG,KAAKC,MAAMS,QAAQb,EAClC,CAQI,MAAAc,CAAOC,EAAOC,KAAgBC,GAC1B,OAAO,IAAIpB,EACPM,KAAKC,MAAMU,OAAOC,EAAOC,KAAgBC,GACzCd,KAAKF,UAEjB,CAOI,KAAAiB,CAAMH,EAAOI,GACT,OAAO,IAAItB,EAAQM,KAAKC,MAAMc,MAAMH,EAAOI,GAAMhB,KAAKF,UAC9D,CAKI,CAACmB,OAAOC,YACJ,OAAOlB,KAAKC,MAAMgB,OAAOC,WACjC,CAKI,OAAAC,GAEI,OAAOnB,KAAKC,MAAMc,OAC1B,CAKI,QAAAK,GACI,OAAOC,KAAKC,UAAU,CAClBxB,UAAWE,KAAKE,WAChBL,KAAMG,KAAKC,MAAMmB,YAE7B,CAKI,cAAAG,GAEI,MAAM1B,EAAOG,KAAKC,MAAMuB,IAAKC,GAAQA,EAAIF,kBAEzC,OAAsB,MAAlBvB,KAAKF,UACE,CAAE4B,QAAS,CAAE7B,SAEb,CACH8B,aAAc,CACV7B,UAAWE,KAAKF,UAChBD,KAAM,CAAEA,SAI5B,CAMI,4BAAO+B,CAAsBH,GACzB,MAAM5B,GAAoB,MAAZ4B,EAAI5B,KAAe4B,EAAI5B,KAAO,IAAI2B,IAAKC,GACjD9B,EAAIkC,iBAAiBJ,IAEzB,OAAO,IAAI/B,EAAQG,EAC3B,CAMI,gCAAOiC,CAA0BL,GAC7B,MAAMM,EAAOrC,EAAQkC,sBACL,MAAZH,EAAI5B,KAAe4B,EAAI5B,KAAO,CAAE,GAGpC,OADAkC,EAAKtB,aAA8B,MAAjBgB,EAAI3B,UAAoB2B,EAAI3B,UAAY,GACnDiC,CACf,EAGAC,EAAMC,WAAYR,GAAQ/B,EAAQkC,sBAAsBH,IACxDO,EAAME,gBAAiBT,GAAQ/B,EAAQoC,0BAA0BL"}
1
+ {"version":3,"file":"KeyList.js","sources":["../src/KeyList.js"],"sourcesContent":["// SPDX-License-Identifier: Apache-2.0\n\nimport Key from \"./Key.js\";\nimport CACHE from \"./Cache.js\";\n\n/**\n * @namespace proto\n * @typedef {import(\"@hiero-ledger/proto\").proto.IKey} HieroProto.proto.IKey\n * @typedef {import(\"@hiero-ledger/proto\").proto.IKeyList} HieroProto.proto.IKeyList\n * @typedef {import(\"@hiero-ledger/proto\").proto.IThresholdKey} HieroProto.proto.IThresholdKey\n */\n\n/**\n * A list of Keys (`Key`) with an optional threshold.\n */\nexport default class KeyList extends Key {\n /**\n * @param {?Key[]} [keys]\n * @param {?number} [threshold]\n */\n constructor(keys, threshold) {\n super();\n\n /**\n * @private\n * @type {Key[]}\n */\n // @ts-ignore\n if (keys == null) this._keys = [];\n //checks if the value for `keys` is passed as a single key\n //rather than a list that contains just one key\n else if (keys instanceof Key) this._keys = [keys];\n else this._keys = keys;\n\n /**\n * @type {?number}\n */\n this._threshold = threshold == null ? null : threshold;\n }\n\n /**\n * @param {Key[]} keys\n * @returns {KeyList}\n */\n static of(...keys) {\n return new KeyList(keys, null);\n }\n\n /**\n * @template T\n * @param {ArrayLike<Key>} arrayLike\n * @param {((key: Key) => Key)} [mapFn]\n * @param {T} [thisArg]\n * @returns {KeyList}\n */\n static from(arrayLike, mapFn, thisArg) {\n if (mapFn == null) {\n return new KeyList(Array.from(arrayLike));\n }\n\n return new KeyList(Array.from(arrayLike, mapFn, thisArg));\n }\n\n /**\n * @returns {?number}\n */\n get threshold() {\n return this._threshold;\n }\n\n /**\n * @param {number} threshold\n * @returns {this}\n */\n setThreshold(threshold) {\n this._threshold = threshold;\n return this;\n }\n\n /**\n * @param {Key[]} keys\n * @returns {number}\n */\n push(...keys) {\n return this._keys.push(...keys);\n }\n\n /**\n * @param {number} start\n * @param {number} deleteCount\n * @param {Key[]} items\n * @returns {KeyList}\n */\n splice(start, deleteCount, ...items) {\n return new KeyList(\n this._keys.splice(start, deleteCount, ...items),\n this.threshold,\n );\n }\n\n /**\n * @param {number=} start\n * @param {number=} end\n * @returns {KeyList}\n */\n slice(start, end) {\n return new KeyList(this._keys.slice(start, end), this.threshold);\n }\n\n /**\n * @returns {Iterator<Key>}\n */\n [Symbol.iterator]() {\n return this._keys[Symbol.iterator]();\n }\n\n /**\n * @returns {Key[]}\n */\n toArray() {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return this._keys.slice();\n }\n\n /**\n * @returns {string}\n */\n toString() {\n return JSON.stringify({\n threshold: this._threshold,\n keys: this._keys.toString(),\n });\n }\n\n /**\n * @returns {HieroProto.proto.IKey}\n */\n _toProtobufKey() {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-return\n const keys = this._keys.map((key) => key._toProtobufKey());\n\n if (this.threshold == null) {\n return { keyList: { keys } };\n } else {\n return {\n thresholdKey: {\n threshold: this.threshold,\n keys: { keys },\n },\n };\n }\n }\n\n /**\n * @param {HieroProto.proto.IKeyList} key\n * @returns {KeyList}\n */\n static __fromProtobufKeyList(key) {\n const keys = (key.keys != null ? key.keys : []).map((key) =>\n Key._fromProtobufKey(key),\n );\n return new KeyList(keys);\n }\n\n /**\n * @param {HieroProto.proto.IThresholdKey} key\n * @returns {KeyList}\n */\n static __fromProtobufThresoldKey(key) {\n const list = KeyList.__fromProtobufKeyList(\n key.keys != null ? key.keys : {},\n );\n list.setThreshold(key.threshold != null ? key.threshold : 0);\n return list;\n }\n}\n\nCACHE.setKeyList((key) => KeyList.__fromProtobufKeyList(key));\nCACHE.setThresholdKey((key) => KeyList.__fromProtobufThresoldKey(key));\n"],"names":["KeyList","Key","constructor","keys","threshold","super","this","_keys","_threshold","of","from","arrayLike","mapFn","thisArg","Array","setThreshold","push","splice","start","deleteCount","items","slice","end","Symbol","iterator","toArray","toString","JSON","stringify","_toProtobufKey","map","key","keyList","thresholdKey","__fromProtobufKeyList","_fromProtobufKey","__fromProtobufThresoldKey","list","CACHE","setKeyList","setThresholdKey"],"mappings":"kDAee,MAAMA,UAAgBC,EAKjC,WAAAC,CAAYC,EAAMC,GACdC,QAOkBC,KAAKC,MAAX,MAARJ,EAA2B,GAGtBA,aAAgBF,EAAkB,CAACE,GAC1BA,EAKlBG,KAAKE,WAA0B,MAAbJ,EAAoB,KAAOA,CACjD,CAMA,SAAOK,IAAMN,GACT,OAAO,IAAIH,EAAQG,EAAM,KAC7B,CASA,WAAOO,CAAKC,EAAWC,EAAOC,GAC1B,OACW,IAAIb,EADF,MAATY,EACmBE,MAAMJ,KAAKC,GAGfG,MAAMJ,KAAKC,EAAWC,EAAOC,GACpD,CAKA,aAAIT,GACA,OAAOE,KAAKE,UAChB,CAMA,YAAAO,CAAaX,GAET,OADAE,KAAKE,WAAaJ,EACXE,IACX,CAMA,IAAAU,IAAQb,GACJ,OAAOG,KAAKC,MAAMS,QAAQb,EAC9B,CAQA,MAAAc,CAAOC,EAAOC,KAAgBC,GAC1B,OAAO,IAAIpB,EACPM,KAAKC,MAAMU,OAAOC,EAAOC,KAAgBC,GACzCd,KAAKF,UAEb,CAOA,KAAAiB,CAAMH,EAAOI,GACT,OAAO,IAAItB,EAAQM,KAAKC,MAAMc,MAAMH,EAAOI,GAAMhB,KAAKF,UAC1D,CAKA,CAACmB,OAAOC,YACJ,OAAOlB,KAAKC,MAAMgB,OAAOC,WAC7B,CAKA,OAAAC,GAEI,OAAOnB,KAAKC,MAAMc,OACtB,CAKA,QAAAK,GACI,OAAOC,KAAKC,UAAU,CAClBxB,UAAWE,KAAKE,WAChBL,KAAMG,KAAKC,MAAMmB,YAEzB,CAKA,cAAAG,GAEI,MAAM1B,EAAOG,KAAKC,MAAMuB,IAAKC,GAAQA,EAAIF,kBAEzC,OAAsB,MAAlBvB,KAAKF,UACE,CAAE4B,QAAS,CAAE7B,SAEb,CACH8B,aAAc,CACV7B,UAAWE,KAAKF,UAChBD,KAAM,CAAEA,SAIxB,CAMA,4BAAO+B,CAAsBH,GACzB,MAAM5B,GAAoB,MAAZ4B,EAAI5B,KAAe4B,EAAI5B,KAAO,IAAI2B,IAAKC,GACjD9B,EAAIkC,iBAAiBJ,IAEzB,OAAO,IAAI/B,EAAQG,EACvB,CAMA,gCAAOiC,CAA0BL,GAC7B,MAAMM,EAAOrC,EAAQkC,sBACL,MAAZH,EAAI5B,KAAe4B,EAAI5B,KAAO,CAAA,GAGlC,OADAkC,EAAKtB,aAA8B,MAAjBgB,EAAI3B,UAAoB2B,EAAI3B,UAAY,GACnDiC,CACX,EAGJC,EAAMC,WAAYR,GAAQ/B,EAAQkC,sBAAsBH,IACxDO,EAAME,gBAAiBT,GAAQ/B,EAAQoC,0BAA0BL"}
@@ -1 +1 @@
1
- {"version":3,"file":"LedgerId.js","sources":["../src/LedgerId.js"],"sourcesContent":["// SPDX-License-Identifier: Apache-2.0\n\nimport * as hex from \"./encoding/hex.js\";\n\n/**\n * Represents the ID of a network.\n */\nexport default class LedgerId {\n /**\n * @hideconstructor\n * @internal\n * @param {Uint8Array} ledgerId\n */\n constructor(ledgerId) {\n /**\n * @readonly\n * @type {Uint8Array}\n */\n this._ledgerId = ledgerId;\n\n Object.freeze(this);\n }\n\n /**\n * @param {string} ledgerId\n * @returns {LedgerId}\n */\n static fromString(ledgerId) {\n switch (ledgerId) {\n case NETNAMES[0]:\n case \"0\":\n return LedgerId.MAINNET;\n case NETNAMES[1]:\n case \"1\":\n return LedgerId.TESTNET;\n case NETNAMES[2]:\n case \"2\":\n return LedgerId.PREVIEWNET;\n case NETNAMES[3]:\n case \"3\":\n return LedgerId.LOCAL_NODE;\n default: {\n try {\n let ledgerIdDecoded = hex.decode(ledgerId);\n return new LedgerId(ledgerIdDecoded);\n } catch (error) {\n throw new Error(\"Default reached for fromString\");\n }\n }\n }\n }\n\n /**\n * If the ledger ID is a known value such as `[0]`, `[1]`, `[2]` this method\n * will instead return \"mainnet\", \"testnet\", or \"previewnet\", otherwise it will\n * hex encode the bytes.\n *\n * @returns {string}\n */\n toString() {\n if (this._ledgerId.length == 1) {\n switch (this._ledgerId[0]) {\n case 0:\n return NETNAMES[0];\n case 1:\n return NETNAMES[1];\n case 2:\n return NETNAMES[2];\n case 3:\n return NETNAMES[3];\n default:\n return hex.encode(this._ledgerId);\n }\n } else {\n return hex.encode(this._ledgerId);\n }\n }\n\n /**\n * Using the UTF-8 byte representation of \"mainnet\", \"testnet\",\n * or \"previewnet\" is NOT supported.\n *\n * @param {Uint8Array} bytes\n * @returns {LedgerId}\n */\n static fromBytes(bytes) {\n return new LedgerId(bytes);\n }\n\n /**\n * @returns {Uint8Array}\n */\n toBytes() {\n return this._ledgerId;\n }\n\n /**\n * @returns {boolean}\n */\n isMainnet() {\n return this.toString() == NETNAMES[0];\n }\n\n /**\n * @returns {boolean}\n */\n isTestnet() {\n return this.toString() == NETNAMES[1];\n }\n\n /**\n * @returns {boolean}\n */\n isPreviewnet() {\n return this.toString() == NETNAMES[2];\n }\n\n /**\n * @returns {boolean}\n */\n isLocalNode() {\n return this.toString() == NETNAMES[3];\n }\n}\n\nconst NETNAMES = [\"mainnet\", \"testnet\", \"previewnet\", \"local-node\"];\n\nLedgerId.MAINNET = new LedgerId(new Uint8Array([0]));\n\nLedgerId.TESTNET = new LedgerId(new Uint8Array([1]));\n\nLedgerId.PREVIEWNET = new LedgerId(new Uint8Array([2]));\n\nLedgerId.LOCAL_NODE = new LedgerId(new Uint8Array([3]));\n"],"names":["LedgerId","constructor","ledgerId","this","_ledgerId","Object","freeze","fromString","NETNAMES","MAINNET","TESTNET","PREVIEWNET","LOCAL_NODE","ledgerIdDecoded","hex.decode","error","Error","toString","length","hex.encode","fromBytes","bytes","toBytes","isMainnet","isTestnet","isPreviewnet","isLocalNode","Uint8Array"],"mappings":"uDAOe,MAAMA,EAMjB,WAAAC,CAAYC,GAKRC,KAAKC,UAAYF,EAEjBG,OAAOC,OAAOH,KACtB,CAMI,iBAAOI,CAAWL,GACd,OAAQA,GACJ,KAAKM,EAAS,GACd,IAAK,IACD,OAAOR,EAASS,QACpB,KAAKD,EAAS,GACd,IAAK,IACD,OAAOR,EAASU,QACpB,KAAKF,EAAS,GACd,IAAK,IACD,OAAOR,EAASW,WACpB,KAAKH,EAAS,GACd,IAAK,IACD,OAAOR,EAASY,WACpB,QACI,IACI,IAAIC,EAAkBC,EAAWZ,GACjC,OAAO,IAAIF,EAASa,EACvB,CAAC,MAAOE,GACL,MAAM,IAAIC,MAAM,iCACpC,EAGA,CASI,QAAAC,GACI,GAA6B,GAAzBd,KAAKC,UAAUc,OAcf,OAAOC,EAAWhB,KAAKC,WAbvB,OAAQD,KAAKC,UAAU,IACnB,KAAK,EACD,OAAOI,EAAS,GACpB,KAAK,EACD,OAAOA,EAAS,GACpB,KAAK,EACD,OAAOA,EAAS,GACpB,KAAK,EACD,OAAOA,EAAS,GACpB,QACI,OAAOW,EAAWhB,KAAKC,WAK3C,CASI,gBAAOgB,CAAUC,GACb,OAAO,IAAIrB,EAASqB,EAC5B,CAKI,OAAAC,GACI,OAAOnB,KAAKC,SACpB,CAKI,SAAAmB,GACI,OAAOpB,KAAKc,YAAcT,EAAS,EAC3C,CAKI,SAAAgB,GACI,OAAOrB,KAAKc,YAAcT,EAAS,EAC3C,CAKI,YAAAiB,GACI,OAAOtB,KAAKc,YAAcT,EAAS,EAC3C,CAKI,WAAAkB,GACI,OAAOvB,KAAKc,YAAcT,EAAS,EAC3C,EAGA,MAAMA,EAAW,CAAC,UAAW,UAAW,aAAc,cAEtDR,EAASS,QAAU,IAAIT,EAAS,IAAI2B,WAAW,CAAC,KAEhD3B,EAASU,QAAU,IAAIV,EAAS,IAAI2B,WAAW,CAAC,KAEhD3B,EAASW,WAAa,IAAIX,EAAS,IAAI2B,WAAW,CAAC,KAEnD3B,EAASY,WAAa,IAAIZ,EAAS,IAAI2B,WAAW,CAAC"}
1
+ {"version":3,"file":"LedgerId.js","sources":["../src/LedgerId.js"],"sourcesContent":["// SPDX-License-Identifier: Apache-2.0\n\nimport * as hex from \"./encoding/hex.js\";\n\n/**\n * Represents the ID of a network.\n */\nexport default class LedgerId {\n /**\n * @hideconstructor\n * @internal\n * @param {Uint8Array} ledgerId\n */\n constructor(ledgerId) {\n /**\n * @readonly\n * @type {Uint8Array}\n */\n this._ledgerId = ledgerId;\n\n Object.freeze(this);\n }\n\n /**\n * @param {string} ledgerId\n * @returns {LedgerId}\n */\n static fromString(ledgerId) {\n switch (ledgerId) {\n case NETNAMES[0]:\n case \"0\":\n return LedgerId.MAINNET;\n case NETNAMES[1]:\n case \"1\":\n return LedgerId.TESTNET;\n case NETNAMES[2]:\n case \"2\":\n return LedgerId.PREVIEWNET;\n case NETNAMES[3]:\n case \"3\":\n return LedgerId.LOCAL_NODE;\n default: {\n try {\n let ledgerIdDecoded = hex.decode(ledgerId);\n return new LedgerId(ledgerIdDecoded);\n } catch (error) {\n throw new Error(\"Default reached for fromString\");\n }\n }\n }\n }\n\n /**\n * If the ledger ID is a known value such as `[0]`, `[1]`, `[2]` this method\n * will instead return \"mainnet\", \"testnet\", or \"previewnet\", otherwise it will\n * hex encode the bytes.\n *\n * @returns {string}\n */\n toString() {\n if (this._ledgerId.length == 1) {\n switch (this._ledgerId[0]) {\n case 0:\n return NETNAMES[0];\n case 1:\n return NETNAMES[1];\n case 2:\n return NETNAMES[2];\n case 3:\n return NETNAMES[3];\n default:\n return hex.encode(this._ledgerId);\n }\n } else {\n return hex.encode(this._ledgerId);\n }\n }\n\n /**\n * Using the UTF-8 byte representation of \"mainnet\", \"testnet\",\n * or \"previewnet\" is NOT supported.\n *\n * @param {Uint8Array} bytes\n * @returns {LedgerId}\n */\n static fromBytes(bytes) {\n return new LedgerId(bytes);\n }\n\n /**\n * @returns {Uint8Array}\n */\n toBytes() {\n return this._ledgerId;\n }\n\n /**\n * @returns {boolean}\n */\n isMainnet() {\n return this.toString() == NETNAMES[0];\n }\n\n /**\n * @returns {boolean}\n */\n isTestnet() {\n return this.toString() == NETNAMES[1];\n }\n\n /**\n * @returns {boolean}\n */\n isPreviewnet() {\n return this.toString() == NETNAMES[2];\n }\n\n /**\n * @returns {boolean}\n */\n isLocalNode() {\n return this.toString() == NETNAMES[3];\n }\n}\n\nconst NETNAMES = [\"mainnet\", \"testnet\", \"previewnet\", \"local-node\"];\n\nLedgerId.MAINNET = new LedgerId(new Uint8Array([0]));\n\nLedgerId.TESTNET = new LedgerId(new Uint8Array([1]));\n\nLedgerId.PREVIEWNET = new LedgerId(new Uint8Array([2]));\n\nLedgerId.LOCAL_NODE = new LedgerId(new Uint8Array([3]));\n"],"names":["LedgerId","constructor","ledgerId","this","_ledgerId","Object","freeze","fromString","NETNAMES","MAINNET","TESTNET","PREVIEWNET","LOCAL_NODE","ledgerIdDecoded","hex.decode","error","Error","toString","length","hex.encode","fromBytes","bytes","toBytes","isMainnet","isTestnet","isPreviewnet","isLocalNode","Uint8Array"],"mappings":"uDAOe,MAAMA,EAMjB,WAAAC,CAAYC,GAKRC,KAAKC,UAAYF,EAEjBG,OAAOC,OAAOH,KAClB,CAMA,iBAAOI,CAAWL,GACd,OAAQA,GACJ,KAAKM,EAAS,GACd,IAAK,IACD,OAAOR,EAASS,QACpB,KAAKD,EAAS,GACd,IAAK,IACD,OAAOR,EAASU,QACpB,KAAKF,EAAS,GACd,IAAK,IACD,OAAOR,EAASW,WACpB,KAAKH,EAAS,GACd,IAAK,IACD,OAAOR,EAASY,WACpB,QACI,IACI,IAAIC,EAAkBC,EAAWZ,GACjC,OAAO,IAAIF,EAASa,EACxB,CAAE,MAAOE,GACL,MAAM,IAAIC,MAAM,iCACpB,EAGZ,CASA,QAAAC,GACI,GAA6B,GAAzBd,KAAKC,UAAUc,OAcf,OAAOC,EAAWhB,KAAKC,WAbvB,OAAQD,KAAKC,UAAU,IACnB,KAAK,EACD,OAAOI,EAAS,GACpB,KAAK,EACD,OAAOA,EAAS,GACpB,KAAK,EACD,OAAOA,EAAS,GACpB,KAAK,EACD,OAAOA,EAAS,GACpB,QACI,OAAOW,EAAWhB,KAAKC,WAKvC,CASA,gBAAOgB,CAAUC,GACb,OAAO,IAAIrB,EAASqB,EACxB,CAKA,OAAAC,GACI,OAAOnB,KAAKC,SAChB,CAKA,SAAAmB,GACI,OAAOpB,KAAKc,YAAcT,EAAS,EACvC,CAKA,SAAAgB,GACI,OAAOrB,KAAKc,YAAcT,EAAS,EACvC,CAKA,YAAAiB,GACI,OAAOtB,KAAKc,YAAcT,EAAS,EACvC,CAKA,WAAAkB,GACI,OAAOvB,KAAKc,YAAcT,EAAS,EACvC,EAGJ,MAAMA,EAAW,CAAC,UAAW,UAAW,aAAc,cAEtDR,EAASS,QAAU,IAAIT,EAAS,IAAI2B,WAAW,CAAC,KAEhD3B,EAASU,QAAU,IAAIV,EAAS,IAAI2B,WAAW,CAAC,KAEhD3B,EAASW,WAAa,IAAIX,EAAS,IAAI2B,WAAW,CAAC,KAEnD3B,EAASY,WAAa,IAAIZ,EAAS,IAAI2B,WAAW,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"LocalProvider.js","sources":["../src/LocalProvider.js"],"sourcesContent":["// SPDX-License-Identifier: Apache-2.0\n\nimport Client from \"./client/NodeClient.js\";\nimport AccountBalanceQuery from \"./account/AccountBalanceQuery.js\";\nimport AccountInfoQuery from \"./account/AccountInfoQuery.js\";\nimport AccountRecordsQuery from \"./account/AccountRecordsQuery.js\";\nimport TransactionReceiptQuery from \"./transaction/TransactionReceiptQuery.js\";\n\n/**\n * @typedef {import(\"./Provider.js\").Provider} Provider\n * @typedef {import(\"./LedgerId.js\").default} LedgerId\n * @typedef {import(\"./Key.js\").default} Key\n * @typedef {import(\"./transaction/Transaction.js\").default} Transaction\n * @typedef {import(\"./transaction/TransactionId.js\").default} TransactionId\n * @typedef {import(\"./transaction/TransactionResponse.js\").default} TransactionResponse\n * @typedef {import(\"./transaction/TransactionReceipt.js\").default} TransactionReceipt\n * @typedef {import(\"./transaction/TransactionRecord.js\").default} TransactionRecord\n * @typedef {import(\"./account/AccountId.js\").default} AccountId\n * @typedef {import(\"./account/AccountBalance.js\").default} AccountBalance\n * @typedef {import(\"./account/AccountInfo.js\").default} AccountInfo\n * @typedef {import(\"./logger/Logger.js\").default} Logger\n */\n\n/**\n * @template {any} O\n * @typedef {import(\"./query/Query.js\").default<O>} Query<O>\n */\n\n/**\n * @template RequestT\n * @template ResponseT\n * @template OutputT\n * @typedef {import(\"./Executable.js\").default<RequestT, ResponseT, OutputT>} Executable<RequestT, ResponseT, OutputT>\n */\n\n/**\n * @implements {Provider}\n */\nexport default class LocalProvider {\n /**\n * @param {object} props\n * @param {Client} [props.client]\n */\n constructor(props = {}) {\n if (props != null && props.client != null) {\n this._client = props.client;\n return;\n }\n\n if (process.env.HEDERA_NETWORK == null) {\n throw new Error(\n \"LocalProvider requires the `HEDERA_NETWORK` environment variable to be set\",\n );\n }\n\n this._client = Client.forName(process.env.HEDERA_NETWORK);\n }\n\n /**\n * @param {Client} client\n * @returns {LocalProvider}\n */\n static fromClient(client) {\n return new LocalProvider({ client });\n }\n\n /**\n * @returns {LedgerId?}\n */\n getLedgerId() {\n return this._client.ledgerId;\n }\n\n /**\n * @returns {{[key: string]: (string | AccountId)}}\n */\n getNetwork() {\n return this._client.network;\n }\n\n /**\n * @returns {string[]}\n */\n getMirrorNetwork() {\n return this._client.mirrorNetwork;\n }\n\n /**\n * @param {AccountId | string} accountId\n * @returns {Promise<AccountBalance>}\n */\n getAccountBalance(accountId) {\n return new AccountBalanceQuery()\n .setAccountId(accountId)\n .execute(this._client);\n }\n\n /**\n * @param {AccountId | string} accountId\n * @returns {Promise<AccountInfo>}\n */\n getAccountInfo(accountId) {\n return new AccountInfoQuery()\n .setAccountId(accountId)\n .execute(this._client);\n }\n\n /**\n * @param {AccountId | string} accountId\n * @returns {Promise<TransactionRecord[]>}\n */\n getAccountRecords(accountId) {\n return new AccountRecordsQuery()\n .setAccountId(accountId)\n .execute(this._client);\n }\n\n /**\n * @param {TransactionId | string} transactionId\n * @returns {Promise<TransactionReceipt>}\n */\n getTransactionReceipt(transactionId) {\n return new TransactionReceiptQuery()\n .setTransactionId(transactionId)\n .execute(this._client);\n }\n\n /**\n * @param {TransactionResponse} response\n * @returns {Promise<TransactionReceipt>}\n */\n waitForReceipt(response) {\n return new TransactionReceiptQuery()\n .setNodeAccountIds([response.nodeId])\n .setTransactionId(response.transactionId)\n .execute(this._client);\n }\n\n /**\n * @template RequestT\n * @template ResponseT\n * @template OutputT\n * @param {Executable<RequestT, ResponseT, OutputT>} request\n * @returns {Promise<OutputT>}\n */\n call(request) {\n return request.execute(this._client);\n }\n\n /**\n * @returns {void}\n */\n close() {\n this._client.close();\n }\n\n /**\n * Set logger\n *\n * @param {Logger} logger\n */\n setLogger(logger) {\n this._client.setLogger(logger);\n }\n}\n"],"names":["LocalProvider","constructor","props","client","process","env","HEDERA_NETWORK","Error","this","_client","Client","forName","fromClient","getLedgerId","ledgerId","getNetwork","network","getMirrorNetwork","mirrorNetwork","getAccountBalance","accountId","AccountBalanceQuery","setAccountId","execute","getAccountInfo","AccountInfoQuery","getAccountRecords","AccountRecordsQuery","getTransactionReceipt","transactionId","TransactionReceiptQuery","setTransactionId","waitForReceipt","response","setNodeAccountIds","nodeId","call","request","close","setLogger","logger"],"mappings":"2OAsCe,MAAMA,EAKjB,WAAAC,CAAYC,EAAQ,IAChB,GAAa,MAATA,GAAiC,MAAhBA,EAAMC,OAA3B,CAKA,GAAkC,MAA9BC,QAAQC,IAAIC,eACZ,MAAM,IAAIC,MACN,8EAIRC,KAAKC,QAAUC,EAAOC,QAAQP,QAAQC,IAAIC,eARlD,MAFYE,KAAKC,QAAUP,EAAMC,MAWjC,CAMI,iBAAOS,CAAWT,GACd,OAAO,IAAIH,EAAc,CAAEG,UACnC,CAKI,WAAAU,GACI,OAAOL,KAAKC,QAAQK,QAC5B,CAKI,UAAAC,GACI,OAAOP,KAAKC,QAAQO,OAC5B,CAKI,gBAAAC,GACI,OAAOT,KAAKC,QAAQS,aAC5B,CAMI,iBAAAC,CAAkBC,GACd,OAAO,IAAIC,GACNC,aAAaF,GACbG,QAAQf,KAAKC,QAC1B,CAMI,cAAAe,CAAeJ,GACX,OAAO,IAAIK,GACNH,aAAaF,GACbG,QAAQf,KAAKC,QAC1B,CAMI,iBAAAiB,CAAkBN,GACd,OAAO,IAAIO,GACNL,aAAaF,GACbG,QAAQf,KAAKC,QAC1B,CAMI,qBAAAmB,CAAsBC,GAClB,OAAO,IAAIC,GACNC,iBAAiBF,GACjBN,QAAQf,KAAKC,QAC1B,CAMI,cAAAuB,CAAeC,GACX,OAAO,IAAIH,GACNI,kBAAkB,CAACD,EAASE,SAC5BJ,iBAAiBE,EAASJ,eAC1BN,QAAQf,KAAKC,QAC1B,CASI,IAAA2B,CAAKC,GACD,OAAOA,EAAQd,QAAQf,KAAKC,QACpC,CAKI,KAAA6B,GACI9B,KAAKC,QAAQ6B,OACrB,CAOI,SAAAC,CAAUC,GACNhC,KAAKC,QAAQ8B,UAAUC,EAC/B"}
1
+ {"version":3,"file":"LocalProvider.js","sources":["../src/LocalProvider.js"],"sourcesContent":["// SPDX-License-Identifier: Apache-2.0\n\nimport Client from \"./client/NodeClient.js\";\nimport AccountBalanceQuery from \"./account/AccountBalanceQuery.js\";\nimport AccountInfoQuery from \"./account/AccountInfoQuery.js\";\nimport AccountRecordsQuery from \"./account/AccountRecordsQuery.js\";\nimport TransactionReceiptQuery from \"./transaction/TransactionReceiptQuery.js\";\n\n/**\n * @typedef {import(\"./Provider.js\").Provider} Provider\n * @typedef {import(\"./LedgerId.js\").default} LedgerId\n * @typedef {import(\"./Key.js\").default} Key\n * @typedef {import(\"./transaction/Transaction.js\").default} Transaction\n * @typedef {import(\"./transaction/TransactionId.js\").default} TransactionId\n * @typedef {import(\"./transaction/TransactionResponse.js\").default} TransactionResponse\n * @typedef {import(\"./transaction/TransactionReceipt.js\").default} TransactionReceipt\n * @typedef {import(\"./transaction/TransactionRecord.js\").default} TransactionRecord\n * @typedef {import(\"./account/AccountId.js\").default} AccountId\n * @typedef {import(\"./account/AccountBalance.js\").default} AccountBalance\n * @typedef {import(\"./account/AccountInfo.js\").default} AccountInfo\n * @typedef {import(\"./logger/Logger.js\").default} Logger\n */\n\n/**\n * @template {any} O\n * @typedef {import(\"./query/Query.js\").default<O>} Query<O>\n */\n\n/**\n * @template RequestT\n * @template ResponseT\n * @template OutputT\n * @typedef {import(\"./Executable.js\").default<RequestT, ResponseT, OutputT>} Executable<RequestT, ResponseT, OutputT>\n */\n\n/**\n * @implements {Provider}\n */\nexport default class LocalProvider {\n /**\n * @param {object} props\n * @param {Client} [props.client]\n */\n constructor(props = {}) {\n if (props != null && props.client != null) {\n this._client = props.client;\n return;\n }\n\n if (process.env.HEDERA_NETWORK == null) {\n throw new Error(\n \"LocalProvider requires the `HEDERA_NETWORK` environment variable to be set\",\n );\n }\n\n this._client = Client.forName(process.env.HEDERA_NETWORK);\n }\n\n /**\n * @param {Client} client\n * @returns {LocalProvider}\n */\n static fromClient(client) {\n return new LocalProvider({ client });\n }\n\n /**\n * @returns {LedgerId?}\n */\n getLedgerId() {\n return this._client.ledgerId;\n }\n\n /**\n * @returns {{[key: string]: (string | AccountId)}}\n */\n getNetwork() {\n return this._client.network;\n }\n\n /**\n * @returns {string[]}\n */\n getMirrorNetwork() {\n return this._client.mirrorNetwork;\n }\n\n /**\n * @param {AccountId | string} accountId\n * @returns {Promise<AccountBalance>}\n */\n getAccountBalance(accountId) {\n return new AccountBalanceQuery()\n .setAccountId(accountId)\n .execute(this._client);\n }\n\n /**\n * @param {AccountId | string} accountId\n * @returns {Promise<AccountInfo>}\n */\n getAccountInfo(accountId) {\n return new AccountInfoQuery()\n .setAccountId(accountId)\n .execute(this._client);\n }\n\n /**\n * @param {AccountId | string} accountId\n * @returns {Promise<TransactionRecord[]>}\n */\n getAccountRecords(accountId) {\n return new AccountRecordsQuery()\n .setAccountId(accountId)\n .execute(this._client);\n }\n\n /**\n * @param {TransactionId | string} transactionId\n * @returns {Promise<TransactionReceipt>}\n */\n getTransactionReceipt(transactionId) {\n return new TransactionReceiptQuery()\n .setTransactionId(transactionId)\n .execute(this._client);\n }\n\n /**\n * @param {TransactionResponse} response\n * @returns {Promise<TransactionReceipt>}\n */\n waitForReceipt(response) {\n return new TransactionReceiptQuery()\n .setNodeAccountIds([response.nodeId])\n .setTransactionId(response.transactionId)\n .execute(this._client);\n }\n\n /**\n * @template RequestT\n * @template ResponseT\n * @template OutputT\n * @param {Executable<RequestT, ResponseT, OutputT>} request\n * @returns {Promise<OutputT>}\n */\n call(request) {\n return request.execute(this._client);\n }\n\n /**\n * @returns {void}\n */\n close() {\n this._client.close();\n }\n\n /**\n * Set logger\n *\n * @param {Logger} logger\n */\n setLogger(logger) {\n this._client.setLogger(logger);\n }\n}\n"],"names":["LocalProvider","constructor","props","client","process","env","HEDERA_NETWORK","Error","this","_client","Client","forName","fromClient","getLedgerId","ledgerId","getNetwork","network","getMirrorNetwork","mirrorNetwork","getAccountBalance","accountId","AccountBalanceQuery","setAccountId","execute","getAccountInfo","AccountInfoQuery","getAccountRecords","AccountRecordsQuery","getTransactionReceipt","transactionId","TransactionReceiptQuery","setTransactionId","waitForReceipt","response","setNodeAccountIds","nodeId","call","request","close","setLogger","logger"],"mappings":"2OAsCe,MAAMA,EAKjB,WAAAC,CAAYC,EAAQ,IAChB,GAAa,MAATA,GAAiC,MAAhBA,EAAMC,OAA3B,CAKA,GAAkC,MAA9BC,QAAQC,IAAIC,eACZ,MAAM,IAAIC,MACN,8EAIRC,KAAKC,QAAUC,EAAOC,QAAQP,QAAQC,IAAIC,eAR1C,MAFIE,KAAKC,QAAUP,EAAMC,MAW7B,CAMA,iBAAOS,CAAWT,GACd,OAAO,IAAIH,EAAc,CAAEG,UAC/B,CAKA,WAAAU,GACI,OAAOL,KAAKC,QAAQK,QACxB,CAKA,UAAAC,GACI,OAAOP,KAAKC,QAAQO,OACxB,CAKA,gBAAAC,GACI,OAAOT,KAAKC,QAAQS,aACxB,CAMA,iBAAAC,CAAkBC,GACd,OAAO,IAAIC,GACNC,aAAaF,GACbG,QAAQf,KAAKC,QACtB,CAMA,cAAAe,CAAeJ,GACX,OAAO,IAAIK,GACNH,aAAaF,GACbG,QAAQf,KAAKC,QACtB,CAMA,iBAAAiB,CAAkBN,GACd,OAAO,IAAIO,GACNL,aAAaF,GACbG,QAAQf,KAAKC,QACtB,CAMA,qBAAAmB,CAAsBC,GAClB,OAAO,IAAIC,GACNC,iBAAiBF,GACjBN,QAAQf,KAAKC,QACtB,CAMA,cAAAuB,CAAeC,GACX,OAAO,IAAIH,GACNI,kBAAkB,CAACD,EAASE,SAC5BJ,iBAAiBE,EAASJ,eAC1BN,QAAQf,KAAKC,QACtB,CASA,IAAA2B,CAAKC,GACD,OAAOA,EAAQd,QAAQf,KAAKC,QAChC,CAKA,KAAA6B,GACI9B,KAAKC,QAAQ6B,OACjB,CAOA,SAAAC,CAAUC,GACNhC,KAAKC,QAAQ8B,UAAUC,EAC3B"}
@@ -1 +1 @@
1
- {"version":3,"file":"LocalProviderWeb.js","sources":["../src/LocalProviderWeb.js"],"sourcesContent":["// SPDX-License-Identifier: Apache-2.0\n\nimport Client from \"./client/WebClient.js\";\nimport AccountBalanceQuery from \"./account/AccountBalanceQuery.js\";\nimport AccountInfoQuery from \"./account/AccountInfoQuery.js\";\nimport AccountRecordsQuery from \"./account/AccountRecordsQuery.js\";\nimport TransactionReceiptQuery from \"./transaction/TransactionReceiptQuery.js\";\n\n/**\n * @typedef {import(\"./Provider.js\").Provider} Provider\n * @typedef {import(\"./LedgerId.js\").default} LedgerId\n * @typedef {import(\"./Key.js\").default} Key\n * @typedef {import(\"./transaction/Transaction.js\").default} Transaction\n * @typedef {import(\"./transaction/TransactionId.js\").default} TransactionId\n * @typedef {import(\"./transaction/TransactionResponse.js\").default} TransactionResponse\n * @typedef {import(\"./transaction/TransactionReceipt.js\").default} TransactionReceipt\n * @typedef {import(\"./transaction/TransactionRecord.js\").default} TransactionRecord\n * @typedef {import(\"./account/AccountId.js\").default} AccountId\n * @typedef {import(\"./account/AccountBalance.js\").default} AccountBalance\n * @typedef {import(\"./account/AccountInfo.js\").default} AccountInfo\n * @typedef {import(\"./logger/Logger.js\").default} Logger\n */\n\n/**\n * @template {any} O\n * @typedef {import(\"./query/Query.js\").default<O>} Query<O>\n */\n\n/**\n * @template RequestT\n * @template ResponseT\n * @template OutputT\n * @typedef {import(\"./Executable.js\").default<RequestT, ResponseT, OutputT>} Executable<RequestT, ResponseT, OutputT>\n */\n\n/**\n * @implements {Provider}\n */\nexport default class LocalProviderWeb {\n /**\n * @param {object} props\n * @param {Client} [props.client]\n * @param {\"mainnet\" | \"testnet\" | \"previewnet\" | \"local-node\"} [props.networkName]\n */\n constructor(props = {}) {\n if (props != null && props.client != null) {\n this._client = props.client;\n return;\n }\n\n this._client = Client.forName(props.networkName || \"local-node\");\n }\n\n /**\n * @param {Client} client\n * @returns {LocalProviderWeb}\n */\n static fromClient(client) {\n return new LocalProviderWeb({ client });\n }\n\n /**\n * @returns {LedgerId?}\n */\n getLedgerId() {\n return this._client.ledgerId;\n }\n\n /**\n * @returns {{[key: string]: (string | AccountId)}}\n */\n getNetwork() {\n return this._client.network;\n }\n\n /**\n * @returns {string[]}\n */\n getMirrorNetwork() {\n return this._client.mirrorNetwork;\n }\n\n /**\n * @param {AccountId | string} accountId\n * @returns {Promise<AccountBalance>}\n */\n getAccountBalance(accountId) {\n return new AccountBalanceQuery()\n .setAccountId(accountId)\n .execute(this._client);\n }\n\n /**\n * @param {AccountId | string} accountId\n * @returns {Promise<AccountInfo>}\n */\n getAccountInfo(accountId) {\n return new AccountInfoQuery()\n .setAccountId(accountId)\n .execute(this._client);\n }\n\n /**\n * @param {AccountId | string} accountId\n * @returns {Promise<TransactionRecord[]>}\n */\n getAccountRecords(accountId) {\n return new AccountRecordsQuery()\n .setAccountId(accountId)\n .execute(this._client);\n }\n\n /**\n * @param {TransactionId | string} transactionId\n * @returns {Promise<TransactionReceipt>}\n */\n getTransactionReceipt(transactionId) {\n return new TransactionReceiptQuery()\n .setTransactionId(transactionId)\n .execute(this._client);\n }\n\n /**\n * @param {Transaction} transaction\n * @returns {Promise<TransactionResponse>}\n */\n async sendTransaction(transaction) {\n return await transaction.execute(this._client);\n }\n\n /**\n * @template O\n * @param {Query<O>} query\n * @returns {Promise<O>}\n */\n async sendQuery(query) {\n return await query.execute(this._client);\n }\n\n /**\n * @param {TransactionResponse} response\n * @returns {Promise<TransactionReceipt>}\n */\n async waitForReceipt(response) {\n return await response.getReceipt(this._client);\n }\n\n /**\n * @template RequestT\n * @template ResponseT\n * @template OutputT\n * @param {Executable<RequestT, ResponseT, OutputT>} request\n * @returns {Promise<OutputT>}\n */\n async call(request) {\n return await request.execute(this._client);\n }\n\n /**\n * @returns {void}\n */\n close() {\n this._client.close();\n }\n}\n"],"names":["LocalProviderWeb","constructor","props","client","this","_client","Client","forName","networkName","fromClient","getLedgerId","ledgerId","getNetwork","network","getMirrorNetwork","mirrorNetwork","getAccountBalance","accountId","AccountBalanceQuery","setAccountId","execute","getAccountInfo","AccountInfoQuery","getAccountRecords","AccountRecordsQuery","getTransactionReceipt","transactionId","TransactionReceiptQuery","setTransactionId","sendTransaction","transaction","sendQuery","query","waitForReceipt","response","getReceipt","call","request","close"],"mappings":"0OAsCe,MAAMA,EAMjB,WAAAC,CAAYC,EAAQ,IACH,MAATA,GAAiC,MAAhBA,EAAMC,OAK3BC,KAAKC,QAAUC,EAAOC,QAAQL,EAAMM,aAAe,cAJ/CJ,KAAKC,QAAUH,EAAMC,MAKjC,CAMI,iBAAOM,CAAWN,GACd,OAAO,IAAIH,EAAiB,CAAEG,UACtC,CAKI,WAAAO,GACI,OAAON,KAAKC,QAAQM,QAC5B,CAKI,UAAAC,GACI,OAAOR,KAAKC,QAAQQ,OAC5B,CAKI,gBAAAC,GACI,OAAOV,KAAKC,QAAQU,aAC5B,CAMI,iBAAAC,CAAkBC,GACd,OAAO,IAAIC,GACNC,aAAaF,GACbG,QAAQhB,KAAKC,QAC1B,CAMI,cAAAgB,CAAeJ,GACX,OAAO,IAAIK,GACNH,aAAaF,GACbG,QAAQhB,KAAKC,QAC1B,CAMI,iBAAAkB,CAAkBN,GACd,OAAO,IAAIO,GACNL,aAAaF,GACbG,QAAQhB,KAAKC,QAC1B,CAMI,qBAAAoB,CAAsBC,GAClB,OAAO,IAAIC,GACNC,iBAAiBF,GACjBN,QAAQhB,KAAKC,QAC1B,CAMI,qBAAMwB,CAAgBC,GAClB,aAAaA,EAAYV,QAAQhB,KAAKC,QAC9C,CAOI,eAAM0B,CAAUC,GACZ,aAAaA,EAAMZ,QAAQhB,KAAKC,QACxC,CAMI,oBAAM4B,CAAeC,GACjB,aAAaA,EAASC,WAAW/B,KAAKC,QAC9C,CASI,UAAM+B,CAAKC,GACP,aAAaA,EAAQjB,QAAQhB,KAAKC,QAC1C,CAKI,KAAAiC,GACIlC,KAAKC,QAAQiC,OACrB"}
1
+ {"version":3,"file":"LocalProviderWeb.js","sources":["../src/LocalProviderWeb.js"],"sourcesContent":["// SPDX-License-Identifier: Apache-2.0\n\nimport Client from \"./client/WebClient.js\";\nimport AccountBalanceQuery from \"./account/AccountBalanceQuery.js\";\nimport AccountInfoQuery from \"./account/AccountInfoQuery.js\";\nimport AccountRecordsQuery from \"./account/AccountRecordsQuery.js\";\nimport TransactionReceiptQuery from \"./transaction/TransactionReceiptQuery.js\";\n\n/**\n * @typedef {import(\"./Provider.js\").Provider} Provider\n * @typedef {import(\"./LedgerId.js\").default} LedgerId\n * @typedef {import(\"./Key.js\").default} Key\n * @typedef {import(\"./transaction/Transaction.js\").default} Transaction\n * @typedef {import(\"./transaction/TransactionId.js\").default} TransactionId\n * @typedef {import(\"./transaction/TransactionResponse.js\").default} TransactionResponse\n * @typedef {import(\"./transaction/TransactionReceipt.js\").default} TransactionReceipt\n * @typedef {import(\"./transaction/TransactionRecord.js\").default} TransactionRecord\n * @typedef {import(\"./account/AccountId.js\").default} AccountId\n * @typedef {import(\"./account/AccountBalance.js\").default} AccountBalance\n * @typedef {import(\"./account/AccountInfo.js\").default} AccountInfo\n * @typedef {import(\"./logger/Logger.js\").default} Logger\n */\n\n/**\n * @template {any} O\n * @typedef {import(\"./query/Query.js\").default<O>} Query<O>\n */\n\n/**\n * @template RequestT\n * @template ResponseT\n * @template OutputT\n * @typedef {import(\"./Executable.js\").default<RequestT, ResponseT, OutputT>} Executable<RequestT, ResponseT, OutputT>\n */\n\n/**\n * @implements {Provider}\n */\nexport default class LocalProviderWeb {\n /**\n * @param {object} props\n * @param {Client} [props.client]\n * @param {\"mainnet\" | \"testnet\" | \"previewnet\" | \"local-node\"} [props.networkName]\n */\n constructor(props = {}) {\n if (props != null && props.client != null) {\n this._client = props.client;\n return;\n }\n\n this._client = Client.forName(props.networkName || \"local-node\");\n }\n\n /**\n * @param {Client} client\n * @returns {LocalProviderWeb}\n */\n static fromClient(client) {\n return new LocalProviderWeb({ client });\n }\n\n /**\n * @returns {LedgerId?}\n */\n getLedgerId() {\n return this._client.ledgerId;\n }\n\n /**\n * @returns {{[key: string]: (string | AccountId)}}\n */\n getNetwork() {\n return this._client.network;\n }\n\n /**\n * @returns {string[]}\n */\n getMirrorNetwork() {\n return this._client.mirrorNetwork;\n }\n\n /**\n * @param {AccountId | string} accountId\n * @returns {Promise<AccountBalance>}\n */\n getAccountBalance(accountId) {\n return new AccountBalanceQuery()\n .setAccountId(accountId)\n .execute(this._client);\n }\n\n /**\n * @param {AccountId | string} accountId\n * @returns {Promise<AccountInfo>}\n */\n getAccountInfo(accountId) {\n return new AccountInfoQuery()\n .setAccountId(accountId)\n .execute(this._client);\n }\n\n /**\n * @param {AccountId | string} accountId\n * @returns {Promise<TransactionRecord[]>}\n */\n getAccountRecords(accountId) {\n return new AccountRecordsQuery()\n .setAccountId(accountId)\n .execute(this._client);\n }\n\n /**\n * @param {TransactionId | string} transactionId\n * @returns {Promise<TransactionReceipt>}\n */\n getTransactionReceipt(transactionId) {\n return new TransactionReceiptQuery()\n .setTransactionId(transactionId)\n .execute(this._client);\n }\n\n /**\n * @param {Transaction} transaction\n * @returns {Promise<TransactionResponse>}\n */\n async sendTransaction(transaction) {\n return await transaction.execute(this._client);\n }\n\n /**\n * @template O\n * @param {Query<O>} query\n * @returns {Promise<O>}\n */\n async sendQuery(query) {\n return await query.execute(this._client);\n }\n\n /**\n * @param {TransactionResponse} response\n * @returns {Promise<TransactionReceipt>}\n */\n async waitForReceipt(response) {\n return await response.getReceipt(this._client);\n }\n\n /**\n * @template RequestT\n * @template ResponseT\n * @template OutputT\n * @param {Executable<RequestT, ResponseT, OutputT>} request\n * @returns {Promise<OutputT>}\n */\n async call(request) {\n return await request.execute(this._client);\n }\n\n /**\n * @returns {void}\n */\n close() {\n this._client.close();\n }\n}\n"],"names":["LocalProviderWeb","constructor","props","client","this","_client","Client","forName","networkName","fromClient","getLedgerId","ledgerId","getNetwork","network","getMirrorNetwork","mirrorNetwork","getAccountBalance","accountId","AccountBalanceQuery","setAccountId","execute","getAccountInfo","AccountInfoQuery","getAccountRecords","AccountRecordsQuery","getTransactionReceipt","transactionId","TransactionReceiptQuery","setTransactionId","sendTransaction","transaction","sendQuery","query","waitForReceipt","response","getReceipt","call","request","close"],"mappings":"0OAsCe,MAAMA,EAMjB,WAAAC,CAAYC,EAAQ,IACH,MAATA,GAAiC,MAAhBA,EAAMC,OAK3BC,KAAKC,QAAUC,EAAOC,QAAQL,EAAMM,aAAe,cAJ/CJ,KAAKC,QAAUH,EAAMC,MAK7B,CAMA,iBAAOM,CAAWN,GACd,OAAO,IAAIH,EAAiB,CAAEG,UAClC,CAKA,WAAAO,GACI,OAAON,KAAKC,QAAQM,QACxB,CAKA,UAAAC,GACI,OAAOR,KAAKC,QAAQQ,OACxB,CAKA,gBAAAC,GACI,OAAOV,KAAKC,QAAQU,aACxB,CAMA,iBAAAC,CAAkBC,GACd,OAAO,IAAIC,GACNC,aAAaF,GACbG,QAAQhB,KAAKC,QACtB,CAMA,cAAAgB,CAAeJ,GACX,OAAO,IAAIK,GACNH,aAAaF,GACbG,QAAQhB,KAAKC,QACtB,CAMA,iBAAAkB,CAAkBN,GACd,OAAO,IAAIO,GACNL,aAAaF,GACbG,QAAQhB,KAAKC,QACtB,CAMA,qBAAAoB,CAAsBC,GAClB,OAAO,IAAIC,GACNC,iBAAiBF,GACjBN,QAAQhB,KAAKC,QACtB,CAMA,qBAAMwB,CAAgBC,GAClB,aAAaA,EAAYV,QAAQhB,KAAKC,QAC1C,CAOA,eAAM0B,CAAUC,GACZ,aAAaA,EAAMZ,QAAQhB,KAAKC,QACpC,CAMA,oBAAM4B,CAAeC,GACjB,aAAaA,EAASC,WAAW/B,KAAKC,QAC1C,CASA,UAAM+B,CAAKC,GACP,aAAaA,EAAQjB,QAAQhB,KAAKC,QACtC,CAKA,KAAAiC,GACIlC,KAAKC,QAAQiC,OACjB"}
@@ -1 +1 @@
1
- {"version":3,"file":"ManagedNode.js","sources":["../src/ManagedNode.js"],"sourcesContent":["// SPDX-License-Identifier: Apache-2.0\n\nimport ManagedNodeAddress from \"./ManagedNodeAddress.js\";\n\n/**\n * @typedef {import(\"./account/AccountId.js\").default} AccountId\n * @typedef {import(\"./channel/Channel.js\").default} Channel\n * @typedef {import(\"./channel/MirrorChannel.js\").default} MirrorChannel\n * @typedef {import(\"./address_book/NodeAddress.js\").default} NodeAddress\n */\n\n/**\n * @template {Channel | MirrorChannel} ChannelT\n * @typedef {object} NewNode\n * @property {string | ManagedNodeAddress} address\n * @property {(address: string, cert?: string) => ChannelT} channelInitFunction\n */\n\n/**\n * @template {Channel | MirrorChannel} ChannelT\n * @typedef {object} CloneNode\n * @property {ManagedNode<ChannelT>} node\n * @property {ManagedNodeAddress} address\n */\n\n/**\n * @abstract\n * @template {Channel | MirrorChannel} ChannelT\n */\nexport default class ManagedNode {\n /**\n * @param {object} props\n * @param {NewNode<ChannelT>=} [props.newNode]\n * @param {CloneNode<ChannelT>=} [props.cloneNode]\n */\n constructor(props = {}) {\n if (props.newNode != null) {\n this._address =\n typeof props.newNode.address === \"string\"\n ? ManagedNodeAddress.fromString(props.newNode.address)\n : props.newNode.address;\n\n /** @type {string=} */\n this._cert = undefined;\n\n /** @type {ChannelT | null} */\n this._channel = null;\n\n /** @type {(address: string, cert?: string) => ChannelT} */\n this._channelInitFunction = props.newNode.channelInitFunction;\n\n this._lastUsed = Date.now();\n this._readmitTime = Date.now();\n this._useCount = 0;\n this._badGrpcStatusCount = 0;\n this._minBackoff = 8000;\n this._maxBackoff = 1000 * 60 * 60;\n this._currentBackoff = this._minBackoff;\n } else if (props.cloneNode != null) {\n /** @type {ManagedNodeAddress} */\n this._address = props.cloneNode.address;\n\n /** @type {string=} */\n this._cert = props.cloneNode.node._cert;\n\n /** @type {ChannelT | null} */\n this._channel = props.cloneNode.node._channel;\n\n /** @type {(address: string, cert?: string) => ChannelT} */\n this._channelInitFunction =\n props.cloneNode.node._channelInitFunction;\n\n /** @type {number} */\n this._currentBackoff = props.cloneNode.node._currentBackoff;\n\n /** @type {number} */\n this._lastUsed = props.cloneNode.node._lastUsed;\n\n /** @type {number} */\n this._readmitTime = props.cloneNode.node._readmitTime;\n\n /** @type {number} */\n this._useCount = props.cloneNode.node._useCount;\n\n /** @type {number} */\n this._badGrpcStatusCount = props.cloneNode.node._badGrpcStatusCount;\n\n /** @type {number} */\n this._minBackoff = props.cloneNode.node._minBackoff;\n\n /** @type {number} */\n this._maxBackoff = props.cloneNode.node._minBackoff;\n } else {\n throw new Error(\n `failed to create ManagedNode: ${JSON.stringify(props)}`,\n );\n }\n }\n\n /**\n * @abstract\n * @returns {string}\n */\n // eslint-disable-next-line jsdoc/require-returns-check\n getKey() {\n throw new Error(\"not implemented\");\n }\n\n /**\n * @param {string} ledgerId\n * @returns {this}\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n setCert(ledgerId) {\n return this;\n }\n\n /**\n * @returns {ManagedNodeAddress}\n */\n get address() {\n return this._address;\n }\n\n /**\n * @returns {number}\n */\n get attempts() {\n return this._badGrpcStatusCount;\n }\n\n /**\n * @returns {number}\n */\n get minBackoff() {\n return this._minBackoff;\n }\n\n /**\n * @param {number} minBackoff\n * @returns {this}\n */\n setMinBackoff(minBackoff) {\n if (this._currentBackoff <= minBackoff) {\n this._currentBackoff = minBackoff;\n }\n\n this._minBackoff = minBackoff;\n return this;\n }\n\n /**\n * @returns {number}\n */\n get maxBackoff() {\n return this._maxBackoff;\n }\n\n /**\n * @param {number} maxBackoff\n * @returns {this}\n */\n setMaxBackoff(maxBackoff) {\n if (this._currentBackoff <= maxBackoff) {\n this._currentBackoff = maxBackoff;\n }\n\n this._maxBackoff = maxBackoff;\n return this;\n }\n\n getChannel() {\n this._useCount++;\n this.__lastUsed = Date.now();\n\n if (this._channel != null) {\n return this._channel;\n }\n\n this._channel = this._channelInitFunction(\n this.address.toString(),\n this._cert,\n );\n return this._channel;\n }\n\n /**\n * Determines if this node is healthy by checking if this node hasn't been\n * in use for a the required `_currentBackoff` period. Since this looks at `this._lastUsed`\n * and that value is only set in the `wait()` method, any node that has not\n * returned a bad gRPC status will always be considered healthy.\n *\n * @returns {boolean}\n */\n isHealthy() {\n return this._readmitTime <= Date.now();\n }\n\n increaseBackoff() {\n this._currentBackoff = Math.min(\n this._currentBackoff * 2,\n this._maxBackoff,\n );\n this._readmitTime = Date.now() + this._currentBackoff;\n }\n\n decreaseBackoff() {\n this._currentBackoff = Math.max(\n this._currentBackoff / 2,\n this._minBackoff,\n );\n }\n\n /**\n * @returns {number}\n */\n getRemainingTime() {\n return this._readmitTime - this._lastUsed;\n }\n\n /**\n * This is only ever called if the node itself is down.\n * A node returning a transaction with a bad status code does not indicate\n * the node is down, and hence this method will not be called.\n *\n * @returns {Promise<void>}\n */\n backoff() {\n return new Promise((resolve) =>\n setTimeout(resolve, this.getRemainingTime()),\n );\n }\n\n /**\n * @param {ManagedNode<*>} node\n * @returns {number}\n */\n compare(node) {\n let comparison = this.getRemainingTime() - node.getRemainingTime();\n if (comparison != 0) {\n return comparison;\n }\n\n comparison = this._currentBackoff - node._currentBackoff;\n if (comparison != 0) {\n return comparison;\n }\n\n comparison = this._badGrpcStatusCount - node._badGrpcStatusCount;\n if (comparison != 0) {\n return comparison;\n }\n\n comparison = this._useCount - node._useCount;\n if (comparison != 0) {\n return comparison;\n }\n\n return this._lastUsed - node._lastUsed;\n }\n\n close() {\n if (this._channel != null) {\n this._channel.close();\n }\n\n this._channel = null;\n }\n}\n"],"names":["ManagedNode","constructor","props","newNode","this","_address","address","ManagedNodeAddress","fromString","_cert","undefined","_channel","_channelInitFunction","channelInitFunction","_lastUsed","Date","now","_readmitTime","_useCount","_badGrpcStatusCount","_minBackoff","_maxBackoff","_currentBackoff","cloneNode","Error","JSON","stringify","node","getKey","setCert","ledgerId","attempts","minBackoff","setMinBackoff","maxBackoff","setMaxBackoff","getChannel","__lastUsed","toString","isHealthy","increaseBackoff","Math","min","decreaseBackoff","max","getRemainingTime","backoff","Promise","resolve","setTimeout","compare","comparison","close"],"mappings":"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"}
1
+ {"version":3,"file":"ManagedNode.js","sources":["../src/ManagedNode.js"],"sourcesContent":["// SPDX-License-Identifier: Apache-2.0\n\nimport ManagedNodeAddress from \"./ManagedNodeAddress.js\";\n\n/**\n * @typedef {import(\"./account/AccountId.js\").default} AccountId\n * @typedef {import(\"./channel/Channel.js\").default} Channel\n * @typedef {import(\"./channel/MirrorChannel.js\").default} MirrorChannel\n * @typedef {import(\"./address_book/NodeAddress.js\").default} NodeAddress\n */\n\n/**\n * @template {Channel | MirrorChannel} ChannelT\n * @typedef {object} NewNode\n * @property {string | ManagedNodeAddress} address\n * @property {(address: string, cert?: string) => ChannelT} channelInitFunction\n */\n\n/**\n * @template {Channel | MirrorChannel} ChannelT\n * @typedef {object} CloneNode\n * @property {ManagedNode<ChannelT>} node\n * @property {ManagedNodeAddress} address\n */\n\n/**\n * @abstract\n * @template {Channel | MirrorChannel} ChannelT\n */\nexport default class ManagedNode {\n /**\n * @param {object} props\n * @param {NewNode<ChannelT>=} [props.newNode]\n * @param {CloneNode<ChannelT>=} [props.cloneNode]\n */\n constructor(props = {}) {\n if (props.newNode != null) {\n this._address =\n typeof props.newNode.address === \"string\"\n ? ManagedNodeAddress.fromString(props.newNode.address)\n : props.newNode.address;\n\n /** @type {string=} */\n this._cert = undefined;\n\n /** @type {ChannelT | null} */\n this._channel = null;\n\n /** @type {(address: string, cert?: string) => ChannelT} */\n this._channelInitFunction = props.newNode.channelInitFunction;\n\n this._lastUsed = Date.now();\n this._readmitTime = Date.now();\n this._useCount = 0;\n this._badGrpcStatusCount = 0;\n this._minBackoff = 8000;\n this._maxBackoff = 1000 * 60 * 60;\n this._currentBackoff = this._minBackoff;\n } else if (props.cloneNode != null) {\n /** @type {ManagedNodeAddress} */\n this._address = props.cloneNode.address;\n\n /** @type {string=} */\n this._cert = props.cloneNode.node._cert;\n\n /** @type {ChannelT | null} */\n this._channel = props.cloneNode.node._channel;\n\n /** @type {(address: string, cert?: string) => ChannelT} */\n this._channelInitFunction =\n props.cloneNode.node._channelInitFunction;\n\n /** @type {number} */\n this._currentBackoff = props.cloneNode.node._currentBackoff;\n\n /** @type {number} */\n this._lastUsed = props.cloneNode.node._lastUsed;\n\n /** @type {number} */\n this._readmitTime = props.cloneNode.node._readmitTime;\n\n /** @type {number} */\n this._useCount = props.cloneNode.node._useCount;\n\n /** @type {number} */\n this._badGrpcStatusCount = props.cloneNode.node._badGrpcStatusCount;\n\n /** @type {number} */\n this._minBackoff = props.cloneNode.node._minBackoff;\n\n /** @type {number} */\n this._maxBackoff = props.cloneNode.node._minBackoff;\n } else {\n throw new Error(\n `failed to create ManagedNode: ${JSON.stringify(props)}`,\n );\n }\n }\n\n /**\n * @abstract\n * @returns {string}\n */\n // eslint-disable-next-line jsdoc/require-returns-check\n getKey() {\n throw new Error(\"not implemented\");\n }\n\n /**\n * @param {string} ledgerId\n * @returns {this}\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n setCert(ledgerId) {\n return this;\n }\n\n /**\n * @returns {ManagedNodeAddress}\n */\n get address() {\n return this._address;\n }\n\n /**\n * @returns {number}\n */\n get attempts() {\n return this._badGrpcStatusCount;\n }\n\n /**\n * @returns {number}\n */\n get minBackoff() {\n return this._minBackoff;\n }\n\n /**\n * @param {number} minBackoff\n * @returns {this}\n */\n setMinBackoff(minBackoff) {\n if (this._currentBackoff <= minBackoff) {\n this._currentBackoff = minBackoff;\n }\n\n this._minBackoff = minBackoff;\n return this;\n }\n\n /**\n * @returns {number}\n */\n get maxBackoff() {\n return this._maxBackoff;\n }\n\n /**\n * @param {number} maxBackoff\n * @returns {this}\n */\n setMaxBackoff(maxBackoff) {\n if (this._currentBackoff <= maxBackoff) {\n this._currentBackoff = maxBackoff;\n }\n\n this._maxBackoff = maxBackoff;\n return this;\n }\n\n getChannel() {\n this._useCount++;\n this.__lastUsed = Date.now();\n\n if (this._channel != null) {\n return this._channel;\n }\n\n this._channel = this._channelInitFunction(\n this.address.toString(),\n this._cert,\n );\n return this._channel;\n }\n\n /**\n * Determines if this node is healthy by checking if this node hasn't been\n * in use for a the required `_currentBackoff` period. Since this looks at `this._lastUsed`\n * and that value is only set in the `wait()` method, any node that has not\n * returned a bad gRPC status will always be considered healthy.\n *\n * @returns {boolean}\n */\n isHealthy() {\n return this._readmitTime <= Date.now();\n }\n\n increaseBackoff() {\n this._currentBackoff = Math.min(\n this._currentBackoff * 2,\n this._maxBackoff,\n );\n this._readmitTime = Date.now() + this._currentBackoff;\n }\n\n decreaseBackoff() {\n this._currentBackoff = Math.max(\n this._currentBackoff / 2,\n this._minBackoff,\n );\n }\n\n /**\n * @returns {number}\n */\n getRemainingTime() {\n return this._readmitTime - this._lastUsed;\n }\n\n /**\n * This is only ever called if the node itself is down.\n * A node returning a transaction with a bad status code does not indicate\n * the node is down, and hence this method will not be called.\n *\n * @returns {Promise<void>}\n */\n backoff() {\n return new Promise((resolve) =>\n setTimeout(resolve, this.getRemainingTime()),\n );\n }\n\n /**\n * @param {ManagedNode<*>} node\n * @returns {number}\n */\n compare(node) {\n let comparison = this.getRemainingTime() - node.getRemainingTime();\n if (comparison != 0) {\n return comparison;\n }\n\n comparison = this._currentBackoff - node._currentBackoff;\n if (comparison != 0) {\n return comparison;\n }\n\n comparison = this._badGrpcStatusCount - node._badGrpcStatusCount;\n if (comparison != 0) {\n return comparison;\n }\n\n comparison = this._useCount - node._useCount;\n if (comparison != 0) {\n return comparison;\n }\n\n return this._lastUsed - node._lastUsed;\n }\n\n close() {\n if (this._channel != null) {\n this._channel.close();\n }\n\n this._channel = null;\n }\n}\n"],"names":["ManagedNode","constructor","props","newNode","this","_address","address","ManagedNodeAddress","fromString","_cert","undefined","_channel","_channelInitFunction","channelInitFunction","_lastUsed","Date","now","_readmitTime","_useCount","_badGrpcStatusCount","_minBackoff","_maxBackoff","_currentBackoff","cloneNode","Error","JSON","stringify","node","getKey","setCert","ledgerId","attempts","minBackoff","setMinBackoff","maxBackoff","setMaxBackoff","getChannel","__lastUsed","toString","isHealthy","increaseBackoff","Math","min","decreaseBackoff","max","getRemainingTime","backoff","Promise","resolve","setTimeout","compare","comparison","close"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"ManagedNodeAddress.js","sources":["../src/ManagedNodeAddress.js"],"sourcesContent":["// SPDX-License-Identifier: Apache-2.0\n\n/**\n * @typedef {import(\"./account/AccountId.js\").default} AccountId\n * @typedef {import(\"./channel/Channel.js\").default} Channel\n * @typedef {import(\"./channel/MirrorChannel.js\").default} MirrorChannel\n * @typedef {import(\"./address_book/NodeAddress.js\").default} NodeAddress\n */\n\nexport const HOST_AND_PORT = /^(\\S+):(\\d+)$/;\n\nexport default class ManagedNodeAddress {\n /**\n * @param {object} props\n * @param {string} [props.address]\n * @param {string} [props.host]\n * @param {number | null} [props.port]\n */\n constructor(props = {}) {\n if (props.address != null) {\n const hostAndPortResult = HOST_AND_PORT.exec(props.address);\n\n if (hostAndPortResult == null) {\n throw new Error(`failed to parse address: ${props.address}`);\n }\n\n /** @type {string} */\n this._address = /** @type {string} */ (hostAndPortResult[1]);\n\n /** @type {number | null} */\n this._port =\n hostAndPortResult[2] != null\n ? parseInt(/** @type {string }*/ (hostAndPortResult[2]))\n : null;\n } else if (props.host != null && props.port != null) {\n /** @type {string} */\n this._address = props.host;\n\n /** @type {number | null} */\n this._port = props.port;\n } else {\n throw new Error(\n `failed to create a managed node address: ${JSON.stringify(\n props,\n )}`,\n );\n }\n\n Object.freeze(this);\n }\n\n /**\n * @param {string} address\n * @returns {ManagedNodeAddress};\n */\n static fromString(address) {\n return new ManagedNodeAddress({ address });\n }\n\n toInsecure() {\n let port = this.port === 50212 ? 50211 : this.port;\n return new ManagedNodeAddress({ host: this.address, port });\n }\n\n toSecure() {\n let port = this.port === 50211 ? 50212 : this.port;\n return new ManagedNodeAddress({ host: this.address, port });\n }\n\n /**\n * @returns {string}\n */\n get address() {\n return this._address;\n }\n\n /**\n * @returns {number | null}\n */\n get port() {\n return this._port;\n }\n\n /**\n * @returns {boolean}\n */\n isTransportSecurity() {\n return this._port == 50212 || this._port == 443;\n }\n\n /**\n * @returns {string}\n */\n toString() {\n if (this.port == null) {\n return this.address;\n } else {\n return `${this.address}:${this.port}`;\n }\n }\n}\n"],"names":["HOST_AND_PORT","ManagedNodeAddress","constructor","props","address","hostAndPortResult","exec","Error","this","_address","_port","parseInt","host","port","JSON","stringify","Object","freeze","fromString","toInsecure","toSecure","isTransportSecurity","toString"],"mappings":"AASY,MAACA,EAAgB,gBAEd,MAAMC,EAOjB,WAAAC,CAAYC,EAAQ,IAChB,GAAqB,MAAjBA,EAAMC,QAAiB,CACvB,MAAMC,EAAoBL,EAAcM,KAAKH,EAAMC,SAEnD,GAAyB,MAArBC,EACA,MAAM,IAAIE,MAAM,4BAA4BJ,EAAMC,WAItDI,KAAKC,SAAkCJ,EAAkB,GAGzDG,KAAKE,MACuB,MAAxBL,EAAkB,GACZM,SAAgCN,EAAkB,IAClD,IACtB,KAAe,IAAkB,MAAdF,EAAMS,MAA8B,MAAdT,EAAMU,KAOnC,MAAM,IAAIN,MACN,4CAA4CO,KAAKC,UAC7CZ,MAPRK,KAAKC,SAAWN,EAAMS,KAGtBJ,KAAKE,MAAQP,EAAMU,IAO/B,CAEQG,OAAOC,OAAOT,KACtB,CAMI,iBAAOU,CAAWd,GACd,OAAO,IAAIH,EAAmB,CAAEG,WACxC,CAEI,UAAAe,GACI,IAAIN,EAAqB,QAAdL,KAAKK,KAAiB,MAAQL,KAAKK,KAC9C,OAAO,IAAIZ,EAAmB,CAAEW,KAAMJ,KAAKJ,QAASS,QAC5D,CAEI,QAAAO,GACI,IAAIP,EAAqB,QAAdL,KAAKK,KAAiB,MAAQL,KAAKK,KAC9C,OAAO,IAAIZ,EAAmB,CAAEW,KAAMJ,KAAKJ,QAASS,QAC5D,CAKI,WAAIT,GACA,OAAOI,KAAKC,QACpB,CAKI,QAAII,GACA,OAAOL,KAAKE,KACpB,CAKI,mBAAAW,GACI,OAAqB,OAAdb,KAAKE,OAAgC,KAAdF,KAAKE,KAC3C,CAKI,QAAAY,GACI,OAAiB,MAAbd,KAAKK,KACEL,KAAKJ,QAEL,GAAGI,KAAKJ,WAAWI,KAAKK,MAE3C"}
1
+ {"version":3,"file":"ManagedNodeAddress.js","sources":["../src/ManagedNodeAddress.js"],"sourcesContent":["// SPDX-License-Identifier: Apache-2.0\n\n/**\n * @typedef {import(\"./account/AccountId.js\").default} AccountId\n * @typedef {import(\"./channel/Channel.js\").default} Channel\n * @typedef {import(\"./channel/MirrorChannel.js\").default} MirrorChannel\n * @typedef {import(\"./address_book/NodeAddress.js\").default} NodeAddress\n */\n\nexport const HOST_AND_PORT = /^(\\S+):(\\d+)$/;\n\nexport default class ManagedNodeAddress {\n /**\n * @param {object} props\n * @param {string} [props.address]\n * @param {string} [props.host]\n * @param {number | null} [props.port]\n */\n constructor(props = {}) {\n if (props.address != null) {\n const hostAndPortResult = HOST_AND_PORT.exec(props.address);\n\n if (hostAndPortResult == null) {\n throw new Error(`failed to parse address: ${props.address}`);\n }\n\n /** @type {string} */\n this._address = /** @type {string} */ (hostAndPortResult[1]);\n\n /** @type {number | null} */\n this._port =\n hostAndPortResult[2] != null\n ? parseInt(/** @type {string }*/ (hostAndPortResult[2]))\n : null;\n } else if (props.host != null && props.port != null) {\n /** @type {string} */\n this._address = props.host;\n\n /** @type {number | null} */\n this._port = props.port;\n } else {\n throw new Error(\n `failed to create a managed node address: ${JSON.stringify(\n props,\n )}`,\n );\n }\n\n Object.freeze(this);\n }\n\n /**\n * @param {string} address\n * @returns {ManagedNodeAddress};\n */\n static fromString(address) {\n return new ManagedNodeAddress({ address });\n }\n\n toInsecure() {\n let port = this.port === 50212 ? 50211 : this.port;\n return new ManagedNodeAddress({ host: this.address, port });\n }\n\n toSecure() {\n let port = this.port === 50211 ? 50212 : this.port;\n return new ManagedNodeAddress({ host: this.address, port });\n }\n\n /**\n * @returns {string}\n */\n get address() {\n return this._address;\n }\n\n /**\n * @returns {number | null}\n */\n get port() {\n return this._port;\n }\n\n /**\n * @returns {boolean}\n */\n isTransportSecurity() {\n return this._port == 50212 || this._port == 443;\n }\n\n /**\n * @returns {string}\n */\n toString() {\n if (this.port == null) {\n return this.address;\n } else {\n return `${this.address}:${this.port}`;\n }\n }\n}\n"],"names":["HOST_AND_PORT","ManagedNodeAddress","constructor","props","address","hostAndPortResult","exec","Error","this","_address","_port","parseInt","host","port","JSON","stringify","Object","freeze","fromString","toInsecure","toSecure","isTransportSecurity","toString"],"mappings":"AASY,MAACA,EAAgB,gBAEd,MAAMC,EAOjB,WAAAC,CAAYC,EAAQ,IAChB,GAAqB,MAAjBA,EAAMC,QAAiB,CACvB,MAAMC,EAAoBL,EAAcM,KAAKH,EAAMC,SAEnD,GAAyB,MAArBC,EACA,MAAM,IAAIE,MAAM,4BAA4BJ,EAAMC,WAItDI,KAAKC,SAAkCJ,EAAkB,GAGzDG,KAAKE,MACuB,MAAxBL,EAAkB,GACZM,SAAgCN,EAAkB,IAClD,IACd,KAAO,IAAkB,MAAdF,EAAMS,MAA8B,MAAdT,EAAMU,KAOnC,MAAM,IAAIN,MACN,4CAA4CO,KAAKC,UAC7CZ,MAPRK,KAAKC,SAAWN,EAAMS,KAGtBJ,KAAKE,MAAQP,EAAMU,IAOvB,CAEAG,OAAOC,OAAOT,KAClB,CAMA,iBAAOU,CAAWd,GACd,OAAO,IAAIH,EAAmB,CAAEG,WACpC,CAEA,UAAAe,GACI,IAAIN,EAAqB,QAAdL,KAAKK,KAAiB,MAAQL,KAAKK,KAC9C,OAAO,IAAIZ,EAAmB,CAAEW,KAAMJ,KAAKJ,QAASS,QACxD,CAEA,QAAAO,GACI,IAAIP,EAAqB,QAAdL,KAAKK,KAAiB,MAAQL,KAAKK,KAC9C,OAAO,IAAIZ,EAAmB,CAAEW,KAAMJ,KAAKJ,QAASS,QACxD,CAKA,WAAIT,GACA,OAAOI,KAAKC,QAChB,CAKA,QAAII,GACA,OAAOL,KAAKE,KAChB,CAKA,mBAAAW,GACI,OAAqB,OAAdb,KAAKE,OAAgC,KAAdF,KAAKE,KACvC,CAKA,QAAAY,GACI,OAAiB,MAAbd,KAAKK,KACEL,KAAKJ,QAEL,GAAGI,KAAKJ,WAAWI,KAAKK,MAEvC"}
@@ -1 +1 @@
1
- {"version":3,"file":"MaxAttemptsOrTimeoutError.js","sources":["../src/MaxAttemptsOrTimeoutError.js"],"sourcesContent":["// SPDX-License-Identifier: Apache-2.0\n/**\n * @typedef {object} MaxAttemptsOrTimeoutErrorJSON\n * @property {string} message\n * @property {string} nodeAccountId\n *\n */\n\nexport default class MaxAttemptsOrTimeoutError extends Error {\n /**\n * @param {string} message\n * @param {string} nodeAccountId\n */\n constructor(message, nodeAccountId) {\n // Call the Error constructor with the message\n super(message);\n\n // Assign the nodeAccountId as a custom property\n this.nodeAccountId = nodeAccountId;\n }\n\n toJSON() {\n return {\n message: this.message,\n nodeAccountId: this.nodeAccountId,\n };\n }\n\n /**\n * @returns {string}\n */\n toString() {\n return JSON.stringify(this.toJSON());\n }\n\n /**\n * @returns {MaxAttemptsOrTimeoutErrorJSON}\n */\n valueOf() {\n return this.toJSON();\n }\n}\n"],"names":["MaxAttemptsOrTimeoutError","Error","constructor","message","nodeAccountId","super","this","toJSON","toString","JSON","stringify","valueOf"],"mappings":"AAQe,MAAMA,UAAkCC,MAKnD,WAAAC,CAAYC,EAASC,GAEjBC,MAAMF,GAGNG,KAAKF,cAAgBA,CAC7B,CAEI,MAAAG,GACI,MAAO,CACHJ,QAASG,KAAKH,QACdC,cAAeE,KAAKF,cAEhC,CAKI,QAAAI,GACI,OAAOC,KAAKC,UAAUJ,KAAKC,SACnC,CAKI,OAAAI,GACI,OAAOL,KAAKC,QACpB"}
1
+ {"version":3,"file":"MaxAttemptsOrTimeoutError.js","sources":["../src/MaxAttemptsOrTimeoutError.js"],"sourcesContent":["// SPDX-License-Identifier: Apache-2.0\n/**\n * @typedef {object} MaxAttemptsOrTimeoutErrorJSON\n * @property {string} message\n * @property {string} nodeAccountId\n *\n */\n\nexport default class MaxAttemptsOrTimeoutError extends Error {\n /**\n * @param {string} message\n * @param {string} nodeAccountId\n */\n constructor(message, nodeAccountId) {\n // Call the Error constructor with the message\n super(message);\n\n // Assign the nodeAccountId as a custom property\n this.nodeAccountId = nodeAccountId;\n }\n\n toJSON() {\n return {\n message: this.message,\n nodeAccountId: this.nodeAccountId,\n };\n }\n\n /**\n * @returns {string}\n */\n toString() {\n return JSON.stringify(this.toJSON());\n }\n\n /**\n * @returns {MaxAttemptsOrTimeoutErrorJSON}\n */\n valueOf() {\n return this.toJSON();\n }\n}\n"],"names":["MaxAttemptsOrTimeoutError","Error","constructor","message","nodeAccountId","super","this","toJSON","toString","JSON","stringify","valueOf"],"mappings":"AAQe,MAAMA,UAAkCC,MAKnD,WAAAC,CAAYC,EAASC,GAEjBC,MAAMF,GAGNG,KAAKF,cAAgBA,CACzB,CAEA,MAAAG,GACI,MAAO,CACHJ,QAASG,KAAKH,QACdC,cAAeE,KAAKF,cAE5B,CAKA,QAAAI,GACI,OAAOC,KAAKC,UAAUJ,KAAKC,SAC/B,CAKA,OAAAI,GACI,OAAOL,KAAKC,QAChB"}
@@ -1 +1 @@
1
- {"version":3,"file":"MaxQueryPaymentExceeded.js","sources":["../src/MaxQueryPaymentExceeded.js"],"sourcesContent":["// SPDX-License-Identifier: Apache-2.0\n\n/**\n * @typedef {import(\"./Hbar.js\").default} Hbar\n */\n\n/**\n * Error thrown when a query's cost exceeds the maximum payment amount set on the client.\n *\n * This error is used to prevent unexpectedly expensive queries from being automatically executed.\n * When this error occurs, the user can either:\n * 1. Increase the maximum query payment on the client\n * 2. Explicitly approve the higher cost for this specific query\n */\nexport default class MaxQueryPaymentExceeded extends Error {\n /**\n * @param {Hbar} queryCost\n * @param {Hbar} maxQueryPayment\n */\n constructor(queryCost, maxQueryPayment) {\n super();\n\n this.message = `query cost of ${queryCost.toString()} HBAR exceeds max set on client: ${maxQueryPayment.toString()} HBAR`;\n this.name = \"MaxQueryPaymentExceededError\";\n this.queryCost = queryCost;\n this.maxQueryPayment = maxQueryPayment;\n }\n}\n"],"names":["MaxQueryPaymentExceeded","Error","constructor","queryCost","maxQueryPayment","super","this","message","toString","name"],"mappings":"AAce,MAAMA,UAAgCC,MAKjD,WAAAC,CAAYC,EAAWC,GACnBC,QAEAC,KAAKC,QAAU,iBAAiBJ,EAAUK,8CAA8CJ,EAAgBI,kBACxGF,KAAKG,KAAO,+BACZH,KAAKH,UAAYA,EACjBG,KAAKF,gBAAkBA,CAC/B"}
1
+ {"version":3,"file":"MaxQueryPaymentExceeded.js","sources":["../src/MaxQueryPaymentExceeded.js"],"sourcesContent":["// SPDX-License-Identifier: Apache-2.0\n\n/**\n * @typedef {import(\"./Hbar.js\").default} Hbar\n */\n\n/**\n * Error thrown when a query's cost exceeds the maximum payment amount set on the client.\n *\n * This error is used to prevent unexpectedly expensive queries from being automatically executed.\n * When this error occurs, the user can either:\n * 1. Increase the maximum query payment on the client\n * 2. Explicitly approve the higher cost for this specific query\n */\nexport default class MaxQueryPaymentExceeded extends Error {\n /**\n * @param {Hbar} queryCost\n * @param {Hbar} maxQueryPayment\n */\n constructor(queryCost, maxQueryPayment) {\n super();\n\n this.message = `query cost of ${queryCost.toString()} HBAR exceeds max set on client: ${maxQueryPayment.toString()} HBAR`;\n this.name = \"MaxQueryPaymentExceededError\";\n this.queryCost = queryCost;\n this.maxQueryPayment = maxQueryPayment;\n }\n}\n"],"names":["MaxQueryPaymentExceeded","Error","constructor","queryCost","maxQueryPayment","super","this","message","toString","name"],"mappings":"AAce,MAAMA,UAAgCC,MAKjD,WAAAC,CAAYC,EAAWC,GACnBC,QAEAC,KAAKC,QAAU,iBAAiBJ,EAAUK,8CAA8CJ,EAAgBI,kBACxGF,KAAKG,KAAO,+BACZH,KAAKH,UAAYA,EACjBG,KAAKF,gBAAkBA,CAC3B"}
@@ -1 +1 @@
1
- {"version":3,"file":"MirrorNode.js","sources":["../src/MirrorNode.js"],"sourcesContent":["// SPDX-License-Identifier: Apache-2.0\n\nimport ManagedNode from \"./ManagedNode.js\";\n\n/**\n * @typedef {import(\"./channel/MirrorChannel.js\").default} MirrorChannel\n * @typedef {import(\"./ManagedNodeAddress.js\").default} ManagedNodeAddress\n */\n\n/**\n * @typedef {object} NewNode\n * @property {string} address\n * @property {(address: string, cert?: string) => MirrorChannel} channelInitFunction\n */\n\n/**\n * @typedef {object} CloneNode\n * @property {MirrorNode} node\n * @property {ManagedNodeAddress} address\n */\n\n/**\n * @augments {ManagedNode<MirrorChannel>}\n */\nexport default class MirrorNode extends ManagedNode {\n /**\n * @param {object} props\n * @param {NewNode=} [props.newNode]\n * @param {CloneNode=} [props.cloneNode]\n */\n constructor(props = {}) {\n super(props);\n }\n\n /**\n * @returns {string}\n */\n getKey() {\n return this._address.toString();\n }\n\n /**\n * Gets the base URL for this mirror node's REST API.\n *\n * @returns {string} The base URL for the mirror node REST API\n * @throws {Error} When the mirror node has invalid address configuration\n */\n get mirrorRestApiBaseUrl() {\n const host = this.address.address;\n const port = this.address.port;\n\n if (!host || !port) {\n throw new Error(\"Mirror node has invalid address configuration\");\n }\n\n // For localhost/127.0.0.1, mirror node gRPC and REST API use different ports\n // gRPC typically uses port 5600, but REST API uses port 5551\n // Note: Contract calls may use port 8545 (handled separately in MirrorNodeContractQuery)\n if (host === \"localhost\" || host === \"127.0.0.1\") {\n return `http://${host}:5551/api/v1`;\n }\n\n const scheme = this._getSchemeFromHostAndPort(host, port);\n\n return `${scheme}://${host}:${port}/api/v1`;\n }\n\n /**\n * Determines the appropriate scheme (http/https) based on the host and port.\n *\n * @private\n * @param {string} host - The host address\n * @param {number} port - The port number\n * @returns {string} - The scheme ('http' or 'https')\n */\n _getSchemeFromHostAndPort(host, port) {\n // For localhost and 127.0.0.1, use HTTP scheme\n if (host === \"localhost\" || host === \"127.0.0.1\") {\n return \"http\";\n }\n\n // Standard HTTP ports\n if (port === 80) {\n return \"http\";\n }\n\n // For other ports, assume HTTPS for security\n return \"https\";\n }\n}\n"],"names":["MirrorNode","ManagedNode","constructor","props","super","getKey","this","_address","toString","mirrorRestApiBaseUrl","host","address","port","Error","_getSchemeFromHostAndPort"],"mappings":"gCAwBe,MAAMA,UAAmBC,EAMpC,WAAAC,CAAYC,EAAQ,IAChBC,MAAMD,EACd,CAKI,MAAAE,GACI,OAAOC,KAAKC,SAASC,UAC7B,CAQI,wBAAIC,GACA,MAAMC,EAAOJ,KAAKK,QAAQA,QACpBC,EAAON,KAAKK,QAAQC,KAE1B,IAAKF,IAASE,EACV,MAAM,IAAIC,MAAM,iDAMpB,GAAa,cAATH,GAAiC,cAATA,EACxB,MAAO,UAAUA,gBAKrB,MAAO,GAFQJ,KAAKQ,0BAA0BJ,EAAME,QAE9BF,KAAQE,UACtC,CAUI,yBAAAE,CAA0BJ,EAAME,GAE5B,MAAa,cAATF,GAAiC,cAATA,GAKf,KAATE,EAJO,OASJ,OACf"}
1
+ {"version":3,"file":"MirrorNode.js","sources":["../src/MirrorNode.js"],"sourcesContent":["// SPDX-License-Identifier: Apache-2.0\n\nimport ManagedNode from \"./ManagedNode.js\";\n\n/**\n * @typedef {import(\"./channel/MirrorChannel.js\").default} MirrorChannel\n * @typedef {import(\"./ManagedNodeAddress.js\").default} ManagedNodeAddress\n */\n\n/**\n * @typedef {object} NewNode\n * @property {string} address\n * @property {(address: string, cert?: string) => MirrorChannel} channelInitFunction\n */\n\n/**\n * @typedef {object} CloneNode\n * @property {MirrorNode} node\n * @property {ManagedNodeAddress} address\n */\n\n/**\n * @augments {ManagedNode<MirrorChannel>}\n */\nexport default class MirrorNode extends ManagedNode {\n /**\n * @param {object} props\n * @param {NewNode=} [props.newNode]\n * @param {CloneNode=} [props.cloneNode]\n */\n constructor(props = {}) {\n super(props);\n }\n\n /**\n * @returns {string}\n */\n getKey() {\n return this._address.toString();\n }\n\n /**\n * Gets the base URL for this mirror node's REST API.\n *\n * @returns {string} The base URL for the mirror node REST API\n * @throws {Error} When the mirror node has invalid address configuration\n */\n get mirrorRestApiBaseUrl() {\n const host = this.address.address;\n const port = this.address.port;\n\n if (!host || !port) {\n throw new Error(\"Mirror node has invalid address configuration\");\n }\n\n // For localhost/127.0.0.1, mirror node gRPC and REST API use different ports\n // gRPC typically uses port 5600, but REST API uses port 5551\n // Note: Contract calls may use port 8545 (handled separately in MirrorNodeContractQuery)\n if (host === \"localhost\" || host === \"127.0.0.1\") {\n return `http://${host}:5551/api/v1`;\n }\n\n const scheme = this._getSchemeFromHostAndPort(host, port);\n\n return `${scheme}://${host}:${port}/api/v1`;\n }\n\n /**\n * Determines the appropriate scheme (http/https) based on the host and port.\n *\n * @private\n * @param {string} host - The host address\n * @param {number} port - The port number\n * @returns {string} - The scheme ('http' or 'https')\n */\n _getSchemeFromHostAndPort(host, port) {\n // For localhost and 127.0.0.1, use HTTP scheme\n if (host === \"localhost\" || host === \"127.0.0.1\") {\n return \"http\";\n }\n\n // Standard HTTP ports\n if (port === 80) {\n return \"http\";\n }\n\n // For other ports, assume HTTPS for security\n return \"https\";\n }\n}\n"],"names":["MirrorNode","ManagedNode","constructor","props","super","getKey","this","_address","toString","mirrorRestApiBaseUrl","host","address","port","Error","_getSchemeFromHostAndPort"],"mappings":"gCAwBe,MAAMA,UAAmBC,EAMpC,WAAAC,CAAYC,EAAQ,IAChBC,MAAMD,EACV,CAKA,MAAAE,GACI,OAAOC,KAAKC,SAASC,UACzB,CAQA,wBAAIC,GACA,MAAMC,EAAOJ,KAAKK,QAAQA,QACpBC,EAAON,KAAKK,QAAQC,KAE1B,IAAKF,IAASE,EACV,MAAM,IAAIC,MAAM,iDAMpB,GAAa,cAATH,GAAiC,cAATA,EACxB,MAAO,UAAUA,gBAKrB,MAAO,GAFQJ,KAAKQ,0BAA0BJ,EAAME,QAE9BF,KAAQE,UAClC,CAUA,yBAAAE,CAA0BJ,EAAME,GAE5B,MAAa,cAATF,GAAiC,cAATA,GAKf,KAATE,EAJO,OASJ,OACX"}
@@ -1 +1 @@
1
- {"version":3,"file":"Mnemonic.js","sources":["../src/Mnemonic.js"],"sourcesContent":["// SPDX-License-Identifier: Apache-2.0\n\nimport { Mnemonic as MnemonicCryptography } from \"@hiero-ledger/cryptography\";\nimport CACHE from \"./Cache.js\";\n\n/**\n * @typedef {import(\"./PrivateKey.js\").default} PrivateKey\n */\n\nconst HARDENED_BIT = 0x80000000;\n\n/**\n * Multi-word mnemonic phrase (BIP-39).\n *\n * Compatible with the official Hiero mobile\n * wallets (24-words or 22-words) and BRD (12-words).\n */\nexport default class Mnemonic {\n /**\n * @param {MnemonicCryptography} mnemonic\n * @hideconstructor\n * @private\n */\n constructor(mnemonic) {\n this._mnemonic = mnemonic;\n }\n\n /**\n * Returns a new random 24-word mnemonic from the BIP-39\n * standard English word list.\n *\n * @returns {Promise<Mnemonic>}\n */\n static async generate() {\n return new Mnemonic(await MnemonicCryptography._generate(24));\n }\n\n /**\n * Returns a new random 12-word mnemonic from the BIP-39\n * standard English word list.\n *\n * @returns {Promise<Mnemonic>}\n */\n static async generate12() {\n return new Mnemonic(await MnemonicCryptography._generate(12));\n }\n\n /**\n * Construct a mnemonic from a list of words. Handles 12, 22 (legacy), and 24 words.\n *\n * An exception of BadMnemonicError will be thrown if the mnemonic\n * contains unknown words or fails the checksum. An invalid mnemonic\n * can still be used to create private keys, the exception will\n * contain the failing mnemonic in case you wish to ignore the\n * validation error and continue.\n *\n * @param {string[]} words\n * @throws {cryptography.BadMnemonicError}\n * @returns {Promise<Mnemonic>}\n */\n static async fromWords(words) {\n return new Mnemonic(await MnemonicCryptography.fromWords(words));\n }\n\n /**\n * @deprecated - Use `toStandardEd25519PrivateKey()` or `toStandardECDSAsecp256k1PrivateKey()` instead\n * Recover a private key from this mnemonic phrase, with an\n * optional passphrase.\n * @param {string} [passphrase]\n * @returns {Promise<PrivateKey>}\n */\n async toPrivateKey(passphrase = \"\") {\n return CACHE.privateKeyConstructor(\n // eslint-disable-next-line deprecation/deprecation\n await this._mnemonic.toPrivateKey(passphrase),\n );\n }\n\n /**\n * @deprecated - Use `toStandardEd25519PrivateKey()` or `toStandardECDSAsecp256k1PrivateKey()` instead\n * Recover an Ed25519 private key from this mnemonic phrase, with an\n * optional passphrase.\n * @param {string} [passphrase]\n * @param {number[]} [path]\n * @returns {Promise<PrivateKey>}\n */\n async toEd25519PrivateKey(passphrase = \"\", path) {\n return CACHE.privateKeyConstructor(\n // eslint-disable-next-line deprecation/deprecation\n await this._mnemonic.toEd25519PrivateKey(passphrase, path),\n );\n }\n\n /**\n * Recover an Ed25519 private key from this mnemonic phrase, with an\n * optional passphrase.\n *\n * @param {string} [passphrase]\n * @param {number} [index]\n * @returns {Promise<PrivateKey>}\n */\n async toStandardEd25519PrivateKey(passphrase = \"\", index) {\n return CACHE.privateKeyConstructor(\n await this._mnemonic.toStandardEd25519PrivateKey(passphrase, index),\n );\n }\n\n /**\n * @deprecated - Use `toStandardEd25519PrivateKey()` or `toStandardECDSAsecp256k1PrivateKey()` instead\n * Recover an ECDSA private key from this mnemonic phrase, with an\n * optional passphrase.\n * @param {string} [passphrase]\n * @param {number[]} [path]\n * @returns {Promise<PrivateKey>}\n */\n async toEcdsaPrivateKey(passphrase = \"\", path) {\n return CACHE.privateKeyConstructor(\n // eslint-disable-next-line deprecation/deprecation\n await this._mnemonic.toEcdsaPrivateKey(passphrase, path),\n );\n }\n\n /**\n * Converts a derivation path from string to an array of integers.\n * Note that this expects precisely 5 components in the derivation path,\n * as per BIP-44:\n * `m / purpose' / coin_type' / account' / change / address_index`\n * Takes into account `'` for hardening as per BIP-32,\n * and does not prescribe which components should be hardened.\n *\n * @param {string} derivationPath the derivation path in BIP-44 format,\n * e.g. \"m/44'/60'/0'/0/0\"\n * @returns {Array<number>} to be used with PrivateKey#derive\n */\n calculateDerivationPathValues(derivationPath) {\n // Parse the derivation path from string into values\n const pattern = /m\\/(\\d+'?)\\/(\\d+'?)\\/(\\d+'?)\\/(\\d+'?)\\/(\\d+'?)/;\n const matches = pattern.exec(derivationPath);\n const values = new Array(5); // as Array<Number>;\n if (matches) {\n // Extract numbers and use apostrophe to select if is hardened\n for (let i = 1; i <= 5; i++) {\n let value = matches[i];\n if (value.endsWith(\"'\")) {\n value = value.substring(0, value.length - 1);\n values[i - 1] = parseInt(value, 10) | HARDENED_BIT;\n } else {\n values[i - 1] = parseInt(value, 10);\n }\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return values;\n }\n\n /**\n * Common implementation for both `toStandardECDSAsecp256k1PrivateKey`\n * functions.\n *\n * @param {string} passphrase the passphrase used to protect the\n * mnemonic, use \"\" for none\n * @param {Array<number>} derivationPathValues derivation path as an\n * integer array,\n * see: `calculateDerivationPathValues`\n * @returns {Promise<PrivateKey>} a private key\n */\n async toStandardECDSAsecp256k1PrivateKeyImpl(\n passphrase,\n derivationPathValues,\n ) {\n // eslint-disable-next-line deprecation/deprecation\n return await this.toEcdsaPrivateKey(passphrase, derivationPathValues);\n }\n\n /**\n * Recover an ECDSA private key from this mnemonic phrase, with an\n * optional passphrase.\n *\n * @param {string} [passphrase]\n * @param {number} [index]\n * @returns {Promise<PrivateKey>}\n */\n async toStandardECDSAsecp256k1PrivateKey(passphrase = \"\", index) {\n return CACHE.privateKeyConstructor(\n await this._mnemonic.toStandardECDSAsecp256k1PrivateKey(\n passphrase,\n index,\n ),\n );\n }\n\n /**\n * Recover an ECDSAsecp256k1 private key from this mnemonic phrase and\n * derivation path, with an optional passphrase\n *\n * @param {string} passphrase the passphrase used to protect the mnemonic,\n * use \"\" for none\n * @param {string} derivationPath the derivation path in BIP-44 format,\n * e.g. \"m/44'/60'/0'/0/0\"\n * @returns {Promise<PrivateKey>} the private key\n */\n async toStandardECDSAsecp256k1PrivateKeyCustomDerivationPath(\n passphrase = \"\",\n derivationPath,\n ) {\n const derivationPathValues =\n this.calculateDerivationPathValues(derivationPath);\n return await this.toStandardECDSAsecp256k1PrivateKeyImpl(\n passphrase,\n derivationPathValues,\n );\n }\n\n /**\n * Recover a mnemonic phrase from a string, splitting on spaces. Handles 12, 22 (legacy), and 24 words.\n *\n * @param {string} mnemonic\n * @returns {Promise<Mnemonic>}\n */\n static async fromString(mnemonic) {\n return new Mnemonic(await MnemonicCryptography.fromString(mnemonic));\n }\n\n /**\n * @returns {Promise<PrivateKey>}\n */\n async toLegacyPrivateKey() {\n return CACHE.privateKeyConstructor(\n await this._mnemonic.toLegacyPrivateKey(),\n );\n }\n\n /**\n * @param {string} passphrase\n * @returns {Promise<Uint8Array>}\n */\n async toSeed(passphrase) {\n return await MnemonicCryptography.toSeed(\n this._mnemonic.words,\n passphrase,\n );\n }\n\n /**\n * @returns {string}\n */\n toString() {\n return this._mnemonic.toString();\n }\n}\n"],"names":["Mnemonic","constructor","mnemonic","this","_mnemonic","generate","MnemonicCryptography","_generate","generate12","fromWords","words","toPrivateKey","passphrase","CACHE","privateKeyConstructor","toEd25519PrivateKey","path","toStandardEd25519PrivateKey","index","toEcdsaPrivateKey","calculateDerivationPathValues","derivationPath","matches","exec","values","Array","i","value","endsWith","substring","length","parseInt","toStandardECDSAsecp256k1PrivateKeyImpl","derivationPathValues","toStandardECDSAsecp256k1PrivateKey","toStandardECDSAsecp256k1PrivateKeyCustomDerivationPath","fromString","toLegacyPrivateKey","toSeed","toString"],"mappings":"gFAiBe,MAAMA,EAMjB,WAAAC,CAAYC,GACRC,KAAKC,UAAYF,CACzB,CAQI,qBAAaG,GACT,OAAO,IAAIL,QAAeM,EAAqBC,UAAU,IACjE,CAQI,uBAAaC,GACT,OAAO,IAAIR,QAAeM,EAAqBC,UAAU,IACjE,CAeI,sBAAaE,CAAUC,GACnB,OAAO,IAAIV,QAAeM,EAAqBG,UAAUC,GACjE,CASI,kBAAMC,CAAaC,EAAa,IAC5B,OAAOC,EAAMC,4BAEHX,KAAKC,UAAUO,aAAaC,GAE9C,CAUI,yBAAMG,CAAoBH,EAAa,GAAII,GACvC,OAAOH,EAAMC,4BAEHX,KAAKC,UAAUW,oBAAoBH,EAAYI,GAEjE,CAUI,iCAAMC,CAA4BL,EAAa,GAAIM,GAC/C,OAAOL,EAAMC,4BACHX,KAAKC,UAAUa,4BAA4BL,EAAYM,GAEzE,CAUI,uBAAMC,CAAkBP,EAAa,GAAII,GACrC,OAAOH,EAAMC,4BAEHX,KAAKC,UAAUe,kBAAkBP,EAAYI,GAE/D,CAcI,6BAAAI,CAA8BC,GAE1B,MACMC,EADU,iDACQC,KAAKF,GACvBG,EAAS,IAAIC,MAAM,GACzB,GAAIH,EAEA,IAAK,IAAII,EAAI,EAAGA,GAAK,EAAGA,IAAK,CACzB,IAAIC,EAAQL,EAAQI,GAChBC,EAAMC,SAAS,MACfD,EAAQA,EAAME,UAAU,EAAGF,EAAMG,OAAS,GAC1CN,EAAOE,EAAI,GAxIV,WAwIeK,SAASJ,EAAO,KAEhCH,EAAOE,EAAI,GAAKK,SAASJ,EAAO,GAEpD,CAGQ,OAAOH,CACf,CAaI,4CAAMQ,CACFpB,EACAqB,GAGA,aAAa9B,KAAKgB,kBAAkBP,EAAYqB,EACxD,CAUI,wCAAMC,CAAmCtB,EAAa,GAAIM,GACtD,OAAOL,EAAMC,4BACHX,KAAKC,UAAU8B,mCACjBtB,EACAM,GAGhB,CAYI,4DAAMiB,CACFvB,EAAa,GACbS,GAEA,MAAMY,EACF9B,KAAKiB,8BAA8BC,GACvC,aAAalB,KAAK6B,uCACdpB,EACAqB,EAEZ,CAQI,uBAAaG,CAAWlC,GACpB,OAAO,IAAIF,QAAeM,EAAqB8B,WAAWlC,GAClE,CAKI,wBAAMmC,GACF,OAAOxB,EAAMC,4BACHX,KAAKC,UAAUiC,qBAEjC,CAMI,YAAMC,CAAO1B,GACT,aAAaN,EAAqBgC,OAC9BnC,KAAKC,UAAUM,MACfE,EAEZ,CAKI,QAAA2B,GACI,OAAOpC,KAAKC,UAAUmC,UAC9B"}
1
+ {"version":3,"file":"Mnemonic.js","sources":["../src/Mnemonic.js"],"sourcesContent":["// SPDX-License-Identifier: Apache-2.0\n\nimport { Mnemonic as MnemonicCryptography } from \"@hiero-ledger/cryptography\";\nimport CACHE from \"./Cache.js\";\n\n/**\n * @typedef {import(\"./PrivateKey.js\").default} PrivateKey\n */\n\nconst HARDENED_BIT = 0x80000000;\n\n/**\n * Multi-word mnemonic phrase (BIP-39).\n *\n * Compatible with the official Hiero mobile\n * wallets (24-words or 22-words) and BRD (12-words).\n */\nexport default class Mnemonic {\n /**\n * @param {MnemonicCryptography} mnemonic\n * @hideconstructor\n * @private\n */\n constructor(mnemonic) {\n this._mnemonic = mnemonic;\n }\n\n /**\n * Returns a new random 24-word mnemonic from the BIP-39\n * standard English word list.\n *\n * @returns {Promise<Mnemonic>}\n */\n static async generate() {\n return new Mnemonic(await MnemonicCryptography._generate(24));\n }\n\n /**\n * Returns a new random 12-word mnemonic from the BIP-39\n * standard English word list.\n *\n * @returns {Promise<Mnemonic>}\n */\n static async generate12() {\n return new Mnemonic(await MnemonicCryptography._generate(12));\n }\n\n /**\n * Construct a mnemonic from a list of words. Handles 12, 22 (legacy), and 24 words.\n *\n * An exception of BadMnemonicError will be thrown if the mnemonic\n * contains unknown words or fails the checksum. An invalid mnemonic\n * can still be used to create private keys, the exception will\n * contain the failing mnemonic in case you wish to ignore the\n * validation error and continue.\n *\n * @param {string[]} words\n * @throws {cryptography.BadMnemonicError}\n * @returns {Promise<Mnemonic>}\n */\n static async fromWords(words) {\n return new Mnemonic(await MnemonicCryptography.fromWords(words));\n }\n\n /**\n * @deprecated - Use `toStandardEd25519PrivateKey()` or `toStandardECDSAsecp256k1PrivateKey()` instead\n * Recover a private key from this mnemonic phrase, with an\n * optional passphrase.\n * @param {string} [passphrase]\n * @returns {Promise<PrivateKey>}\n */\n async toPrivateKey(passphrase = \"\") {\n return CACHE.privateKeyConstructor(\n // eslint-disable-next-line deprecation/deprecation\n await this._mnemonic.toPrivateKey(passphrase),\n );\n }\n\n /**\n * @deprecated - Use `toStandardEd25519PrivateKey()` or `toStandardECDSAsecp256k1PrivateKey()` instead\n * Recover an Ed25519 private key from this mnemonic phrase, with an\n * optional passphrase.\n * @param {string} [passphrase]\n * @param {number[]} [path]\n * @returns {Promise<PrivateKey>}\n */\n async toEd25519PrivateKey(passphrase = \"\", path) {\n return CACHE.privateKeyConstructor(\n // eslint-disable-next-line deprecation/deprecation\n await this._mnemonic.toEd25519PrivateKey(passphrase, path),\n );\n }\n\n /**\n * Recover an Ed25519 private key from this mnemonic phrase, with an\n * optional passphrase.\n *\n * @param {string} [passphrase]\n * @param {number} [index]\n * @returns {Promise<PrivateKey>}\n */\n async toStandardEd25519PrivateKey(passphrase = \"\", index) {\n return CACHE.privateKeyConstructor(\n await this._mnemonic.toStandardEd25519PrivateKey(passphrase, index),\n );\n }\n\n /**\n * @deprecated - Use `toStandardEd25519PrivateKey()` or `toStandardECDSAsecp256k1PrivateKey()` instead\n * Recover an ECDSA private key from this mnemonic phrase, with an\n * optional passphrase.\n * @param {string} [passphrase]\n * @param {number[]} [path]\n * @returns {Promise<PrivateKey>}\n */\n async toEcdsaPrivateKey(passphrase = \"\", path) {\n return CACHE.privateKeyConstructor(\n // eslint-disable-next-line deprecation/deprecation\n await this._mnemonic.toEcdsaPrivateKey(passphrase, path),\n );\n }\n\n /**\n * Converts a derivation path from string to an array of integers.\n * Note that this expects precisely 5 components in the derivation path,\n * as per BIP-44:\n * `m / purpose' / coin_type' / account' / change / address_index`\n * Takes into account `'` for hardening as per BIP-32,\n * and does not prescribe which components should be hardened.\n *\n * @param {string} derivationPath the derivation path in BIP-44 format,\n * e.g. \"m/44'/60'/0'/0/0\"\n * @returns {Array<number>} to be used with PrivateKey#derive\n */\n calculateDerivationPathValues(derivationPath) {\n // Parse the derivation path from string into values\n const pattern = /m\\/(\\d+'?)\\/(\\d+'?)\\/(\\d+'?)\\/(\\d+'?)\\/(\\d+'?)/;\n const matches = pattern.exec(derivationPath);\n const values = new Array(5); // as Array<Number>;\n if (matches) {\n // Extract numbers and use apostrophe to select if is hardened\n for (let i = 1; i <= 5; i++) {\n let value = matches[i];\n if (value.endsWith(\"'\")) {\n value = value.substring(0, value.length - 1);\n values[i - 1] = parseInt(value, 10) | HARDENED_BIT;\n } else {\n values[i - 1] = parseInt(value, 10);\n }\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return values;\n }\n\n /**\n * Common implementation for both `toStandardECDSAsecp256k1PrivateKey`\n * functions.\n *\n * @param {string} passphrase the passphrase used to protect the\n * mnemonic, use \"\" for none\n * @param {Array<number>} derivationPathValues derivation path as an\n * integer array,\n * see: `calculateDerivationPathValues`\n * @returns {Promise<PrivateKey>} a private key\n */\n async toStandardECDSAsecp256k1PrivateKeyImpl(\n passphrase,\n derivationPathValues,\n ) {\n // eslint-disable-next-line deprecation/deprecation\n return await this.toEcdsaPrivateKey(passphrase, derivationPathValues);\n }\n\n /**\n * Recover an ECDSA private key from this mnemonic phrase, with an\n * optional passphrase.\n *\n * @param {string} [passphrase]\n * @param {number} [index]\n * @returns {Promise<PrivateKey>}\n */\n async toStandardECDSAsecp256k1PrivateKey(passphrase = \"\", index) {\n return CACHE.privateKeyConstructor(\n await this._mnemonic.toStandardECDSAsecp256k1PrivateKey(\n passphrase,\n index,\n ),\n );\n }\n\n /**\n * Recover an ECDSAsecp256k1 private key from this mnemonic phrase and\n * derivation path, with an optional passphrase\n *\n * @param {string} passphrase the passphrase used to protect the mnemonic,\n * use \"\" for none\n * @param {string} derivationPath the derivation path in BIP-44 format,\n * e.g. \"m/44'/60'/0'/0/0\"\n * @returns {Promise<PrivateKey>} the private key\n */\n async toStandardECDSAsecp256k1PrivateKeyCustomDerivationPath(\n passphrase = \"\",\n derivationPath,\n ) {\n const derivationPathValues =\n this.calculateDerivationPathValues(derivationPath);\n return await this.toStandardECDSAsecp256k1PrivateKeyImpl(\n passphrase,\n derivationPathValues,\n );\n }\n\n /**\n * Recover a mnemonic phrase from a string, splitting on spaces. Handles 12, 22 (legacy), and 24 words.\n *\n * @param {string} mnemonic\n * @returns {Promise<Mnemonic>}\n */\n static async fromString(mnemonic) {\n return new Mnemonic(await MnemonicCryptography.fromString(mnemonic));\n }\n\n /**\n * @returns {Promise<PrivateKey>}\n */\n async toLegacyPrivateKey() {\n return CACHE.privateKeyConstructor(\n await this._mnemonic.toLegacyPrivateKey(),\n );\n }\n\n /**\n * @param {string} passphrase\n * @returns {Promise<Uint8Array>}\n */\n async toSeed(passphrase) {\n return await MnemonicCryptography.toSeed(\n this._mnemonic.words,\n passphrase,\n );\n }\n\n /**\n * @returns {string}\n */\n toString() {\n return this._mnemonic.toString();\n }\n}\n"],"names":["Mnemonic","constructor","mnemonic","this","_mnemonic","generate","MnemonicCryptography","_generate","generate12","fromWords","words","toPrivateKey","passphrase","CACHE","privateKeyConstructor","toEd25519PrivateKey","path","toStandardEd25519PrivateKey","index","toEcdsaPrivateKey","calculateDerivationPathValues","derivationPath","matches","exec","values","Array","i","value","endsWith","substring","length","parseInt","toStandardECDSAsecp256k1PrivateKeyImpl","derivationPathValues","toStandardECDSAsecp256k1PrivateKey","toStandardECDSAsecp256k1PrivateKeyCustomDerivationPath","fromString","toLegacyPrivateKey","toSeed","toString"],"mappings":"gFAiBe,MAAMA,EAMjB,WAAAC,CAAYC,GACRC,KAAKC,UAAYF,CACrB,CAQA,qBAAaG,GACT,OAAO,IAAIL,QAAeM,EAAqBC,UAAU,IAC7D,CAQA,uBAAaC,GACT,OAAO,IAAIR,QAAeM,EAAqBC,UAAU,IAC7D,CAeA,sBAAaE,CAAUC,GACnB,OAAO,IAAIV,QAAeM,EAAqBG,UAAUC,GAC7D,CASA,kBAAMC,CAAaC,EAAa,IAC5B,OAAOC,EAAMC,4BAEHX,KAAKC,UAAUO,aAAaC,GAE1C,CAUA,yBAAMG,CAAoBH,EAAa,GAAII,GACvC,OAAOH,EAAMC,4BAEHX,KAAKC,UAAUW,oBAAoBH,EAAYI,GAE7D,CAUA,iCAAMC,CAA4BL,EAAa,GAAIM,GAC/C,OAAOL,EAAMC,4BACHX,KAAKC,UAAUa,4BAA4BL,EAAYM,GAErE,CAUA,uBAAMC,CAAkBP,EAAa,GAAII,GACrC,OAAOH,EAAMC,4BAEHX,KAAKC,UAAUe,kBAAkBP,EAAYI,GAE3D,CAcA,6BAAAI,CAA8BC,GAE1B,MACMC,EADU,iDACQC,KAAKF,GACvBG,EAAS,IAAIC,MAAM,GACzB,GAAIH,EAEA,IAAK,IAAII,EAAI,EAAGA,GAAK,EAAGA,IAAK,CACzB,IAAIC,EAAQL,EAAQI,GAChBC,EAAMC,SAAS,MACfD,EAAQA,EAAME,UAAU,EAAGF,EAAMG,OAAS,GAC1CN,EAAOE,EAAI,GAxIV,WAwIeK,SAASJ,EAAO,KAEhCH,EAAOE,EAAI,GAAKK,SAASJ,EAAO,GAExC,CAGJ,OAAOH,CACX,CAaA,4CAAMQ,CACFpB,EACAqB,GAGA,aAAa9B,KAAKgB,kBAAkBP,EAAYqB,EACpD,CAUA,wCAAMC,CAAmCtB,EAAa,GAAIM,GACtD,OAAOL,EAAMC,4BACHX,KAAKC,UAAU8B,mCACjBtB,EACAM,GAGZ,CAYA,4DAAMiB,CACFvB,EAAa,GACbS,GAEA,MAAMY,EACF9B,KAAKiB,8BAA8BC,GACvC,aAAalB,KAAK6B,uCACdpB,EACAqB,EAER,CAQA,uBAAaG,CAAWlC,GACpB,OAAO,IAAIF,QAAeM,EAAqB8B,WAAWlC,GAC9D,CAKA,wBAAMmC,GACF,OAAOxB,EAAMC,4BACHX,KAAKC,UAAUiC,qBAE7B,CAMA,YAAMC,CAAO1B,GACT,aAAaN,EAAqBgC,OAC9BnC,KAAKC,UAAUM,MACfE,EAER,CAKA,QAAA2B,GACI,OAAOpC,KAAKC,UAAUmC,UAC1B"}
package/lib/Node.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"Node.js","sources":["../src/Node.js"],"sourcesContent":["// SPDX-License-Identifier: Apache-2.0\n\nimport ManagedNode from \"./ManagedNode.js\";\n\n/**\n * @typedef {import(\"./account/AccountId.js\").default} AccountId\n * @typedef {import(\"./address_book/NodeAddress.js\").default} NodeAddress\n * @typedef {import(\"./channel/Channel.js\").default} Channel\n * @typedef {import(\"./ManagedNodeAddress.js\").default} ManagedNodeAddress\n * @typedef {import(\"./LedgerId.js\").default} LedgerId\n */\n\n/**\n * @typedef {object} NewNode\n * @property {AccountId} accountId\n * @property {string} address\n * @property {(address: string) => Channel} channelInitFunction\n */\n\n/**\n * @typedef {object} CloneNode\n * @property {Node} node\n * @property {ManagedNodeAddress} address\n */\n\n/**\n * @augments {ManagedNode<Channel>}\n */\nexport default class Node extends ManagedNode {\n /**\n * @param {object} props\n * @param {NewNode=} [props.newNode]\n * @param {CloneNode=} [props.cloneNode]\n */\n constructor(props = {}) {\n super(props);\n\n if (props.newNode != null) {\n /** @type {AccountId} */\n this._accountId = props.newNode.accountId;\n\n /** @type {NodeAddress | null} */\n this._nodeAddress = null;\n } else if (props.cloneNode != null) {\n /** @type {AccountId} */\n this._accountId = props.cloneNode.node._accountId;\n\n /** @type {NodeAddress | null} */\n this._nodeAddress = props.cloneNode.node._nodeAddress;\n } else {\n throw new Error(`failed to create node: ${JSON.stringify(props)}`);\n }\n }\n\n /**\n * @returns {string}\n */\n getKey() {\n return this._accountId.toString();\n }\n\n /**\n * @returns {ManagedNode<Channel>}\n */\n toInsecure() {\n return /** @type {this} */ (\n new Node({\n cloneNode: { node: this, address: this._address.toInsecure() },\n })\n );\n }\n\n /**\n * @returns {ManagedNode<Channel>}\n */\n toSecure() {\n return /** @type {this} */ (\n new Node({\n cloneNode: { node: this, address: this._address.toSecure() },\n })\n );\n }\n\n /**\n * @returns {AccountId}\n */\n get accountId() {\n return this._accountId;\n }\n\n /**\n * @returns {NodeAddress | null}\n */\n get nodeAddress() {\n return this._nodeAddress;\n }\n\n /**\n * @param {NodeAddress} nodeAddress\n * @returns {this}\n */\n setNodeAddress(nodeAddress) {\n this._nodeAddress = nodeAddress;\n return this;\n }\n}\n"],"names":["Node","ManagedNode","constructor","props","super","newNode","this","_accountId","accountId","_nodeAddress","cloneNode","Error","JSON","stringify","node","getKey","toString","toInsecure","address","_address","toSecure","nodeAddress","setNodeAddress"],"mappings":"gCA4Be,MAAMA,UAAaC,EAM9B,WAAAC,CAAYC,EAAQ,IAGhB,GAFAC,MAAMD,GAEe,MAAjBA,EAAME,QAENC,KAAKC,WAAaJ,EAAME,QAAQG,UAGhCF,KAAKG,aAAe,SACjB,IAAuB,MAAnBN,EAAMO,UAOb,MAAM,IAAIC,MAAM,0BAA0BC,KAAKC,UAAUV,MALzDG,KAAKC,WAAaJ,EAAMO,UAAUI,KAAKP,WAGvCD,KAAKG,aAAeN,EAAMO,UAAUI,KAAKL,YAGrD,CACA,CAKI,MAAAM,GACI,OAAOT,KAAKC,WAAWS,UAC/B,CAKI,UAAAC,GACI,OAAA,IACQjB,EAAK,CACLU,UAAW,CAAEI,KAAMR,KAAMY,QAASZ,KAAKa,SAASF,eAGhE,CAKI,QAAAG,GACI,OAAA,IACQpB,EAAK,CACLU,UAAW,CAAEI,KAAMR,KAAMY,QAASZ,KAAKa,SAASC,aAGhE,CAKI,aAAIZ,GACA,OAAOF,KAAKC,UACpB,CAKI,eAAIc,GACA,OAAOf,KAAKG,YACpB,CAMI,cAAAa,CAAeD,GAEX,OADAf,KAAKG,aAAeY,EACbf,IACf"}
1
+ {"version":3,"file":"Node.js","sources":["../src/Node.js"],"sourcesContent":["// SPDX-License-Identifier: Apache-2.0\n\nimport ManagedNode from \"./ManagedNode.js\";\n\n/**\n * @typedef {import(\"./account/AccountId.js\").default} AccountId\n * @typedef {import(\"./address_book/NodeAddress.js\").default} NodeAddress\n * @typedef {import(\"./channel/Channel.js\").default} Channel\n * @typedef {import(\"./ManagedNodeAddress.js\").default} ManagedNodeAddress\n * @typedef {import(\"./LedgerId.js\").default} LedgerId\n */\n\n/**\n * @typedef {object} NewNode\n * @property {AccountId} accountId\n * @property {string} address\n * @property {(address: string) => Channel} channelInitFunction\n */\n\n/**\n * @typedef {object} CloneNode\n * @property {Node} node\n * @property {ManagedNodeAddress} address\n */\n\n/**\n * @augments {ManagedNode<Channel>}\n */\nexport default class Node extends ManagedNode {\n /**\n * @param {object} props\n * @param {NewNode=} [props.newNode]\n * @param {CloneNode=} [props.cloneNode]\n */\n constructor(props = {}) {\n super(props);\n\n if (props.newNode != null) {\n /** @type {AccountId} */\n this._accountId = props.newNode.accountId;\n\n /** @type {NodeAddress | null} */\n this._nodeAddress = null;\n } else if (props.cloneNode != null) {\n /** @type {AccountId} */\n this._accountId = props.cloneNode.node._accountId;\n\n /** @type {NodeAddress | null} */\n this._nodeAddress = props.cloneNode.node._nodeAddress;\n } else {\n throw new Error(`failed to create node: ${JSON.stringify(props)}`);\n }\n }\n\n /**\n * @returns {string}\n */\n getKey() {\n return this._accountId.toString();\n }\n\n /**\n * @returns {ManagedNode<Channel>}\n */\n toInsecure() {\n return /** @type {this} */ (\n new Node({\n cloneNode: { node: this, address: this._address.toInsecure() },\n })\n );\n }\n\n /**\n * @returns {ManagedNode<Channel>}\n */\n toSecure() {\n return /** @type {this} */ (\n new Node({\n cloneNode: { node: this, address: this._address.toSecure() },\n })\n );\n }\n\n /**\n * @returns {AccountId}\n */\n get accountId() {\n return this._accountId;\n }\n\n /**\n * @returns {NodeAddress | null}\n */\n get nodeAddress() {\n return this._nodeAddress;\n }\n\n /**\n * @param {NodeAddress} nodeAddress\n * @returns {this}\n */\n setNodeAddress(nodeAddress) {\n this._nodeAddress = nodeAddress;\n return this;\n }\n}\n"],"names":["Node","ManagedNode","constructor","props","super","newNode","this","_accountId","accountId","_nodeAddress","cloneNode","Error","JSON","stringify","node","getKey","toString","toInsecure","address","_address","toSecure","nodeAddress","setNodeAddress"],"mappings":"gCA4Be,MAAMA,UAAaC,EAM9B,WAAAC,CAAYC,EAAQ,IAGhB,GAFAC,MAAMD,GAEe,MAAjBA,EAAME,QAENC,KAAKC,WAAaJ,EAAME,QAAQG,UAGhCF,KAAKG,aAAe,SACjB,IAAuB,MAAnBN,EAAMO,UAOb,MAAM,IAAIC,MAAM,0BAA0BC,KAAKC,UAAUV,MALzDG,KAAKC,WAAaJ,EAAMO,UAAUI,KAAKP,WAGvCD,KAAKG,aAAeN,EAAMO,UAAUI,KAAKL,YAG7C,CACJ,CAKA,MAAAM,GACI,OAAOT,KAAKC,WAAWS,UAC3B,CAKA,UAAAC,GACI,OAAA,IACQjB,EAAK,CACLU,UAAW,CAAEI,KAAMR,KAAMY,QAASZ,KAAKa,SAASF,eAG5D,CAKA,QAAAG,GACI,OAAA,IACQpB,EAAK,CACLU,UAAW,CAAEI,KAAMR,KAAMY,QAASZ,KAAKa,SAASC,aAG5D,CAKA,aAAIZ,GACA,OAAOF,KAAKC,UAChB,CAKA,eAAIc,GACA,OAAOf,KAAKG,YAChB,CAMA,cAAAa,CAAeD,GAEX,OADAf,KAAKG,aAAeY,EACbf,IACX"}
@@ -1 +1 @@
1
- {"version":3,"file":"ObjectMap.js","sources":["../src/ObjectMap.js"],"sourcesContent":["// SPDX-License-Identifier: Apache-2.0\n\n/**\n * A simple \"map\" type that allows indexing by objects other than\n * strings, numbers, or booleans, and doesn't use the object pointer.\n *\n * @abstract\n * @template {{ toString(): string }} KeyT\n * @template {any} ValueT\n */\nexport default class ObjectMap {\n /**\n * @param {(s: string) => KeyT} fromString\n */\n constructor(fromString) {\n /**\n * This map is from the stringified version of the key, to the value\n *\n * @type {Map<string, ValueT>}\n */\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n this._map = new Map();\n\n /**\n * This map is from the key, to the value\n *\n * @type {Map<KeyT, ValueT>}\n */\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n this.__map = new Map();\n\n /**\n * A function pointer to convert a key into a string. So we can set each\n * value in both maps.\n */\n this._fromString = fromString;\n }\n\n /**\n * Get a value by key or string.\n *\n * This is the main benefit of this class. If a user provides a `KeyT` we\n * implicitly serialize it to a string and use the string version. Otherwise\n * the user will get `undefined` even for a key that exists in the map since\n * the `KeyT` the provided has a different pointer than the one we have stored.\n * The string version doesn't have this issue since JS hashes the string and\n * that would result in both `KeyT` hitting the same value even if they're\n * different pointers.\n *\n * @param {KeyT | string} key\n * @returns {?ValueT}\n */\n get(key) {\n const k = typeof key === \"string\" ? key : key.toString();\n\n const value = this._map.get(k);\n return value != null ? value : null;\n }\n\n /**\n * Set the key to a value in both maps\n *\n * @internal\n * @param {KeyT} key\n * @param {ValueT} value\n */\n _set(key, value) {\n const k = typeof key === \"string\" ? key : key.toString();\n\n this._map.set(k, value);\n this.__map.set(key, value);\n }\n\n /**\n * Create iterator of values\n *\n * @returns {IterableIterator<ValueT>}\n */\n values() {\n return this._map.values();\n }\n\n /**\n * Get the size of the map\n *\n * @returns {number}\n */\n get size() {\n return this._map.size;\n }\n\n /**\n * Get the keys of the map.\n *\n * @returns {IterableIterator<KeyT>}\n */\n keys() {\n return this.__map.keys();\n }\n\n /**\n * Create an iterator over key, value pairs\n *\n * @returns {IterableIterator<[KeyT, ValueT]>}\n */\n [Symbol.iterator]() {\n return this.__map[Symbol.iterator]();\n }\n\n /**\n * Stringify the map into _something_ readable.\n * **NOTE**: This implementation is not stable and can change.\n *\n * @returns {string}\n */\n toString() {\n /** @type {{[key: string]: any}} */\n const map = {};\n\n for (const [key, value] of this._map) {\n map[key] = value;\n }\n\n return JSON.stringify(map);\n }\n\n toJSON() {\n const obj = {};\n\n this._map.forEach((value, key) => {\n // @ts-ignore\n obj[key] = value;\n });\n\n return obj;\n }\n}\n"],"names":["ObjectMap","constructor","fromString","this","_map","Map","__map","_fromString","get","key","k","toString","value","_set","set","values","size","keys","Symbol","iterator","map","JSON","stringify","toJSON","obj","forEach"],"mappings":"AAUe,MAAMA,EAIjB,WAAAC,CAAYC,GAORC,KAAKC,KAAO,IAAIC,IAQhBF,KAAKG,MAAQ,IAAID,IAMjBF,KAAKI,YAAcL,CAC3B,CAgBI,GAAAM,CAAIC,GACA,MAAMC,EAAmB,iBAARD,EAAmBA,EAAMA,EAAIE,WAExCC,EAAQT,KAAKC,KAAKI,IAAIE,GAC5B,OAAgB,MAATE,EAAgBA,EAAQ,IACvC,CASI,IAAAC,CAAKJ,EAAKG,GACN,MAAMF,EAAmB,iBAARD,EAAmBA,EAAMA,EAAIE,WAE9CR,KAAKC,KAAKU,IAAIJ,EAAGE,GACjBT,KAAKG,MAAMQ,IAAIL,EAAKG,EAC5B,CAOI,MAAAG,GACI,OAAOZ,KAAKC,KAAKW,QACzB,CAOI,QAAIC,GACA,OAAOb,KAAKC,KAAKY,IACzB,CAOI,IAAAC,GACI,OAAOd,KAAKG,MAAMW,MAC1B,CAOI,CAACC,OAAOC,YACJ,OAAOhB,KAAKG,MAAMY,OAAOC,WACjC,CAQI,QAAAR,GAEI,MAAMS,EAAM,CAAE,EAEd,IAAK,MAAOX,EAAKG,KAAUT,KAAKC,KAC5BgB,EAAIX,GAAOG,EAGf,OAAOS,KAAKC,UAAUF,EAC9B,CAEI,MAAAG,GACI,MAAMC,EAAM,CAAE,EAOd,OALArB,KAAKC,KAAKqB,QAAQ,CAACb,EAAOH,KAEtBe,EAAIf,GAAOG,IAGRY,CACf"}
1
+ {"version":3,"file":"ObjectMap.js","sources":["../src/ObjectMap.js"],"sourcesContent":["// SPDX-License-Identifier: Apache-2.0\n\n/**\n * A simple \"map\" type that allows indexing by objects other than\n * strings, numbers, or booleans, and doesn't use the object pointer.\n *\n * @abstract\n * @template {{ toString(): string }} KeyT\n * @template {any} ValueT\n */\nexport default class ObjectMap {\n /**\n * @param {(s: string) => KeyT} fromString\n */\n constructor(fromString) {\n /**\n * This map is from the stringified version of the key, to the value\n *\n * @type {Map<string, ValueT>}\n */\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n this._map = new Map();\n\n /**\n * This map is from the key, to the value\n *\n * @type {Map<KeyT, ValueT>}\n */\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n this.__map = new Map();\n\n /**\n * A function pointer to convert a key into a string. So we can set each\n * value in both maps.\n */\n this._fromString = fromString;\n }\n\n /**\n * Get a value by key or string.\n *\n * This is the main benefit of this class. If a user provides a `KeyT` we\n * implicitly serialize it to a string and use the string version. Otherwise\n * the user will get `undefined` even for a key that exists in the map since\n * the `KeyT` the provided has a different pointer than the one we have stored.\n * The string version doesn't have this issue since JS hashes the string and\n * that would result in both `KeyT` hitting the same value even if they're\n * different pointers.\n *\n * @param {KeyT | string} key\n * @returns {?ValueT}\n */\n get(key) {\n const k = typeof key === \"string\" ? key : key.toString();\n\n const value = this._map.get(k);\n return value != null ? value : null;\n }\n\n /**\n * Set the key to a value in both maps\n *\n * @internal\n * @param {KeyT} key\n * @param {ValueT} value\n */\n _set(key, value) {\n const k = typeof key === \"string\" ? key : key.toString();\n\n this._map.set(k, value);\n this.__map.set(key, value);\n }\n\n /**\n * Create iterator of values\n *\n * @returns {IterableIterator<ValueT>}\n */\n values() {\n return this._map.values();\n }\n\n /**\n * Get the size of the map\n *\n * @returns {number}\n */\n get size() {\n return this._map.size;\n }\n\n /**\n * Get the keys of the map.\n *\n * @returns {IterableIterator<KeyT>}\n */\n keys() {\n return this.__map.keys();\n }\n\n /**\n * Create an iterator over key, value pairs\n *\n * @returns {IterableIterator<[KeyT, ValueT]>}\n */\n [Symbol.iterator]() {\n return this.__map[Symbol.iterator]();\n }\n\n /**\n * Stringify the map into _something_ readable.\n * **NOTE**: This implementation is not stable and can change.\n *\n * @returns {string}\n */\n toString() {\n /** @type {{[key: string]: any}} */\n const map = {};\n\n for (const [key, value] of this._map) {\n map[key] = value;\n }\n\n return JSON.stringify(map);\n }\n\n toJSON() {\n const obj = {};\n\n this._map.forEach((value, key) => {\n // @ts-ignore\n obj[key] = value;\n });\n\n return obj;\n }\n}\n"],"names":["ObjectMap","constructor","fromString","this","_map","Map","__map","_fromString","get","key","k","toString","value","_set","set","values","size","keys","Symbol","iterator","map","JSON","stringify","toJSON","obj","forEach"],"mappings":"AAUe,MAAMA,EAIjB,WAAAC,CAAYC,GAORC,KAAKC,KAAO,IAAIC,IAQhBF,KAAKG,MAAQ,IAAID,IAMjBF,KAAKI,YAAcL,CACvB,CAgBA,GAAAM,CAAIC,GACA,MAAMC,EAAmB,iBAARD,EAAmBA,EAAMA,EAAIE,WAExCC,EAAQT,KAAKC,KAAKI,IAAIE,GAC5B,OAAgB,MAATE,EAAgBA,EAAQ,IACnC,CASA,IAAAC,CAAKJ,EAAKG,GACN,MAAMF,EAAmB,iBAARD,EAAmBA,EAAMA,EAAIE,WAE9CR,KAAKC,KAAKU,IAAIJ,EAAGE,GACjBT,KAAKG,MAAMQ,IAAIL,EAAKG,EACxB,CAOA,MAAAG,GACI,OAAOZ,KAAKC,KAAKW,QACrB,CAOA,QAAIC,GACA,OAAOb,KAAKC,KAAKY,IACrB,CAOA,IAAAC,GACI,OAAOd,KAAKG,MAAMW,MACtB,CAOA,CAACC,OAAOC,YACJ,OAAOhB,KAAKG,MAAMY,OAAOC,WAC7B,CAQA,QAAAR,GAEI,MAAMS,EAAM,CAAA,EAEZ,IAAK,MAAOX,EAAKG,KAAUT,KAAKC,KAC5BgB,EAAIX,GAAOG,EAGf,OAAOS,KAAKC,UAAUF,EAC1B,CAEA,MAAAG,GACI,MAAMC,EAAM,CAAA,EAOZ,OALArB,KAAKC,KAAKqB,QAAQ,CAACb,EAAOH,KAEtBe,EAAIf,GAAOG,IAGRY,CACX"}
@@ -1 +1 @@
1
- {"version":3,"file":"PrecheckStatusError.js","sources":["../src/PrecheckStatusError.js"],"sourcesContent":["// SPDX-License-Identifier: Apache-2.0\n\nimport StatusError from \"./StatusError.js\";\n\n/**\n * @typedef {import(\"./Status.js\").default} Status\n * @typedef {import(\"./transaction/TransactionId.js\").default} TransactionId\n * @typedef {import(\"./contract/ContractFunctionResult.js\").default} ContractFunctionResult\n * @typedef {import(\"./account/AccountId.js\").default} AccountId\n */\n\n/**\n * @typedef {object} PrecheckStatusErrorJSON\n * @property {string} name\n * @property {string} status\n * @property {string} transactionId\n * @property {?string | null} nodeId\n * @property {string} message\n * @property {?ContractFunctionResult} contractFunctionResult\n */\n\n/**\n * Represents an error that occurs during the pre-check phase of a transaction\n * on the Hedera network. The `PrecheckStatusError` class extends the base\n * `StatusError` class and provides additional context specific to pre-check\n * failures, such as the transaction ID, status, and any associated messages.\n *\n * This error is typically thrown when a transaction fails to meet the necessary\n * conditions before being processed, allowing developers to handle such errors\n * gracefully in their applications. The error includes details about the failure,\n * making it easier to diagnose issues related to transaction submissions.\n */\nexport default class PrecheckStatusError extends StatusError {\n /**\n * @param {object} props\n * @param {Status} props.status\n * @param {TransactionId} props.transactionId\n * @param {AccountId} props.nodeId\n * @param {?ContractFunctionResult} props.contractFunctionResult\n */\n constructor(props) {\n super(\n props,\n `transaction ${props.transactionId.toString()} failed precheck with status ${props.status.toString()} against node account id ${props.nodeId.toString()}`,\n );\n\n /**\n * @type {?ContractFunctionResult}\n * @readonly\n */\n this.contractFunctionResult = props.contractFunctionResult;\n\n /**\n * @type {AccountId}\n * @readonly\n */\n this.nodeId = props.nodeId;\n }\n\n /**\n * @returns {PrecheckStatusErrorJSON}\n */\n toJSON() {\n return {\n name: this.name,\n status: this.status.toString(),\n transactionId: this.transactionId.toString(),\n nodeId: this.nodeId.toString(),\n message: this.message,\n contractFunctionResult: this.contractFunctionResult,\n };\n }\n}\n"],"names":["PrecheckStatusError","StatusError","constructor","props","super","transactionId","toString","status","nodeId","this","contractFunctionResult","toJSON","name","message"],"mappings":"gCAgCe,MAAMA,UAA4BC,EAQ7C,WAAAC,CAAYC,GACRC,MACID,EACA,eAAeA,EAAME,cAAcC,0CAA0CH,EAAMI,OAAOD,sCAAsCH,EAAMK,OAAOF,cAOjJG,KAAKC,uBAAyBP,EAAMO,uBAMpCD,KAAKD,OAASL,EAAMK,MAC5B,CAKI,MAAAG,GACI,MAAO,CACHC,KAAMH,KAAKG,KACXL,OAAQE,KAAKF,OAAOD,WACpBD,cAAeI,KAAKJ,cAAcC,WAClCE,OAAQC,KAAKD,OAAOF,WACpBO,QAASJ,KAAKI,QACdH,uBAAwBD,KAAKC,uBAEzC"}
1
+ {"version":3,"file":"PrecheckStatusError.js","sources":["../src/PrecheckStatusError.js"],"sourcesContent":["// SPDX-License-Identifier: Apache-2.0\n\nimport StatusError from \"./StatusError.js\";\n\n/**\n * @typedef {import(\"./Status.js\").default} Status\n * @typedef {import(\"./transaction/TransactionId.js\").default} TransactionId\n * @typedef {import(\"./contract/ContractFunctionResult.js\").default} ContractFunctionResult\n * @typedef {import(\"./account/AccountId.js\").default} AccountId\n */\n\n/**\n * @typedef {object} PrecheckStatusErrorJSON\n * @property {string} name\n * @property {string} status\n * @property {string} transactionId\n * @property {?string | null} nodeId\n * @property {string} message\n * @property {?ContractFunctionResult} contractFunctionResult\n */\n\n/**\n * Represents an error that occurs during the pre-check phase of a transaction\n * on the Hedera network. The `PrecheckStatusError` class extends the base\n * `StatusError` class and provides additional context specific to pre-check\n * failures, such as the transaction ID, status, and any associated messages.\n *\n * This error is typically thrown when a transaction fails to meet the necessary\n * conditions before being processed, allowing developers to handle such errors\n * gracefully in their applications. The error includes details about the failure,\n * making it easier to diagnose issues related to transaction submissions.\n */\nexport default class PrecheckStatusError extends StatusError {\n /**\n * @param {object} props\n * @param {Status} props.status\n * @param {TransactionId} props.transactionId\n * @param {AccountId} props.nodeId\n * @param {?ContractFunctionResult} props.contractFunctionResult\n */\n constructor(props) {\n super(\n props,\n `transaction ${props.transactionId.toString()} failed precheck with status ${props.status.toString()} against node account id ${props.nodeId.toString()}`,\n );\n\n /**\n * @type {?ContractFunctionResult}\n * @readonly\n */\n this.contractFunctionResult = props.contractFunctionResult;\n\n /**\n * @type {AccountId}\n * @readonly\n */\n this.nodeId = props.nodeId;\n }\n\n /**\n * @returns {PrecheckStatusErrorJSON}\n */\n toJSON() {\n return {\n name: this.name,\n status: this.status.toString(),\n transactionId: this.transactionId.toString(),\n nodeId: this.nodeId.toString(),\n message: this.message,\n contractFunctionResult: this.contractFunctionResult,\n };\n }\n}\n"],"names":["PrecheckStatusError","StatusError","constructor","props","super","transactionId","toString","status","nodeId","this","contractFunctionResult","toJSON","name","message"],"mappings":"gCAgCe,MAAMA,UAA4BC,EAQ7C,WAAAC,CAAYC,GACRC,MACID,EACA,eAAeA,EAAME,cAAcC,0CAA0CH,EAAMI,OAAOD,sCAAsCH,EAAMK,OAAOF,cAOjJG,KAAKC,uBAAyBP,EAAMO,uBAMpCD,KAAKD,OAASL,EAAMK,MACxB,CAKA,MAAAG,GACI,MAAO,CACHC,KAAMH,KAAKG,KACXL,OAAQE,KAAKF,OAAOD,WACpBD,cAAeI,KAAKJ,cAAcC,WAClCE,OAAQC,KAAKD,OAAOF,WACpBO,QAASJ,KAAKI,QACdH,uBAAwBD,KAAKC,uBAErC"}
@@ -1 +1 @@
1
- {"version":3,"file":"PrivateKey.js","sources":["../src/PrivateKey.js"],"sourcesContent":["// SPDX-License-Identifier: Apache-2.0\nimport { hexlify } from \"@ethersproject/bytes\";\nimport { PrivateKey as PrivateKeyCrypto } from \"@hiero-ledger/cryptography\";\nimport { proto } from \"@hiero-ledger/proto\";\nimport Mnemonic from \"./Mnemonic.js\";\nimport PublicKey from \"./PublicKey.js\";\nimport Key from \"./Key.js\";\nimport CACHE from \"./Cache.js\";\nimport SignatureMap from \"./transaction/SignatureMap.js\";\nimport AccountId from \"./account/AccountId.js\";\nimport TransactionId from \"./transaction/TransactionId.js\";\nimport { decode } from \"./encoding/hex.js\";\nimport { ASN1Decoder } from \"./util/ASN1-Decoder.js\";\n\n/**\n * @typedef {import(\"./transaction/Transaction.js\").default} Transaction\n */\n\n/**\n * @namespace proto\n * @typedef {import(\"@hiero-ledger/proto\").proto.IKey} HieroProto.proto.IKey\n * @typedef {import(\"@hiero-ledger/proto\").proto.ITransaction} HieroProto.proto.ITransaction\n * @typedef {import(\"@hiero-ledger/proto\").proto.ISignaturePair} HieroProto.proto.ISignaturePair\n * @typedef {import(\"@hiero-ledger/proto\").proto.ISignedTransaction} HieroProto.proto.ISignedTransaction\n * @typedef {import(\"@hiero-ledger/proto\").proto.TransactionBody} HieroProto.proto.TransactionBody\n */\n\nexport default class PrivateKey extends Key {\n /**\n * @internal\n * @hideconstructor\n * @param {PrivateKeyCrypto} key\n */\n constructor(key) {\n super();\n\n this._key = key;\n }\n\n /**\n * Generate a random Ed25519 private key.\n *\n * @returns {PrivateKey}\n */\n static generateED25519() {\n return new PrivateKey(PrivateKeyCrypto.generateED25519());\n }\n\n /**\n * Generate a random EDSA private key.\n *\n * @returns {PrivateKey}\n */\n static generateECDSA() {\n return new PrivateKey(PrivateKeyCrypto.generateECDSA());\n }\n\n /**\n * Depredated - Use `generateED25519()` instead\n * Generate a random Ed25519 private key.\n *\n * @returns {PrivateKey}\n */\n static generate() {\n return PrivateKey.generateED25519();\n }\n\n /**\n * Depredated - Use `generateED25519Async()` instead\n * Generate a random Ed25519 private key.\n *\n * @returns {Promise<PrivateKey>}\n */\n static async generateAsync() {\n return new PrivateKey(await PrivateKeyCrypto.generateAsync());\n }\n\n /**\n * Generate a random Ed25519 private key.\n *\n * @returns {Promise<PrivateKey>}\n */\n static async generateED25519Async() {\n return new PrivateKey(await PrivateKeyCrypto.generateED25519Async());\n }\n\n /**\n * Generate a random ECDSA private key.\n *\n * @returns {Promise<PrivateKey>}\n */\n static async generateECDSAAsync() {\n return new PrivateKey(await PrivateKeyCrypto.generateECDSAAsync());\n }\n\n /**\n * Construct a private key from bytes. Requires DER header.\n *\n * @param {Uint8Array} data\n * @returns {PrivateKey}\n */\n static fromBytes(data) {\n const keyString = hexlify(data);\n if (PrivateKey.isDerKey(keyString)) {\n if (PrivateKey.getAlgorithm(keyString) === \"ecdsa\") {\n return new PrivateKey(PrivateKeyCrypto.fromBytesECDSA(data));\n } else {\n return new PrivateKey(PrivateKeyCrypto.fromBytesED25519(data));\n }\n }\n\n // If the key is not DER, we assume it's a raw private key\n // this will default to ED25519 as we dont have a way\n // to determine the type of the key based on the raw bytes\n return new PrivateKey(PrivateKeyCrypto.fromBytes(data));\n }\n\n /**\n * Construct a ECDSA private key from bytes.\n *\n * @param {Uint8Array} data\n * @returns {PrivateKey}\n */\n static fromBytesECDSA(data) {\n return new PrivateKey(PrivateKeyCrypto.fromBytesECDSA(data));\n }\n\n /**\n * Construct a ED25519 private key from bytes.\n *\n * @param {Uint8Array} data\n * @returns {PrivateKey}\n */\n static fromBytesED25519(data) {\n return new PrivateKey(PrivateKeyCrypto.fromBytesED25519(data));\n }\n\n /**\n * @deprecated - Use fromStringECDSA() or fromStringED2551() on a HEX-encoded string\n * and fromStringDer() on a HEX-encoded string with DER prefix instead.\n * Construct a private key from a hex-encoded string. Requires DER header.\n * @param {string} text\n * @returns {PrivateKey}\n */\n static fromString(text) {\n if (PrivateKey.isDerKey(text)) {\n return this.fromStringDer(text);\n }\n // If the key is not DER, we assume it's a raw private key\n // this will default to ED25519 as we dont have a way\n // to determine the type of the key based on the raw bytes\n return new PrivateKey(PrivateKeyCrypto.fromString(text));\n }\n\n /**\n * Construct a private key from a HEX-encoded string with a der prefix\n *\n * @param {string} text\n * @returns {PrivateKey}\n */\n static fromStringDer(text) {\n // previous versions of the library used to accept non-der encoded private keys here\n // and it fallbacked to PrivateKey.fromString() so we need to keep this behavior\n if (!PrivateKey.isDerKey(text)) {\n // eslint-disable-next-line deprecation/deprecation\n return PrivateKey.fromString(text);\n }\n\n if (PrivateKey.getAlgorithm(text) === \"ecdsa\") {\n return this.fromStringECDSA(text);\n } else {\n return this.fromStringED25519(text);\n }\n }\n\n /**\n * Construct a ECDSA private key from a hex-encoded string.\n *\n * @param {string} text\n * @returns {PrivateKey}\n */\n static fromStringECDSA(text) {\n return new PrivateKey(PrivateKeyCrypto.fromStringECDSA(text));\n }\n\n /**\n * Construct a Ed25519 private key from a hex-encoded string.\n *\n * @param {string} text\n * @returns {PrivateKey}\n */\n static fromStringED25519(text) {\n return new PrivateKey(PrivateKeyCrypto.fromStringED25519(text));\n }\n\n /**\n * Construct a Ed25519 private key from a Uint8Array seed.\n *\n * @param {Uint8Array} seed\n * @returns {Promise<PrivateKey>}\n */\n static async fromSeedED25519(seed) {\n return new PrivateKey(await PrivateKeyCrypto.fromSeedED25519(seed));\n }\n\n /**\n * Construct a Ed25519 private key from a Uint8Array seed.\n *\n * @param {Uint8Array} seed\n * @returns {Promise<PrivateKey>}\n */\n static async fromSeedECDSAsecp256k1(seed) {\n return new PrivateKey(\n await PrivateKeyCrypto.fromSeedECDSAsecp256k1(seed),\n );\n }\n\n /**\n * @deprecated - Use `Mnemonic.from[Words|String]().to[Ed25519|Ecdsa]PrivateKey()` instead\n *\n * Recover a private key from a mnemonic phrase (and optionally a password).\n * @param {Mnemonic | string} mnemonic\n * @param {string} [passphrase]\n * @returns {Promise<PrivateKey>}\n */\n static async fromMnemonic(mnemonic, passphrase = \"\") {\n if (mnemonic instanceof Mnemonic) {\n return new PrivateKey(\n // eslint-disable-next-line deprecation/deprecation\n await PrivateKeyCrypto.fromMnemonic(\n mnemonic._mnemonic,\n passphrase,\n ),\n );\n }\n\n return new PrivateKey(\n // eslint-disable-next-line deprecation/deprecation\n await PrivateKeyCrypto.fromMnemonic(mnemonic, passphrase),\n );\n }\n\n /**\n * Recover a private key from a keystore, previously created by `.toKeystore()`.\n *\n * This key will _not_ support child key derivation.\n *\n * @param {Uint8Array} data\n * @param {string} [passphrase]\n * @returns {Promise<PrivateKey>}\n * @throws {cryptography.BadKeyError} If the passphrase is incorrect or the hash fails to validate.\n */\n static async fromKeystore(data, passphrase = \"\") {\n return new PrivateKey(\n await PrivateKeyCrypto.fromKeystore(data, passphrase),\n );\n }\n\n /**\n * Recover a private key from a pem string; the private key may be encrypted.\n *\n * This method assumes the .pem file has been converted to a string already.\n *\n * If `passphrase` is not null or empty, this looks for the first `ENCRYPTED PRIVATE KEY`\n * section and uses `passphrase` to decrypt it; otherwise, it looks for the first `PRIVATE KEY`\n * section and decodes that as a DER-encoded private key.\n *\n * @param {string} data\n * @param {string} [passphrase]\n * @returns {Promise<PrivateKey>}\n */\n static async fromPem(data, passphrase = \"\") {\n return new PrivateKey(await PrivateKeyCrypto.fromPem(data, passphrase));\n }\n\n /**\n * Derive a new private key at the given wallet index.\n *\n * Only currently supported for keys created with `fromMnemonic()`; other keys will throw\n * an error.\n *\n * You can check if a key supports derivation with `.supportsDerivation()`\n *\n * @param {number} index\n * @returns {Promise<PrivateKey>}\n * @throws If this key does not support derivation.\n */\n async derive(index) {\n return new PrivateKey(await this._key.derive(index));\n }\n\n /**\n * @param {number} index\n * @returns {Promise<PrivateKey>}\n * @throws If this key does not support derivation.\n */\n async legacyDerive(index) {\n return new PrivateKey(await this._key.legacyDerive(index));\n }\n\n /**\n * Get the public key associated with this private key.\n *\n * The public key can be freely given and used by other parties to verify\n * the signatures generated by this private key.\n *\n * @returns {PublicKey}\n */\n get publicKey() {\n return new PublicKey(this._key.publicKey);\n }\n\n /**\n * Get the public key associated with this private key.\n *\n * The public key can be freely given and used by other parties to verify\n * the signatures generated by this private key.\n *\n * @returns {?Uint8Array}\n */\n get chainCode() {\n return this._key._chainCode;\n }\n\n /**\n * Sign a message with this private key.\n *\n * @param {Uint8Array} bytes\n * @returns {Uint8Array} - The signature bytes without the message\n */\n sign(bytes) {\n return this._key.sign(bytes);\n }\n\n /**\n * @deprecated - Use legacy=false flag to use the modern approach\n * or don't pass it at all.\n * @overload\n * @param {Transaction} transaction\n * @param {true} legacy\n * @returns {Uint8Array | Uint8Array[] }\n */\n\n /**\n * @overload\n * @param {Transaction} transaction\n * @param {false} [legacy]\n * @returns {SignatureMap}\n */\n\n /**\n * @param {Transaction} transaction\n * @param {boolean} [legacy]\n * @returns {Uint8Array | Uint8Array[] | SignatureMap}\n */\n signTransaction(transaction, legacy = false) {\n if (legacy) {\n return this._signTransactionLegacy(transaction);\n }\n\n const sigMap = new SignatureMap();\n\n for (const signedTx of transaction._signedTransactions.list) {\n const bodyBytes = signedTx.bodyBytes;\n if (!bodyBytes) throw new Error(\"Body bytes are missing\");\n\n const body = proto.TransactionBody.decode(bodyBytes);\n if (!body.transactionID || !body.nodeAccountID) {\n throw new Error(\n \"Transaction ID or Node Account ID not found in the signed transaction\",\n );\n }\n\n const nodeId = AccountId._fromProtobuf(body.nodeAccountID);\n const transactionId = TransactionId._fromProtobuf(\n body.transactionID,\n );\n const sig = this._key.sign(bodyBytes);\n sigMap.addSignature(nodeId, transactionId, this.publicKey, sig);\n }\n\n transaction.addSignature(this.publicKey, sigMap);\n return sigMap;\n }\n\n /**\n * deprecated - This method is deprecated and will be removed in future versions.\n * Use the `signTransaction` method with the `legacy=false` flag or don't\n * pass it all for the modern approach.\n * @param {Transaction} transaction\n * @returns {Uint8Array | Uint8Array[]}\n */\n _signTransactionLegacy(transaction) {\n const signatures = transaction._signedTransactions.list.map(\n (signedTransaction) => {\n const bodyBytes = signedTransaction.bodyBytes;\n if (!bodyBytes) {\n return new Uint8Array();\n }\n\n return this._key.sign(bodyBytes);\n },\n );\n transaction.addSignature(this.publicKey, signatures);\n // Return directly Uint8Array if there is only one signature\n return signatures.length === 1 ? signatures[0] : signatures;\n }\n\n /**\n * Check if `derive` can be called on this private key.\n *\n * This is only the case if the key was created from a mnemonic.\n *\n * @returns {boolean}\n */\n isDerivable() {\n return this._key.isDerivable();\n }\n\n /**\n * @returns {Uint8Array}\n */\n toBytes() {\n return this._key.toBytes();\n }\n\n /**\n * @returns {Uint8Array}\n */\n toBytesDer() {\n return this._key.toBytesDer();\n }\n\n /**\n * @returns {Uint8Array}\n */\n toBytesRaw() {\n return this._key.toBytesRaw();\n }\n\n /**\n * @returns {string}\n */\n toString() {\n return this._key.toStringDer();\n }\n\n /**\n * @returns {string}\n */\n toStringDer() {\n return this._key.toStringDer();\n }\n\n /**\n * @returns {string}\n */\n toStringRaw() {\n return this._key.toStringRaw();\n }\n\n /**\n * Create a keystore with a given passphrase.\n *\n * The key can be recovered later with `fromKeystore()`.\n *\n * Note that this will not retain the ancillary data used for\n * deriving child keys, thus `.derive()` on the restored key will\n * throw even if this instance supports derivation.\n *\n * @param {string} [passphrase]\n * @returns {Promise<Uint8Array>}\n */\n toKeystore(passphrase = \"\") {\n return this._key.toKeystore(passphrase);\n }\n\n /**\n * @returns {HieroProto.proto.IKey}\n */\n _toProtobufKey() {\n return this.publicKey._toProtobufKey();\n }\n\n /**\n * @param {Long | number} shard\n * @param {Long | number} realm\n * @returns {AccountId}\n */\n toAccountId(shard, realm) {\n return this.publicKey.toAccountId(shard, realm);\n }\n\n /**\n * @returns {string}\n */\n get type() {\n return this._key._type;\n }\n\n /**\n * Recover the recovery ID used in the signature for the given message.\n *\n * **Note:** This method only works for ECDSA secp256k1 keys.\n * @param {Uint8Array} r - 32-byte `r` component of the signature\n * @param {Uint8Array} s - 32-byte `s` component of the signature\n * @param {Uint8Array} message - The original (unhashed) message\n * @returns {number} Recovery ID (0–3), or -1 if not found or not applicable\n */\n getRecoveryId(r, s, message) {\n return this._key.getRecoveryId(r, s, message);\n }\n\n /**\n * @param {string} privateKey\n * @returns { \"ecdsa\" | \"ed25519\"}\n */\n static getAlgorithm(privateKey) {\n if (!PrivateKey.isDerKey(privateKey)) {\n throw new Error(\"Only der keys are supported\");\n }\n\n const decoder = new ASN1Decoder(Uint8Array.from(decode(privateKey)));\n decoder.read();\n const decodedKeyType = decoder.getOidKeyTypes()[0];\n // @ts-ignored\n return decodedKeyType;\n }\n\n /**\n * @internal\n * @param {string} key\n * @returns {boolean}\n */\n static isDerKey(key) {\n try {\n const data = Uint8Array.from(decode(key));\n const decoder = new ASN1Decoder(data);\n decoder.read(); // Attempt to read the ASN.1 structure\n return true;\n } catch (error) {\n return false;\n }\n }\n}\n\nCACHE.setPrivateKeyConstructor((key) => new PrivateKey(key));\n"],"names":["PrivateKey","Key","constructor","key","super","this","_key","generateED25519","PrivateKeyCrypto","generateECDSA","generate","generateAsync","generateED25519Async","generateECDSAAsync","fromBytes","data","keyString","hexlify","isDerKey","getAlgorithm","fromBytesECDSA","fromBytesED25519","fromString","text","fromStringDer","fromStringECDSA","fromStringED25519","fromSeedED25519","seed","fromSeedECDSAsecp256k1","fromMnemonic","mnemonic","passphrase","Mnemonic","_mnemonic","fromKeystore","fromPem","derive","index","legacyDerive","publicKey","PublicKey","chainCode","_chainCode","sign","bytes","signTransaction","transaction","legacy","_signTransactionLegacy","sigMap","SignatureMap","signedTx","_signedTransactions","list","bodyBytes","Error","body","proto","TransactionBody","decode","transactionID","nodeAccountID","nodeId","AccountId","_fromProtobuf","transactionId","TransactionId","sig","addSignature","signatures","map","signedTransaction","Uint8Array","length","isDerivable","toBytes","toBytesDer","toBytesRaw","toString","toStringDer","toStringRaw","toKeystore","_toProtobufKey","toAccountId","shard","realm","type","_type","getRecoveryId","r","s","message","privateKey","decoder","ASN1Decoder","from","read","getOidKeyTypes","error","CACHE","setPrivateKeyConstructor"],"mappings":"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"}
1
+ {"version":3,"file":"PrivateKey.js","sources":["../src/PrivateKey.js"],"sourcesContent":["// SPDX-License-Identifier: Apache-2.0\nimport { hexlify } from \"@ethersproject/bytes\";\nimport { PrivateKey as PrivateKeyCrypto } from \"@hiero-ledger/cryptography\";\nimport { proto } from \"@hiero-ledger/proto\";\nimport Mnemonic from \"./Mnemonic.js\";\nimport PublicKey from \"./PublicKey.js\";\nimport Key from \"./Key.js\";\nimport CACHE from \"./Cache.js\";\nimport SignatureMap from \"./transaction/SignatureMap.js\";\nimport AccountId from \"./account/AccountId.js\";\nimport TransactionId from \"./transaction/TransactionId.js\";\nimport { decode } from \"./encoding/hex.js\";\nimport { ASN1Decoder } from \"./util/ASN1-Decoder.js\";\n\n/**\n * @typedef {import(\"./transaction/Transaction.js\").default} Transaction\n */\n\n/**\n * @namespace proto\n * @typedef {import(\"@hiero-ledger/proto\").proto.IKey} HieroProto.proto.IKey\n * @typedef {import(\"@hiero-ledger/proto\").proto.ITransaction} HieroProto.proto.ITransaction\n * @typedef {import(\"@hiero-ledger/proto\").proto.ISignaturePair} HieroProto.proto.ISignaturePair\n * @typedef {import(\"@hiero-ledger/proto\").proto.ISignedTransaction} HieroProto.proto.ISignedTransaction\n * @typedef {import(\"@hiero-ledger/proto\").proto.TransactionBody} HieroProto.proto.TransactionBody\n */\n\nexport default class PrivateKey extends Key {\n /**\n * @internal\n * @hideconstructor\n * @param {PrivateKeyCrypto} key\n */\n constructor(key) {\n super();\n\n this._key = key;\n }\n\n /**\n * Generate a random Ed25519 private key.\n *\n * @returns {PrivateKey}\n */\n static generateED25519() {\n return new PrivateKey(PrivateKeyCrypto.generateED25519());\n }\n\n /**\n * Generate a random EDSA private key.\n *\n * @returns {PrivateKey}\n */\n static generateECDSA() {\n return new PrivateKey(PrivateKeyCrypto.generateECDSA());\n }\n\n /**\n * Depredated - Use `generateED25519()` instead\n * Generate a random Ed25519 private key.\n *\n * @returns {PrivateKey}\n */\n static generate() {\n return PrivateKey.generateED25519();\n }\n\n /**\n * Depredated - Use `generateED25519Async()` instead\n * Generate a random Ed25519 private key.\n *\n * @returns {Promise<PrivateKey>}\n */\n static async generateAsync() {\n return new PrivateKey(await PrivateKeyCrypto.generateAsync());\n }\n\n /**\n * Generate a random Ed25519 private key.\n *\n * @returns {Promise<PrivateKey>}\n */\n static async generateED25519Async() {\n return new PrivateKey(await PrivateKeyCrypto.generateED25519Async());\n }\n\n /**\n * Generate a random ECDSA private key.\n *\n * @returns {Promise<PrivateKey>}\n */\n static async generateECDSAAsync() {\n return new PrivateKey(await PrivateKeyCrypto.generateECDSAAsync());\n }\n\n /**\n * Construct a private key from bytes. Requires DER header.\n *\n * @param {Uint8Array} data\n * @returns {PrivateKey}\n */\n static fromBytes(data) {\n const keyString = hexlify(data);\n if (PrivateKey.isDerKey(keyString)) {\n if (PrivateKey.getAlgorithm(keyString) === \"ecdsa\") {\n return new PrivateKey(PrivateKeyCrypto.fromBytesECDSA(data));\n } else {\n return new PrivateKey(PrivateKeyCrypto.fromBytesED25519(data));\n }\n }\n\n // If the key is not DER, we assume it's a raw private key\n // this will default to ED25519 as we dont have a way\n // to determine the type of the key based on the raw bytes\n return new PrivateKey(PrivateKeyCrypto.fromBytes(data));\n }\n\n /**\n * Construct a ECDSA private key from bytes.\n *\n * @param {Uint8Array} data\n * @returns {PrivateKey}\n */\n static fromBytesECDSA(data) {\n return new PrivateKey(PrivateKeyCrypto.fromBytesECDSA(data));\n }\n\n /**\n * Construct a ED25519 private key from bytes.\n *\n * @param {Uint8Array} data\n * @returns {PrivateKey}\n */\n static fromBytesED25519(data) {\n return new PrivateKey(PrivateKeyCrypto.fromBytesED25519(data));\n }\n\n /**\n * @deprecated - Use fromStringECDSA() or fromStringED2551() on a HEX-encoded string\n * and fromStringDer() on a HEX-encoded string with DER prefix instead.\n * Construct a private key from a hex-encoded string. Requires DER header.\n * @param {string} text\n * @returns {PrivateKey}\n */\n static fromString(text) {\n if (PrivateKey.isDerKey(text)) {\n return this.fromStringDer(text);\n }\n // If the key is not DER, we assume it's a raw private key\n // this will default to ED25519 as we dont have a way\n // to determine the type of the key based on the raw bytes\n return new PrivateKey(PrivateKeyCrypto.fromString(text));\n }\n\n /**\n * Construct a private key from a HEX-encoded string with a der prefix\n *\n * @param {string} text\n * @returns {PrivateKey}\n */\n static fromStringDer(text) {\n // previous versions of the library used to accept non-der encoded private keys here\n // and it fallbacked to PrivateKey.fromString() so we need to keep this behavior\n if (!PrivateKey.isDerKey(text)) {\n // eslint-disable-next-line deprecation/deprecation\n return PrivateKey.fromString(text);\n }\n\n if (PrivateKey.getAlgorithm(text) === \"ecdsa\") {\n return this.fromStringECDSA(text);\n } else {\n return this.fromStringED25519(text);\n }\n }\n\n /**\n * Construct a ECDSA private key from a hex-encoded string.\n *\n * @param {string} text\n * @returns {PrivateKey}\n */\n static fromStringECDSA(text) {\n return new PrivateKey(PrivateKeyCrypto.fromStringECDSA(text));\n }\n\n /**\n * Construct a Ed25519 private key from a hex-encoded string.\n *\n * @param {string} text\n * @returns {PrivateKey}\n */\n static fromStringED25519(text) {\n return new PrivateKey(PrivateKeyCrypto.fromStringED25519(text));\n }\n\n /**\n * Construct a Ed25519 private key from a Uint8Array seed.\n *\n * @param {Uint8Array} seed\n * @returns {Promise<PrivateKey>}\n */\n static async fromSeedED25519(seed) {\n return new PrivateKey(await PrivateKeyCrypto.fromSeedED25519(seed));\n }\n\n /**\n * Construct a Ed25519 private key from a Uint8Array seed.\n *\n * @param {Uint8Array} seed\n * @returns {Promise<PrivateKey>}\n */\n static async fromSeedECDSAsecp256k1(seed) {\n return new PrivateKey(\n await PrivateKeyCrypto.fromSeedECDSAsecp256k1(seed),\n );\n }\n\n /**\n * @deprecated - Use `Mnemonic.from[Words|String]().to[Ed25519|Ecdsa]PrivateKey()` instead\n *\n * Recover a private key from a mnemonic phrase (and optionally a password).\n * @param {Mnemonic | string} mnemonic\n * @param {string} [passphrase]\n * @returns {Promise<PrivateKey>}\n */\n static async fromMnemonic(mnemonic, passphrase = \"\") {\n if (mnemonic instanceof Mnemonic) {\n return new PrivateKey(\n // eslint-disable-next-line deprecation/deprecation\n await PrivateKeyCrypto.fromMnemonic(\n mnemonic._mnemonic,\n passphrase,\n ),\n );\n }\n\n return new PrivateKey(\n // eslint-disable-next-line deprecation/deprecation\n await PrivateKeyCrypto.fromMnemonic(mnemonic, passphrase),\n );\n }\n\n /**\n * Recover a private key from a keystore, previously created by `.toKeystore()`.\n *\n * This key will _not_ support child key derivation.\n *\n * @param {Uint8Array} data\n * @param {string} [passphrase]\n * @returns {Promise<PrivateKey>}\n * @throws {cryptography.BadKeyError} If the passphrase is incorrect or the hash fails to validate.\n */\n static async fromKeystore(data, passphrase = \"\") {\n return new PrivateKey(\n await PrivateKeyCrypto.fromKeystore(data, passphrase),\n );\n }\n\n /**\n * Recover a private key from a pem string; the private key may be encrypted.\n *\n * This method assumes the .pem file has been converted to a string already.\n *\n * If `passphrase` is not null or empty, this looks for the first `ENCRYPTED PRIVATE KEY`\n * section and uses `passphrase` to decrypt it; otherwise, it looks for the first `PRIVATE KEY`\n * section and decodes that as a DER-encoded private key.\n *\n * @param {string} data\n * @param {string} [passphrase]\n * @returns {Promise<PrivateKey>}\n */\n static async fromPem(data, passphrase = \"\") {\n return new PrivateKey(await PrivateKeyCrypto.fromPem(data, passphrase));\n }\n\n /**\n * Derive a new private key at the given wallet index.\n *\n * Only currently supported for keys created with `fromMnemonic()`; other keys will throw\n * an error.\n *\n * You can check if a key supports derivation with `.supportsDerivation()`\n *\n * @param {number} index\n * @returns {Promise<PrivateKey>}\n * @throws If this key does not support derivation.\n */\n async derive(index) {\n return new PrivateKey(await this._key.derive(index));\n }\n\n /**\n * @param {number} index\n * @returns {Promise<PrivateKey>}\n * @throws If this key does not support derivation.\n */\n async legacyDerive(index) {\n return new PrivateKey(await this._key.legacyDerive(index));\n }\n\n /**\n * Get the public key associated with this private key.\n *\n * The public key can be freely given and used by other parties to verify\n * the signatures generated by this private key.\n *\n * @returns {PublicKey}\n */\n get publicKey() {\n return new PublicKey(this._key.publicKey);\n }\n\n /**\n * Get the public key associated with this private key.\n *\n * The public key can be freely given and used by other parties to verify\n * the signatures generated by this private key.\n *\n * @returns {?Uint8Array}\n */\n get chainCode() {\n return this._key._chainCode;\n }\n\n /**\n * Sign a message with this private key.\n *\n * @param {Uint8Array} bytes\n * @returns {Uint8Array} - The signature bytes without the message\n */\n sign(bytes) {\n return this._key.sign(bytes);\n }\n\n /**\n * @deprecated - Use legacy=false flag to use the modern approach\n * or don't pass it at all.\n * @overload\n * @param {Transaction} transaction\n * @param {true} legacy\n * @returns {Uint8Array | Uint8Array[] }\n */\n\n /**\n * @overload\n * @param {Transaction} transaction\n * @param {false} [legacy]\n * @returns {SignatureMap}\n */\n\n /**\n * @param {Transaction} transaction\n * @param {boolean} [legacy]\n * @returns {Uint8Array | Uint8Array[] | SignatureMap}\n */\n signTransaction(transaction, legacy = false) {\n if (legacy) {\n return this._signTransactionLegacy(transaction);\n }\n\n const sigMap = new SignatureMap();\n\n for (const signedTx of transaction._signedTransactions.list) {\n const bodyBytes = signedTx.bodyBytes;\n if (!bodyBytes) throw new Error(\"Body bytes are missing\");\n\n const body = proto.TransactionBody.decode(bodyBytes);\n if (!body.transactionID || !body.nodeAccountID) {\n throw new Error(\n \"Transaction ID or Node Account ID not found in the signed transaction\",\n );\n }\n\n const nodeId = AccountId._fromProtobuf(body.nodeAccountID);\n const transactionId = TransactionId._fromProtobuf(\n body.transactionID,\n );\n const sig = this._key.sign(bodyBytes);\n sigMap.addSignature(nodeId, transactionId, this.publicKey, sig);\n }\n\n transaction.addSignature(this.publicKey, sigMap);\n return sigMap;\n }\n\n /**\n * deprecated - This method is deprecated and will be removed in future versions.\n * Use the `signTransaction` method with the `legacy=false` flag or don't\n * pass it all for the modern approach.\n * @param {Transaction} transaction\n * @returns {Uint8Array | Uint8Array[]}\n */\n _signTransactionLegacy(transaction) {\n const signatures = transaction._signedTransactions.list.map(\n (signedTransaction) => {\n const bodyBytes = signedTransaction.bodyBytes;\n if (!bodyBytes) {\n return new Uint8Array();\n }\n\n return this._key.sign(bodyBytes);\n },\n );\n transaction.addSignature(this.publicKey, signatures);\n // Return directly Uint8Array if there is only one signature\n return signatures.length === 1 ? signatures[0] : signatures;\n }\n\n /**\n * Check if `derive` can be called on this private key.\n *\n * This is only the case if the key was created from a mnemonic.\n *\n * @returns {boolean}\n */\n isDerivable() {\n return this._key.isDerivable();\n }\n\n /**\n * @returns {Uint8Array}\n */\n toBytes() {\n return this._key.toBytes();\n }\n\n /**\n * @returns {Uint8Array}\n */\n toBytesDer() {\n return this._key.toBytesDer();\n }\n\n /**\n * @returns {Uint8Array}\n */\n toBytesRaw() {\n return this._key.toBytesRaw();\n }\n\n /**\n * @returns {string}\n */\n toString() {\n return this._key.toStringDer();\n }\n\n /**\n * @returns {string}\n */\n toStringDer() {\n return this._key.toStringDer();\n }\n\n /**\n * @returns {string}\n */\n toStringRaw() {\n return this._key.toStringRaw();\n }\n\n /**\n * Create a keystore with a given passphrase.\n *\n * The key can be recovered later with `fromKeystore()`.\n *\n * Note that this will not retain the ancillary data used for\n * deriving child keys, thus `.derive()` on the restored key will\n * throw even if this instance supports derivation.\n *\n * @param {string} [passphrase]\n * @returns {Promise<Uint8Array>}\n */\n toKeystore(passphrase = \"\") {\n return this._key.toKeystore(passphrase);\n }\n\n /**\n * @returns {HieroProto.proto.IKey}\n */\n _toProtobufKey() {\n return this.publicKey._toProtobufKey();\n }\n\n /**\n * @param {Long | number} shard\n * @param {Long | number} realm\n * @returns {AccountId}\n */\n toAccountId(shard, realm) {\n return this.publicKey.toAccountId(shard, realm);\n }\n\n /**\n * @returns {string}\n */\n get type() {\n return this._key._type;\n }\n\n /**\n * Recover the recovery ID used in the signature for the given message.\n *\n * **Note:** This method only works for ECDSA secp256k1 keys.\n * @param {Uint8Array} r - 32-byte `r` component of the signature\n * @param {Uint8Array} s - 32-byte `s` component of the signature\n * @param {Uint8Array} message - The original (unhashed) message\n * @returns {number} Recovery ID (0–3), or -1 if not found or not applicable\n */\n getRecoveryId(r, s, message) {\n return this._key.getRecoveryId(r, s, message);\n }\n\n /**\n * @param {string} privateKey\n * @returns { \"ecdsa\" | \"ed25519\"}\n */\n static getAlgorithm(privateKey) {\n if (!PrivateKey.isDerKey(privateKey)) {\n throw new Error(\"Only der keys are supported\");\n }\n\n const decoder = new ASN1Decoder(Uint8Array.from(decode(privateKey)));\n decoder.read();\n const decodedKeyType = decoder.getOidKeyTypes()[0];\n // @ts-ignored\n return decodedKeyType;\n }\n\n /**\n * @internal\n * @param {string} key\n * @returns {boolean}\n */\n static isDerKey(key) {\n try {\n const data = Uint8Array.from(decode(key));\n const decoder = new ASN1Decoder(data);\n decoder.read(); // Attempt to read the ASN.1 structure\n return true;\n } catch (error) {\n return false;\n }\n }\n}\n\nCACHE.setPrivateKeyConstructor((key) => new PrivateKey(key));\n"],"names":["PrivateKey","Key","constructor","key","super","this","_key","generateED25519","PrivateKeyCrypto","generateECDSA","generate","generateAsync","generateED25519Async","generateECDSAAsync","fromBytes","data","keyString","hexlify","isDerKey","getAlgorithm","fromBytesECDSA","fromBytesED25519","fromString","text","fromStringDer","fromStringECDSA","fromStringED25519","fromSeedED25519","seed","fromSeedECDSAsecp256k1","fromMnemonic","mnemonic","passphrase","Mnemonic","_mnemonic","fromKeystore","fromPem","derive","index","legacyDerive","publicKey","PublicKey","chainCode","_chainCode","sign","bytes","signTransaction","transaction","legacy","_signTransactionLegacy","sigMap","SignatureMap","signedTx","_signedTransactions","list","bodyBytes","Error","body","proto","TransactionBody","decode","transactionID","nodeAccountID","nodeId","AccountId","_fromProtobuf","transactionId","TransactionId","sig","addSignature","signatures","map","signedTransaction","Uint8Array","length","isDerivable","toBytes","toBytesDer","toBytesRaw","toString","toStringDer","toStringRaw","toKeystore","_toProtobufKey","toAccountId","shard","realm","type","_type","getRecoveryId","r","s","message","privateKey","decoder","ASN1Decoder","from","read","getOidKeyTypes","error","CACHE","setPrivateKeyConstructor"],"mappings":"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"}
@@ -47,6 +47,10 @@ export default class PrngTransaction extends Transaction {
47
47
  */
48
48
  setRange(newRange: number): this;
49
49
  get range(): number | null;
50
+ /**
51
+ * @param {Client} client
52
+ */
53
+ _validateChecksums(client: Client): void;
50
54
  /**
51
55
  * @override
52
56
  * @protected
@@ -1 +1 @@
1
- {"version":3,"file":"PrngTransaction.js","sources":["../src/PrngTransaction.js"],"sourcesContent":["// SPDX-License-Identifier: Apache-2.0\n\nimport Transaction, {\n TRANSACTION_REGISTRY,\n} from \"./transaction/Transaction.js\";\nimport { isNumber } from \"./util.js\";\n\n/**\n * @typedef {import(\"@hiero-ledger/proto\").proto.ITransaction} HieroProto.proto.ITransaction\n * @typedef {import(\"@hiero-ledger/proto\").proto.Transaction} HieroProto.proto.Transaction\n * @typedef {import(\"@hiero-ledger/proto\").proto.ISignedTransaction} HieroProto.proto.ISignedTransaction\n * @typedef {import(\"@hiero-ledger/proto\").proto.SignedTransaction} HieroProto.proto.SignedTransaction\n * @typedef {import(\"@hiero-ledger/proto\").proto.IUtilPrngTransactionBody } HieroProto.proto.IUtilPrngTransactionBody\n * @typedef {import(\"@hiero-ledger/proto\").proto.UtilPrngTransactionBody} HieroProto.proto.UtilPrngTransactionBody\n * @typedef {import(\"@hiero-ledger/proto\").proto.ITransactionResponse} HieroProto.proto.TransactionResponse\n * @typedef {import(\"@hiero-ledger/proto\").proto.TransactionBody} HieroProto.proto.TransactionBody\n * @typedef {import(\"@hiero-ledger/proto\").proto.ITransactionBody} HieroProto.proto.ITransactionBody\n * @typedef {import(\"./account/AccountId.js\").default} AccountId\n * @typedef {import(\"./transaction/TransactionId.js\").default} TransactionId\n */\n\n/**\n * @typedef {import(\"./client/Client.js\").default<*, *>} Client\n * @typedef {import(\"./channel/Channel.js\").default} Channel\n */\n\n/**\n * Gets a pseudorandom 32-bit number. Not cryptographically secure. See HIP-351 https://hips.hedera.com/hip/hip-351\n */\nexport default class PrngTransaction extends Transaction {\n /**\n * @param {object} props\n * @param {?number } [props.range]\n */\n constructor(props = {}) {\n super();\n\n /**\n * @private\n * @type {?number}\n */\n this._range = null;\n\n if (props.range != null) {\n this.setRange(props.range);\n }\n }\n\n /**\n * @param {number} newRange\n * @returns {this}\n */\n setRange(newRange) {\n this._range = newRange;\n return this;\n }\n\n get range() {\n return this._range;\n }\n\n /**\n * @param {Client} client\n */\n _validateChecksums(client) {\n if (this._range != null && isNumber(this._range)) {\n this._validateChecksums(client);\n }\n }\n\n /**\n * @override\n * @internal\n * @param {Channel} channel\n * @param {HieroProto.proto.ITransaction} request\n * @returns {Promise<HieroProto.proto.TransactionResponse>}\n */\n _execute(channel, request) {\n return channel.util.prng(request);\n }\n\n /**\n * @internal\n * @param {HieroProto.proto.ITransaction[]} transactions\n * @param {HieroProto.proto.ISignedTransaction[]} signedTransactions\n * @param {TransactionId[]} transactionIds\n * @param {AccountId[]} nodeIds\n * @param {HieroProto.proto.ITransactionBody[]} bodies\n * @returns {PrngTransaction}\n */\n static _fromProtobuf(\n transactions,\n signedTransactions,\n transactionIds,\n nodeIds,\n bodies,\n ) {\n const body = /** @type {HieroProto.proto.ITransactionBody} */ (\n bodies[0]\n );\n const transactionRange =\n /** @type {HieroProto.proto.IUtilPrngTransactionBody} */ (\n body.utilPrng\n );\n return Transaction._fromProtobufTransactions(\n new PrngTransaction({\n range: transactionRange.range,\n }),\n transactions,\n signedTransactions,\n transactionIds,\n nodeIds,\n bodies,\n );\n }\n\n /**\n * @override\n * @protected\n * @returns {NonNullable<HieroProto.proto.TransactionBody[\"data\"]>}\n */\n _getTransactionDataCase() {\n return \"utilPrng\";\n }\n\n /**\n * @override\n * @protected\n * @returns {HieroProto.proto.IUtilPrngTransactionBody}\n */\n _makeTransactionData() {\n return {\n range: this.range,\n };\n }\n\n /**\n * @returns {string}\n */\n _getLogId() {\n const timestamp = /** @type {import(\"./Timestamp.js\").default} */ (\n this._transactionIds.current.validStart\n );\n return `RandomGenerate:${timestamp.toString()}`;\n }\n}\n\nTRANSACTION_REGISTRY.set(\n \"utilPrng\",\n // eslint-disable-next-line @typescript-eslint/unbound-method\n PrngTransaction._fromProtobuf,\n);\n"],"names":["PrngTransaction","Transaction","constructor","props","super","this","_range","range","setRange","newRange","_validateChecksums","client","isNumber","_execute","channel","request","util","prng","_fromProtobuf","transactions","signedTransactions","transactionIds","nodeIds","bodies","transactionRange","_fromProtobufTransactions","_getTransactionDataCase","_makeTransactionData","_getLogId","_transactionIds","current","toString","TRANSACTION_REGISTRY","set"],"mappings":"4GA6Be,MAAMA,UAAwBC,EAKzC,WAAAC,CAAYC,EAAQ,IAChBC,QAMAC,KAAKC,OAAS,KAEK,MAAfH,EAAMI,OACNF,KAAKG,SAASL,EAAMI,MAEhC,CAMI,QAAAC,CAASC,GAEL,OADAJ,KAAKC,OAASG,EACPJ,IACf,CAEI,SAAIE,GACA,OAAOF,KAAKC,MACpB,CAKI,kBAAAI,CAAmBC,GACI,MAAfN,KAAKC,QAAkBM,EAASP,KAAKC,SACrCD,KAAKK,mBAAmBC,EAEpC,CASI,QAAAE,CAASC,EAASC,GACd,OAAOD,EAAQE,KAAKC,KAAKF,EACjC,CAWI,oBAAOG,CACHC,EACAC,EACAC,EACAC,EACAC,GAEA,MAGMC,EAFFD,EAAO,GAKN,SACL,OAAOtB,EAAYwB,0BACf,IAAIzB,EAAgB,CAChBO,MAAOiB,EAAiBjB,QAE5BY,EACAC,EACAC,EACAC,EACAC,EAEZ,CAOI,uBAAAG,GACI,MAAO,UACf,CAOI,oBAAAC,GACI,MAAO,CACHpB,MAAOF,KAAKE,MAExB,CAKI,SAAAqB,GAII,MAAO,kBAFHvB,KAAKwB,gBAAgBC,QACxB,WACkCC,YAC3C,EAGAC,EAAqBC,IACjB,WAEAjC,EAAgBkB"}
1
+ {"version":3,"file":"PrngTransaction.js","sources":["../src/PrngTransaction.js"],"sourcesContent":["// SPDX-License-Identifier: Apache-2.0\n\nimport Transaction, {\n TRANSACTION_REGISTRY,\n} from \"./transaction/Transaction.js\";\nimport { isNumber } from \"./util.js\";\n\n/**\n * @typedef {import(\"@hiero-ledger/proto\").proto.ITransaction} HieroProto.proto.ITransaction\n * @typedef {import(\"@hiero-ledger/proto\").proto.Transaction} HieroProto.proto.Transaction\n * @typedef {import(\"@hiero-ledger/proto\").proto.ISignedTransaction} HieroProto.proto.ISignedTransaction\n * @typedef {import(\"@hiero-ledger/proto\").proto.SignedTransaction} HieroProto.proto.SignedTransaction\n * @typedef {import(\"@hiero-ledger/proto\").proto.IUtilPrngTransactionBody } HieroProto.proto.IUtilPrngTransactionBody\n * @typedef {import(\"@hiero-ledger/proto\").proto.UtilPrngTransactionBody} HieroProto.proto.UtilPrngTransactionBody\n * @typedef {import(\"@hiero-ledger/proto\").proto.ITransactionResponse} HieroProto.proto.TransactionResponse\n * @typedef {import(\"@hiero-ledger/proto\").proto.TransactionBody} HieroProto.proto.TransactionBody\n * @typedef {import(\"@hiero-ledger/proto\").proto.ITransactionBody} HieroProto.proto.ITransactionBody\n * @typedef {import(\"./account/AccountId.js\").default} AccountId\n * @typedef {import(\"./transaction/TransactionId.js\").default} TransactionId\n */\n\n/**\n * @typedef {import(\"./client/Client.js\").default<*, *>} Client\n * @typedef {import(\"./channel/Channel.js\").default} Channel\n */\n\n/**\n * Gets a pseudorandom 32-bit number. Not cryptographically secure. See HIP-351 https://hips.hedera.com/hip/hip-351\n */\nexport default class PrngTransaction extends Transaction {\n /**\n * @param {object} props\n * @param {?number } [props.range]\n */\n constructor(props = {}) {\n super();\n\n /**\n * @private\n * @type {?number}\n */\n this._range = null;\n\n if (props.range != null) {\n this.setRange(props.range);\n }\n }\n\n /**\n * @param {number} newRange\n * @returns {this}\n */\n setRange(newRange) {\n this._range = newRange;\n return this;\n }\n\n get range() {\n return this._range;\n }\n\n /**\n * @param {Client} client\n */\n _validateChecksums(client) {\n if (this._range != null && isNumber(this._range)) {\n this._validateChecksums(client);\n }\n }\n\n /**\n * @override\n * @internal\n * @param {Channel} channel\n * @param {HieroProto.proto.ITransaction} request\n * @returns {Promise<HieroProto.proto.TransactionResponse>}\n */\n _execute(channel, request) {\n return channel.util.prng(request);\n }\n\n /**\n * @internal\n * @param {HieroProto.proto.ITransaction[]} transactions\n * @param {HieroProto.proto.ISignedTransaction[]} signedTransactions\n * @param {TransactionId[]} transactionIds\n * @param {AccountId[]} nodeIds\n * @param {HieroProto.proto.ITransactionBody[]} bodies\n * @returns {PrngTransaction}\n */\n static _fromProtobuf(\n transactions,\n signedTransactions,\n transactionIds,\n nodeIds,\n bodies,\n ) {\n const body = /** @type {HieroProto.proto.ITransactionBody} */ (\n bodies[0]\n );\n const transactionRange =\n /** @type {HieroProto.proto.IUtilPrngTransactionBody} */ (\n body.utilPrng\n );\n return Transaction._fromProtobufTransactions(\n new PrngTransaction({\n range: transactionRange.range,\n }),\n transactions,\n signedTransactions,\n transactionIds,\n nodeIds,\n bodies,\n );\n }\n\n /**\n * @override\n * @protected\n * @returns {NonNullable<HieroProto.proto.TransactionBody[\"data\"]>}\n */\n _getTransactionDataCase() {\n return \"utilPrng\";\n }\n\n /**\n * @override\n * @protected\n * @returns {HieroProto.proto.IUtilPrngTransactionBody}\n */\n _makeTransactionData() {\n return {\n range: this.range,\n };\n }\n\n /**\n * @returns {string}\n */\n _getLogId() {\n const timestamp = /** @type {import(\"./Timestamp.js\").default} */ (\n this._transactionIds.current.validStart\n );\n return `RandomGenerate:${timestamp.toString()}`;\n }\n}\n\nTRANSACTION_REGISTRY.set(\n \"utilPrng\",\n // eslint-disable-next-line @typescript-eslint/unbound-method\n PrngTransaction._fromProtobuf,\n);\n"],"names":["PrngTransaction","Transaction","constructor","props","super","this","_range","range","setRange","newRange","_validateChecksums","client","isNumber","_execute","channel","request","util","prng","_fromProtobuf","transactions","signedTransactions","transactionIds","nodeIds","bodies","transactionRange","_fromProtobufTransactions","_getTransactionDataCase","_makeTransactionData","_getLogId","_transactionIds","current","toString","TRANSACTION_REGISTRY","set"],"mappings":"4GA6Be,MAAMA,UAAwBC,EAKzC,WAAAC,CAAYC,EAAQ,IAChBC,QAMAC,KAAKC,OAAS,KAEK,MAAfH,EAAMI,OACNF,KAAKG,SAASL,EAAMI,MAE5B,CAMA,QAAAC,CAASC,GAEL,OADAJ,KAAKC,OAASG,EACPJ,IACX,CAEA,SAAIE,GACA,OAAOF,KAAKC,MAChB,CAKA,kBAAAI,CAAmBC,GACI,MAAfN,KAAKC,QAAkBM,EAASP,KAAKC,SACrCD,KAAKK,mBAAmBC,EAEhC,CASA,QAAAE,CAASC,EAASC,GACd,OAAOD,EAAQE,KAAKC,KAAKF,EAC7B,CAWA,oBAAOG,CACHC,EACAC,EACAC,EACAC,EACAC,GAEA,MAGMC,EAFFD,EAAO,GAKnB,SACQ,OAAOtB,EAAYwB,0BACf,IAAIzB,EAAgB,CAChBO,MAAOiB,EAAiBjB,QAE5BY,EACAC,EACAC,EACAC,EACAC,EAER,CAOA,uBAAAG,GACI,MAAO,UACX,CAOA,oBAAAC,GACI,MAAO,CACHpB,MAAOF,KAAKE,MAEpB,CAKA,SAAAqB,GAII,MAAO,kBAFHvB,KAAKwB,gBAAgBC,QACjC,WAC2CC,YACvC,EAGJC,EAAqBC,IACjB,WAEAjC,EAAgBkB"}