@hiero-ledger/sdk 2.72.0 → 2.73.1

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 (377) hide show
  1. package/dist/umd.js +648 -338
  2. package/dist/umd.min.js +16 -15
  3. package/lib/EntityIdHelper.cjs +1 -2
  4. package/lib/EntityIdHelper.js +1 -1
  5. package/lib/EntityIdHelper.js.map +1 -1
  6. package/lib/EthereumFlow.cjs +1 -2
  7. package/lib/EthereumTransaction.cjs +1 -2
  8. package/lib/EthereumTransactionDataEip1559.cjs +1 -2
  9. package/lib/EthereumTransactionDataEip1559.js +1 -1
  10. package/lib/EthereumTransactionDataEip1559.js.map +1 -1
  11. package/lib/EthereumTransactionDataEip2930.cjs +1 -2
  12. package/lib/EthereumTransactionDataEip2930.js +1 -1
  13. package/lib/EthereumTransactionDataEip2930.js.map +1 -1
  14. package/lib/EthereumTransactionDataLegacy.cjs +1 -2
  15. package/lib/EthereumTransactionDataLegacy.js +1 -1
  16. package/lib/EthereumTransactionDataLegacy.js.map +1 -1
  17. package/lib/EvmAddress.cjs +1 -2
  18. package/lib/ExchangeRates.cjs +1 -2
  19. package/lib/Executable.cjs +1 -2
  20. package/lib/Executable.js +1 -1
  21. package/lib/Executable.js.map +1 -1
  22. package/lib/FeeComponents.cjs +1 -2
  23. package/lib/FeeData.cjs +1 -2
  24. package/lib/FeeSchedule.cjs +1 -2
  25. package/lib/FeeSchedule.js +1 -1
  26. package/lib/FeeSchedule.js.map +1 -1
  27. package/lib/FeeSchedules.cjs +1 -2
  28. package/lib/KeyList.js +1 -1
  29. package/lib/KeyList.js.map +1 -1
  30. package/lib/LedgerId.cjs +1 -2
  31. package/lib/LocalProviderWeb.cjs +165 -0
  32. package/lib/LocalProviderWeb.d.ts +127 -0
  33. package/lib/LocalProviderWeb.js +2 -0
  34. package/lib/LocalProviderWeb.js.map +1 -0
  35. package/lib/ManagedNode.js +1 -1
  36. package/lib/ManagedNode.js.map +1 -1
  37. package/lib/ObjectMap.js +1 -1
  38. package/lib/ObjectMap.js.map +1 -1
  39. package/lib/PrivateKey.js +1 -1
  40. package/lib/PrivateKey.js.map +1 -1
  41. package/lib/PrngTransaction.cjs +1 -2
  42. package/lib/PublicKey.js +1 -1
  43. package/lib/PublicKey.js.map +1 -1
  44. package/lib/StakingInfo.cjs +1 -2
  45. package/lib/Timestamp.js.map +1 -1
  46. package/lib/TransactionFeeSchedule.cjs +1 -2
  47. package/lib/TransactionFeeSchedule.js +1 -1
  48. package/lib/TransactionFeeSchedule.js.map +1 -1
  49. package/lib/Wallet.cjs +1 -2
  50. package/lib/Wallet.js +1 -1
  51. package/lib/Wallet.js.map +1 -1
  52. package/lib/account/AccountAllowanceAdjustTransaction.cjs +1 -2
  53. package/lib/account/AccountAllowanceAdjustTransaction.js +1 -1
  54. package/lib/account/AccountAllowanceAdjustTransaction.js.map +1 -1
  55. package/lib/account/AccountAllowanceApproveTransaction.cjs +1 -2
  56. package/lib/account/AccountAllowanceApproveTransaction.js +1 -1
  57. package/lib/account/AccountAllowanceApproveTransaction.js.map +1 -1
  58. package/lib/account/AccountAllowanceDeleteTransaction.cjs +1 -2
  59. package/lib/account/AccountAllowanceDeleteTransaction.js +1 -1
  60. package/lib/account/AccountAllowanceDeleteTransaction.js.map +1 -1
  61. package/lib/account/AccountBalance.cjs +1 -2
  62. package/lib/account/AccountBalanceQuery.cjs +1 -2
  63. package/lib/account/AccountCreateTransaction.cjs +1 -2
  64. package/lib/account/AccountDeleteTransaction.cjs +1 -2
  65. package/lib/account/AccountId.cjs +1 -2
  66. package/lib/account/AccountId.js +1 -1
  67. package/lib/account/AccountId.js.map +1 -1
  68. package/lib/account/AccountInfo.cjs +1 -2
  69. package/lib/account/AccountInfo.js +1 -1
  70. package/lib/account/AccountInfo.js.map +1 -1
  71. package/lib/account/AccountInfoQuery.cjs +1 -2
  72. package/lib/account/AccountRecordsQuery.cjs +1 -2
  73. package/lib/account/AccountRecordsQuery.js +1 -1
  74. package/lib/account/AccountRecordsQuery.js.map +1 -1
  75. package/lib/account/AccountUpdateTransaction.cjs +1 -2
  76. package/lib/account/HbarTransferMap.js +1 -1
  77. package/lib/account/HbarTransferMap.js.map +1 -1
  78. package/lib/account/LiveHashAddTransaction.cjs +1 -2
  79. package/lib/account/LiveHashAddTransaction.js +1 -1
  80. package/lib/account/LiveHashAddTransaction.js.map +1 -1
  81. package/lib/account/LiveHashDeleteTransaction.cjs +1 -2
  82. package/lib/account/LiveHashQuery.cjs +1 -2
  83. package/lib/account/NullableTokenDecimalMap.js +1 -1
  84. package/lib/account/NullableTokenDecimalMap.js.map +1 -1
  85. package/lib/account/TokenBalanceMap.js +1 -1
  86. package/lib/account/TokenBalanceMap.js.map +1 -1
  87. package/lib/account/TokenDecimalMap.js +1 -1
  88. package/lib/account/TokenDecimalMap.js.map +1 -1
  89. package/lib/account/TokenNftAllowance.js +1 -1
  90. package/lib/account/TokenNftAllowance.js.map +1 -1
  91. package/lib/account/TokenNftTransferMap.js +1 -1
  92. package/lib/account/TokenNftTransferMap.js.map +1 -1
  93. package/lib/account/TokenRelationshipMap.js +1 -1
  94. package/lib/account/TokenRelationshipMap.js.map +1 -1
  95. package/lib/account/TokenTransferAccountMap.js +1 -1
  96. package/lib/account/TokenTransferAccountMap.js.map +1 -1
  97. package/lib/account/TokenTransferMap.js +1 -1
  98. package/lib/account/TokenTransferMap.js.map +1 -1
  99. package/lib/account/TransferTransaction.cjs +1 -2
  100. package/lib/account/TransferTransaction.js +1 -1
  101. package/lib/account/TransferTransaction.js.map +1 -1
  102. package/lib/address_book/AddressBooks.cjs +1 -2
  103. package/lib/address_book/NodeAddress.cjs +1 -2
  104. package/lib/address_book/NodeAddress.js +1 -1
  105. package/lib/address_book/NodeAddress.js.map +1 -1
  106. package/lib/address_book/NodeAddressBook.cjs +1 -2
  107. package/lib/address_book/NodeAddressBook.js +1 -1
  108. package/lib/address_book/NodeAddressBook.js.map +1 -1
  109. package/lib/browser.cjs +8 -0
  110. package/lib/browser.d.ts +1 -0
  111. package/lib/browser.js +1 -1
  112. package/lib/channel/Channel.cjs +1 -2
  113. package/lib/channel/NativeChannel.cjs +1 -2
  114. package/lib/channel/NativeChannel.js +1 -1
  115. package/lib/channel/NativeChannel.js.map +1 -1
  116. package/lib/channel/NodeChannel.js +1 -1
  117. package/lib/channel/NodeChannel.js.map +1 -1
  118. package/lib/channel/NodeMirrorChannel.cjs +1 -2
  119. package/lib/channel/NodeMirrorChannel.js +1 -1
  120. package/lib/channel/NodeMirrorChannel.js.map +1 -1
  121. package/lib/channel/WebChannel.cjs +1 -2
  122. package/lib/client/Client.js +1 -1
  123. package/lib/client/Client.js.map +1 -1
  124. package/lib/client/ManagedNetwork.cjs +1 -2
  125. package/lib/client/ManagedNetwork.js +1 -1
  126. package/lib/client/ManagedNetwork.js.map +1 -1
  127. package/lib/client/MirrorNetwork.js +1 -1
  128. package/lib/client/MirrorNetwork.js.map +1 -1
  129. package/lib/client/NativeClient.js.map +1 -1
  130. package/lib/client/Network.js +1 -1
  131. package/lib/client/Network.js.map +1 -1
  132. package/lib/client/NodeClient.cjs +4 -11
  133. package/lib/client/NodeClient.d.ts +5 -6
  134. package/lib/client/NodeClient.js +1 -1
  135. package/lib/client/NodeClient.js.map +1 -1
  136. package/lib/client/WebClient.cjs +32 -7
  137. package/lib/client/WebClient.d.ts +10 -0
  138. package/lib/client/WebClient.js +1 -1
  139. package/lib/client/WebClient.js.map +1 -1
  140. package/lib/client/addressbooks/mainnet.cjs +1 -1
  141. package/lib/client/addressbooks/mainnet.d.ts +1 -1
  142. package/lib/client/addressbooks/mainnet.js +1 -1
  143. package/lib/client/addressbooks/mainnet.js.map +1 -1
  144. package/lib/client/addressbooks/previewnet.cjs +1 -1
  145. package/lib/client/addressbooks/previewnet.d.ts +1 -1
  146. package/lib/client/addressbooks/previewnet.js +1 -1
  147. package/lib/client/addressbooks/previewnet.js.map +1 -1
  148. package/lib/client/addressbooks/testnet.cjs +1 -1
  149. package/lib/client/addressbooks/testnet.d.ts +1 -1
  150. package/lib/client/addressbooks/testnet.js +1 -1
  151. package/lib/client/addressbooks/testnet.js.map +1 -1
  152. package/lib/constants/ClientConstants.cjs +21 -2
  153. package/lib/constants/ClientConstants.d.ts +17 -0
  154. package/lib/constants/ClientConstants.js +1 -1
  155. package/lib/constants/ClientConstants.js.map +1 -1
  156. package/lib/contract/ContractByteCodeQuery.cjs +1 -2
  157. package/lib/contract/ContractCallQuery.cjs +1 -2
  158. package/lib/contract/ContractCreateFlow.cjs +1 -2
  159. package/lib/contract/ContractCreateFlow.js +1 -1
  160. package/lib/contract/ContractCreateFlow.js.map +1 -1
  161. package/lib/contract/ContractCreateTransaction.cjs +1 -2
  162. package/lib/contract/ContractDeleteTransaction.cjs +1 -2
  163. package/lib/contract/ContractExecuteTransaction.cjs +1 -2
  164. package/lib/contract/ContractFunctionParameters.cjs +1 -2
  165. package/lib/contract/ContractFunctionParameters.js +1 -1
  166. package/lib/contract/ContractFunctionParameters.js.map +1 -1
  167. package/lib/contract/ContractFunctionResult.cjs +1 -2
  168. package/lib/contract/ContractFunctionResult.js +1 -1
  169. package/lib/contract/ContractFunctionResult.js.map +1 -1
  170. package/lib/contract/ContractFunctionSelector.cjs +1 -2
  171. package/lib/contract/ContractId.cjs +1 -2
  172. package/lib/contract/ContractId.js +1 -1
  173. package/lib/contract/ContractId.js.map +1 -1
  174. package/lib/contract/ContractInfo.cjs +1 -2
  175. package/lib/contract/ContractInfoQuery.cjs +1 -2
  176. package/lib/contract/ContractNonceInfo.cjs +1 -2
  177. package/lib/contract/ContractStateChange.cjs +1 -2
  178. package/lib/contract/ContractUpdateTransaction.cjs +1 -2
  179. package/lib/contract/DelegateContractId.js +1 -1
  180. package/lib/contract/DelegateContractId.js.map +1 -1
  181. package/lib/contract/StorageChange.cjs +1 -2
  182. package/lib/cryptography/keccak.js +1 -1
  183. package/lib/cryptography/keccak.js.map +1 -1
  184. package/lib/cryptography/sha384.native.cjs +1 -2
  185. package/lib/encoding/base64.native.js +1 -1
  186. package/lib/encoding/base64.native.js.map +1 -1
  187. package/lib/encoding/hex.browser.js +1 -1
  188. package/lib/encoding/hex.browser.js.map +1 -1
  189. package/lib/encoding/utf8.native.cjs +1 -2
  190. package/lib/exports.cjs +1 -2
  191. package/lib/file/FileAppendTransaction.cjs +1 -2
  192. package/lib/file/FileContentsQuery.cjs +1 -2
  193. package/lib/file/FileCreateTransaction.cjs +1 -2
  194. package/lib/file/FileCreateTransaction.js +1 -1
  195. package/lib/file/FileCreateTransaction.js.map +1 -1
  196. package/lib/file/FileDeleteTransaction.cjs +1 -2
  197. package/lib/file/FileId.cjs +1 -2
  198. package/lib/file/FileInfo.cjs +1 -2
  199. package/lib/file/FileInfoQuery.cjs +1 -2
  200. package/lib/file/FileUpdateTransaction.cjs +1 -2
  201. package/lib/file/FileUpdateTransaction.js +1 -1
  202. package/lib/file/FileUpdateTransaction.js.map +1 -1
  203. package/lib/network/AddressBookQuery.cjs +1 -2
  204. package/lib/network/AddressBookQuery.js +1 -1
  205. package/lib/network/AddressBookQuery.js.map +1 -1
  206. package/lib/network/AddressBookQueryWeb.js +1 -1
  207. package/lib/network/AddressBookQueryWeb.js.map +1 -1
  208. package/lib/network/NetworkVersionInfo.cjs +1 -2
  209. package/lib/network/NetworkVersionInfoQuery.cjs +1 -2
  210. package/lib/network/SemanticVersion.cjs +1 -2
  211. package/lib/node/NodeCreateTransaction.cjs +1 -2
  212. package/lib/node/NodeCreateTransaction.js +1 -1
  213. package/lib/node/NodeCreateTransaction.js.map +1 -1
  214. package/lib/node/NodeDeleteTransaction.cjs +15 -3
  215. package/lib/node/NodeDeleteTransaction.d.ts +2 -1
  216. package/lib/node/NodeDeleteTransaction.js +1 -1
  217. package/lib/node/NodeDeleteTransaction.js.map +1 -1
  218. package/lib/node/NodeUpdateTransaction.cjs +13 -3
  219. package/lib/node/NodeUpdateTransaction.d.ts +2 -1
  220. package/lib/node/NodeUpdateTransaction.js +1 -1
  221. package/lib/node/NodeUpdateTransaction.js.map +1 -1
  222. package/lib/query/CostQuery.cjs +1 -2
  223. package/lib/query/MirrorNodeContractCallQuery.cjs +1 -2
  224. package/lib/query/MirrorNodeContractEstimateQuery.cjs +1 -2
  225. package/lib/query/MirrorNodeContractQuery.cjs +2 -1
  226. package/lib/query/MirrorNodeContractQuery.js +1 -1
  227. package/lib/query/MirrorNodeContractQuery.js.map +1 -1
  228. package/lib/query/Query.cjs +1 -2
  229. package/lib/query/Query.js +1 -1
  230. package/lib/query/Query.js.map +1 -1
  231. package/lib/query/QueryBase.cjs +1 -2
  232. package/lib/schedule/ScheduleCreateTransaction.cjs +1 -2
  233. package/lib/schedule/ScheduleCreateTransaction.js +1 -1
  234. package/lib/schedule/ScheduleCreateTransaction.js.map +1 -1
  235. package/lib/schedule/ScheduleDeleteTransaction.cjs +1 -2
  236. package/lib/schedule/ScheduleId.cjs +1 -2
  237. package/lib/schedule/ScheduleInfo.cjs +1 -2
  238. package/lib/schedule/ScheduleInfoQuery.cjs +1 -2
  239. package/lib/schedule/ScheduleSignTransaction.cjs +1 -2
  240. package/lib/system/FreezeTransaction.cjs +1 -2
  241. package/lib/system/SystemDeleteTransaction.cjs +1 -2
  242. package/lib/system/SystemUndeleteTransaction.cjs +1 -2
  243. package/lib/token/AbstractTokenTransferTransaction.js +1 -1
  244. package/lib/token/AbstractTokenTransferTransaction.js.map +1 -1
  245. package/lib/token/AssessedCustomFee.js +1 -1
  246. package/lib/token/AssessedCustomFee.js.map +1 -1
  247. package/lib/token/NftId.cjs +1 -2
  248. package/lib/token/TokenAirdropTransaction.cjs +1 -2
  249. package/lib/token/TokenAssociateTransaction.cjs +1 -2
  250. package/lib/token/TokenAssociateTransaction.js +1 -1
  251. package/lib/token/TokenAssociateTransaction.js.map +1 -1
  252. package/lib/token/TokenBurnTransaction.cjs +1 -2
  253. package/lib/token/TokenBurnTransaction.js +1 -1
  254. package/lib/token/TokenBurnTransaction.js.map +1 -1
  255. package/lib/token/TokenCancelAirdropTransaction.cjs +1 -2
  256. package/lib/token/TokenCancelAirdropTransaction.js +1 -1
  257. package/lib/token/TokenCancelAirdropTransaction.js.map +1 -1
  258. package/lib/token/TokenClaimAirdropTransaction.cjs +1 -2
  259. package/lib/token/TokenClaimAirdropTransaction.js +1 -1
  260. package/lib/token/TokenClaimAirdropTransaction.js.map +1 -1
  261. package/lib/token/TokenCreateTransaction.cjs +1 -2
  262. package/lib/token/TokenCreateTransaction.js +1 -1
  263. package/lib/token/TokenCreateTransaction.js.map +1 -1
  264. package/lib/token/TokenDeleteTransaction.cjs +1 -2
  265. package/lib/token/TokenDissociateTransaction.cjs +1 -2
  266. package/lib/token/TokenDissociateTransaction.js +1 -1
  267. package/lib/token/TokenDissociateTransaction.js.map +1 -1
  268. package/lib/token/TokenFeeScheduleUpdateTransaction.cjs +1 -2
  269. package/lib/token/TokenFeeScheduleUpdateTransaction.js +1 -1
  270. package/lib/token/TokenFeeScheduleUpdateTransaction.js.map +1 -1
  271. package/lib/token/TokenFreezeTransaction.cjs +1 -2
  272. package/lib/token/TokenGrantKycTransaction.cjs +1 -2
  273. package/lib/token/TokenId.cjs +1 -2
  274. package/lib/token/TokenInfo.cjs +1 -2
  275. package/lib/token/TokenInfo.js +1 -1
  276. package/lib/token/TokenInfo.js.map +1 -1
  277. package/lib/token/TokenInfoQuery.cjs +1 -2
  278. package/lib/token/TokenMintTransaction.cjs +1 -2
  279. package/lib/token/TokenMintTransaction.js +1 -1
  280. package/lib/token/TokenMintTransaction.js.map +1 -1
  281. package/lib/token/TokenNftInfo.cjs +1 -2
  282. package/lib/token/TokenNftInfoQuery.cjs +1 -2
  283. package/lib/token/TokenNftInfoQuery.js +1 -1
  284. package/lib/token/TokenNftInfoQuery.js.map +1 -1
  285. package/lib/token/TokenNftsUpdateTransaction.cjs +1 -2
  286. package/lib/token/TokenPauseTransaction.cjs +1 -2
  287. package/lib/token/TokenRejectFlow.js +1 -1
  288. package/lib/token/TokenRejectFlow.js.map +1 -1
  289. package/lib/token/TokenRejectTransaction.cjs +1 -2
  290. package/lib/token/TokenRejectTransaction.js +1 -1
  291. package/lib/token/TokenRejectTransaction.js.map +1 -1
  292. package/lib/token/TokenRevokeKycTransaction.cjs +1 -2
  293. package/lib/token/TokenUnfreezeTransaction.cjs +1 -2
  294. package/lib/token/TokenUnpauseTransaction.cjs +1 -2
  295. package/lib/token/TokenUpdateNftsTransaction.cjs +1 -2
  296. package/lib/token/TokenUpdateTransaction.cjs +1 -2
  297. package/lib/token/TokenWipeTransaction.cjs +1 -2
  298. package/lib/token/TokenWipeTransaction.js +1 -1
  299. package/lib/token/TokenWipeTransaction.js.map +1 -1
  300. package/lib/topic/TopicCreateTransaction.cjs +1 -2
  301. package/lib/topic/TopicCreateTransaction.js +1 -1
  302. package/lib/topic/TopicCreateTransaction.js.map +1 -1
  303. package/lib/topic/TopicDeleteTransaction.cjs +1 -2
  304. package/lib/topic/TopicId.cjs +1 -2
  305. package/lib/topic/TopicInfo.cjs +1 -2
  306. package/lib/topic/TopicInfo.js +1 -1
  307. package/lib/topic/TopicInfo.js.map +1 -1
  308. package/lib/topic/TopicInfoQuery.cjs +1 -2
  309. package/lib/topic/TopicMessage.js +1 -1
  310. package/lib/topic/TopicMessage.js.map +1 -1
  311. package/lib/topic/TopicMessageQuery.cjs +1 -2
  312. package/lib/topic/TopicMessageQuery.js +1 -1
  313. package/lib/topic/TopicMessageQuery.js.map +1 -1
  314. package/lib/topic/TopicMessageSubmitTransaction.cjs +1 -2
  315. package/lib/topic/TopicUpdateTransaction.cjs +1 -2
  316. package/lib/topic/TopicUpdateTransaction.js +1 -1
  317. package/lib/topic/TopicUpdateTransaction.js.map +1 -1
  318. package/lib/transaction/BatchTransaction.cjs +1 -2
  319. package/lib/transaction/BatchTransaction.js +1 -1
  320. package/lib/transaction/BatchTransaction.js.map +1 -1
  321. package/lib/transaction/CustomFeeLimit.js +1 -1
  322. package/lib/transaction/CustomFeeLimit.js.map +1 -1
  323. package/lib/transaction/NodeAccountIdSignatureMap.cjs +1 -2
  324. package/lib/transaction/NodeAccountIdSignatureMap.js +1 -1
  325. package/lib/transaction/NodeAccountIdSignatureMap.js.map +1 -1
  326. package/lib/transaction/NodeAccountIdSignatureMapLegacy.js +1 -1
  327. package/lib/transaction/NodeAccountIdSignatureMapLegacy.js.map +1 -1
  328. package/lib/transaction/SignatureMap.js +1 -1
  329. package/lib/transaction/SignatureMap.js.map +1 -1
  330. package/lib/transaction/SignatureMapLegacy.js +1 -1
  331. package/lib/transaction/SignatureMapLegacy.js.map +1 -1
  332. package/lib/transaction/SignaturePairMap.js +1 -1
  333. package/lib/transaction/SignaturePairMap.js.map +1 -1
  334. package/lib/transaction/Transaction.cjs +1 -2
  335. package/lib/transaction/Transaction.js +1 -1
  336. package/lib/transaction/Transaction.js.map +1 -1
  337. package/lib/transaction/TransactionHashMap.cjs +1 -2
  338. package/lib/transaction/TransactionHashMap.js +1 -1
  339. package/lib/transaction/TransactionHashMap.js.map +1 -1
  340. package/lib/transaction/TransactionId.cjs +1 -2
  341. package/lib/transaction/TransactionReceipt.cjs +1 -2
  342. package/lib/transaction/TransactionReceipt.js +1 -1
  343. package/lib/transaction/TransactionReceipt.js.map +1 -1
  344. package/lib/transaction/TransactionReceiptQuery.cjs +1 -2
  345. package/lib/transaction/TransactionRecord.cjs +1 -2
  346. package/lib/transaction/TransactionRecord.js +1 -1
  347. package/lib/transaction/TransactionRecord.js.map +1 -1
  348. package/lib/transaction/TransactionRecordQuery.cjs +1 -2
  349. package/lib/transaction/TransactionResponse.cjs +1 -2
  350. package/lib/transaction/TransactionResponse.js.map +1 -1
  351. package/lib/util/ASN1-Decoder.js +1 -1
  352. package/lib/util/ASN1-Decoder.js.map +1 -1
  353. package/lib/util.js +1 -1
  354. package/lib/util.js.map +1 -1
  355. package/lib/version.js +1 -1
  356. package/package.json +75 -71
  357. package/src/Executable.js +10 -4
  358. package/src/LocalProviderWeb.js +165 -0
  359. package/src/Timestamp.js +2 -2
  360. package/src/account/AccountAllowanceAdjustTransaction.js +48 -48
  361. package/src/account/AccountAllowanceApproveTransaction.js +48 -48
  362. package/src/account/TokenNftAllowance.js +4 -4
  363. package/src/browser.js +1 -0
  364. package/src/client/NodeClient.js +6 -9
  365. package/src/client/WebClient.js +33 -8
  366. package/src/client/addressbooks/mainnet.js +1 -1
  367. package/src/client/addressbooks/previewnet.js +1 -1
  368. package/src/client/addressbooks/testnet.js +1 -1
  369. package/src/constants/ClientConstants.js +25 -0
  370. package/src/network/AddressBookQueryWeb.js +8 -2
  371. package/src/node/NodeDeleteTransaction.js +20 -1
  372. package/src/node/NodeUpdateTransaction.js +19 -1
  373. package/src/query/MirrorNodeContractQuery.js +8 -1
  374. package/src/token/TokenInfo.js +4 -4
  375. package/src/topic/TopicMessageQuery.js +7 -5
  376. package/src/transaction/TransactionRecord.js +5 -5
  377. package/src/transaction/TransactionResponse.js +3 -1
@@ -0,0 +1,2 @@
1
+ import t from"./client/WebClient.js";import e from"./account/AccountBalanceQuery.js";import n from"./account/AccountInfoQuery.js";import c from"./account/AccountRecordsQuery.js";import r from"./transaction/TransactionReceiptQuery.js";class i{constructor(e={}){null==e||null==e.client?this._client=t.forName(e.networkName||"local-node"):this._client=e.client}static fromClient(t){return new i({client:t})}getLedgerId(){return this._client.ledgerId}getNetwork(){return this._client.network}getMirrorNetwork(){return this._client.mirrorNetwork}getAccountBalance(t){return(new e).setAccountId(t).execute(this._client)}getAccountInfo(t){return(new n).setAccountId(t).execute(this._client)}getAccountRecords(t){return(new c).setAccountId(t).execute(this._client)}getTransactionReceipt(t){return(new r).setTransactionId(t).execute(this._client)}async sendTransaction(t){return await t.execute(this._client)}async sendQuery(t){return await t.execute(this._client)}async waitForReceipt(t){return await t.getReceipt(this._client)}async call(t){return await t.execute(this._client)}close(){this._client.close()}}export{i as default};
2
+ //# sourceMappingURL=LocalProviderWeb.js.map
@@ -0,0 +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,2 +1,2 @@
1
- import e from"./ManagedNodeAddress.js";class t{constructor(t={}){if(null!=t.newNode)this._address="string"==typeof t.newNode.address?e.fromString(t.newNode.address):t.newNode.address,this._cert=void 0,this._channel=null,this._channelInitFunction=t.newNode.channelInitFunction,this._lastUsed=Date.now(),this._readmitTime=Date.now(),this._useCount=0,this._badGrpcStatusCount=0,this._minBackoff=8e3,this._maxBackoff=36e5,this._currentBackoff=this._minBackoff;else{if(null==t.cloneNode)throw new Error(`failed to create ManagedNode: ${JSON.stringify(t)}`);this._address=t.cloneNode.address,this._cert=t.cloneNode.node._cert,this._channel=t.cloneNode.node._channel,this._channelInitFunction=t.cloneNode.node._channelInitFunction,this._currentBackoff=t.cloneNode.node._currentBackoff,this._lastUsed=t.cloneNode.node._lastUsed,this._readmitTime=t.cloneNode.node._readmitTime,this._useCount=t.cloneNode.node._useCount,this._badGrpcStatusCount=t.cloneNode.node._badGrpcStatusCount,this._minBackoff=t.cloneNode.node._minBackoff,this._maxBackoff=t.cloneNode.node._minBackoff}}getKey(){throw new Error("not implemented")}setCert(e){return this}get address(){return this._address}get attempts(){return this._badGrpcStatusCount}get minBackoff(){return this._minBackoff}setMinBackoff(e){return this._currentBackoff<=e&&(this._currentBackoff=e),this._minBackoff=e,this}get maxBackoff(){return this._maxBackoff}setMaxBackoff(e){return this._currentBackoff<=e&&(this._currentBackoff=e),this._maxBackoff=e,this}getChannel(){return this._useCount++,this.__lastUsed=Date.now(),null!=this._channel||(this._channel=this._channelInitFunction(this.address.toString(),this._cert)),this._channel}isHealthy(){return this._readmitTime<=Date.now()}increaseBackoff(){this._currentBackoff=Math.min(2*this._currentBackoff,this._maxBackoff),this._readmitTime=Date.now()+this._currentBackoff}decreaseBackoff(){this._currentBackoff=Math.max(this._currentBackoff/2,this._minBackoff)}getRemainingTime(){return this._readmitTime-this._lastUsed}backoff(){return new Promise((e=>setTimeout(e,this.getRemainingTime())))}compare(e){let t=this.getRemainingTime()-e.getRemainingTime();return 0!=t?t:(t=this._currentBackoff-e._currentBackoff,0!=t?t:(t=this._badGrpcStatusCount-e._badGrpcStatusCount,0!=t?t:(t=this._useCount-e._useCount,0!=t?t:this._lastUsed-e._lastUsed)))}close(){null!=this._channel&&this._channel.close(),this._channel=null}}export{t as default};
1
+ import e from"./ManagedNodeAddress.js";class t{constructor(t={}){if(null!=t.newNode)this._address="string"==typeof t.newNode.address?e.fromString(t.newNode.address):t.newNode.address,this._cert=void 0,this._channel=null,this._channelInitFunction=t.newNode.channelInitFunction,this._lastUsed=Date.now(),this._readmitTime=Date.now(),this._useCount=0,this._badGrpcStatusCount=0,this._minBackoff=8e3,this._maxBackoff=36e5,this._currentBackoff=this._minBackoff;else{if(null==t.cloneNode)throw new Error(`failed to create ManagedNode: ${JSON.stringify(t)}`);this._address=t.cloneNode.address,this._cert=t.cloneNode.node._cert,this._channel=t.cloneNode.node._channel,this._channelInitFunction=t.cloneNode.node._channelInitFunction,this._currentBackoff=t.cloneNode.node._currentBackoff,this._lastUsed=t.cloneNode.node._lastUsed,this._readmitTime=t.cloneNode.node._readmitTime,this._useCount=t.cloneNode.node._useCount,this._badGrpcStatusCount=t.cloneNode.node._badGrpcStatusCount,this._minBackoff=t.cloneNode.node._minBackoff,this._maxBackoff=t.cloneNode.node._minBackoff}}getKey(){throw new Error("not implemented")}setCert(e){return this}get address(){return this._address}get attempts(){return this._badGrpcStatusCount}get minBackoff(){return this._minBackoff}setMinBackoff(e){return this._currentBackoff<=e&&(this._currentBackoff=e),this._minBackoff=e,this}get maxBackoff(){return this._maxBackoff}setMaxBackoff(e){return this._currentBackoff<=e&&(this._currentBackoff=e),this._maxBackoff=e,this}getChannel(){return this._useCount++,this.__lastUsed=Date.now(),null!=this._channel||(this._channel=this._channelInitFunction(this.address.toString(),this._cert)),this._channel}isHealthy(){return this._readmitTime<=Date.now()}increaseBackoff(){this._currentBackoff=Math.min(2*this._currentBackoff,this._maxBackoff),this._readmitTime=Date.now()+this._currentBackoff}decreaseBackoff(){this._currentBackoff=Math.max(this._currentBackoff/2,this._minBackoff)}getRemainingTime(){return this._readmitTime-this._lastUsed}backoff(){return new Promise(e=>setTimeout(e,this.getRemainingTime()))}compare(e){let t=this.getRemainingTime()-e.getRemainingTime();return 0!=t?t:(t=this._currentBackoff-e._currentBackoff,0!=t?t:(t=this._badGrpcStatusCount-e._badGrpcStatusCount,0!=t?t:(t=this._useCount-e._useCount,0!=t?t:this._lastUsed-e._lastUsed)))}close(){null!=this._channel&&this._channel.close(),this._channel=null}}export{t as default};
2
2
  //# sourceMappingURL=ManagedNode.js.map
@@ -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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"}
package/lib/ObjectMap.js CHANGED
@@ -1,2 +1,2 @@
1
- class t{constructor(t){this._map=new Map,this.__map=new Map,this._fromString=t}get(t){const s="string"==typeof t?t:t.toString(),r=this._map.get(s);return null!=r?r:null}_set(t,s){const r="string"==typeof t?t:t.toString();this._map.set(r,s),this.__map.set(t,s)}values(){return this._map.values()}get size(){return this._map.size}keys(){return this.__map.keys()}[Symbol.iterator](){return this.__map[Symbol.iterator]()}toString(){const t={};for(const[s,r]of this._map)t[s]=r;return JSON.stringify(t)}toJSON(){const t={};return this._map.forEach(((s,r)=>{t[r]=s})),t}}export{t as default};
1
+ class t{constructor(t){this._map=new Map,this.__map=new Map,this._fromString=t}get(t){const s="string"==typeof t?t:t.toString(),r=this._map.get(s);return null!=r?r:null}_set(t,s){const r="string"==typeof t?t:t.toString();this._map.set(r,s),this.__map.set(t,s)}values(){return this._map.values()}get size(){return this._map.size}keys(){return this.__map.keys()}[Symbol.iterator](){return this.__map[Symbol.iterator]()}toString(){const t={};for(const[s,r]of this._map)t[s]=r;return JSON.stringify(t)}toJSON(){const t={};return this._map.forEach((s,r)=>{t[r]=s}),t}}export{t as default};
2
2
  //# sourceMappingURL=ObjectMap.js.map
@@ -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,SAAQ,CAACb,EAAOH,KAEtBe,EAAIf,GAAOG,CAAK,IAGbY,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,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"}
package/lib/PrivateKey.js CHANGED
@@ -1,2 +1,2 @@
1
- import{hexlify as t}from"@ethersproject/bytes";import{PrivateKey as e}from"@hashgraph/cryptography";import{proto as r}from"@hashgraph/proto";import n from"./Mnemonic.js";import i from"./PublicKey.js";import o from"./Key.js";import s from"./Cache.js";import a from"./transaction/SignatureMap.js";import c from"./account/AccountId.js";import y from"./transaction/TransactionId.js";import{decode as u}from"./encoding/hex.js";import{ASN1Decoder as m}from"./util/ASN1-Decoder.js";class g extends o{constructor(t){super(),this._key=t}static generateED25519(){return new g(e.generateED25519())}static generateECDSA(){return new g(e.generateECDSA())}static generate(){return g.generateED25519()}static async generateAsync(){return new g(await e.generateAsync())}static async generateED25519Async(){return new g(await e.generateED25519Async())}static async generateECDSAAsync(){return new g(await e.generateECDSAAsync())}static fromBytes(r){const n=t(r);return g.isDerKey(n)?"ecdsa"===g.getAlgorithm(n)?new g(e.fromBytesECDSA(r)):new g(e.fromBytesED25519(r)):new g(e.fromBytes(r))}static fromBytesECDSA(t){return new g(e.fromBytesECDSA(t))}static fromBytesED25519(t){return new g(e.fromBytesED25519(t))}static fromString(t){return g.isDerKey(t)?this.fromStringDer(t):new g(e.fromString(t))}static fromStringDer(t){return g.isDerKey(t)?"ecdsa"===g.getAlgorithm(t)?this.fromStringECDSA(t):this.fromStringED25519(t):g.fromString(t)}static fromStringECDSA(t){return new g(e.fromStringECDSA(t))}static fromStringED25519(t){return new g(e.fromStringED25519(t))}static async fromSeedED25519(t){return new g(await e.fromSeedED25519(t))}static async fromSeedECDSAsecp256k1(t){return new g(await e.fromSeedECDSAsecp256k1(t))}static async fromMnemonic(t,r=""){return new g(t instanceof n?await e.fromMnemonic(t._mnemonic,r):await e.fromMnemonic(t,r))}static async fromKeystore(t,r=""){return new g(await e.fromKeystore(t,r))}static async fromPem(t,r=""){return new g(await e.fromPem(t,r))}async derive(t){return new g(await this._key.derive(t))}async legacyDerive(t){return new g(await this._key.legacyDerive(t))}get publicKey(){return new i(this._key.publicKey)}get chainCode(){return this._key._chainCode}sign(t){return this._key.sign(t)}signTransaction(t,e=!1){if(e)return this._signTransactionLegacy(t);const n=new a;for(const e of t._signedTransactions.list){const t=e.bodyBytes;if(!t)throw new Error("Body bytes are missing");const i=r.TransactionBody.decode(t);if(!i.transactionID||!i.nodeAccountID)throw new Error("Transaction ID or Node Account ID not found in the signed transaction");const o=c._fromProtobuf(i.nodeAccountID),s=y._fromProtobuf(i.transactionID),a=this._key.sign(t);n.addSignature(o,s,this.publicKey,a)}return t.addSignature(this.publicKey,n),n}_signTransactionLegacy(t){const e=t._signedTransactions.list.map((t=>{const e=t.bodyBytes;return e?this._key.sign(e):new Uint8Array}));return t.addSignature(this.publicKey,e),1===e.length?e[0]:e}isDerivable(){return this._key.isDerivable()}toBytes(){return this._key.toBytes()}toBytesDer(){return this._key.toBytesDer()}toBytesRaw(){return this._key.toBytesRaw()}toString(){return this._key.toStringDer()}toStringDer(){return this._key.toStringDer()}toStringRaw(){return this._key.toStringRaw()}toKeystore(t=""){return this._key.toKeystore(t)}_toProtobufKey(){return this.publicKey._toProtobufKey()}toAccountId(t,e){return this.publicKey.toAccountId(t,e)}get type(){return this._key._type}getRecoveryId(t,e,r){return this._key.getRecoveryId(t,e,r)}static getAlgorithm(t){if(!g.isDerKey(t))throw new Error("Only der keys are supported");const e=new m(Uint8Array.from(u(t)));e.read();return e.getOidKeyTypes()[0]}static isDerKey(t){try{const e=Uint8Array.from(u(t));return new m(e).read(),!0}catch(t){return!1}}}s.setPrivateKeyConstructor((t=>new g(t)));export{g as default};
1
+ import{hexlify as t}from"@ethersproject/bytes";import{PrivateKey as e}from"@hashgraph/cryptography";import{proto as r}from"@hashgraph/proto";import n from"./Mnemonic.js";import i from"./PublicKey.js";import o from"./Key.js";import s from"./Cache.js";import a from"./transaction/SignatureMap.js";import c from"./account/AccountId.js";import y from"./transaction/TransactionId.js";import{decode as u}from"./encoding/hex.js";import{ASN1Decoder as m}from"./util/ASN1-Decoder.js";class g extends o{constructor(t){super(),this._key=t}static generateED25519(){return new g(e.generateED25519())}static generateECDSA(){return new g(e.generateECDSA())}static generate(){return g.generateED25519()}static async generateAsync(){return new g(await e.generateAsync())}static async generateED25519Async(){return new g(await e.generateED25519Async())}static async generateECDSAAsync(){return new g(await e.generateECDSAAsync())}static fromBytes(r){const n=t(r);return g.isDerKey(n)?"ecdsa"===g.getAlgorithm(n)?new g(e.fromBytesECDSA(r)):new g(e.fromBytesED25519(r)):new g(e.fromBytes(r))}static fromBytesECDSA(t){return new g(e.fromBytesECDSA(t))}static fromBytesED25519(t){return new g(e.fromBytesED25519(t))}static fromString(t){return g.isDerKey(t)?this.fromStringDer(t):new g(e.fromString(t))}static fromStringDer(t){return g.isDerKey(t)?"ecdsa"===g.getAlgorithm(t)?this.fromStringECDSA(t):this.fromStringED25519(t):g.fromString(t)}static fromStringECDSA(t){return new g(e.fromStringECDSA(t))}static fromStringED25519(t){return new g(e.fromStringED25519(t))}static async fromSeedED25519(t){return new g(await e.fromSeedED25519(t))}static async fromSeedECDSAsecp256k1(t){return new g(await e.fromSeedECDSAsecp256k1(t))}static async fromMnemonic(t,r=""){return new g(t instanceof n?await e.fromMnemonic(t._mnemonic,r):await e.fromMnemonic(t,r))}static async fromKeystore(t,r=""){return new g(await e.fromKeystore(t,r))}static async fromPem(t,r=""){return new g(await e.fromPem(t,r))}async derive(t){return new g(await this._key.derive(t))}async legacyDerive(t){return new g(await this._key.legacyDerive(t))}get publicKey(){return new i(this._key.publicKey)}get chainCode(){return this._key._chainCode}sign(t){return this._key.sign(t)}signTransaction(t,e=!1){if(e)return this._signTransactionLegacy(t);const n=new a;for(const e of t._signedTransactions.list){const t=e.bodyBytes;if(!t)throw new Error("Body bytes are missing");const i=r.TransactionBody.decode(t);if(!i.transactionID||!i.nodeAccountID)throw new Error("Transaction ID or Node Account ID not found in the signed transaction");const o=c._fromProtobuf(i.nodeAccountID),s=y._fromProtobuf(i.transactionID),a=this._key.sign(t);n.addSignature(o,s,this.publicKey,a)}return t.addSignature(this.publicKey,n),n}_signTransactionLegacy(t){const e=t._signedTransactions.list.map(t=>{const e=t.bodyBytes;return e?this._key.sign(e):new Uint8Array});return t.addSignature(this.publicKey,e),1===e.length?e[0]:e}isDerivable(){return this._key.isDerivable()}toBytes(){return this._key.toBytes()}toBytesDer(){return this._key.toBytesDer()}toBytesRaw(){return this._key.toBytesRaw()}toString(){return this._key.toStringDer()}toStringDer(){return this._key.toStringDer()}toStringRaw(){return this._key.toStringRaw()}toKeystore(t=""){return this._key.toKeystore(t)}_toProtobufKey(){return this.publicKey._toProtobufKey()}toAccountId(t,e){return this.publicKey.toAccountId(t,e)}get type(){return this._key._type}getRecoveryId(t,e,r){return this._key.getRecoveryId(t,e,r)}static getAlgorithm(t){if(!g.isDerKey(t))throw new Error("Only der keys are supported");const e=new m(Uint8Array.from(u(t)));e.read();return e.getOidKeyTypes()[0]}static isDerKey(t){try{const e=Uint8Array.from(u(t));return new m(e).read(),!0}catch(t){return!1}}}s.setPrivateKeyConstructor(t=>new g(t));export{g as default};
2
2
  //# sourceMappingURL=PrivateKey.js.map
@@ -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 \"@hashgraph/cryptography\";\nimport { proto } from \"@hashgraph/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(\"@hashgraph/proto\").proto.IKey} HieroProto.proto.IKey\n * @typedef {import(\"@hashgraph/proto\").proto.ITransaction} HieroProto.proto.ITransaction\n * @typedef {import(\"@hashgraph/proto\").proto.ISignaturePair} HieroProto.proto.ISignaturePair\n * @typedef {import(\"@hashgraph/proto\").proto.ISignedTransaction} HieroProto.proto.ISignedTransaction\n * @typedef {import(\"@hashgraph/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":"2dA2Be,MAAMA,UAAmBC,EAMpC,WAAAC,CAAYC,GACRC,QAEAC,KAAKC,KAAOH,CACpB,CAOI,sBAAOI,GACH,OAAO,IAAIP,EAAWQ,EAAiBD,kBAC/C,CAOI,oBAAOE,GACH,OAAO,IAAIT,EAAWQ,EAAiBC,gBAC/C,CAQI,eAAOC,GACH,OAAOV,EAAWO,iBAC1B,CAQI,0BAAaI,GACT,OAAO,IAAIX,QAAiBQ,EAAiBG,gBACrD,CAOI,iCAAaC,GACT,OAAO,IAAIZ,QAAiBQ,EAAiBI,uBACrD,CAOI,+BAAaC,GACT,OAAO,IAAIb,QAAiBQ,EAAiBK,qBACrD,CAQI,gBAAOC,CAAUC,GACb,MAAMC,EAAYC,EAAQF,GAC1B,OAAIf,EAAWkB,SAASF,GACuB,UAAvChB,EAAWmB,aAAaH,GACjB,IAAIhB,EAAWQ,EAAiBY,eAAeL,IAE/C,IAAIf,EAAWQ,EAAiBa,iBAAiBN,IAOzD,IAAIf,EAAWQ,EAAiBM,UAAUC,GACzD,CAQI,qBAAOK,CAAeL,GAClB,OAAO,IAAIf,EAAWQ,EAAiBY,eAAeL,GAC9D,CAQI,uBAAOM,CAAiBN,GACpB,OAAO,IAAIf,EAAWQ,EAAiBa,iBAAiBN,GAChE,CASI,iBAAOO,CAAWC,GACd,OAAIvB,EAAWkB,SAASK,GACblB,KAAKmB,cAAcD,GAKvB,IAAIvB,EAAWQ,EAAiBc,WAAWC,GAC1D,CAQI,oBAAOC,CAAcD,GAGjB,OAAKvB,EAAWkB,SAASK,GAKa,UAAlCvB,EAAWmB,aAAaI,GACjBlB,KAAKoB,gBAAgBF,GAErBlB,KAAKqB,kBAAkBH,GANvBvB,EAAWsB,WAAWC,EAQzC,CAQI,sBAAOE,CAAgBF,GACnB,OAAO,IAAIvB,EAAWQ,EAAiBiB,gBAAgBF,GAC/D,CAQI,wBAAOG,CAAkBH,GACrB,OAAO,IAAIvB,EAAWQ,EAAiBkB,kBAAkBH,GACjE,CAQI,4BAAaI,CAAgBC,GACzB,OAAO,IAAI5B,QAAiBQ,EAAiBmB,gBAAgBC,GACrE,CAQI,mCAAaC,CAAuBD,GAChC,OAAO,IAAI5B,QACDQ,EAAiBqB,uBAAuBD,GAE1D,CAUI,yBAAaE,CAAaC,EAAUC,EAAa,IAC7C,OACW,IAAIhC,EADX+B,aAAoBE,QAGVzB,EAAiBsB,aACnBC,EAASG,UACTF,SAOFxB,EAAiBsB,aAAaC,EAAUC,GAE1D,CAYI,yBAAaG,CAAapB,EAAMiB,EAAa,IACzC,OAAO,IAAIhC,QACDQ,EAAiB2B,aAAapB,EAAMiB,GAEtD,CAeI,oBAAaI,CAAQrB,EAAMiB,EAAa,IACpC,OAAO,IAAIhC,QAAiBQ,EAAiB4B,QAAQrB,EAAMiB,GACnE,CAcI,YAAMK,CAAOC,GACT,OAAO,IAAItC,QAAiBK,KAAKC,KAAK+B,OAAOC,GACrD,CAOI,kBAAMC,CAAaD,GACf,OAAO,IAAItC,QAAiBK,KAAKC,KAAKiC,aAAaD,GAC3D,CAUI,aAAIE,GACA,OAAO,IAAIC,EAAUpC,KAAKC,KAAKkC,UACvC,CAUI,aAAIE,GACA,OAAOrC,KAAKC,KAAKqC,UACzB,CAQI,IAAAC,CAAKC,GACD,OAAOxC,KAAKC,KAAKsC,KAAKC,EAC9B,CAuBI,eAAAC,CAAgBC,EAAaC,GAAS,GAClC,GAAIA,EACA,OAAO3C,KAAK4C,uBAAuBF,GAGvC,MAAMG,EAAS,IAAIC,EAEnB,IAAK,MAAMC,KAAYL,EAAYM,oBAAoBC,KAAM,CACzD,MAAMC,EAAYH,EAASG,UAC3B,IAAKA,EAAW,MAAM,IAAIC,MAAM,0BAEhC,MAAMC,EAAOC,EAAMC,gBAAgBC,OAAOL,GAC1C,IAAKE,EAAKI,gBAAkBJ,EAAKK,cAC7B,MAAM,IAAIN,MACN,yEAIR,MAAMO,EAASC,EAAUC,cAAcR,EAAKK,eACtCI,EAAgBC,EAAcF,cAChCR,EAAKI,eAEHO,EAAM/D,KAAKC,KAAKsC,KAAKW,GAC3BL,EAAOmB,aAAaN,EAAQG,EAAe7D,KAAKmC,UAAW4B,EACvE,CAGQ,OADArB,EAAYsB,aAAahE,KAAKmC,UAAWU,GAClCA,CACf,CASI,sBAAAD,CAAuBF,GACnB,MAAMuB,EAAavB,EAAYM,oBAAoBC,KAAKiB,KACnDC,IACG,MAAMjB,EAAYiB,EAAkBjB,UACpC,OAAKA,EAIElD,KAAKC,KAAKsC,KAAKW,GAHX,IAAIkB,UAGiB,IAKxC,OAFA1B,EAAYsB,aAAahE,KAAKmC,UAAW8B,GAEZ,IAAtBA,EAAWI,OAAeJ,EAAW,GAAKA,CACzD,CASI,WAAAK,GACI,OAAOtE,KAAKC,KAAKqE,aACzB,CAKI,OAAAC,GACI,OAAOvE,KAAKC,KAAKsE,SACzB,CAKI,UAAAC,GACI,OAAOxE,KAAKC,KAAKuE,YACzB,CAKI,UAAAC,GACI,OAAOzE,KAAKC,KAAKwE,YACzB,CAKI,QAAAC,GACI,OAAO1E,KAAKC,KAAK0E,aACzB,CAKI,WAAAA,GACI,OAAO3E,KAAKC,KAAK0E,aACzB,CAKI,WAAAC,GACI,OAAO5E,KAAKC,KAAK2E,aACzB,CAcI,UAAAC,CAAWlD,EAAa,IACpB,OAAO3B,KAAKC,KAAK4E,WAAWlD,EACpC,CAKI,cAAAmD,GACI,OAAO9E,KAAKmC,UAAU2C,gBAC9B,CAOI,WAAAC,CAAYC,EAAOC,GACf,OAAOjF,KAAKmC,UAAU4C,YAAYC,EAAOC,EACjD,CAKI,QAAIC,GACA,OAAOlF,KAAKC,KAAKkF,KACzB,CAWI,aAAAC,CAAcC,EAAGC,EAAGC,GAChB,OAAOvF,KAAKC,KAAKmF,cAAcC,EAAGC,EAAGC,EAC7C,CAMI,mBAAOzE,CAAa0E,GAChB,IAAK7F,EAAWkB,SAAS2E,GACrB,MAAM,IAAIrC,MAAM,+BAGpB,MAAMsC,EAAU,IAAIC,EAAYtB,WAAWuB,KAAKpC,EAAOiC,KACvDC,EAAQG,OAGR,OAFuBH,EAAQI,iBAAiB,EAGxD,CAOI,eAAOhF,CAASf,GACZ,IACI,MAAMY,EAAO0D,WAAWuB,KAAKpC,EAAOzD,IAGpC,OAFgB,IAAI4F,EAAYhF,GACxBkF,QACD,CACV,CAAC,MAAOE,GACL,OAAO,CACnB,CACA,EAGAC,EAAMC,0BAA0BlG,GAAQ,IAAIH,EAAWG"}
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 \"@hashgraph/cryptography\";\nimport { proto } from \"@hashgraph/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(\"@hashgraph/proto\").proto.IKey} HieroProto.proto.IKey\n * @typedef {import(\"@hashgraph/proto\").proto.ITransaction} HieroProto.proto.ITransaction\n * @typedef {import(\"@hashgraph/proto\").proto.ISignaturePair} HieroProto.proto.ISignaturePair\n * @typedef {import(\"@hashgraph/proto\").proto.ISignedTransaction} HieroProto.proto.ISignedTransaction\n * @typedef {import(\"@hashgraph/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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"}
@@ -6,8 +6,7 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.default = void 0;
7
7
  var _Transaction = _interopRequireWildcard(require("./transaction/Transaction.cjs"));
8
8
  var _util = require("./util.cjs");
9
- function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
10
- function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
9
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
11
10
  // SPDX-License-Identifier: Apache-2.0
12
11
 
13
12
  /**
package/lib/PublicKey.js CHANGED
@@ -1,2 +1,2 @@
1
- import{PublicKey as t}from"@hashgraph/cryptography";import{arrayEqual as e}from"./array.js";import r from"./Key.js";import s from"./Cache.js";class i extends r{constructor(t){super(),this._key=t}static fromBytes(e){return new i(t.fromBytes(e))}static fromBytesED25519(e){return new i(t.fromBytesED25519(e))}static fromBytesECDSA(e){return new i(t.fromBytesECDSA(e))}static fromString(e){return new i(t.fromString(e))}static fromStringECDSA(e){return new i(t.fromStringECDSA(e))}static fromStringED25519(e){return new i(t.fromStringED25519(e))}verify(t,e){return this._key.verify(t,e)}verifyTransaction(t){t._requireFrozen(),t.isFrozen()||t.freeze();for(const r of t._signedTransactions.list)if(null!=r.sigMap&&null!=r.sigMap.sigPair){let t=!1;for(const s of r.sigMap.sigPair){const i=s.pubKeyPrefix;if(e(i,this.toBytesRaw())){t=!0;const e=r.bodyBytes;let i=null;if(null!=s.ed25519?i=s.ed25519:null!=s.ECDSASecp256k1&&(i=s.ECDSASecp256k1),null==i)continue;if(!this.verify(e,i))return!1}}if(!t)return!1}return!0}toBytes(){return this._key.toBytes()}toBytesDer(){return this._key.toBytesDer()}toBytesRaw(){return this._key.toBytesRaw()}toEthereumAddress(){return this._key.toEthereumAddress()}toEvmAddress(){return this._key.toEthereumAddress()}toString(){return this._key.toString()}toStringDer(){return this._key.toStringDer()}toStringRaw(){return this._key.toStringRaw()}equals(t){return this._key.equals(t._key)}_toProtobufKey(){switch(this._key._type){case"ED25519":return{ed25519:this._key.toBytesRaw()};case"secp256k1":return{ECDSASecp256k1:this._key.toBytesRaw()};default:throw new Error(`unrecognized key type ${this._key._type}`)}}_toProtobufSignature(t){switch(this._key._type){case"ED25519":return{pubKeyPrefix:this._key.toBytesRaw(),ed25519:t};case"secp256k1":return{pubKeyPrefix:this._key.toBytesRaw(),ECDSASecp256k1:t};default:throw new Error(`unrecognized key type ${this._key._type}`)}}get type(){return this._key._type}toAccountId(t,e){return s.accountIdConstructor(t,e,this)}static unusableKey(){return i.fromStringED25519("0000000000000000000000000000000000000000000000000000000000000000")}}s.setPublicKeyED25519((t=>i.fromBytesED25519(t))),s.setPublicKeyECDSA((t=>i.fromBytesECDSA(t)));export{i as default};
1
+ import{PublicKey as t}from"@hashgraph/cryptography";import{arrayEqual as e}from"./array.js";import r from"./Key.js";import s from"./Cache.js";class i extends r{constructor(t){super(),this._key=t}static fromBytes(e){return new i(t.fromBytes(e))}static fromBytesED25519(e){return new i(t.fromBytesED25519(e))}static fromBytesECDSA(e){return new i(t.fromBytesECDSA(e))}static fromString(e){return new i(t.fromString(e))}static fromStringECDSA(e){return new i(t.fromStringECDSA(e))}static fromStringED25519(e){return new i(t.fromStringED25519(e))}verify(t,e){return this._key.verify(t,e)}verifyTransaction(t){t._requireFrozen(),t.isFrozen()||t.freeze();for(const r of t._signedTransactions.list)if(null!=r.sigMap&&null!=r.sigMap.sigPair){let t=!1;for(const s of r.sigMap.sigPair){const i=s.pubKeyPrefix;if(e(i,this.toBytesRaw())){t=!0;const e=r.bodyBytes;let i=null;if(null!=s.ed25519?i=s.ed25519:null!=s.ECDSASecp256k1&&(i=s.ECDSASecp256k1),null==i)continue;if(!this.verify(e,i))return!1}}if(!t)return!1}return!0}toBytes(){return this._key.toBytes()}toBytesDer(){return this._key.toBytesDer()}toBytesRaw(){return this._key.toBytesRaw()}toEthereumAddress(){return this._key.toEthereumAddress()}toEvmAddress(){return this._key.toEthereumAddress()}toString(){return this._key.toString()}toStringDer(){return this._key.toStringDer()}toStringRaw(){return this._key.toStringRaw()}equals(t){return this._key.equals(t._key)}_toProtobufKey(){switch(this._key._type){case"ED25519":return{ed25519:this._key.toBytesRaw()};case"secp256k1":return{ECDSASecp256k1:this._key.toBytesRaw()};default:throw new Error(`unrecognized key type ${this._key._type}`)}}_toProtobufSignature(t){switch(this._key._type){case"ED25519":return{pubKeyPrefix:this._key.toBytesRaw(),ed25519:t};case"secp256k1":return{pubKeyPrefix:this._key.toBytesRaw(),ECDSASecp256k1:t};default:throw new Error(`unrecognized key type ${this._key._type}`)}}get type(){return this._key._type}toAccountId(t,e){return s.accountIdConstructor(t,e,this)}static unusableKey(){return i.fromStringED25519("0000000000000000000000000000000000000000000000000000000000000000")}}s.setPublicKeyED25519(t=>i.fromBytesED25519(t)),s.setPublicKeyECDSA(t=>i.fromBytesECDSA(t));export{i as default};
2
2
  //# sourceMappingURL=PublicKey.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PublicKey.js","sources":["../src/PublicKey.js"],"sourcesContent":["// SPDX-License-Identifier: Apache-2.0\n\nimport { PublicKey as PublicKeyCrypto } from \"@hashgraph/cryptography\";\nimport { arrayEqual } from \"./array.js\";\nimport Key from \"./Key.js\";\nimport CACHE from \"./Cache.js\";\n\n/**\n * @typedef {import(\"./transaction/Transaction.js\").default} Transaction\n * @typedef {import(\"./account/AccountId.js\").default} AccountId\n */\n\n/**\n * @namespace proto\n * @typedef {import(\"@hashgraph/proto\").proto.IKey} HieroProto.proto.IKey\n * @typedef {import(\"@hashgraph/proto\").proto.ITransaction} HieroProto.proto.ITransaction\n * @typedef {import(\"@hashgraph/proto\").proto.ISignaturePair} HieroProto.proto.ISignaturePair\n * @typedef {import(\"@hashgraph/proto\").proto.ISignedTransaction} HieroProto.proto.ISignedTransaction\n */\n\nexport default class PublicKey extends Key {\n /**\n * @internal\n * @hideconstructor\n * @param {PublicKeyCrypto} key\n */\n constructor(key) {\n super();\n\n this._key = key;\n }\n\n /**\n * @param {Uint8Array} data\n * @returns {PublicKey}\n */\n static fromBytes(data) {\n return new PublicKey(PublicKeyCrypto.fromBytes(data));\n }\n\n /**\n * @param {Uint8Array} data\n * @returns {PublicKey}\n */\n static fromBytesED25519(data) {\n return new PublicKey(PublicKeyCrypto.fromBytesED25519(data));\n }\n\n /**\n * @param {Uint8Array} data\n * @returns {PublicKey}\n */\n static fromBytesECDSA(data) {\n return new PublicKey(PublicKeyCrypto.fromBytesECDSA(data));\n }\n\n /**\n * Parse a public key from a string of hexadecimal digits.\n *\n * The public key may optionally be prefixed with\n * the DER header.\n *\n * @param {string} text\n * @returns {PublicKey}\n */\n static fromString(text) {\n return new PublicKey(PublicKeyCrypto.fromString(text));\n }\n\n /**\n * Parse an ECDSA public key from a string of hexadecimal digits.\n *\n * @param {string} text\n * @returns {PublicKey}\n */\n static fromStringECDSA(text) {\n return new PublicKey(PublicKeyCrypto.fromStringECDSA(text));\n }\n\n /**\n * Parse an ED25519 public key from a string of hexadecimal digits.\n *\n * @param {string} text\n * @returns {PublicKey}\n */\n static fromStringED25519(text) {\n return new PublicKey(PublicKeyCrypto.fromStringED25519(text));\n }\n\n /**\n * Verify a signature on a message with this public key.\n *\n * @param {Uint8Array} message\n * @param {Uint8Array} signature\n * @returns {boolean}\n */\n verify(message, signature) {\n return this._key.verify(message, signature);\n }\n\n /**\n * Reports whether this key signed the given transaction.\n * @param {Transaction} transaction\n * @returns {boolean}\n */\n verifyTransaction(transaction) {\n transaction._requireFrozen();\n\n if (!transaction.isFrozen()) {\n transaction.freeze();\n }\n\n // Note: in other SDKs, we need to check the transaction's `_signerPublicKeys` since we don't build the `_signedTransactions` list\n // before we execute the transaction (execute -> makeRequest -> buildTransaction -> signTransaction).\n // However, in JavaScript, we build the `_signedTransactions` list while signing the transaction.\n for (const signedTransaction of transaction._signedTransactions.list) {\n if (\n signedTransaction.sigMap != null &&\n signedTransaction.sigMap.sigPair != null\n ) {\n let found = false;\n for (const sigPair of signedTransaction.sigMap.sigPair) {\n const pubKeyPrefix = /** @type {Uint8Array} */ (\n sigPair.pubKeyPrefix\n );\n if (arrayEqual(pubKeyPrefix, this.toBytesRaw())) {\n found = true;\n\n const bodyBytes = /** @type {Uint8Array} */ (\n signedTransaction.bodyBytes\n );\n\n let signature = null;\n if (sigPair.ed25519 != null) {\n signature = sigPair.ed25519;\n } else if (sigPair.ECDSASecp256k1 != null) {\n signature = sigPair.ECDSASecp256k1;\n }\n\n if (signature == null) {\n continue;\n }\n\n if (!this.verify(bodyBytes, signature)) {\n return false;\n }\n }\n }\n\n if (!found) {\n return false;\n }\n }\n }\n\n return true;\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 * @deprecated Use `toEvmAddress()` instead.\n * @returns {string}\n */\n toEthereumAddress() {\n return this._key.toEthereumAddress();\n }\n\n /**\n * @returns {string}\n */\n toEvmAddress() {\n return this._key.toEthereumAddress();\n }\n\n /**\n * @returns {string}\n */\n toString() {\n return this._key.toString();\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 * @param {PublicKey} other\n * @returns {boolean}\n */\n equals(other) {\n return this._key.equals(other._key);\n }\n\n /**\n * @returns {HieroProto.proto.IKey}\n */\n _toProtobufKey() {\n switch (this._key._type) {\n case \"ED25519\":\n return {\n ed25519: this._key.toBytesRaw(),\n };\n case \"secp256k1\":\n return {\n ECDSASecp256k1: this._key.toBytesRaw(),\n };\n default:\n throw new Error(`unrecognized key type ${this._key._type}`);\n }\n }\n\n /**\n * @param {Uint8Array} signature\n * @returns {HieroProto.proto.ISignaturePair}\n */\n _toProtobufSignature(signature) {\n switch (this._key._type) {\n case \"ED25519\":\n return {\n pubKeyPrefix: this._key.toBytesRaw(),\n ed25519: signature,\n };\n case \"secp256k1\":\n return {\n pubKeyPrefix: this._key.toBytesRaw(),\n ECDSASecp256k1: signature,\n };\n default:\n throw new Error(`unrecognized key type ${this._key._type}`);\n }\n }\n\n /**\n * @returns {string}\n */\n get type() {\n return this._key._type;\n }\n\n /**\n * @param {Long | number} shard\n * @param {Long | number} realm\n * @returns {AccountId}\n */\n toAccountId(shard, realm) {\n return CACHE.accountIdConstructor(shard, realm, this);\n }\n\n /**\n * Returns an \"unusable\" public key.\n * “Unusable” refers to a key such as an Ed25519 0x00000... public key,\n * since it is (presumably) impossible to find the 32-byte string whose SHA-512 hash begins with 32 bytes of zeros.\n *\n * @returns {PublicKey}\n */\n static unusableKey() {\n return PublicKey.fromStringED25519(\n \"0000000000000000000000000000000000000000000000000000000000000000\",\n );\n }\n}\n\nCACHE.setPublicKeyED25519((key) => PublicKey.fromBytesED25519(key));\nCACHE.setPublicKeyECDSA((key) => PublicKey.fromBytesECDSA(key));\n"],"names":["PublicKey","Key","constructor","key","super","this","_key","fromBytes","data","PublicKeyCrypto","fromBytesED25519","fromBytesECDSA","fromString","text","fromStringECDSA","fromStringED25519","verify","message","signature","verifyTransaction","transaction","_requireFrozen","isFrozen","freeze","signedTransaction","_signedTransactions","list","sigMap","sigPair","found","pubKeyPrefix","arrayEqual","toBytesRaw","bodyBytes","ed25519","ECDSASecp256k1","toBytes","toBytesDer","toEthereumAddress","toEvmAddress","toString","toStringDer","toStringRaw","equals","other","_toProtobufKey","_type","Error","_toProtobufSignature","type","toAccountId","shard","realm","CACHE","accountIdConstructor","unusableKey","setPublicKeyED25519","setPublicKeyECDSA"],"mappings":"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"}
1
+ {"version":3,"file":"PublicKey.js","sources":["../src/PublicKey.js"],"sourcesContent":["// SPDX-License-Identifier: Apache-2.0\n\nimport { PublicKey as PublicKeyCrypto } from \"@hashgraph/cryptography\";\nimport { arrayEqual } from \"./array.js\";\nimport Key from \"./Key.js\";\nimport CACHE from \"./Cache.js\";\n\n/**\n * @typedef {import(\"./transaction/Transaction.js\").default} Transaction\n * @typedef {import(\"./account/AccountId.js\").default} AccountId\n */\n\n/**\n * @namespace proto\n * @typedef {import(\"@hashgraph/proto\").proto.IKey} HieroProto.proto.IKey\n * @typedef {import(\"@hashgraph/proto\").proto.ITransaction} HieroProto.proto.ITransaction\n * @typedef {import(\"@hashgraph/proto\").proto.ISignaturePair} HieroProto.proto.ISignaturePair\n * @typedef {import(\"@hashgraph/proto\").proto.ISignedTransaction} HieroProto.proto.ISignedTransaction\n */\n\nexport default class PublicKey extends Key {\n /**\n * @internal\n * @hideconstructor\n * @param {PublicKeyCrypto} key\n */\n constructor(key) {\n super();\n\n this._key = key;\n }\n\n /**\n * @param {Uint8Array} data\n * @returns {PublicKey}\n */\n static fromBytes(data) {\n return new PublicKey(PublicKeyCrypto.fromBytes(data));\n }\n\n /**\n * @param {Uint8Array} data\n * @returns {PublicKey}\n */\n static fromBytesED25519(data) {\n return new PublicKey(PublicKeyCrypto.fromBytesED25519(data));\n }\n\n /**\n * @param {Uint8Array} data\n * @returns {PublicKey}\n */\n static fromBytesECDSA(data) {\n return new PublicKey(PublicKeyCrypto.fromBytesECDSA(data));\n }\n\n /**\n * Parse a public key from a string of hexadecimal digits.\n *\n * The public key may optionally be prefixed with\n * the DER header.\n *\n * @param {string} text\n * @returns {PublicKey}\n */\n static fromString(text) {\n return new PublicKey(PublicKeyCrypto.fromString(text));\n }\n\n /**\n * Parse an ECDSA public key from a string of hexadecimal digits.\n *\n * @param {string} text\n * @returns {PublicKey}\n */\n static fromStringECDSA(text) {\n return new PublicKey(PublicKeyCrypto.fromStringECDSA(text));\n }\n\n /**\n * Parse an ED25519 public key from a string of hexadecimal digits.\n *\n * @param {string} text\n * @returns {PublicKey}\n */\n static fromStringED25519(text) {\n return new PublicKey(PublicKeyCrypto.fromStringED25519(text));\n }\n\n /**\n * Verify a signature on a message with this public key.\n *\n * @param {Uint8Array} message\n * @param {Uint8Array} signature\n * @returns {boolean}\n */\n verify(message, signature) {\n return this._key.verify(message, signature);\n }\n\n /**\n * Reports whether this key signed the given transaction.\n * @param {Transaction} transaction\n * @returns {boolean}\n */\n verifyTransaction(transaction) {\n transaction._requireFrozen();\n\n if (!transaction.isFrozen()) {\n transaction.freeze();\n }\n\n // Note: in other SDKs, we need to check the transaction's `_signerPublicKeys` since we don't build the `_signedTransactions` list\n // before we execute the transaction (execute -> makeRequest -> buildTransaction -> signTransaction).\n // However, in JavaScript, we build the `_signedTransactions` list while signing the transaction.\n for (const signedTransaction of transaction._signedTransactions.list) {\n if (\n signedTransaction.sigMap != null &&\n signedTransaction.sigMap.sigPair != null\n ) {\n let found = false;\n for (const sigPair of signedTransaction.sigMap.sigPair) {\n const pubKeyPrefix = /** @type {Uint8Array} */ (\n sigPair.pubKeyPrefix\n );\n if (arrayEqual(pubKeyPrefix, this.toBytesRaw())) {\n found = true;\n\n const bodyBytes = /** @type {Uint8Array} */ (\n signedTransaction.bodyBytes\n );\n\n let signature = null;\n if (sigPair.ed25519 != null) {\n signature = sigPair.ed25519;\n } else if (sigPair.ECDSASecp256k1 != null) {\n signature = sigPair.ECDSASecp256k1;\n }\n\n if (signature == null) {\n continue;\n }\n\n if (!this.verify(bodyBytes, signature)) {\n return false;\n }\n }\n }\n\n if (!found) {\n return false;\n }\n }\n }\n\n return true;\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 * @deprecated Use `toEvmAddress()` instead.\n * @returns {string}\n */\n toEthereumAddress() {\n return this._key.toEthereumAddress();\n }\n\n /**\n * @returns {string}\n */\n toEvmAddress() {\n return this._key.toEthereumAddress();\n }\n\n /**\n * @returns {string}\n */\n toString() {\n return this._key.toString();\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 * @param {PublicKey} other\n * @returns {boolean}\n */\n equals(other) {\n return this._key.equals(other._key);\n }\n\n /**\n * @returns {HieroProto.proto.IKey}\n */\n _toProtobufKey() {\n switch (this._key._type) {\n case \"ED25519\":\n return {\n ed25519: this._key.toBytesRaw(),\n };\n case \"secp256k1\":\n return {\n ECDSASecp256k1: this._key.toBytesRaw(),\n };\n default:\n throw new Error(`unrecognized key type ${this._key._type}`);\n }\n }\n\n /**\n * @param {Uint8Array} signature\n * @returns {HieroProto.proto.ISignaturePair}\n */\n _toProtobufSignature(signature) {\n switch (this._key._type) {\n case \"ED25519\":\n return {\n pubKeyPrefix: this._key.toBytesRaw(),\n ed25519: signature,\n };\n case \"secp256k1\":\n return {\n pubKeyPrefix: this._key.toBytesRaw(),\n ECDSASecp256k1: signature,\n };\n default:\n throw new Error(`unrecognized key type ${this._key._type}`);\n }\n }\n\n /**\n * @returns {string}\n */\n get type() {\n return this._key._type;\n }\n\n /**\n * @param {Long | number} shard\n * @param {Long | number} realm\n * @returns {AccountId}\n */\n toAccountId(shard, realm) {\n return CACHE.accountIdConstructor(shard, realm, this);\n }\n\n /**\n * Returns an \"unusable\" public key.\n * “Unusable” refers to a key such as an Ed25519 0x00000... public key,\n * since it is (presumably) impossible to find the 32-byte string whose SHA-512 hash begins with 32 bytes of zeros.\n *\n * @returns {PublicKey}\n */\n static unusableKey() {\n return PublicKey.fromStringED25519(\n \"0000000000000000000000000000000000000000000000000000000000000000\",\n );\n }\n}\n\nCACHE.setPublicKeyED25519((key) => PublicKey.fromBytesED25519(key));\nCACHE.setPublicKeyECDSA((key) => PublicKey.fromBytesECDSA(key));\n"],"names":["PublicKey","Key","constructor","key","super","this","_key","fromBytes","data","PublicKeyCrypto","fromBytesED25519","fromBytesECDSA","fromString","text","fromStringECDSA","fromStringED25519","verify","message","signature","verifyTransaction","transaction","_requireFrozen","isFrozen","freeze","signedTransaction","_signedTransactions","list","sigMap","sigPair","found","pubKeyPrefix","arrayEqual","toBytesRaw","bodyBytes","ed25519","ECDSASecp256k1","toBytes","toBytesDer","toEthereumAddress","toEvmAddress","toString","toStringDer","toStringRaw","equals","other","_toProtobufKey","_type","Error","_toProtobufSignature","type","toAccountId","shard","realm","CACHE","accountIdConstructor","unusableKey","setPublicKeyED25519","setPublicKeyECDSA"],"mappings":"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"}
@@ -8,8 +8,7 @@ var _AccountId = _interopRequireDefault(require("./account/AccountId.cjs"));
8
8
  var _Hbar = _interopRequireDefault(require("./Hbar.cjs"));
9
9
  var _Timestamp = _interopRequireDefault(require("./Timestamp.cjs"));
10
10
  var HieroProto = _interopRequireWildcard(require("@hashgraph/proto"));
11
- function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
12
- function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
11
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
13
12
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
14
13
  // SPDX-License-Identifier: Apache-2.0
15
14
 
@@ -1 +1 @@
1
- {"version":3,"file":"Timestamp.js","sources":["../src/Timestamp.js"],"sourcesContent":["// SPDX-License-Identifier: Apache-2.0\n\nimport Long from \"long\";\nimport Cache from \"./Cache.js\";\n\n/**\n * @namespace proto\n * @typedef {import(\"@hashgraph/proto\").proto.ITimestamp} HieroProto.proto.ITimestamp\n */\n\nconst MAX_NS = Long.fromNumber(1000000000);\nconst generatedIds = new Set();\n\n/**\n * Represents a point in time with seconds and nanoseconds precision.\n *\n * The `Timestamp` class provides methods for creating, manipulating, and converting\n * timestamps. It supports operations such as addition of nanoseconds, conversion to\n * JavaScript Date objects, and generation of timestamps based on the current time.\n */\nexport default class Timestamp {\n /**\n * @param {Long | number} seconds\n * @param {Long | number} nanos\n */\n constructor(seconds, nanos) {\n /**\n * @readonly\n * @type {Long}\n */\n this.seconds =\n seconds instanceof Long ? seconds : Long.fromNumber(seconds);\n\n /**\n * @readonly\n * @type {Long}\n */\n this.nanos = nanos instanceof Long ? nanos : Long.fromNumber(nanos);\n\n Object.freeze(this);\n }\n\n /**\n * @param {boolean} hasJitter\n * @returns {Timestamp}\n */\n static generate(hasJitter = true) {\n let jitter;\n if (hasJitter) {\n jitter = Math.floor(Math.random() * 5000) + 3000;\n } else {\n jitter = 0;\n }\n const now = Date.now() - jitter;\n const seconds = Math.floor(now / 1000) + Cache.timeDrift;\n const nanos =\n Math.floor(now % 1000) * 1000000 +\n Math.floor(Math.random() * 1000000);\n\n const timestamp = new Timestamp(seconds, nanos);\n if (generatedIds.has(timestamp.toString())) {\n return this.generate();\n } else {\n generatedIds.add(timestamp.toString());\n return timestamp;\n }\n }\n\n /**\n * @param {string | number | Date} date\n * @returns {Timestamp}\n */\n static fromDate(date) {\n let nanos;\n\n if (typeof date === \"number\") {\n nanos = Long.fromNumber(date);\n } else if (typeof date === \"string\") {\n nanos = Long.fromNumber(Date.parse(date)).mul(1000000);\n } else if (date instanceof Date) {\n nanos = Long.fromNumber(date.getTime()).mul(1000000);\n } else {\n throw new TypeError(\n `invalid type '${typeof date}' for 'data', expected 'Date'`,\n );\n }\n\n return new Timestamp(0, 0).plusNanos(nanos);\n }\n\n /**\n * @returns {Date}\n */\n toDate() {\n return new Date(\n this.seconds.toInt() * 1000 +\n Math.floor(this.nanos.toInt() / 1000000),\n );\n }\n\n /**\n * @param {Long | number} nanos\n * @returns {Timestamp}\n */\n plusNanos(nanos) {\n const ns = this.nanos.add(nanos);\n\n return new Timestamp(this.seconds.add(ns.div(MAX_NS)), ns.mod(MAX_NS));\n }\n\n /**\n * @internal\n * @returns {HieroProto.proto.ITimestamp}\n */\n _toProtobuf() {\n return {\n seconds: this.seconds,\n nanos: this.nanos.toInt(),\n };\n }\n\n /**\n * @internal\n * @param {HieroProto.proto.ITimestamp} timestamp\n * @returns {Timestamp}\n */\n static _fromProtobuf(timestamp) {\n return new Timestamp(\n timestamp.seconds instanceof Long\n ? timestamp.seconds.toInt()\n : timestamp.seconds != null\n ? timestamp.seconds\n : 0,\n\n timestamp.nanos != null ? timestamp.nanos : 0,\n );\n }\n\n /**\n * @returns {string}\n */\n toString() {\n const zeroPaddedNanos = String(this.nanos).padStart(9, \"0\");\n return `${this.seconds.toString()}.${zeroPaddedNanos}`;\n }\n\n /**\n * @param {Timestamp} other\n * @returns {number}\n */\n compare(other) {\n const comparison = this.seconds.compare(other.seconds);\n\n if (comparison != 0) {\n return comparison;\n }\n\n return this.nanos.compare(other.nanos);\n }\n}\n"],"names":["MAX_NS","Long","fromNumber","generatedIds","Set","Timestamp","constructor","seconds","nanos","this","Object","freeze","generate","hasJitter","jitter","Math","floor","random","now","Date","Cache","timeDrift","timestamp","has","toString","add","fromDate","date","parse","mul","TypeError","getTime","plusNanos","toDate","toInt","ns","div","mod","_toProtobuf","_fromProtobuf","zeroPaddedNanos","String","padStart","compare","other","comparison"],"mappings":"8CAUA,MAAMA,EAASC,EAAKC,WAAW,KACzBC,EAAe,IAAIC,IASV,MAAMC,EAKjB,WAAAC,CAAYC,EAASC,GAKjBC,KAAKF,QACDA,aAAmBN,EAAOM,EAAUN,EAAKC,WAAWK,GAMxDE,KAAKD,MAAQA,aAAiBP,EAAOO,EAAQP,EAAKC,WAAWM,GAE7DE,OAAOC,OAAOF,KACtB,CAMI,eAAOG,CAASC,GAAY,GACxB,IAAIC,EAEAA,EADAD,EACSE,KAAKC,MAAsB,IAAhBD,KAAKE,UAAmB,IAEnC,EAEb,MAAMC,EAAMC,KAAKD,MAAQJ,EACnBP,EAAUQ,KAAKC,MAAME,EAAM,KAAQE,EAAMC,UACzCb,EACuB,IAAzBO,KAAKC,MAAME,EAAM,KACjBH,KAAKC,MAAsB,IAAhBD,KAAKE,UAEdK,EAAY,IAAIjB,EAAUE,EAASC,GACzC,OAAIL,EAAaoB,IAAID,EAAUE,YACpBf,KAAKG,YAEZT,EAAasB,IAAIH,EAAUE,YACpBF,EAEnB,CAMI,eAAOI,CAASC,GACZ,IAAInB,EAEJ,GAAoB,iBAATmB,EACPnB,EAAQP,EAAKC,WAAWyB,QACrB,GAAoB,iBAATA,EACdnB,EAAQP,EAAKC,WAAWiB,KAAKS,MAAMD,IAAOE,IAAI,SAC3C,MAAIF,aAAgBR,MAGvB,MAAM,IAAIW,UACN,wBAAwBH,kCAH5BnB,EAAQP,EAAKC,WAAWyB,EAAKI,WAAWF,IAAI,IAKxD,CAEQ,OAAO,IAAIxB,EAAU,EAAG,GAAG2B,UAAUxB,EAC7C,CAKI,MAAAyB,GACI,OAAO,IAAId,KACgB,IAAvBV,KAAKF,QAAQ2B,QACTnB,KAAKC,MAAMP,KAAKD,MAAM0B,QAAU,KAEhD,CAMI,SAAAF,CAAUxB,GACN,MAAM2B,EAAK1B,KAAKD,MAAMiB,IAAIjB,GAE1B,OAAO,IAAIH,EAAUI,KAAKF,QAAQkB,IAAIU,EAAGC,IAAIpC,IAAUmC,EAAGE,IAAIrC,GACtE,CAMI,WAAAsC,GACI,MAAO,CACH/B,QAASE,KAAKF,QACdC,MAAOC,KAAKD,MAAM0B,QAE9B,CAOI,oBAAOK,CAAcjB,GACjB,OAAO,IAAIjB,EACPiB,EAAUf,mBAAmBN,EACvBqB,EAAUf,QAAQ2B,QACG,MAArBZ,EAAUf,QACRe,EAAUf,QACV,EAEW,MAAnBe,EAAUd,MAAgBc,EAAUd,MAAQ,EAExD,CAKI,QAAAgB,GACI,MAAMgB,EAAkBC,OAAOhC,KAAKD,OAAOkC,SAAS,EAAG,KACvD,MAAO,GAAGjC,KAAKF,QAAQiB,cAAcgB,GAC7C,CAMI,OAAAG,CAAQC,GACJ,MAAMC,EAAapC,KAAKF,QAAQoC,QAAQC,EAAMrC,SAE9C,OAAkB,GAAdsC,EACOA,EAGJpC,KAAKD,MAAMmC,QAAQC,EAAMpC,MACxC"}
1
+ {"version":3,"file":"Timestamp.js","sources":["../src/Timestamp.js"],"sourcesContent":["// SPDX-License-Identifier: Apache-2.0\n\nimport Long from \"long\";\nimport Cache from \"./Cache.js\";\n\n/**\n * @namespace proto\n * @typedef {import(\"@hashgraph/proto\").proto.ITimestamp} HieroProto.proto.ITimestamp\n */\n\nconst MAX_NS = Long.fromNumber(1000000000);\nconst generatedIds = new Set();\n\n/**\n * Represents a point in time with seconds and nanoseconds precision.\n *\n * The `Timestamp` class provides methods for creating, manipulating, and converting\n * timestamps. It supports operations such as addition of nanoseconds, conversion to\n * JavaScript Date objects, and generation of timestamps based on the current time.\n */\nexport default class Timestamp {\n /**\n * @param {Long | number} seconds\n * @param {Long | number} nanos\n */\n constructor(seconds, nanos) {\n /**\n * @readonly\n * @type {Long}\n */\n this.seconds =\n seconds instanceof Long ? seconds : Long.fromNumber(seconds);\n\n /**\n * @readonly\n * @type {Long}\n */\n this.nanos = nanos instanceof Long ? nanos : Long.fromNumber(nanos);\n\n Object.freeze(this);\n }\n\n /**\n * @param {boolean} hasJitter\n * @returns {Timestamp}\n */\n static generate(hasJitter = true) {\n let jitter;\n if (hasJitter) {\n jitter = Math.floor(Math.random() * 5000) + 3000;\n } else {\n jitter = 0;\n }\n const now = Date.now() - jitter;\n const seconds = Math.floor(now / 1000) + Cache.timeDrift;\n const nanos =\n Math.floor(now % 1000) * 1000000 +\n Math.floor(Math.random() * 1000000);\n\n const timestamp = new Timestamp(seconds, nanos);\n if (generatedIds.has(timestamp.toString())) {\n return this.generate();\n } else {\n generatedIds.add(timestamp.toString());\n return timestamp;\n }\n }\n\n /**\n * @param {string | number | Date} date\n * @returns {Timestamp}\n */\n static fromDate(date) {\n let nanos;\n\n if (typeof date === \"number\") {\n nanos = Long.fromNumber(date);\n } else if (typeof date === \"string\") {\n nanos = Long.fromNumber(Date.parse(date)).mul(1000000);\n } else if (date instanceof Date) {\n nanos = Long.fromNumber(date.getTime()).mul(1000000);\n } else {\n throw new TypeError(\n `invalid type '${typeof date}' for 'data', expected 'Date'`,\n );\n }\n\n return new Timestamp(0, 0).plusNanos(nanos);\n }\n\n /**\n * @returns {Date}\n */\n toDate() {\n return new Date(\n this.seconds.toInt() * 1000 +\n Math.floor(this.nanos.toInt() / 1000000),\n );\n }\n\n /**\n * @param {Long | number} nanos\n * @returns {Timestamp}\n */\n plusNanos(nanos) {\n const ns = this.nanos.add(nanos);\n\n return new Timestamp(this.seconds.add(ns.div(MAX_NS)), ns.mod(MAX_NS));\n }\n\n /**\n * @internal\n * @returns {HieroProto.proto.ITimestamp}\n */\n _toProtobuf() {\n return {\n seconds: this.seconds,\n nanos: this.nanos.toInt(),\n };\n }\n\n /**\n * @internal\n * @param {HieroProto.proto.ITimestamp} timestamp\n * @returns {Timestamp}\n */\n static _fromProtobuf(timestamp) {\n return new Timestamp(\n timestamp.seconds instanceof Long\n ? timestamp.seconds.toInt()\n : timestamp.seconds != null\n ? timestamp.seconds\n : 0,\n\n timestamp.nanos != null ? timestamp.nanos : 0,\n );\n }\n\n /**\n * @returns {string}\n */\n toString() {\n const zeroPaddedNanos = String(this.nanos).padStart(9, \"0\");\n return `${this.seconds.toString()}.${zeroPaddedNanos}`;\n }\n\n /**\n * @param {Timestamp} other\n * @returns {number}\n */\n compare(other) {\n const comparison = this.seconds.compare(other.seconds);\n\n if (comparison != 0) {\n return comparison;\n }\n\n return this.nanos.compare(other.nanos);\n }\n}\n"],"names":["MAX_NS","Long","fromNumber","generatedIds","Set","Timestamp","constructor","seconds","nanos","this","Object","freeze","generate","hasJitter","jitter","Math","floor","random","now","Date","Cache","timeDrift","timestamp","has","toString","add","fromDate","date","parse","mul","TypeError","getTime","plusNanos","toDate","toInt","ns","div","mod","_toProtobuf","_fromProtobuf","zeroPaddedNanos","String","padStart","compare","other","comparison"],"mappings":"8CAUA,MAAMA,EAASC,EAAKC,WAAW,KACzBC,EAAe,IAAIC,IASV,MAAMC,EAKjB,WAAAC,CAAYC,EAASC,GAKjBC,KAAKF,QACDA,aAAmBN,EAAOM,EAAUN,EAAKC,WAAWK,GAMxDE,KAAKD,MAAQA,aAAiBP,EAAOO,EAAQP,EAAKC,WAAWM,GAE7DE,OAAOC,OAAOF,KACtB,CAMI,eAAOG,CAASC,GAAY,GACxB,IAAIC,EAEAA,EADAD,EACSE,KAAKC,MAAsB,IAAhBD,KAAKE,UAAmB,IAEnC,EAEb,MAAMC,EAAMC,KAAKD,MAAQJ,EACnBP,EAAUQ,KAAKC,MAAME,EAAM,KAAQE,EAAMC,UACzCb,EACuB,IAAzBO,KAAKC,MAAME,EAAM,KACjBH,KAAKC,MAAsB,IAAhBD,KAAKE,UAEdK,EAAY,IAAIjB,EAAUE,EAASC,GACzC,OAAIL,EAAaoB,IAAID,EAAUE,YACpBf,KAAKG,YAEZT,EAAasB,IAAIH,EAAUE,YACpBF,EAEnB,CAMI,eAAOI,CAASC,GACZ,IAAInB,EAEJ,GAAoB,iBAATmB,EACPnB,EAAQP,EAAKC,WAAWyB,QACrB,GAAoB,iBAATA,EACdnB,EAAQP,EAAKC,WAAWiB,KAAKS,MAAMD,IAAOE,IAAI,SAC3C,MAAIF,aAAgBR,MAGvB,MAAM,IAAIW,UACN,wBAAwBH,kCAH5BnB,EAAQP,EAAKC,WAAWyB,EAAKI,WAAWF,IAAI,IAKxD,CAEQ,OAAO,IAAIxB,EAAU,EAAG,GAAG2B,UAAUxB,EAC7C,CAKI,MAAAyB,GACI,OAAO,IAAId,KACgB,IAAvBV,KAAKF,QAAQ2B,QACTnB,KAAKC,MAAMP,KAAKD,MAAM0B,QAAU,KAEhD,CAMI,SAAAF,CAAUxB,GACN,MAAM2B,EAAK1B,KAAKD,MAAMiB,IAAIjB,GAE1B,OAAO,IAAIH,EAAUI,KAAKF,QAAQkB,IAAIU,EAAGC,IAAIpC,IAAUmC,EAAGE,IAAIrC,GACtE,CAMI,WAAAsC,GACI,MAAO,CACH/B,QAASE,KAAKF,QACdC,MAAOC,KAAKD,MAAM0B,QAE9B,CAOI,oBAAOK,CAAcjB,GACjB,OAAO,IAAIjB,EACPiB,EAAUf,mBAAmBN,EACvBqB,EAAUf,QAAQ2B,QACG,MAArBZ,EAAUf,QACVe,EAAUf,QACV,EAEa,MAAnBe,EAAUd,MAAgBc,EAAUd,MAAQ,EAExD,CAKI,QAAAgB,GACI,MAAMgB,EAAkBC,OAAOhC,KAAKD,OAAOkC,SAAS,EAAG,KACvD,MAAO,GAAGjC,KAAKF,QAAQiB,cAAcgB,GAC7C,CAMI,OAAAG,CAAQC,GACJ,MAAMC,EAAapC,KAAKF,QAAQoC,QAAQC,EAAMrC,SAE9C,OAAkB,GAAdsC,EACOA,EAGJpC,KAAKD,MAAMmC,QAAQC,EAAMpC,MACxC"}
@@ -8,8 +8,7 @@ var HieroProto = _interopRequireWildcard(require("@hashgraph/proto"));
8
8
  var _RequestType = _interopRequireDefault(require("./RequestType.cjs"));
9
9
  var _FeeData = _interopRequireDefault(require("./FeeData.cjs"));
10
10
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
11
- function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
12
- function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
11
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
13
12
  // SPDX-License-Identifier: Apache-2.0
14
13
 
15
14
  class TransactionFeeSchedule {
@@ -1,2 +1,2 @@
1
- import*as e from"@hashgraph/proto";import t from"./RequestType.js";import o from"./FeeData.js";class a{constructor(e={}){this.hederaFunctionality=e.hederaFunctionality,this.feeData=e.feeData,this.fees=e.fees}static fromBytes(t){return a._fromProtobuf(e.proto.TransactionFeeSchedule.decode(t))}static _fromProtobuf(e){return new a({hederaFunctionality:null!=e.hederaFunctionality?t._fromCode(e.hederaFunctionality):void 0,feeData:null!=e.feeData?o._fromProtobuf(e.feeData):void 0,fees:null!=e.fees?e.fees.map((e=>o._fromProtobuf(e))):void 0})}_toProtobuf(){return{hederaFunctionality:null!=this.hederaFunctionality?this.hederaFunctionality.valueOf():void 0,feeData:null!=this.feeData?this.feeData._toProtobuf():void 0,fees:null!=this.fees?this.fees.map((e=>e._toProtobuf())):void 0}}toBytes(){return e.proto.TransactionFeeSchedule.encode(this._toProtobuf()).finish()}}export{a as default};
1
+ import*as e from"@hashgraph/proto";import t from"./RequestType.js";import o from"./FeeData.js";class a{constructor(e={}){this.hederaFunctionality=e.hederaFunctionality,this.feeData=e.feeData,this.fees=e.fees}static fromBytes(t){return a._fromProtobuf(e.proto.TransactionFeeSchedule.decode(t))}static _fromProtobuf(e){return new a({hederaFunctionality:null!=e.hederaFunctionality?t._fromCode(e.hederaFunctionality):void 0,feeData:null!=e.feeData?o._fromProtobuf(e.feeData):void 0,fees:null!=e.fees?e.fees.map(e=>o._fromProtobuf(e)):void 0})}_toProtobuf(){return{hederaFunctionality:null!=this.hederaFunctionality?this.hederaFunctionality.valueOf():void 0,feeData:null!=this.feeData?this.feeData._toProtobuf():void 0,fees:null!=this.fees?this.fees.map(e=>e._toProtobuf()):void 0}}toBytes(){return e.proto.TransactionFeeSchedule.encode(this._toProtobuf()).finish()}}export{a as default};
2
2
  //# sourceMappingURL=TransactionFeeSchedule.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"TransactionFeeSchedule.js","sources":["../src/TransactionFeeSchedule.js"],"sourcesContent":["// SPDX-License-Identifier: Apache-2.0\n\nimport * as HieroProto from \"@hashgraph/proto\";\nimport RequestType from \"./RequestType.js\";\nimport FeeData from \"./FeeData.js\";\n\nexport default class TransactionFeeSchedule {\n /**\n * @param {object} [props]\n * @param {RequestType} [props.hederaFunctionality]\n * @param {FeeData} [props.feeData]\n * @param {FeeData[]} [props.fees]\n */\n constructor(props = {}) {\n /*\n * A particular transaction or query\n *\n * @type {RequestType}\n */\n this.hederaFunctionality = props.hederaFunctionality;\n\n /*\n * Resource price coefficients\n *\n * @type {FeeData}\n */\n this.feeData = props.feeData;\n\n /*\n * Resource price coefficients\n *\n * @type {FeeData[]}\n */\n this.fees = props.fees;\n }\n\n /**\n * @param {Uint8Array} bytes\n * @returns {TransactionFeeSchedule}\n */\n static fromBytes(bytes) {\n return TransactionFeeSchedule._fromProtobuf(\n HieroProto.proto.TransactionFeeSchedule.decode(bytes),\n );\n }\n\n /**\n * @internal\n * @param {HieroProto.proto.ITransactionFeeSchedule} transactionFeeSchedule\n * @returns {TransactionFeeSchedule}\n */\n static _fromProtobuf(transactionFeeSchedule) {\n return new TransactionFeeSchedule({\n hederaFunctionality:\n transactionFeeSchedule.hederaFunctionality != null\n ? RequestType._fromCode(\n transactionFeeSchedule.hederaFunctionality,\n )\n : undefined,\n feeData:\n transactionFeeSchedule.feeData != null\n ? FeeData._fromProtobuf(transactionFeeSchedule.feeData)\n : undefined,\n fees:\n transactionFeeSchedule.fees != null\n ? transactionFeeSchedule.fees.map((fee) =>\n FeeData._fromProtobuf(fee),\n )\n : undefined,\n });\n }\n\n /**\n * @internal\n * @returns {HieroProto.proto.ITransactionFeeSchedule}\n */\n _toProtobuf() {\n return {\n hederaFunctionality:\n this.hederaFunctionality != null\n ? this.hederaFunctionality.valueOf()\n : undefined,\n feeData:\n this.feeData != null ? this.feeData._toProtobuf() : undefined,\n fees:\n this.fees != null\n ? this.fees.map((fee) => fee._toProtobuf())\n : undefined,\n };\n }\n\n /**\n * @returns {Uint8Array}\n */\n toBytes() {\n return HieroProto.proto.TransactionFeeSchedule.encode(\n this._toProtobuf(),\n ).finish();\n }\n}\n"],"names":["TransactionFeeSchedule","constructor","props","this","hederaFunctionality","feeData","fees","fromBytes","bytes","_fromProtobuf","HieroProto","proto","decode","transactionFeeSchedule","RequestType","_fromCode","undefined","FeeData","map","fee","_toProtobuf","valueOf","toBytes","encode","finish"],"mappings":"+FAMe,MAAMA,EAOjB,WAAAC,CAAYC,EAAQ,IAMhBC,KAAKC,oBAAsBF,EAAME,oBAOjCD,KAAKE,QAAUH,EAAMG,QAOrBF,KAAKG,KAAOJ,EAAMI,IAC1B,CAMI,gBAAOC,CAAUC,GACb,OAAOR,EAAuBS,cAC1BC,EAAWC,MAAMX,uBAAuBY,OAAOJ,GAE3D,CAOI,oBAAOC,CAAcI,GACjB,OAAO,IAAIb,EAAuB,CAC9BI,oBACkD,MAA9CS,EAAuBT,oBACjBU,EAAYC,UACRF,EAAuBT,0BAE3BY,EACVX,QACsC,MAAlCQ,EAAuBR,QACjBY,EAAQR,cAAcI,EAAuBR,cAC7CW,EACVV,KACmC,MAA/BO,EAAuBP,KACjBO,EAAuBP,KAAKY,KAAKC,GAC7BF,EAAQR,cAAcU,UAE1BH,GAEtB,CAMI,WAAAI,GACI,MAAO,CACHhB,oBACgC,MAA5BD,KAAKC,oBACCD,KAAKC,oBAAoBiB,eACzBL,EACVX,QACoB,MAAhBF,KAAKE,QAAkBF,KAAKE,QAAQe,mBAAgBJ,EACxDV,KACiB,MAAbH,KAAKG,KACCH,KAAKG,KAAKY,KAAKC,GAAQA,EAAIC,qBAC3BJ,EAEtB,CAKI,OAAAM,GACI,OAAOZ,EAAWC,MAAMX,uBAAuBuB,OAC3CpB,KAAKiB,eACPI,QACV"}
1
+ {"version":3,"file":"TransactionFeeSchedule.js","sources":["../src/TransactionFeeSchedule.js"],"sourcesContent":["// SPDX-License-Identifier: Apache-2.0\n\nimport * as HieroProto from \"@hashgraph/proto\";\nimport RequestType from \"./RequestType.js\";\nimport FeeData from \"./FeeData.js\";\n\nexport default class TransactionFeeSchedule {\n /**\n * @param {object} [props]\n * @param {RequestType} [props.hederaFunctionality]\n * @param {FeeData} [props.feeData]\n * @param {FeeData[]} [props.fees]\n */\n constructor(props = {}) {\n /*\n * A particular transaction or query\n *\n * @type {RequestType}\n */\n this.hederaFunctionality = props.hederaFunctionality;\n\n /*\n * Resource price coefficients\n *\n * @type {FeeData}\n */\n this.feeData = props.feeData;\n\n /*\n * Resource price coefficients\n *\n * @type {FeeData[]}\n */\n this.fees = props.fees;\n }\n\n /**\n * @param {Uint8Array} bytes\n * @returns {TransactionFeeSchedule}\n */\n static fromBytes(bytes) {\n return TransactionFeeSchedule._fromProtobuf(\n HieroProto.proto.TransactionFeeSchedule.decode(bytes),\n );\n }\n\n /**\n * @internal\n * @param {HieroProto.proto.ITransactionFeeSchedule} transactionFeeSchedule\n * @returns {TransactionFeeSchedule}\n */\n static _fromProtobuf(transactionFeeSchedule) {\n return new TransactionFeeSchedule({\n hederaFunctionality:\n transactionFeeSchedule.hederaFunctionality != null\n ? RequestType._fromCode(\n transactionFeeSchedule.hederaFunctionality,\n )\n : undefined,\n feeData:\n transactionFeeSchedule.feeData != null\n ? FeeData._fromProtobuf(transactionFeeSchedule.feeData)\n : undefined,\n fees:\n transactionFeeSchedule.fees != null\n ? transactionFeeSchedule.fees.map((fee) =>\n FeeData._fromProtobuf(fee),\n )\n : undefined,\n });\n }\n\n /**\n * @internal\n * @returns {HieroProto.proto.ITransactionFeeSchedule}\n */\n _toProtobuf() {\n return {\n hederaFunctionality:\n this.hederaFunctionality != null\n ? this.hederaFunctionality.valueOf()\n : undefined,\n feeData:\n this.feeData != null ? this.feeData._toProtobuf() : undefined,\n fees:\n this.fees != null\n ? this.fees.map((fee) => fee._toProtobuf())\n : undefined,\n };\n }\n\n /**\n * @returns {Uint8Array}\n */\n toBytes() {\n return HieroProto.proto.TransactionFeeSchedule.encode(\n this._toProtobuf(),\n ).finish();\n }\n}\n"],"names":["TransactionFeeSchedule","constructor","props","this","hederaFunctionality","feeData","fees","fromBytes","bytes","_fromProtobuf","HieroProto","proto","decode","transactionFeeSchedule","RequestType","_fromCode","undefined","FeeData","map","fee","_toProtobuf","valueOf","toBytes","encode","finish"],"mappings":"+FAMe,MAAMA,EAOjB,WAAAC,CAAYC,EAAQ,IAMhBC,KAAKC,oBAAsBF,EAAME,oBAOjCD,KAAKE,QAAUH,EAAMG,QAOrBF,KAAKG,KAAOJ,EAAMI,IAC1B,CAMI,gBAAOC,CAAUC,GACb,OAAOR,EAAuBS,cAC1BC,EAAWC,MAAMX,uBAAuBY,OAAOJ,GAE3D,CAOI,oBAAOC,CAAcI,GACjB,OAAO,IAAIb,EAAuB,CAC9BI,oBACkD,MAA9CS,EAAuBT,oBACjBU,EAAYC,UACRF,EAAuBT,0BAE3BY,EACVX,QACsC,MAAlCQ,EAAuBR,QACjBY,EAAQR,cAAcI,EAAuBR,cAC7CW,EACVV,KACmC,MAA/BO,EAAuBP,KACjBO,EAAuBP,KAAKY,IAAKC,GAC7BF,EAAQR,cAAcU,SAE1BH,GAEtB,CAMI,WAAAI,GACI,MAAO,CACHhB,oBACgC,MAA5BD,KAAKC,oBACCD,KAAKC,oBAAoBiB,eACzBL,EACVX,QACoB,MAAhBF,KAAKE,QAAkBF,KAAKE,QAAQe,mBAAgBJ,EACxDV,KACiB,MAAbH,KAAKG,KACCH,KAAKG,KAAKY,IAAKC,GAAQA,EAAIC,oBAC3BJ,EAEtB,CAKI,OAAAM,GACI,OAAOZ,EAAWC,MAAMX,uBAAuBuB,OAC3CpB,KAAKiB,eACPI,QACV"}
package/lib/Wallet.cjs CHANGED
@@ -12,8 +12,7 @@ var _AccountInfoQuery = _interopRequireDefault(require("./account/AccountInfoQue
12
12
  var _AccountRecordsQuery = _interopRequireDefault(require("./account/AccountRecordsQuery.cjs"));
13
13
  var _TransactionId = _interopRequireDefault(require("./transaction/TransactionId.cjs"));
14
14
  var util = _interopRequireWildcard(require("./util.cjs"));
15
- function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
16
- function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
15
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
17
16
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
18
17
  // SPDX-License-Identifier: Apache-2.0
19
18
 
package/lib/Wallet.js CHANGED
@@ -1,2 +1,2 @@
1
- import t from"./PrivateKey.js";import e from"./account/AccountId.js";import r from"./SignerSignature.js";import n from"./account/AccountBalanceQuery.js";import o from"./account/AccountInfoQuery.js";import c from"./account/AccountRecordsQuery.js";import i from"./transaction/TransactionId.js";import{shuffle as s}from"./util.js";class u{constructor(r,n,o){let c;c="string"==typeof n&&t.isDerKey(n)?t.fromStringDer(n):"string"==typeof n?t.fromString(n):n,this.publicKey=c.publicKey,this.signer=t=>Promise.resolve(c.sign(t)),this.provider=o,this.accountId="string"==typeof r?e.fromString(r):r}static createRandomED25519(){const e=t.generateED25519(),r=e.publicKey.toAccountId(0,0);return Promise.resolve(new u(r,e))}static createRandomECDSA(){const e=t.generateECDSA(),r=e.publicKey.toAccountId(0,0);return Promise.resolve(new u(r,e))}getProvider(){return this.provider}getAccountId(){return this.accountId}getAccountKey(){return this.publicKey}getLedgerId(){return null==this.provider?null:this.provider.getLedgerId()}getNetwork(){return null==this.provider?{}:this.provider.getNetwork()}getMirrorNetwork(){return null==this.provider?[]:this.provider.getMirrorNetwork()}async sign(t){const e=[];for(const n of t)e.push(new r({publicKey:this.publicKey,signature:await this.signer(n),accountId:this.accountId}));return e}getAccountBalance(){return this.call((new n).setAccountId(this.accountId))}getAccountInfo(){return this.call((new o).setAccountId(this.accountId))}getAccountRecords(){return this.call((new c).setAccountId(this.accountId))}signTransaction(t){return t.signWith(this.publicKey,this.signer)}checkTransaction(t){const e=t.transactionId;if(null!=e&&null!=e.accountId&&0!=e.accountId.compare(this.accountId))throw new Error("transaction's ID constructed with a different account ID");if(null==this.provider)return Promise.resolve(t);const r=(null!=t.nodeAccountIds?t.nodeAccountIds:[]).map((t=>t.toString())),n=Object.values(this.provider.getNetwork()).map((t=>t.toString()));if(!r.reduce(((t,e)=>t&&n.includes(e)),!0))throw new Error("Transaction already set node account IDs to values not within the current network");return Promise.resolve(t)}populateTransaction(t){if(t._freezeWithAccountId(this.accountId),null==t.transactionId&&t.setTransactionId(i.generate(this.accountId)),null!=t.nodeAccountIds&&0!=t.nodeAccountIds.length)return Promise.resolve(t.freeze());if(null==this.provider)return Promise.resolve(t);const r=Object.values(this.provider.getNetwork()).map((t=>"string"==typeof t?e.fromString(t):t));return s(r),t.setNodeAccountIds(r.slice(0,(r.length+3-1)/3)),Promise.resolve(t.freeze())}call(t){if(null==this.provider)throw new Error("cannot send request with an wallet that doesn't contain a provider");return this.provider.call(t._setOperatorWith(this.accountId,this.publicKey,this.signer))}}export{u as default};
1
+ import t from"./PrivateKey.js";import e from"./account/AccountId.js";import r from"./SignerSignature.js";import n from"./account/AccountBalanceQuery.js";import o from"./account/AccountInfoQuery.js";import c from"./account/AccountRecordsQuery.js";import i from"./transaction/TransactionId.js";import{shuffle as s}from"./util.js";class u{constructor(r,n,o){let c;c="string"==typeof n&&t.isDerKey(n)?t.fromStringDer(n):"string"==typeof n?t.fromString(n):n,this.publicKey=c.publicKey,this.signer=t=>Promise.resolve(c.sign(t)),this.provider=o,this.accountId="string"==typeof r?e.fromString(r):r}static createRandomED25519(){const e=t.generateED25519(),r=e.publicKey.toAccountId(0,0);return Promise.resolve(new u(r,e))}static createRandomECDSA(){const e=t.generateECDSA(),r=e.publicKey.toAccountId(0,0);return Promise.resolve(new u(r,e))}getProvider(){return this.provider}getAccountId(){return this.accountId}getAccountKey(){return this.publicKey}getLedgerId(){return null==this.provider?null:this.provider.getLedgerId()}getNetwork(){return null==this.provider?{}:this.provider.getNetwork()}getMirrorNetwork(){return null==this.provider?[]:this.provider.getMirrorNetwork()}async sign(t){const e=[];for(const n of t)e.push(new r({publicKey:this.publicKey,signature:await this.signer(n),accountId:this.accountId}));return e}getAccountBalance(){return this.call((new n).setAccountId(this.accountId))}getAccountInfo(){return this.call((new o).setAccountId(this.accountId))}getAccountRecords(){return this.call((new c).setAccountId(this.accountId))}signTransaction(t){return t.signWith(this.publicKey,this.signer)}checkTransaction(t){const e=t.transactionId;if(null!=e&&null!=e.accountId&&0!=e.accountId.compare(this.accountId))throw new Error("transaction's ID constructed with a different account ID");if(null==this.provider)return Promise.resolve(t);const r=(null!=t.nodeAccountIds?t.nodeAccountIds:[]).map(t=>t.toString()),n=Object.values(this.provider.getNetwork()).map(t=>t.toString());if(!r.reduce((t,e)=>t&&n.includes(e),!0))throw new Error("Transaction already set node account IDs to values not within the current network");return Promise.resolve(t)}populateTransaction(t){if(t._freezeWithAccountId(this.accountId),null==t.transactionId&&t.setTransactionId(i.generate(this.accountId)),null!=t.nodeAccountIds&&0!=t.nodeAccountIds.length)return Promise.resolve(t.freeze());if(null==this.provider)return Promise.resolve(t);const r=Object.values(this.provider.getNetwork()).map(t=>"string"==typeof t?e.fromString(t):t);return s(r),t.setNodeAccountIds(r.slice(0,(r.length+3-1)/3)),Promise.resolve(t.freeze())}call(t){if(null==this.provider)throw new Error("cannot send request with an wallet that doesn't contain a provider");return this.provider.call(t._setOperatorWith(this.accountId,this.publicKey,this.signer))}}export{u as default};
2
2
  //# sourceMappingURL=Wallet.js.map
package/lib/Wallet.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"Wallet.js","sources":["../src/Wallet.js"],"sourcesContent":["// SPDX-License-Identifier: Apache-2.0\n\nimport PrivateKey from \"./PrivateKey.js\";\nimport AccountId from \"./account/AccountId.js\";\nimport SignerSignature from \"./SignerSignature.js\";\nimport AccountBalanceQuery from \"./account/AccountBalanceQuery.js\";\nimport AccountInfoQuery from \"./account/AccountInfoQuery.js\";\nimport AccountRecordsQuery from \"./account/AccountRecordsQuery.js\";\nimport TransactionId from \"./transaction/TransactionId.js\";\nimport * as util from \"./util.js\";\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 * @typedef {import(\"./Signer.js\").Signer} Signer\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/TransactionResponse.js\").default} TransactionResponse\n * @typedef {import(\"./transaction/TransactionReceipt.js\").default} TransactionReceipt\n * @typedef {import(\"./transaction/TransactionRecord.js\").default} TransactionRecord\n * @typedef {import(\"./account/AccountBalance.js\").default} AccountBalance\n * @typedef {import(\"./account/AccountInfo.js\").default} AccountInfo\n */\n\n/**\n * @template {any} O\n * @typedef {import(\"./query/Query.js\").default<O>} Query<O>\n */\n\n/**\n * @implements {Signer}\n */\nexport default class Wallet {\n /**\n * NOTE: When using string for private key, the string needs to contain DER headers\n *\n * @param {AccountId | string} accountId\n * @param {PrivateKey | string} privateKey\n * @param {Provider=} provider\n */\n constructor(accountId, privateKey, provider) {\n /*\n TODO: deprecate on a major version \n the following lines were added because we didnt have\n a way to check the algorithm of a der encoded private key\n We need to keep the old behavior for the transition period.\n */\n let key;\n if (typeof privateKey === \"string\" && PrivateKey.isDerKey(privateKey)) {\n key = PrivateKey.fromStringDer(privateKey);\n } else if (typeof privateKey === \"string\") {\n // eslint-disable-next-line deprecation/deprecation\n key = PrivateKey.fromString(privateKey);\n } else {\n key = privateKey;\n }\n\n this.publicKey = key.publicKey;\n /**\n * @type {(message: Uint8Array) => Promise<Uint8Array>}\n */\n this.signer = (message) => Promise.resolve(key.sign(message));\n this.provider = provider;\n this.accountId =\n typeof accountId === \"string\"\n ? AccountId.fromString(accountId)\n : accountId;\n }\n\n /**\n * @returns {Promise<Wallet>}\n * @deprecated\n */\n static createRandomED25519() {\n const privateKey = PrivateKey.generateED25519();\n const publicKey = privateKey.publicKey;\n const accountId = publicKey.toAccountId(0, 0);\n return Promise.resolve(new Wallet(accountId, privateKey));\n }\n\n /**\n * @returns {Promise<Wallet>}\n * @deprecated\n */\n static createRandomECDSA() {\n const privateKey = PrivateKey.generateECDSA();\n const publicKey = privateKey.publicKey;\n const accountId = publicKey.toAccountId(0, 0);\n return Promise.resolve(new Wallet(accountId, privateKey));\n }\n\n /**\n * @returns {Provider=}\n */\n getProvider() {\n return this.provider;\n }\n\n /**\n * @abstract\n * @returns {AccountId}\n */\n getAccountId() {\n return this.accountId;\n }\n\n /**\n * @returns {Key}\n */\n getAccountKey() {\n return this.publicKey;\n }\n\n /**\n * @returns {LedgerId?}\n */\n getLedgerId() {\n return this.provider == null ? null : this.provider.getLedgerId();\n }\n\n /**\n * @abstract\n * @returns {{[key: string]: (string | AccountId)}}\n */\n getNetwork() {\n return this.provider == null ? {} : this.provider.getNetwork();\n }\n\n /**\n * @abstract\n * @returns {string[]}\n */\n getMirrorNetwork() {\n return this.provider == null ? [] : this.provider.getMirrorNetwork();\n }\n\n /**\n * @param {Uint8Array[]} messages\n * @returns {Promise<SignerSignature[]>}\n */\n async sign(messages) {\n const sigantures = [];\n\n for (const message of messages) {\n sigantures.push(\n new SignerSignature({\n publicKey: this.publicKey,\n signature: await this.signer(message),\n accountId: this.accountId,\n }),\n );\n }\n\n return sigantures;\n }\n\n /**\n * @returns {Promise<AccountBalance>}\n */\n getAccountBalance() {\n return this.call(\n new AccountBalanceQuery().setAccountId(this.accountId),\n );\n }\n\n /**\n * @abstract\n * @returns {Promise<AccountInfo>}\n */\n getAccountInfo() {\n return this.call(new AccountInfoQuery().setAccountId(this.accountId));\n }\n\n /**\n * @abstract\n * @returns {Promise<TransactionRecord[]>}\n */\n getAccountRecords() {\n return this.call(\n new AccountRecordsQuery().setAccountId(this.accountId),\n );\n }\n\n /**\n * @template {Transaction} T\n * @param {T} transaction\n * @returns {Promise<T>}\n */\n signTransaction(transaction) {\n return transaction.signWith(this.publicKey, this.signer);\n }\n\n /**\n * @template {Transaction} T\n * @param {T} transaction\n * @returns {Promise<T>}\n */\n checkTransaction(transaction) {\n const transactionId = transaction.transactionId;\n if (\n transactionId != null &&\n transactionId.accountId != null &&\n transactionId.accountId.compare(this.accountId) != 0\n ) {\n throw new Error(\n \"transaction's ID constructed with a different account ID\",\n );\n }\n\n if (this.provider == null) {\n return Promise.resolve(transaction);\n }\n\n const nodeAccountIds = (\n transaction.nodeAccountIds != null ? transaction.nodeAccountIds : []\n ).map((nodeAccountId) => nodeAccountId.toString());\n const network = Object.values(this.provider.getNetwork()).map(\n (nodeAccountId) => nodeAccountId.toString(),\n );\n\n if (\n !nodeAccountIds.reduce(\n (previous, current) => previous && network.includes(current),\n true,\n )\n ) {\n throw new Error(\n \"Transaction already set node account IDs to values not within the current network\",\n );\n }\n\n return Promise.resolve(transaction);\n }\n\n /**\n * @template {Transaction} T\n * @param {T} transaction\n * @returns {Promise<T>}\n */\n populateTransaction(transaction) {\n transaction._freezeWithAccountId(this.accountId);\n\n if (transaction.transactionId == null) {\n transaction.setTransactionId(\n TransactionId.generate(this.accountId),\n );\n }\n\n if (\n transaction.nodeAccountIds != null &&\n transaction.nodeAccountIds.length != 0\n ) {\n return Promise.resolve(transaction.freeze());\n }\n\n if (this.provider == null) {\n return Promise.resolve(transaction);\n }\n\n const nodeAccountIds = Object.values(this.provider.getNetwork()).map(\n (id) => (typeof id === \"string\" ? AccountId.fromString(id) : id),\n );\n util.shuffle(nodeAccountIds);\n transaction.setNodeAccountIds(\n nodeAccountIds.slice(0, (nodeAccountIds.length + 3 - 1) / 3),\n );\n\n return Promise.resolve(transaction.freeze());\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 if (this.provider == null) {\n throw new Error(\n \"cannot send request with an wallet that doesn't contain a provider\",\n );\n }\n\n return this.provider.call(\n request._setOperatorWith(\n this.accountId,\n this.publicKey,\n this.signer,\n ),\n );\n }\n}\n"],"names":["Wallet","constructor","accountId","privateKey","provider","key","PrivateKey","isDerKey","fromStringDer","fromString","this","publicKey","signer","message","Promise","resolve","sign","AccountId","createRandomED25519","generateED25519","toAccountId","createRandomECDSA","generateECDSA","getProvider","getAccountId","getAccountKey","getLedgerId","getNetwork","getMirrorNetwork","messages","sigantures","push","SignerSignature","signature","getAccountBalance","call","AccountBalanceQuery","setAccountId","getAccountInfo","AccountInfoQuery","getAccountRecords","AccountRecordsQuery","signTransaction","transaction","signWith","checkTransaction","transactionId","compare","Error","nodeAccountIds","map","nodeAccountId","toString","network","Object","values","reduce","previous","current","includes","populateTransaction","_freezeWithAccountId","setTransactionId","TransactionId","generate","length","freeze","id","util.shuffle","setNodeAccountIds","slice","request","_setOperatorWith"],"mappings":"wUAuCe,MAAMA,EAQjB,WAAAC,CAAYC,EAAWC,EAAYC,GAO/B,IAAIC,EAEAA,EADsB,iBAAfF,GAA2BG,EAAWC,SAASJ,GAChDG,EAAWE,cAAcL,GACF,iBAAfA,EAERG,EAAWG,WAAWN,GAEtBA,EAGVO,KAAKC,UAAYN,EAAIM,UAIrBD,KAAKE,OAAUC,GAAYC,QAAQC,QAAQV,EAAIW,KAAKH,IACpDH,KAAKN,SAAWA,EAChBM,KAAKR,UACoB,iBAAdA,EACDe,EAAUR,WAAWP,GACrBA,CAClB,CAMI,0BAAOgB,GACH,MAAMf,EAAaG,EAAWa,kBAExBjB,EADYC,EAAWQ,UACDS,YAAY,EAAG,GAC3C,OAAON,QAAQC,QAAQ,IAAIf,EAAOE,EAAWC,GACrD,CAMI,wBAAOkB,GACH,MAAMlB,EAAaG,EAAWgB,gBAExBpB,EADYC,EAAWQ,UACDS,YAAY,EAAG,GAC3C,OAAON,QAAQC,QAAQ,IAAIf,EAAOE,EAAWC,GACrD,CAKI,WAAAoB,GACI,OAAOb,KAAKN,QACpB,CAMI,YAAAoB,GACI,OAAOd,KAAKR,SACpB,CAKI,aAAAuB,GACI,OAAOf,KAAKC,SACpB,CAKI,WAAAe,GACI,OAAwB,MAAjBhB,KAAKN,SAAmB,KAAOM,KAAKN,SAASsB,aAC5D,CAMI,UAAAC,GACI,OAAwB,MAAjBjB,KAAKN,SAAmB,CAAE,EAAGM,KAAKN,SAASuB,YAC1D,CAMI,gBAAAC,GACI,OAAwB,MAAjBlB,KAAKN,SAAmB,GAAKM,KAAKN,SAASwB,kBAC1D,CAMI,UAAMZ,CAAKa,GACP,MAAMC,EAAa,GAEnB,IAAK,MAAMjB,KAAWgB,EAClBC,EAAWC,KACP,IAAIC,EAAgB,CAChBrB,UAAWD,KAAKC,UAChBsB,gBAAiBvB,KAAKE,OAAOC,GAC7BX,UAAWQ,KAAKR,aAK5B,OAAO4B,CACf,CAKI,iBAAAI,GACI,OAAOxB,KAAKyB,MACR,IAAIC,GAAsBC,aAAa3B,KAAKR,WAExD,CAMI,cAAAoC,GACI,OAAO5B,KAAKyB,MAAK,IAAII,GAAmBF,aAAa3B,KAAKR,WAClE,CAMI,iBAAAsC,GACI,OAAO9B,KAAKyB,MACR,IAAIM,GAAsBJ,aAAa3B,KAAKR,WAExD,CAOI,eAAAwC,CAAgBC,GACZ,OAAOA,EAAYC,SAASlC,KAAKC,UAAWD,KAAKE,OACzD,CAOI,gBAAAiC,CAAiBF,GACb,MAAMG,EAAgBH,EAAYG,cAClC,GACqB,MAAjBA,GAC2B,MAA3BA,EAAc5C,WACqC,GAAnD4C,EAAc5C,UAAU6C,QAAQrC,KAAKR,WAErC,MAAM,IAAI8C,MACN,4DAIR,GAAqB,MAAjBtC,KAAKN,SACL,OAAOU,QAAQC,QAAQ4B,GAG3B,MAAMM,GAC4B,MAA9BN,EAAYM,eAAyBN,EAAYM,eAAiB,IACpEC,KAAKC,GAAkBA,EAAcC,aACjCC,EAAUC,OAAOC,OAAO7C,KAAKN,SAASuB,cAAcuB,KACrDC,GAAkBA,EAAcC,aAGrC,IACKH,EAAeO,QACZ,CAACC,EAAUC,IAAYD,GAAYJ,EAAQM,SAASD,KACpD,GAGJ,MAAM,IAAIV,MACN,qFAIR,OAAOlC,QAAQC,QAAQ4B,EAC/B,CAOI,mBAAAiB,CAAoBjB,GAShB,GARAA,EAAYkB,qBAAqBnD,KAAKR,WAEL,MAA7ByC,EAAYG,eACZH,EAAYmB,iBACRC,EAAcC,SAAStD,KAAKR,YAKF,MAA9ByC,EAAYM,gBACyB,GAArCN,EAAYM,eAAegB,OAE3B,OAAOnD,QAAQC,QAAQ4B,EAAYuB,UAGvC,GAAqB,MAAjBxD,KAAKN,SACL,OAAOU,QAAQC,QAAQ4B,GAG3B,MAAMM,EAAiBK,OAAOC,OAAO7C,KAAKN,SAASuB,cAAcuB,KAC5DiB,GAAsB,iBAAPA,EAAkBlD,EAAUR,WAAW0D,GAAMA,IAOjE,OALAC,EAAanB,GACbN,EAAY0B,kBACRpB,EAAeqB,MAAM,GAAIrB,EAAegB,OAAS,EAAI,GAAK,IAGvDnD,QAAQC,QAAQ4B,EAAYuB,SAC3C,CASI,IAAA/B,CAAKoC,GACD,GAAqB,MAAjB7D,KAAKN,SACL,MAAM,IAAI4C,MACN,sEAIR,OAAOtC,KAAKN,SAAS+B,KACjBoC,EAAQC,iBACJ9D,KAAKR,UACLQ,KAAKC,UACLD,KAAKE,QAGrB"}
1
+ {"version":3,"file":"Wallet.js","sources":["../src/Wallet.js"],"sourcesContent":["// SPDX-License-Identifier: Apache-2.0\n\nimport PrivateKey from \"./PrivateKey.js\";\nimport AccountId from \"./account/AccountId.js\";\nimport SignerSignature from \"./SignerSignature.js\";\nimport AccountBalanceQuery from \"./account/AccountBalanceQuery.js\";\nimport AccountInfoQuery from \"./account/AccountInfoQuery.js\";\nimport AccountRecordsQuery from \"./account/AccountRecordsQuery.js\";\nimport TransactionId from \"./transaction/TransactionId.js\";\nimport * as util from \"./util.js\";\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 * @typedef {import(\"./Signer.js\").Signer} Signer\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/TransactionResponse.js\").default} TransactionResponse\n * @typedef {import(\"./transaction/TransactionReceipt.js\").default} TransactionReceipt\n * @typedef {import(\"./transaction/TransactionRecord.js\").default} TransactionRecord\n * @typedef {import(\"./account/AccountBalance.js\").default} AccountBalance\n * @typedef {import(\"./account/AccountInfo.js\").default} AccountInfo\n */\n\n/**\n * @template {any} O\n * @typedef {import(\"./query/Query.js\").default<O>} Query<O>\n */\n\n/**\n * @implements {Signer}\n */\nexport default class Wallet {\n /**\n * NOTE: When using string for private key, the string needs to contain DER headers\n *\n * @param {AccountId | string} accountId\n * @param {PrivateKey | string} privateKey\n * @param {Provider=} provider\n */\n constructor(accountId, privateKey, provider) {\n /*\n TODO: deprecate on a major version \n the following lines were added because we didnt have\n a way to check the algorithm of a der encoded private key\n We need to keep the old behavior for the transition period.\n */\n let key;\n if (typeof privateKey === \"string\" && PrivateKey.isDerKey(privateKey)) {\n key = PrivateKey.fromStringDer(privateKey);\n } else if (typeof privateKey === \"string\") {\n // eslint-disable-next-line deprecation/deprecation\n key = PrivateKey.fromString(privateKey);\n } else {\n key = privateKey;\n }\n\n this.publicKey = key.publicKey;\n /**\n * @type {(message: Uint8Array) => Promise<Uint8Array>}\n */\n this.signer = (message) => Promise.resolve(key.sign(message));\n this.provider = provider;\n this.accountId =\n typeof accountId === \"string\"\n ? AccountId.fromString(accountId)\n : accountId;\n }\n\n /**\n * @returns {Promise<Wallet>}\n * @deprecated\n */\n static createRandomED25519() {\n const privateKey = PrivateKey.generateED25519();\n const publicKey = privateKey.publicKey;\n const accountId = publicKey.toAccountId(0, 0);\n return Promise.resolve(new Wallet(accountId, privateKey));\n }\n\n /**\n * @returns {Promise<Wallet>}\n * @deprecated\n */\n static createRandomECDSA() {\n const privateKey = PrivateKey.generateECDSA();\n const publicKey = privateKey.publicKey;\n const accountId = publicKey.toAccountId(0, 0);\n return Promise.resolve(new Wallet(accountId, privateKey));\n }\n\n /**\n * @returns {Provider=}\n */\n getProvider() {\n return this.provider;\n }\n\n /**\n * @abstract\n * @returns {AccountId}\n */\n getAccountId() {\n return this.accountId;\n }\n\n /**\n * @returns {Key}\n */\n getAccountKey() {\n return this.publicKey;\n }\n\n /**\n * @returns {LedgerId?}\n */\n getLedgerId() {\n return this.provider == null ? null : this.provider.getLedgerId();\n }\n\n /**\n * @abstract\n * @returns {{[key: string]: (string | AccountId)}}\n */\n getNetwork() {\n return this.provider == null ? {} : this.provider.getNetwork();\n }\n\n /**\n * @abstract\n * @returns {string[]}\n */\n getMirrorNetwork() {\n return this.provider == null ? [] : this.provider.getMirrorNetwork();\n }\n\n /**\n * @param {Uint8Array[]} messages\n * @returns {Promise<SignerSignature[]>}\n */\n async sign(messages) {\n const sigantures = [];\n\n for (const message of messages) {\n sigantures.push(\n new SignerSignature({\n publicKey: this.publicKey,\n signature: await this.signer(message),\n accountId: this.accountId,\n }),\n );\n }\n\n return sigantures;\n }\n\n /**\n * @returns {Promise<AccountBalance>}\n */\n getAccountBalance() {\n return this.call(\n new AccountBalanceQuery().setAccountId(this.accountId),\n );\n }\n\n /**\n * @abstract\n * @returns {Promise<AccountInfo>}\n */\n getAccountInfo() {\n return this.call(new AccountInfoQuery().setAccountId(this.accountId));\n }\n\n /**\n * @abstract\n * @returns {Promise<TransactionRecord[]>}\n */\n getAccountRecords() {\n return this.call(\n new AccountRecordsQuery().setAccountId(this.accountId),\n );\n }\n\n /**\n * @template {Transaction} T\n * @param {T} transaction\n * @returns {Promise<T>}\n */\n signTransaction(transaction) {\n return transaction.signWith(this.publicKey, this.signer);\n }\n\n /**\n * @template {Transaction} T\n * @param {T} transaction\n * @returns {Promise<T>}\n */\n checkTransaction(transaction) {\n const transactionId = transaction.transactionId;\n if (\n transactionId != null &&\n transactionId.accountId != null &&\n transactionId.accountId.compare(this.accountId) != 0\n ) {\n throw new Error(\n \"transaction's ID constructed with a different account ID\",\n );\n }\n\n if (this.provider == null) {\n return Promise.resolve(transaction);\n }\n\n const nodeAccountIds = (\n transaction.nodeAccountIds != null ? transaction.nodeAccountIds : []\n ).map((nodeAccountId) => nodeAccountId.toString());\n const network = Object.values(this.provider.getNetwork()).map(\n (nodeAccountId) => nodeAccountId.toString(),\n );\n\n if (\n !nodeAccountIds.reduce(\n (previous, current) => previous && network.includes(current),\n true,\n )\n ) {\n throw new Error(\n \"Transaction already set node account IDs to values not within the current network\",\n );\n }\n\n return Promise.resolve(transaction);\n }\n\n /**\n * @template {Transaction} T\n * @param {T} transaction\n * @returns {Promise<T>}\n */\n populateTransaction(transaction) {\n transaction._freezeWithAccountId(this.accountId);\n\n if (transaction.transactionId == null) {\n transaction.setTransactionId(\n TransactionId.generate(this.accountId),\n );\n }\n\n if (\n transaction.nodeAccountIds != null &&\n transaction.nodeAccountIds.length != 0\n ) {\n return Promise.resolve(transaction.freeze());\n }\n\n if (this.provider == null) {\n return Promise.resolve(transaction);\n }\n\n const nodeAccountIds = Object.values(this.provider.getNetwork()).map(\n (id) => (typeof id === \"string\" ? AccountId.fromString(id) : id),\n );\n util.shuffle(nodeAccountIds);\n transaction.setNodeAccountIds(\n nodeAccountIds.slice(0, (nodeAccountIds.length + 3 - 1) / 3),\n );\n\n return Promise.resolve(transaction.freeze());\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 if (this.provider == null) {\n throw new Error(\n \"cannot send request with an wallet that doesn't contain a provider\",\n );\n }\n\n return this.provider.call(\n request._setOperatorWith(\n this.accountId,\n this.publicKey,\n this.signer,\n ),\n );\n }\n}\n"],"names":["Wallet","constructor","accountId","privateKey","provider","key","PrivateKey","isDerKey","fromStringDer","fromString","this","publicKey","signer","message","Promise","resolve","sign","AccountId","createRandomED25519","generateED25519","toAccountId","createRandomECDSA","generateECDSA","getProvider","getAccountId","getAccountKey","getLedgerId","getNetwork","getMirrorNetwork","messages","sigantures","push","SignerSignature","signature","getAccountBalance","call","AccountBalanceQuery","setAccountId","getAccountInfo","AccountInfoQuery","getAccountRecords","AccountRecordsQuery","signTransaction","transaction","signWith","checkTransaction","transactionId","compare","Error","nodeAccountIds","map","nodeAccountId","toString","network","Object","values","reduce","previous","current","includes","populateTransaction","_freezeWithAccountId","setTransactionId","TransactionId","generate","length","freeze","id","util.shuffle","setNodeAccountIds","slice","request","_setOperatorWith"],"mappings":"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"}
@@ -15,8 +15,7 @@ var _HbarAllowance = _interopRequireDefault(require("./HbarAllowance.cjs"));
15
15
  var _TokenAllowance = _interopRequireDefault(require("./TokenAllowance.cjs"));
16
16
  var _TokenNftAllowance = _interopRequireDefault(require("./TokenNftAllowance.cjs"));
17
17
  var util = _interopRequireWildcard(require("../util.cjs"));
18
- function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
19
- function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
18
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
20
19
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
21
20
  // SPDX-License-Identifier: Apache-2.0
22
21