@hiero-ledger/sdk 2.71.0-beta.0 → 2.71.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (62) hide show
  1. package/dist/umd.js +142 -40
  2. package/dist/umd.min.js +2 -2
  3. package/lib/LedgerId.cjs +4 -4
  4. package/lib/LedgerId.js +1 -1
  5. package/lib/LedgerId.js.map +1 -1
  6. package/lib/channel/NativeChannel.cjs +3 -2
  7. package/lib/channel/NativeChannel.js +1 -1
  8. package/lib/channel/NativeChannel.js.map +1 -1
  9. package/lib/channel/NodeMirrorChannel.cjs +0 -2
  10. package/lib/channel/NodeMirrorChannel.js +1 -1
  11. package/lib/channel/NodeMirrorChannel.js.map +1 -1
  12. package/lib/client/Client.cjs +3 -2
  13. package/lib/client/Client.d.ts +2 -2
  14. package/lib/client/Client.js +1 -1
  15. package/lib/client/Client.js.map +1 -1
  16. package/lib/client/NativeClient.cjs +141 -44
  17. package/lib/client/NativeClient.d.ts +48 -16
  18. package/lib/client/NativeClient.js +1 -1
  19. package/lib/client/NativeClient.js.map +1 -1
  20. package/lib/client/NodeClient.cjs +63 -2
  21. package/lib/client/NodeClient.d.ts +42 -0
  22. package/lib/client/NodeClient.js +1 -1
  23. package/lib/client/NodeClient.js.map +1 -1
  24. package/lib/client/WebClient.cjs +64 -34
  25. package/lib/client/WebClient.d.ts +35 -15
  26. package/lib/client/WebClient.js +1 -1
  27. package/lib/client/WebClient.js.map +1 -1
  28. package/lib/constants/ClientConstants.cjs +22 -7
  29. package/lib/constants/ClientConstants.d.ts +12 -6
  30. package/lib/constants/ClientConstants.js +1 -1
  31. package/lib/constants/ClientConstants.js.map +1 -1
  32. package/lib/contract/ContractCreateTransaction.cjs +5 -0
  33. package/lib/contract/ContractCreateTransaction.js +1 -1
  34. package/lib/contract/ContractCreateTransaction.js.map +1 -1
  35. package/lib/contract/ContractDeleteTransaction.cjs +35 -2
  36. package/lib/contract/ContractDeleteTransaction.d.ts +18 -0
  37. package/lib/contract/ContractDeleteTransaction.js +1 -1
  38. package/lib/contract/ContractDeleteTransaction.js.map +1 -1
  39. package/lib/contract/ContractUpdateTransaction.cjs +2 -1
  40. package/lib/contract/ContractUpdateTransaction.js +1 -1
  41. package/lib/contract/ContractUpdateTransaction.js.map +1 -1
  42. package/lib/encoding/hex.cjs +11 -0
  43. package/lib/encoding/hex.js +1 -1
  44. package/lib/encoding/hex.js.map +1 -1
  45. package/lib/native.cjs +2 -2
  46. package/lib/native.d.ts +1 -1
  47. package/lib/native.js +1 -1
  48. package/lib/version.js +1 -1
  49. package/package.json +2 -2
  50. package/src/LedgerId.js +4 -4
  51. package/src/channel/NativeChannel.js +9 -1
  52. package/src/channel/NodeMirrorChannel.js +0 -2
  53. package/src/client/Client.js +4 -2
  54. package/src/client/NativeClient.js +151 -47
  55. package/src/client/NodeClient.js +56 -3
  56. package/src/client/WebClient.js +63 -44
  57. package/src/constants/ClientConstants.js +26 -8
  58. package/src/contract/ContractCreateTransaction.js +5 -3
  59. package/src/contract/ContractDeleteTransaction.js +34 -0
  60. package/src/contract/ContractUpdateTransaction.js +4 -1
  61. package/src/encoding/hex.js +20 -0
  62. package/src/native.js +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"hex.js","sources":["../../src/encoding/hex.js"],"sourcesContent":["// SPDX-License-Identifier: Apache-2.0\n\n/**\n * @param {Uint8Array} data\n * @returns {string}\n */\nexport function encode(data) {\n return Buffer.from(data).toString(\"hex\");\n}\n\n/**\n * @param {string} text\n * @returns {Uint8Array}\n */\nexport function decode(text) {\n const str = text.startsWith(\"0x\") ? text.substring(2) : text;\n return Buffer.from(str, \"hex\");\n}\n\n/**\n * Check if a string is a valid hexadecimal string\n * @param {string} text - The string to check\n * @returns {boolean} - True if the string is a valid hex string, false otherwise\n */\nexport function isHexString(text) {\n if (typeof text !== \"string\") {\n return false;\n }\n\n const str = text.startsWith(\"0x\") ? text.substring(2) : text;\n\n // Check if the string is empty after removing 0x prefix\n if (str.length === 0) {\n return false;\n }\n\n // Check if the string has even length (hex pairs)\n if (str.length % 2 !== 0) {\n return false;\n }\n\n // Check if all characters are valid hex digits\n const hexRegex = /^[0-9a-fA-F]+$/;\n return hexRegex.test(str);\n}\n\n/**\n * Encode with a specified length. Supports zero padding if the most significant byte is 0\n *\n * https://github.com/ethers-io/ethers.js/blob/master/packages/bytes/src.ts/index.ts#L315\n *\n * @param {Uint8Array} value\n * @param {number} length\n * @returns {string}\n */\nexport function hexZeroPadded(value, length) {\n const HexCharacters = \"0123456789abcdef\";\n\n // https://github.com/ethers-io/ethers.js/blob/master/packages/bytes/src.ts/index.ts#L243\n let result = \"0x\";\n for (let i = 0; i < value.length; i++) {\n let v = value[i];\n result += HexCharacters[(v & 0xf0) >> 4] + HexCharacters[v & 0x0f];\n }\n\n // https://github.com/ethers-io/ethers.js/blob/master/packages/bytes/src.ts/index.ts#L315\n if (result.length > 2 * length + 2) {\n console.log(\"result out of range\", \"result\");\n }\n\n while (result.length < 2 * length + 2) {\n result = \"0x0\" + result.substring(2);\n }\n\n return result.substring(2);\n}\n"],"names":["encode","data","Buffer","from","toString","decode","text","str","startsWith","substring","isHexString","length","test"],"mappings":"AAMO,SAASA,EAAOC,GACnB,OAAOC,OAAOC,KAAKF,GAAMG,SAAS,MACtC,CAMO,SAASC,EAAOC,GACnB,MAAMC,EAAMD,EAAKE,WAAW,MAAQF,EAAKG,UAAU,GAAKH,EACxD,OAAOJ,OAAOC,KAAKI,EAAK,MAC5B,CAOO,SAASG,EAAYJ,GACxB,GAAoB,iBAATA,EACP,OAAO,EAGX,MAAMC,EAAMD,EAAKE,WAAW,MAAQF,EAAKG,UAAU,GAAKH,EAGxD,GAAmB,IAAfC,EAAII,OACJ,OAAO,EAIX,GAAIJ,EAAII,OAAS,GAAM,EACnB,OAAO,EAKX,MADiB,iBACDC,KAAKL,EACzB"}
1
+ {"version":3,"file":"hex.js","sources":["../../src/encoding/hex.js"],"sourcesContent":["// SPDX-License-Identifier: Apache-2.0\n\n/**\n * @param {Uint8Array} data\n * @returns {string}\n */\nexport function encode(data) {\n return Buffer.from(data).toString(\"hex\");\n}\n\n/**\n * @param {string} text\n * @returns {Uint8Array}\n */\nexport function decode(text) {\n const str = text.startsWith(\"0x\") ? text.substring(2) : text;\n\n if (str.length % 2 !== 0) {\n throw new Error(\n \"Invalid hex string: Must have an even number of characters.\",\n );\n }\n\n if (/[^0-9a-fA-F]/.test(str)) {\n throw new Error(\n \"Invalid hex string: Contains non-hexadecimal characters.\",\n );\n }\n\n const bytes = new Uint8Array(str.length / 2);\n\n for (let i = 0; i < str.length; i += 2) {\n const byte = parseInt(str.substring(i, i + 2), 16);\n bytes[i / 2] = byte;\n }\n\n return Buffer.from(str, \"hex\");\n}\n\n/**\n * Check if a string is a valid hexadecimal string\n * @param {string} text - The string to check\n * @returns {boolean} - True if the string is a valid hex string, false otherwise\n */\nexport function isHexString(text) {\n if (typeof text !== \"string\") {\n return false;\n }\n\n const str = text.startsWith(\"0x\") ? text.substring(2) : text;\n\n // Check if the string is empty after removing 0x prefix\n if (str.length === 0) {\n return false;\n }\n\n // Check if the string has even length (hex pairs)\n if (str.length % 2 !== 0) {\n return false;\n }\n\n // Check if all characters are valid hex digits\n const hexRegex = /^[0-9a-fA-F]+$/;\n return hexRegex.test(str);\n}\n\n/**\n * Encode with a specified length. Supports zero padding if the most significant byte is 0\n *\n * https://github.com/ethers-io/ethers.js/blob/master/packages/bytes/src.ts/index.ts#L315\n *\n * @param {Uint8Array} value\n * @param {number} length\n * @returns {string}\n */\nexport function hexZeroPadded(value, length) {\n const HexCharacters = \"0123456789abcdef\";\n\n // https://github.com/ethers-io/ethers.js/blob/master/packages/bytes/src.ts/index.ts#L243\n let result = \"0x\";\n for (let i = 0; i < value.length; i++) {\n let v = value[i];\n result += HexCharacters[(v & 0xf0) >> 4] + HexCharacters[v & 0x0f];\n }\n\n // https://github.com/ethers-io/ethers.js/blob/master/packages/bytes/src.ts/index.ts#L315\n if (result.length > 2 * length + 2) {\n console.log(\"result out of range\", \"result\");\n }\n\n while (result.length < 2 * length + 2) {\n result = \"0x0\" + result.substring(2);\n }\n\n return result.substring(2);\n}\n"],"names":["encode","data","Buffer","from","toString","decode","text","str","startsWith","substring","length","Error","test","bytes","Uint8Array","i","byte","parseInt","isHexString"],"mappings":"AAMO,SAASA,EAAOC,GACnB,OAAOC,OAAOC,KAAKF,GAAMG,SAAS,MACtC,CAMO,SAASC,EAAOC,GACnB,MAAMC,EAAMD,EAAKE,WAAW,MAAQF,EAAKG,UAAU,GAAKH,EAExD,GAAIC,EAAIG,OAAS,GAAM,EACnB,MAAM,IAAIC,MACN,+DAIR,GAAI,eAAeC,KAAKL,GACpB,MAAM,IAAII,MACN,4DAIR,MAAME,EAAQ,IAAIC,WAAWP,EAAIG,OAAS,GAE1C,IAAK,IAAIK,EAAI,EAAGA,EAAIR,EAAIG,OAAQK,GAAK,EAAG,CACpC,MAAMC,EAAOC,SAASV,EAAIE,UAAUM,EAAGA,EAAI,GAAI,IAC/CF,EAAME,EAAI,GAAKC,CACvB,CAEI,OAAOd,OAAOC,KAAKI,EAAK,MAC5B,CAOO,SAASW,EAAYZ,GACxB,GAAoB,iBAATA,EACP,OAAO,EAGX,MAAMC,EAAMD,EAAKE,WAAW,MAAQF,EAAKG,UAAU,GAAKH,EAGxD,GAAmB,IAAfC,EAAIG,OACJ,OAAO,EAIX,GAAIH,EAAIG,OAAS,GAAM,EACnB,OAAO,EAKX,MADiB,iBACDE,KAAKL,EACzB"}
package/lib/native.cjs CHANGED
@@ -10,7 +10,7 @@ var _exportNames = {
10
10
  Object.defineProperty(exports, "AddressBookQuery", {
11
11
  enumerable: true,
12
12
  get: function () {
13
- return _AddressBookQuery.default;
13
+ return _AddressBookQueryWeb.default;
14
14
  }
15
15
  });
16
16
  Object.defineProperty(exports, "Client", {
@@ -32,5 +32,5 @@ Object.keys(_exports).forEach(function (key) {
32
32
  });
33
33
  });
34
34
  var _NativeClient = _interopRequireDefault(require("./client/NativeClient.cjs"));
35
- var _AddressBookQuery = _interopRequireDefault(require("./network/AddressBookQuery.cjs"));
35
+ var _AddressBookQueryWeb = _interopRequireDefault(require("./network/AddressBookQueryWeb.cjs"));
36
36
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
package/lib/native.d.ts CHANGED
@@ -1,3 +1,3 @@
1
1
  export * from "./exports.js";
2
2
  export { default as Client } from "./client/NativeClient.js";
3
- export { default as AddressBookQuery } from "./network/AddressBookQuery.js";
3
+ export { default as AddressBookQuery } from "./network/AddressBookQueryWeb.js";
package/lib/native.js CHANGED
@@ -1,2 +1,2 @@
1
- export{NetworkName}from"./exports.js";export{default as Client}from"./client/NativeClient.js";export{default as AddressBookQuery}from"./network/AddressBookQuery.js";export{default as Cache}from"./Cache.js";export{default as PrivateKey}from"./PrivateKey.js";export{default as PublicKey}from"./PublicKey.js";export{default as KeyList}from"./KeyList.js";export{default as Key}from"./Key.js";export{default as Mnemonic}from"./Mnemonic.js";export{default as TokenAirdropTransaction}from"./token/TokenAirdropTransaction.js";export{default as TokenClaimAirdropTransaction}from"./token/TokenClaimAirdropTransaction.js";export{default as TokenCancelAirdropTransaction}from"./token/TokenCancelAirdropTransaction.js";export{default as AccountAllowanceAdjustTransaction}from"./account/AccountAllowanceAdjustTransaction.js";export{default as AccountAllowanceApproveTransaction}from"./account/AccountAllowanceApproveTransaction.js";export{default as AccountAllowanceDeleteTransaction}from"./account/AccountAllowanceDeleteTransaction.js";export{default as AccountBalance}from"./account/AccountBalance.js";export{default as AccountBalanceQuery}from"./account/AccountBalanceQuery.js";export{default as AccountCreateTransaction}from"./account/AccountCreateTransaction.js";export{default as AccountDeleteTransaction}from"./account/AccountDeleteTransaction.js";export{default as AccountId}from"./account/AccountId.js";export{default as AccountInfo}from"./account/AccountInfo.js";export{default as AccountInfoFlow}from"./account/AccountInfoFlow.js";export{default as AccountInfoQuery}from"./account/AccountInfoQuery.js";export{default as AccountRecordsQuery}from"./account/AccountRecordsQuery.js";export{default as AccountUpdateTransaction}from"./account/AccountUpdateTransaction.js";export{default as AssessedCustomFee}from"./token/AssessedCustomFee.js";export{default as BatchTransaction}from"./transaction/BatchTransaction.js";export{default as ContractByteCodeQuery}from"./contract/ContractByteCodeQuery.js";export{default as ContractCallQuery}from"./contract/ContractCallQuery.js";export{default as ContractCreateFlow}from"./contract/ContractCreateFlow.js";export{default as ContractCreateTransaction}from"./contract/ContractCreateTransaction.js";export{default as ContractDeleteTransaction}from"./contract/ContractDeleteTransaction.js";export{default as ContractExecuteTransaction}from"./contract/ContractExecuteTransaction.js";export{default as ContractFunctionParameters}from"./contract/ContractFunctionParameters.js";export{default as ContractFunctionResult}from"./contract/ContractFunctionResult.js";export{default as ContractFunctionSelector}from"./contract/ContractFunctionSelector.js";export{default as ContractId}from"./contract/ContractId.js";export{default as ContractInfo}from"./contract/ContractInfo.js";export{default as ContractInfoQuery}from"./contract/ContractInfoQuery.js";export{default as ContractLogInfo}from"./contract/ContractLogInfo.js";export{default as ContractNonceInfo}from"./contract/ContractNonceInfo.js";export{default as ContractUpdateTransaction}from"./contract/ContractUpdateTransaction.js";export{default as CustomFee}from"./token/CustomFee.js";export{default as CustomFixedFee}from"./token/CustomFixedFee.js";export{default as CustomFractionalFee}from"./token/CustomFractionalFee.js";export{default as CustomRoyaltyFee}from"./token/CustomRoyaltyFee.js";export{default as DelegateContractId}from"./contract/DelegateContractId.js";export{default as EthereumTransaction}from"./EthereumTransaction.js";export{default as EthereumTransactionDataLegacy}from"./EthereumTransactionDataLegacy.js";export{default as EthereumTransactionDataEip1559}from"./EthereumTransactionDataEip1559.js";export{default as EthereumTransactionDataEip2930}from"./EthereumTransactionDataEip2930.js";export{default as EthereumTransactionData}from"./EthereumTransactionData.js";export{default as EthereumFlow}from"./EthereumFlow.js";export{default as EvmAddress}from"./EvmAddress.js";export{default as ExchangeRate}from"./ExchangeRate.js";export{default as ExchangeRates}from"./ExchangeRates.js";export{default as Executable}from"./Executable.js";export{default as FeeAssessmentMethod}from"./token/FeeAssessmentMethod.js";export{default as FeeComponents}from"./FeeComponents.js";export{default as FeeData}from"./FeeData.js";export{default as FeeDataType}from"./FeeDataType.js";export{default as FeeSchedule}from"./FeeSchedule.js";export{default as FeeSchedules}from"./FeeSchedules.js";export{default as FileAppendTransaction}from"./file/FileAppendTransaction.js";export{default as FileContentsQuery}from"./file/FileContentsQuery.js";export{default as FileCreateTransaction}from"./file/FileCreateTransaction.js";export{default as FileDeleteTransaction}from"./file/FileDeleteTransaction.js";export{default as FileId}from"./file/FileId.js";export{default as FileInfo}from"./file/FileInfo.js";export{default as FileInfoQuery}from"./file/FileInfoQuery.js";export{default as FileUpdateTransaction}from"./file/FileUpdateTransaction.js";export{default as FreezeTransaction}from"./system/FreezeTransaction.js";export{default as Hbar}from"./Hbar.js";export{default as HbarAllowance}from"./account/HbarAllowance.js";export{default as HbarUnit}from"./HbarUnit.js";export{default as LiveHash}from"./account/LiveHash.js";export{default as LiveHashAddTransaction}from"./account/LiveHashAddTransaction.js";export{default as LiveHashDeleteTransaction}from"./account/LiveHashDeleteTransaction.js";export{default as LiveHashQuery}from"./account/LiveHashQuery.js";export{default as MaxQueryPaymentExceeded}from"./MaxQueryPaymentExceeded.js";export{default as MirrorNodeContractCallQuery}from"./query/MirrorNodeContractCallQuery.js";export{default as MirrorNodeContractEstimateQuery}from"./query/MirrorNodeContractEstimateQuery.js";export{default as NodeAddressBook}from"./address_book/NodeAddressBook.js";export{default as NetworkVersionInfo}from"./network/NetworkVersionInfo.js";export{default as NetworkVersionInfoQuery}from"./network/NetworkVersionInfoQuery.js";export{default as NftId}from"./token/NftId.js";export{default as PendingAirdropId}from"./token/PendingAirdropId.js";export{default as PrngTransaction}from"./PrngTransaction.js";export{default as ProxyStaker}from"./account/ProxyStaker.js";export{default as Query}from"./query/Query.js";export{default as RequestType}from"./RequestType.js";export{default as ScheduleCreateTransaction}from"./schedule/ScheduleCreateTransaction.js";export{default as ScheduleDeleteTransaction}from"./schedule/ScheduleDeleteTransaction.js";export{default as ScheduleId}from"./schedule/ScheduleId.js";export{default as ScheduleInfo}from"./schedule/ScheduleInfo.js";export{default as ScheduleInfoQuery}from"./schedule/ScheduleInfoQuery.js";export{default as ScheduleSignTransaction}from"./schedule/ScheduleSignTransaction.js";export{default as SemanticVersion}from"./network/SemanticVersion.js";export{default as SignatureMap}from"./transaction/SignatureMap.js";export{default as SignerSignature}from"./SignerSignature.js";export{default as Status}from"./Status.js";export{default as SubscriptionHandle}from"./topic/SubscriptionHandle.js";export{default as SystemDeleteTransaction}from"./system/SystemDeleteTransaction.js";export{default as SystemUndeleteTransaction}from"./system/SystemUndeleteTransaction.js";export{default as Timestamp}from"./Timestamp.js";export{default as TokenAllowance}from"./account/TokenAllowance.js";export{default as TokenAssociateTransaction}from"./token/TokenAssociateTransaction.js";export{default as TokenBurnTransaction}from"./token/TokenBurnTransaction.js";export{default as TokenRejectTransaction}from"./token/TokenRejectTransaction.js";export{default as TokenRejectFlow}from"./token/TokenRejectFlow.js";export{default as TokenCreateTransaction}from"./token/TokenCreateTransaction.js";export{default as TokenDeleteTransaction}from"./token/TokenDeleteTransaction.js";export{default as TokenDissociateTransaction}from"./token/TokenDissociateTransaction.js";export{default as TokenFeeScheduleUpdateTransaction}from"./token/TokenFeeScheduleUpdateTransaction.js";export{default as TokenFreezeTransaction}from"./token/TokenFreezeTransaction.js";export{default as TokenGrantKycTransaction}from"./token/TokenGrantKycTransaction.js";export{default as TokenId}from"./token/TokenId.js";export{default as TokenInfo}from"./token/TokenInfo.js";export{default as TokenInfoQuery}from"./token/TokenInfoQuery.js";export{default as TokenMintTransaction}from"./token/TokenMintTransaction.js";export{default as TokenNftAllowance}from"./account/TokenNftAllowance.js";export{default as TokenNftInfo}from"./token/TokenNftInfo.js";export{default as TokenNftInfoQuery}from"./token/TokenNftInfoQuery.js";export{default as TokenPauseTransaction}from"./token/TokenPauseTransaction.js";export{default as TokenRevokeKycTransaction}from"./token/TokenRevokeKycTransaction.js";export{default as TokenSupplyType}from"./token/TokenSupplyType.js";export{default as TokenType}from"./token/TokenType.js";export{default as TokenUnfreezeTransaction}from"./token/TokenUnfreezeTransaction.js";export{default as TokenUnpauseTransaction}from"./token/TokenUnpauseTransaction.js";export{default as TokenUpdateTransaction}from"./token/TokenUpdateTransaction.js";export{default as TokenWipeTransaction}from"./token/TokenWipeTransaction.js";export{default as TopicCreateTransaction}from"./topic/TopicCreateTransaction.js";export{default as TopicDeleteTransaction}from"./topic/TopicDeleteTransaction.js";export{default as TopicId}from"./topic/TopicId.js";export{default as TopicInfo}from"./topic/TopicInfo.js";export{default as TopicInfoQuery}from"./topic/TopicInfoQuery.js";export{default as TopicMessage}from"./topic/TopicMessage.js";export{default as TopicMessageChunk}from"./topic/TopicMessageChunk.js";export{default as TopicMessageQuery}from"./topic/TopicMessageQuery.js";export{default as TopicMessageSubmitTransaction}from"./topic/TopicMessageSubmitTransaction.js";export{default as TopicUpdateTransaction}from"./topic/TopicUpdateTransaction.js";export{default as CustomFeeLimit}from"./transaction/CustomFeeLimit.js";export{default as Transaction}from"./transaction/Transaction.js";export{default as TransactionFeeSchedule}from"./TransactionFeeSchedule.js";export{default as TransactionId}from"./transaction/TransactionId.js";export{default as TransactionReceipt}from"./transaction/TransactionReceipt.js";export{default as TransactionReceiptQuery}from"./transaction/TransactionReceiptQuery.js";export{default as TransactionRecord}from"./transaction/TransactionRecord.js";export{default as TransactionRecordQuery}from"./transaction/TransactionRecordQuery.js";export{default as TransactionResponse}from"./transaction/TransactionResponse.js";export{default as Transfer}from"./Transfer.js";export{default as TransferTransaction}from"./account/TransferTransaction.js";export{default as Wallet}from"./Wallet.js";export{default as Logger}from"./logger/Logger.js";export{default as LogLevel}from"./logger/LogLevel.js";export{default as FreezeType}from"./FreezeType.js";export{default as TokenKeyValidation}from"./token/TokenKeyValidation.js";export{default as StatusError}from"./StatusError.js";export{default as MaxAttemptsOrTimeoutError}from"./MaxAttemptsOrTimeoutError.js";export{default as PrecheckStatusError}from"./PrecheckStatusError.js";export{default as ReceiptStatusError}from"./ReceiptStatusError.js";export{default as LedgerId}from"./LedgerId.js";export{default as TokenUpdateNftsTransaction}from"./token/TokenUpdateNftsTransaction.js";export{default as NodeCreateTransaction}from"./node/NodeCreateTransaction.js";export{default as ServiceEndpoint}from"./node/ServiceEndpoint.js";export{default as NodeDeleteTransaction}from"./node/NodeDeleteTransaction.js";export{default as NodeUpdateTransaction}from"./node/NodeUpdateTransaction.js";export{default as WebClient}from"./client/WebClient.js";export{BadKeyError,BadMnemonicError,BadMnemonicReason,HEDERA_PATH,SLIP44_ECDSA_ETH_PATH,SLIP44_ECDSA_HEDERA_PATH}from"@hashgraph/cryptography";export{default as Provider}from"./Provider.js";export{default as Signer}from"./Signer.js";export{default as Long}from"long";import*as e from"./EntityIdHelper.js";export{e as EntityIdHelper};
1
+ export{NetworkName}from"./exports.js";export{default as Client}from"./client/NativeClient.js";export{default as AddressBookQuery}from"./network/AddressBookQueryWeb.js";export{default as Cache}from"./Cache.js";export{default as PrivateKey}from"./PrivateKey.js";export{default as PublicKey}from"./PublicKey.js";export{default as KeyList}from"./KeyList.js";export{default as Key}from"./Key.js";export{default as Mnemonic}from"./Mnemonic.js";export{default as TokenAirdropTransaction}from"./token/TokenAirdropTransaction.js";export{default as TokenClaimAirdropTransaction}from"./token/TokenClaimAirdropTransaction.js";export{default as TokenCancelAirdropTransaction}from"./token/TokenCancelAirdropTransaction.js";export{default as AccountAllowanceAdjustTransaction}from"./account/AccountAllowanceAdjustTransaction.js";export{default as AccountAllowanceApproveTransaction}from"./account/AccountAllowanceApproveTransaction.js";export{default as AccountAllowanceDeleteTransaction}from"./account/AccountAllowanceDeleteTransaction.js";export{default as AccountBalance}from"./account/AccountBalance.js";export{default as AccountBalanceQuery}from"./account/AccountBalanceQuery.js";export{default as AccountCreateTransaction}from"./account/AccountCreateTransaction.js";export{default as AccountDeleteTransaction}from"./account/AccountDeleteTransaction.js";export{default as AccountId}from"./account/AccountId.js";export{default as AccountInfo}from"./account/AccountInfo.js";export{default as AccountInfoFlow}from"./account/AccountInfoFlow.js";export{default as AccountInfoQuery}from"./account/AccountInfoQuery.js";export{default as AccountRecordsQuery}from"./account/AccountRecordsQuery.js";export{default as AccountUpdateTransaction}from"./account/AccountUpdateTransaction.js";export{default as AssessedCustomFee}from"./token/AssessedCustomFee.js";export{default as BatchTransaction}from"./transaction/BatchTransaction.js";export{default as ContractByteCodeQuery}from"./contract/ContractByteCodeQuery.js";export{default as ContractCallQuery}from"./contract/ContractCallQuery.js";export{default as ContractCreateFlow}from"./contract/ContractCreateFlow.js";export{default as ContractCreateTransaction}from"./contract/ContractCreateTransaction.js";export{default as ContractDeleteTransaction}from"./contract/ContractDeleteTransaction.js";export{default as ContractExecuteTransaction}from"./contract/ContractExecuteTransaction.js";export{default as ContractFunctionParameters}from"./contract/ContractFunctionParameters.js";export{default as ContractFunctionResult}from"./contract/ContractFunctionResult.js";export{default as ContractFunctionSelector}from"./contract/ContractFunctionSelector.js";export{default as ContractId}from"./contract/ContractId.js";export{default as ContractInfo}from"./contract/ContractInfo.js";export{default as ContractInfoQuery}from"./contract/ContractInfoQuery.js";export{default as ContractLogInfo}from"./contract/ContractLogInfo.js";export{default as ContractNonceInfo}from"./contract/ContractNonceInfo.js";export{default as ContractUpdateTransaction}from"./contract/ContractUpdateTransaction.js";export{default as CustomFee}from"./token/CustomFee.js";export{default as CustomFixedFee}from"./token/CustomFixedFee.js";export{default as CustomFractionalFee}from"./token/CustomFractionalFee.js";export{default as CustomRoyaltyFee}from"./token/CustomRoyaltyFee.js";export{default as DelegateContractId}from"./contract/DelegateContractId.js";export{default as EthereumTransaction}from"./EthereumTransaction.js";export{default as EthereumTransactionDataLegacy}from"./EthereumTransactionDataLegacy.js";export{default as EthereumTransactionDataEip1559}from"./EthereumTransactionDataEip1559.js";export{default as EthereumTransactionDataEip2930}from"./EthereumTransactionDataEip2930.js";export{default as EthereumTransactionData}from"./EthereumTransactionData.js";export{default as EthereumFlow}from"./EthereumFlow.js";export{default as EvmAddress}from"./EvmAddress.js";export{default as ExchangeRate}from"./ExchangeRate.js";export{default as ExchangeRates}from"./ExchangeRates.js";export{default as Executable}from"./Executable.js";export{default as FeeAssessmentMethod}from"./token/FeeAssessmentMethod.js";export{default as FeeComponents}from"./FeeComponents.js";export{default as FeeData}from"./FeeData.js";export{default as FeeDataType}from"./FeeDataType.js";export{default as FeeSchedule}from"./FeeSchedule.js";export{default as FeeSchedules}from"./FeeSchedules.js";export{default as FileAppendTransaction}from"./file/FileAppendTransaction.js";export{default as FileContentsQuery}from"./file/FileContentsQuery.js";export{default as FileCreateTransaction}from"./file/FileCreateTransaction.js";export{default as FileDeleteTransaction}from"./file/FileDeleteTransaction.js";export{default as FileId}from"./file/FileId.js";export{default as FileInfo}from"./file/FileInfo.js";export{default as FileInfoQuery}from"./file/FileInfoQuery.js";export{default as FileUpdateTransaction}from"./file/FileUpdateTransaction.js";export{default as FreezeTransaction}from"./system/FreezeTransaction.js";export{default as Hbar}from"./Hbar.js";export{default as HbarAllowance}from"./account/HbarAllowance.js";export{default as HbarUnit}from"./HbarUnit.js";export{default as LiveHash}from"./account/LiveHash.js";export{default as LiveHashAddTransaction}from"./account/LiveHashAddTransaction.js";export{default as LiveHashDeleteTransaction}from"./account/LiveHashDeleteTransaction.js";export{default as LiveHashQuery}from"./account/LiveHashQuery.js";export{default as MaxQueryPaymentExceeded}from"./MaxQueryPaymentExceeded.js";export{default as MirrorNodeContractCallQuery}from"./query/MirrorNodeContractCallQuery.js";export{default as MirrorNodeContractEstimateQuery}from"./query/MirrorNodeContractEstimateQuery.js";export{default as NodeAddressBook}from"./address_book/NodeAddressBook.js";export{default as NetworkVersionInfo}from"./network/NetworkVersionInfo.js";export{default as NetworkVersionInfoQuery}from"./network/NetworkVersionInfoQuery.js";export{default as NftId}from"./token/NftId.js";export{default as PendingAirdropId}from"./token/PendingAirdropId.js";export{default as PrngTransaction}from"./PrngTransaction.js";export{default as ProxyStaker}from"./account/ProxyStaker.js";export{default as Query}from"./query/Query.js";export{default as RequestType}from"./RequestType.js";export{default as ScheduleCreateTransaction}from"./schedule/ScheduleCreateTransaction.js";export{default as ScheduleDeleteTransaction}from"./schedule/ScheduleDeleteTransaction.js";export{default as ScheduleId}from"./schedule/ScheduleId.js";export{default as ScheduleInfo}from"./schedule/ScheduleInfo.js";export{default as ScheduleInfoQuery}from"./schedule/ScheduleInfoQuery.js";export{default as ScheduleSignTransaction}from"./schedule/ScheduleSignTransaction.js";export{default as SemanticVersion}from"./network/SemanticVersion.js";export{default as SignatureMap}from"./transaction/SignatureMap.js";export{default as SignerSignature}from"./SignerSignature.js";export{default as Status}from"./Status.js";export{default as SubscriptionHandle}from"./topic/SubscriptionHandle.js";export{default as SystemDeleteTransaction}from"./system/SystemDeleteTransaction.js";export{default as SystemUndeleteTransaction}from"./system/SystemUndeleteTransaction.js";export{default as Timestamp}from"./Timestamp.js";export{default as TokenAllowance}from"./account/TokenAllowance.js";export{default as TokenAssociateTransaction}from"./token/TokenAssociateTransaction.js";export{default as TokenBurnTransaction}from"./token/TokenBurnTransaction.js";export{default as TokenRejectTransaction}from"./token/TokenRejectTransaction.js";export{default as TokenRejectFlow}from"./token/TokenRejectFlow.js";export{default as TokenCreateTransaction}from"./token/TokenCreateTransaction.js";export{default as TokenDeleteTransaction}from"./token/TokenDeleteTransaction.js";export{default as TokenDissociateTransaction}from"./token/TokenDissociateTransaction.js";export{default as TokenFeeScheduleUpdateTransaction}from"./token/TokenFeeScheduleUpdateTransaction.js";export{default as TokenFreezeTransaction}from"./token/TokenFreezeTransaction.js";export{default as TokenGrantKycTransaction}from"./token/TokenGrantKycTransaction.js";export{default as TokenId}from"./token/TokenId.js";export{default as TokenInfo}from"./token/TokenInfo.js";export{default as TokenInfoQuery}from"./token/TokenInfoQuery.js";export{default as TokenMintTransaction}from"./token/TokenMintTransaction.js";export{default as TokenNftAllowance}from"./account/TokenNftAllowance.js";export{default as TokenNftInfo}from"./token/TokenNftInfo.js";export{default as TokenNftInfoQuery}from"./token/TokenNftInfoQuery.js";export{default as TokenPauseTransaction}from"./token/TokenPauseTransaction.js";export{default as TokenRevokeKycTransaction}from"./token/TokenRevokeKycTransaction.js";export{default as TokenSupplyType}from"./token/TokenSupplyType.js";export{default as TokenType}from"./token/TokenType.js";export{default as TokenUnfreezeTransaction}from"./token/TokenUnfreezeTransaction.js";export{default as TokenUnpauseTransaction}from"./token/TokenUnpauseTransaction.js";export{default as TokenUpdateTransaction}from"./token/TokenUpdateTransaction.js";export{default as TokenWipeTransaction}from"./token/TokenWipeTransaction.js";export{default as TopicCreateTransaction}from"./topic/TopicCreateTransaction.js";export{default as TopicDeleteTransaction}from"./topic/TopicDeleteTransaction.js";export{default as TopicId}from"./topic/TopicId.js";export{default as TopicInfo}from"./topic/TopicInfo.js";export{default as TopicInfoQuery}from"./topic/TopicInfoQuery.js";export{default as TopicMessage}from"./topic/TopicMessage.js";export{default as TopicMessageChunk}from"./topic/TopicMessageChunk.js";export{default as TopicMessageQuery}from"./topic/TopicMessageQuery.js";export{default as TopicMessageSubmitTransaction}from"./topic/TopicMessageSubmitTransaction.js";export{default as TopicUpdateTransaction}from"./topic/TopicUpdateTransaction.js";export{default as CustomFeeLimit}from"./transaction/CustomFeeLimit.js";export{default as Transaction}from"./transaction/Transaction.js";export{default as TransactionFeeSchedule}from"./TransactionFeeSchedule.js";export{default as TransactionId}from"./transaction/TransactionId.js";export{default as TransactionReceipt}from"./transaction/TransactionReceipt.js";export{default as TransactionReceiptQuery}from"./transaction/TransactionReceiptQuery.js";export{default as TransactionRecord}from"./transaction/TransactionRecord.js";export{default as TransactionRecordQuery}from"./transaction/TransactionRecordQuery.js";export{default as TransactionResponse}from"./transaction/TransactionResponse.js";export{default as Transfer}from"./Transfer.js";export{default as TransferTransaction}from"./account/TransferTransaction.js";export{default as Wallet}from"./Wallet.js";export{default as Logger}from"./logger/Logger.js";export{default as LogLevel}from"./logger/LogLevel.js";export{default as FreezeType}from"./FreezeType.js";export{default as TokenKeyValidation}from"./token/TokenKeyValidation.js";export{default as StatusError}from"./StatusError.js";export{default as MaxAttemptsOrTimeoutError}from"./MaxAttemptsOrTimeoutError.js";export{default as PrecheckStatusError}from"./PrecheckStatusError.js";export{default as ReceiptStatusError}from"./ReceiptStatusError.js";export{default as LedgerId}from"./LedgerId.js";export{default as TokenUpdateNftsTransaction}from"./token/TokenUpdateNftsTransaction.js";export{default as NodeCreateTransaction}from"./node/NodeCreateTransaction.js";export{default as ServiceEndpoint}from"./node/ServiceEndpoint.js";export{default as NodeDeleteTransaction}from"./node/NodeDeleteTransaction.js";export{default as NodeUpdateTransaction}from"./node/NodeUpdateTransaction.js";export{default as WebClient}from"./client/WebClient.js";export{BadKeyError,BadMnemonicError,BadMnemonicReason,HEDERA_PATH,SLIP44_ECDSA_ETH_PATH,SLIP44_ECDSA_HEDERA_PATH}from"@hashgraph/cryptography";export{default as Provider}from"./Provider.js";export{default as Signer}from"./Signer.js";export{default as Long}from"long";import*as e from"./EntityIdHelper.js";export{e as EntityIdHelper};
2
2
  //# sourceMappingURL=native.js.map
package/lib/version.js CHANGED
@@ -1,2 +1,2 @@
1
- const e="hiero-sdk-js",o="2.71.0-beta.0";export{e as SDK_NAME,o as SDK_VERSION};
1
+ const o="hiero-sdk-js",s="2.71.0";export{o as SDK_NAME,s as SDK_VERSION};
2
2
  //# sourceMappingURL=version.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hiero-ledger/sdk",
3
- "version": "2.71.0-beta.0",
3
+ "version": "2.71.0",
4
4
  "description": "Hiero SDK",
5
5
  "types": "./lib/index.d.ts",
6
6
  "main": "./lib/index.cjs",
@@ -62,7 +62,7 @@
62
62
  "@ethersproject/rlp": "^5.8.0",
63
63
  "@grpc/grpc-js": "^1.12.6",
64
64
  "@hashgraph/cryptography": "1.9.0",
65
- "@hashgraph/proto": "2.20.0",
65
+ "@hashgraph/proto": "2.22.0",
66
66
  "bignumber.js": "^9.1.1",
67
67
  "bn.js": "^5.1.1",
68
68
  "crypto-js": "^4.2.0",
package/src/LedgerId.js CHANGED
@@ -40,11 +40,11 @@ export default class LedgerId {
40
40
  case "3":
41
41
  return LedgerId.LOCAL_NODE;
42
42
  default: {
43
- let ledgerIdDecoded = hex.decode(ledgerId);
44
- if (ledgerIdDecoded.length == 0 && ledgerId.length != 0) {
45
- throw new Error("Default reached for fromString");
46
- } else {
43
+ try {
44
+ let ledgerIdDecoded = hex.decode(ledgerId);
47
45
  return new LedgerId(ledgerIdDecoded);
46
+ } catch (error) {
47
+ throw new Error("Default reached for fromString");
48
48
  }
49
49
  }
50
50
  }
@@ -41,11 +41,19 @@ export default class NativeChannel extends Channel {
41
41
  new Uint8Array(encodeRequest(requestData)),
42
42
  );
43
43
 
44
+ const shouldUseHttps = !(
45
+ this._address.includes("localhost") ||
46
+ this._address.includes("127.0.0.1")
47
+ );
48
+
49
+ const address = shouldUseHttps
50
+ ? `https://${this._address}`
51
+ : `http://${this._address}`;
44
52
  // this will be executed in react native environment sho
45
53
  // fetch should be available
46
54
  //eslint-disable-next-line n/no-unsupported-features/node-builtins
47
55
  const response = await fetch(
48
- `${this._address}/proto.${serviceName}/${method.name}`,
56
+ `${address}/proto.${serviceName}/${method.name}`,
49
57
  {
50
58
  method: "POST",
51
59
  headers: {
@@ -75,8 +75,6 @@ export default class NodeMirrorChannel extends MirrorChannel {
75
75
  .on("status", (/** @type {grpc.StatusObject} */ status) => {
76
76
  if (status.code == 0) {
77
77
  end();
78
- } else {
79
- error(status);
80
78
  }
81
79
  })
82
80
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
@@ -731,11 +731,11 @@ export default class Client {
731
731
 
732
732
  /**
733
733
  * Update the network address book.
734
- * @returns {Promise<void>}
734
+ * @returns {Promise<this>}
735
735
  */
736
736
  async updateNetwork() {
737
737
  if (this._isUpdatingNetwork) {
738
- return;
738
+ return this;
739
739
  }
740
740
 
741
741
  this._isUpdatingNetwork = true;
@@ -758,6 +758,8 @@ export default class Client {
758
758
  } finally {
759
759
  this._isUpdatingNetwork = false;
760
760
  }
761
+
762
+ return this;
761
763
  }
762
764
 
763
765
  /**
@@ -5,40 +5,13 @@ import NativeChannel from "../channel/NativeChannel.js";
5
5
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
6
6
  import AccountId from "../account/AccountId.js";
7
7
  import LedgerId from "../LedgerId.js";
8
- import {
9
- MAINNET,
10
- NATIVE_TESTNET,
11
- NATIVE_PREVIEWNET,
12
- } from "../constants/ClientConstants.js";
8
+ import { MirrorNetwork, WebNetwork } from "../constants/ClientConstants.js";
9
+ import AddressBookQuery from "../network/AddressBookQueryWeb.js";
10
+ import FileId from "../file/FileId.js";
13
11
 
14
12
  /**
15
13
  * @typedef {import("./Client.js").ClientConfiguration} ClientConfiguration
16
14
  */
17
- export const Network = {
18
- /**
19
- * @param {string} name
20
- * @returns {{[key: string]: (string | AccountId)}}
21
- */
22
- fromName(name) {
23
- switch (name) {
24
- case "mainnet":
25
- return Network.MAINNET;
26
-
27
- case "testnet":
28
- return Network.TESTNET;
29
-
30
- case "previewnet":
31
- return Network.PREVIEWNET;
32
-
33
- default:
34
- throw new Error(`unknown network name: ${name}`);
35
- }
36
- },
37
-
38
- MAINNET: MAINNET,
39
- TESTNET: NATIVE_TESTNET,
40
- PREVIEWNET: NATIVE_PREVIEWNET,
41
- };
42
15
 
43
16
  /**
44
17
  * @augments {Client<NativeChannel, *>}
@@ -54,18 +27,21 @@ export default class NativeClient extends Client {
54
27
  if (typeof props.network === "string") {
55
28
  switch (props.network) {
56
29
  case "mainnet":
57
- this.setNetwork(Network.MAINNET);
30
+ this.setNetwork(WebNetwork.MAINNET);
58
31
  this.setLedgerId(LedgerId.MAINNET);
32
+ this.setMirrorNetwork(MirrorNetwork.MAINNET);
59
33
  break;
60
34
 
61
35
  case "testnet":
62
- this.setNetwork(Network.TESTNET);
36
+ this.setNetwork(WebNetwork.TESTNET);
63
37
  this.setLedgerId(LedgerId.TESTNET);
38
+ this.setMirrorNetwork(MirrorNetwork.TESTNET);
64
39
  break;
65
40
 
66
41
  case "previewnet":
67
- this.setNetwork(Network.PREVIEWNET);
42
+ this.setNetwork(WebNetwork.PREVIEWNET);
68
43
  this.setLedgerId(LedgerId.PREVIEWNET);
44
+ this.setMirrorNetwork(MirrorNetwork.PREVIEWNET);
69
45
  break;
70
46
 
71
47
  default:
@@ -121,7 +97,6 @@ export default class NativeClient extends Client {
121
97
  static forNetwork(network) {
122
98
  return new NativeClient({
123
99
  network,
124
- scheduleNetworkUpdate: false,
125
100
  });
126
101
  }
127
102
 
@@ -130,7 +105,7 @@ export default class NativeClient extends Client {
130
105
  * @returns {NativeClient}
131
106
  */
132
107
  static forName(network) {
133
- return new NativeClient({ network, scheduleNetworkUpdate: false });
108
+ return new NativeClient({ network });
134
109
  }
135
110
 
136
111
  /**
@@ -141,7 +116,6 @@ export default class NativeClient extends Client {
141
116
  static forMainnet() {
142
117
  return new NativeClient({
143
118
  network: "mainnet",
144
- scheduleNetworkUpdate: false,
145
119
  });
146
120
  }
147
121
 
@@ -153,7 +127,6 @@ export default class NativeClient extends Client {
153
127
  static forTestnet() {
154
128
  return new NativeClient({
155
129
  network: "testnet",
156
- scheduleNetworkUpdate: false,
157
130
  });
158
131
  }
159
132
 
@@ -165,10 +138,76 @@ export default class NativeClient extends Client {
165
138
  static forPreviewnet() {
166
139
  return new NativeClient({
167
140
  network: "previewnet",
168
- scheduleNetworkUpdate: false,
169
141
  });
170
142
  }
171
143
 
144
+ /**
145
+ * Construct a Hedera client pre-configured for Mainnet access with network update.
146
+ *
147
+ * @returns {Promise<NativeClient>}
148
+ */
149
+ static async forMainnetAsync() {
150
+ return new NativeClient({
151
+ network: "mainnet",
152
+ }).updateNetwork();
153
+ }
154
+
155
+ /**
156
+ * Construct a Hedera client pre-configured for Testnet access with network update.
157
+ *
158
+ * @returns {Promise<NativeClient>}
159
+ */
160
+ static async forTestnetAsync() {
161
+ return new NativeClient({
162
+ network: "testnet",
163
+ }).updateNetwork();
164
+ }
165
+
166
+ /**
167
+ * Construct a Hedera client pre-configured for Previewnet access with network update.
168
+ *
169
+ * @returns {Promise<NativeClient>}
170
+ */
171
+ static async forPreviewnetAsync() {
172
+ return new NativeClient({
173
+ network: "previewnet",
174
+ }).updateNetwork();
175
+ }
176
+
177
+ /**
178
+ * Construct a client for a specific network with optional network update.
179
+ * Updates network only if the network is not "local-node".
180
+ *
181
+ * @param {string} network
182
+ * @returns {Promise<NativeClient>}
183
+ */
184
+ static async forNameAsync(network) {
185
+ const client = new NativeClient({ network });
186
+
187
+ if (network !== "local-node") {
188
+ await client.updateNetwork();
189
+ }
190
+
191
+ return client;
192
+ }
193
+
194
+ /**
195
+ * Construct a client configured to use mirror nodes.
196
+ * This will query the address book to get the network nodes.
197
+ *
198
+ * @param {string[] | string} mirrorNetwork
199
+ * @returns {Promise<NativeClient>}
200
+ */
201
+ static async forMirrorNetwork(mirrorNetwork) {
202
+ const client = new NativeClient({
203
+ mirrorNetwork,
204
+ });
205
+
206
+ await client.updateNetwork();
207
+
208
+ return client;
209
+ }
210
+
172
211
  /**
173
212
  * @param {{[key: string]: (string | AccountId)} | string} network
174
213
  * @returns {void}
@@ -177,13 +216,13 @@ export default class NativeClient extends Client {
177
216
  if (typeof network === "string") {
178
217
  switch (network) {
179
218
  case "previewnet":
180
- this._network.setNetwork(Network.PREVIEWNET);
219
+ this._network.setNetwork(WebNetwork.PREVIEWNET);
181
220
  break;
182
221
  case "testnet":
183
- this._network.setNetwork(Network.TESTNET);
222
+ this._network.setNetwork(WebNetwork.TESTNET);
184
223
  break;
185
224
  case "mainnet":
186
- this._network.setNetwork(Network.MAINNET);
225
+ this._network.setNetwork(WebNetwork.MAINNET);
187
226
  }
188
227
  } else {
189
228
  this._network.setNetwork(network);
@@ -192,11 +231,75 @@ export default class NativeClient extends Client {
192
231
 
193
232
  /**
194
233
  * @param {string[] | string} mirrorNetwork
195
- * @returns {void}
234
+ * @returns {this}
196
235
  */
197
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
198
236
  setMirrorNetwork(mirrorNetwork) {
199
- // Do nothing as this is not currently supported
237
+ if (typeof mirrorNetwork === "string") {
238
+ switch (mirrorNetwork) {
239
+ case "local-node":
240
+ this._mirrorNetwork.setNetwork(MirrorNetwork.LOCAL_NODE);
241
+ break;
242
+ case "previewnet":
243
+ this._mirrorNetwork.setNetwork(MirrorNetwork.PREVIEWNET);
244
+ break;
245
+ case "testnet":
246
+ this._mirrorNetwork.setNetwork(MirrorNetwork.TESTNET);
247
+ break;
248
+ case "mainnet":
249
+ this._mirrorNetwork.setNetwork(MirrorNetwork.MAINNET);
250
+ break;
251
+ default:
252
+ this._mirrorNetwork.setNetwork([mirrorNetwork]);
253
+ }
254
+ } else {
255
+ this._mirrorNetwork.setNetwork(mirrorNetwork);
256
+ }
257
+
258
+ return this;
259
+ }
260
+
261
+ /**
262
+ * @override
263
+ * @returns {Promise<this>}
264
+ */
265
+ async updateNetwork() {
266
+ if (this._isUpdatingNetwork) {
267
+ return this;
268
+ }
269
+
270
+ this._isUpdatingNetwork = true;
271
+
272
+ try {
273
+ const addressBook = await new AddressBookQuery()
274
+ .setFileId(
275
+ FileId.getAddressBookFileIdFor(this.shard, this.realm),
276
+ )
277
+ .execute(this);
278
+
279
+ /** @type {Record<string, AccountId>} */
280
+ const network = {};
281
+ for (const nodeAddress of addressBook.nodeAddresses) {
282
+ for (const endpoint of nodeAddress.addresses) {
283
+ if (nodeAddress.accountId != null) {
284
+ network[endpoint.toString()] = nodeAddress.accountId;
285
+ }
286
+ }
287
+ }
288
+
289
+ this.setNetwork(network);
290
+ } catch (/** @type {unknown} */ error) {
291
+ if (this._logger) {
292
+ const errorMessage =
293
+ error instanceof Error ? error.message : String(error);
294
+ this._logger.trace(
295
+ `failed to update client address book: ${errorMessage}`,
296
+ );
297
+ }
298
+ } finally {
299
+ this._isUpdatingNetwork = false;
300
+ }
301
+
302
+ return this;
200
303
  }
201
304
 
202
305
  /**
@@ -208,11 +311,12 @@ export default class NativeClient extends Client {
208
311
  }
209
312
 
210
313
  /**
211
- * @abstract
314
+ * @override
212
315
  * @returns {(address: string) => *}
213
316
  */
214
317
  _createMirrorNetworkChannel() {
215
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
216
- return (address) => null;
318
+ return () => {
319
+ throw new Error("mirror support is not supported in native");
320
+ };
217
321
  }
218
322
  }
@@ -165,13 +165,11 @@ export default class NodeClient extends Client {
165
165
  * @returns {Promise<NodeClient>}
166
166
  */
167
167
  static async forMirrorNetwork(mirrorNetwork, shard, realm) {
168
- const INITIAL_UPDATE_PERIOD = 10_000;
169
-
170
168
  const client = new NodeClient({
171
169
  mirrorNetwork,
172
170
  shard,
173
171
  realm,
174
- }).setNetworkUpdatePeriod(INITIAL_UPDATE_PERIOD);
172
+ });
175
173
 
176
174
  await client.updateNetwork();
177
175
 
@@ -203,6 +201,61 @@ export default class NodeClient extends Client {
203
201
  });
204
202
  }
205
203
 
204
+ /**
205
+ * Construct a Hedera client pre-configured for Mainnet access with network update.
206
+ *
207
+ * @param {object} [props]
208
+ * @param {boolean} [props.scheduleNetworkUpdate]
209
+ * @returns {Promise<NodeClient>}
210
+ */
211
+ static async forMainnetAsync(props = {}) {
212
+ return new NodeClient({ network: "mainnet", ...props }).updateNetwork();
213
+ }
214
+
215
+ /**
216
+ * Construct a Hedera client pre-configured for Testnet access with network update.
217
+ *
218
+ * @param {object} [props]
219
+ * @param {boolean} [props.scheduleNetworkUpdate]
220
+ * @returns {Promise<NodeClient>}
221
+ */
222
+ static async forTestnetAsync(props = {}) {
223
+ return new NodeClient({ network: "testnet", ...props }).updateNetwork();
224
+ }
225
+
226
+ /**
227
+ * Construct a Hedera client pre-configured for Previewnet access with network update.
228
+ *
229
+ * @param {object} [props]
230
+ * @param {boolean} [props.scheduleNetworkUpdate]
231
+ * @returns {Promise<NodeClient>}
232
+ */
233
+ static async forPreviewnetAsync(props = {}) {
234
+ return new NodeClient({
235
+ network: "previewnet",
236
+ ...props,
237
+ }).updateNetwork();
238
+ }
239
+
240
+ /**
241
+ * Construct a client for a specific network with optional network update.
242
+ * Updates network only if the network is not "local-node".
243
+ *
244
+ * @param {string} network
245
+ * @param {object} [props]
246
+ * @param {boolean} [props.scheduleNetworkUpdate]
247
+ * @returns {Promise<NodeClient>}
248
+ */
249
+ static async forNameAsync(network, props = {}) {
250
+ const client = new NodeClient({ network, ...props });
251
+
252
+ if (network !== "local-node") {
253
+ await client.updateNetwork();
254
+ }
255
+
256
+ return client;
257
+ }
258
+
206
259
  /**
207
260
  * @param {{[key: string]: (string | AccountId)} | string} network
208
261
  * @returns {void}