@hashgraph/hedera-wallet-connect 1.3.2-0 → 1.3.2-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 (99) hide show
  1. package/README.md +4 -4
  2. package/dist/src/index.d.ts +1 -0
  3. package/dist/src/index.js +20 -0
  4. package/dist/{types/src → src}/lib/dapp/DAppSigner.d.ts +0 -1
  5. package/dist/src/lib/dapp/DAppSigner.js +214 -0
  6. package/dist/{types/src → src}/lib/dapp/index.d.ts +0 -1
  7. package/dist/src/lib/dapp/index.js +431 -0
  8. package/dist/{types/src → src}/lib/index.d.ts +0 -1
  9. package/dist/src/lib/index.js +22 -0
  10. package/dist/{types/src → src}/lib/shared/chainIds.d.ts +0 -1
  11. package/dist/src/lib/shared/chainIds.js +31 -0
  12. package/dist/{types/src → src}/lib/shared/errors.d.ts +0 -1
  13. package/dist/src/lib/shared/errors.js +51 -0
  14. package/dist/{types/src → src}/lib/shared/events.d.ts +0 -1
  15. package/dist/src/lib/shared/events.js +27 -0
  16. package/dist/{types/src → src}/lib/shared/extensionController.d.ts +0 -1
  17. package/dist/src/lib/shared/extensionController.js +42 -0
  18. package/dist/{types/src → src}/lib/shared/index.d.ts +0 -1
  19. package/dist/src/lib/shared/index.js +26 -0
  20. package/dist/{types/src → src}/lib/shared/methods.d.ts +0 -1
  21. package/dist/src/lib/shared/methods.js +32 -0
  22. package/dist/{types/src → src}/lib/shared/payloads.d.ts +0 -1
  23. package/dist/src/lib/shared/payloads.js +20 -0
  24. package/dist/{types/src → src}/lib/shared/utils.d.ts +0 -1
  25. package/dist/src/lib/shared/utils.js +424 -0
  26. package/dist/{types/src → src}/lib/wallet/index.d.ts +0 -1
  27. package/dist/src/lib/wallet/index.js +301 -0
  28. package/dist/{types/src → src}/lib/wallet/provider.d.ts +0 -1
  29. package/dist/src/lib/wallet/provider.js +58 -0
  30. package/dist/{types/src → src}/lib/wallet/types.d.ts +0 -1
  31. package/dist/src/lib/wallet/types.js +20 -0
  32. package/dist/{types/test → test}/_helpers.d.ts +0 -1
  33. package/dist/test/_helpers.js +95 -0
  34. package/dist/test/dapp/DAppConnector.test.d.ts +1 -0
  35. package/dist/test/dapp/DAppConnector.test.js +236 -0
  36. package/dist/test/dapp/DAppSigner.test.d.ts +1 -0
  37. package/dist/test/dapp/DAppSigner.test.js +155 -0
  38. package/dist/test/utils.test.d.ts +1 -0
  39. package/dist/test/utils.test.js +202 -0
  40. package/dist/test/wallet/methods/wallet-executeTransaction.test.d.ts +1 -0
  41. package/dist/test/wallet/methods/wallet-executeTransaction.test.js +43 -0
  42. package/dist/test/wallet/methods/wallet-getNodeAddresses.test.d.ts +1 -0
  43. package/dist/test/wallet/methods/wallet-getNodeAddresses.test.js +40 -0
  44. package/dist/test/wallet/methods/wallet-signAndExecuteQuery.test.d.ts +1 -0
  45. package/dist/test/wallet/methods/wallet-signAndExecuteQuery.test.js +41 -0
  46. package/dist/test/wallet/methods/wallet-signAndExecuteTransaction.test.d.ts +1 -0
  47. package/dist/test/wallet/methods/wallet-signAndExecuteTransaction.test.js +48 -0
  48. package/dist/test/wallet/methods/wallet-signMessage.test.d.ts +1 -0
  49. package/dist/test/wallet/methods/wallet-signMessage.test.js +60 -0
  50. package/dist/test/wallet/methods/wallet-signTransaction.test.d.ts +1 -0
  51. package/dist/test/wallet/methods/wallet-signTransaction.test.js +45 -0
  52. package/dist/test/wallet/wallet-init.test.d.ts +1 -0
  53. package/dist/test/wallet/wallet-init.test.js +53 -0
  54. package/package.json +11 -19
  55. package/dist/browser-cjs-metafile.json +0 -1
  56. package/dist/browser-cjs.js +0 -250
  57. package/dist/browser-esm-metafile.json +0 -1
  58. package/dist/browser-esm.js +0 -250
  59. package/dist/node-cjs-metafile.json +0 -1
  60. package/dist/node-cjs.js +0 -11404
  61. package/dist/node-esm-metafile.json +0 -1
  62. package/dist/node-esm.js +0 -11404
  63. package/dist/types/src/index.d.ts +0 -2
  64. package/dist/types/src/index.d.ts.map +0 -1
  65. package/dist/types/src/lib/dapp/DAppSigner.d.ts.map +0 -1
  66. package/dist/types/src/lib/dapp/index.d.ts.map +0 -1
  67. package/dist/types/src/lib/index.d.ts.map +0 -1
  68. package/dist/types/src/lib/shared/chainIds.d.ts.map +0 -1
  69. package/dist/types/src/lib/shared/errors.d.ts.map +0 -1
  70. package/dist/types/src/lib/shared/events.d.ts.map +0 -1
  71. package/dist/types/src/lib/shared/extensionController.d.ts.map +0 -1
  72. package/dist/types/src/lib/shared/index.d.ts.map +0 -1
  73. package/dist/types/src/lib/shared/methods.d.ts.map +0 -1
  74. package/dist/types/src/lib/shared/payloads.d.ts.map +0 -1
  75. package/dist/types/src/lib/shared/utils.d.ts.map +0 -1
  76. package/dist/types/src/lib/wallet/index.d.ts.map +0 -1
  77. package/dist/types/src/lib/wallet/provider.d.ts.map +0 -1
  78. package/dist/types/src/lib/wallet/types.d.ts.map +0 -1
  79. package/dist/types/test/_helpers.d.ts.map +0 -1
  80. package/dist/types/test/dapp/DAppConnector.test.d.ts +0 -2
  81. package/dist/types/test/dapp/DAppConnector.test.d.ts.map +0 -1
  82. package/dist/types/test/dapp/DAppSigner.test.d.ts +0 -2
  83. package/dist/types/test/dapp/DAppSigner.test.d.ts.map +0 -1
  84. package/dist/types/test/utils.test.d.ts +0 -2
  85. package/dist/types/test/utils.test.d.ts.map +0 -1
  86. package/dist/types/test/wallet/methods/wallet-executeTransaction.test.d.ts +0 -2
  87. package/dist/types/test/wallet/methods/wallet-executeTransaction.test.d.ts.map +0 -1
  88. package/dist/types/test/wallet/methods/wallet-getNodeAddresses.test.d.ts +0 -2
  89. package/dist/types/test/wallet/methods/wallet-getNodeAddresses.test.d.ts.map +0 -1
  90. package/dist/types/test/wallet/methods/wallet-signAndExecuteQuery.test.d.ts +0 -2
  91. package/dist/types/test/wallet/methods/wallet-signAndExecuteQuery.test.d.ts.map +0 -1
  92. package/dist/types/test/wallet/methods/wallet-signAndExecuteTransaction.test.d.ts +0 -2
  93. package/dist/types/test/wallet/methods/wallet-signAndExecuteTransaction.test.d.ts.map +0 -1
  94. package/dist/types/test/wallet/methods/wallet-signMessage.test.d.ts +0 -2
  95. package/dist/types/test/wallet/methods/wallet-signMessage.test.d.ts.map +0 -1
  96. package/dist/types/test/wallet/methods/wallet-signTransaction.test.d.ts +0 -2
  97. package/dist/types/test/wallet/methods/wallet-signTransaction.test.d.ts.map +0 -1
  98. package/dist/types/test/wallet/wallet-init.test.d.ts +0 -2
  99. package/dist/types/test/wallet/wallet-init.test.d.ts.map +0 -1
@@ -0,0 +1,32 @@
1
+ /*
2
+ *
3
+ * Hedera Wallet Connect
4
+ *
5
+ * Copyright (C) 2023 Hedera Hashgraph, LLC
6
+ *
7
+ * Licensed under the Apache License, Version 2.0 (the "License");
8
+ * you may not use this file except in compliance with the License.
9
+ * You may obtain a copy of the License at
10
+ *
11
+ * http://www.apache.org/licenses/LICENSE-2.0
12
+ *
13
+ * Unless required by applicable law or agreed to in writing, software
14
+ * distributed under the License is distributed on an "AS IS" BASIS,
15
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
+ * See the License for the specific language governing permissions and
17
+ * limitations under the License.
18
+ *
19
+ */
20
+ /**
21
+ * Enum representing different JSON-RPC methods related to Hedera.
22
+ * The methods are ordered alphabetically for ease of use and readability.
23
+ */
24
+ export var HederaJsonRpcMethod;
25
+ (function (HederaJsonRpcMethod) {
26
+ HederaJsonRpcMethod["GetNodeAddresses"] = "hedera_getNodeAddresses";
27
+ HederaJsonRpcMethod["ExecuteTransaction"] = "hedera_executeTransaction";
28
+ HederaJsonRpcMethod["SignMessage"] = "hedera_signMessage";
29
+ HederaJsonRpcMethod["SignAndExecuteQuery"] = "hedera_signAndExecuteQuery";
30
+ HederaJsonRpcMethod["SignAndExecuteTransaction"] = "hedera_signAndExecuteTransaction";
31
+ HederaJsonRpcMethod["SignTransaction"] = "hedera_signTransaction";
32
+ })(HederaJsonRpcMethod || (HederaJsonRpcMethod = {}));
@@ -99,4 +99,3 @@ export interface SignTransactionResult extends JsonRpcResult<{
99
99
  export interface SignTransactionResponse extends EngineTypes.RespondParams {
100
100
  response: SignTransactionResult;
101
101
  }
102
- //# sourceMappingURL=payloads.d.ts.map
@@ -0,0 +1,20 @@
1
+ /*
2
+ *
3
+ * Hedera Wallet Connect
4
+ *
5
+ * Copyright (C) 2023 Hedera Hashgraph, LLC
6
+ *
7
+ * Licensed under the Apache License, Version 2.0 (the "License");
8
+ * you may not use this file except in compliance with the License.
9
+ * You may obtain a copy of the License at
10
+ *
11
+ * http://www.apache.org/licenses/LICENSE-2.0
12
+ *
13
+ * Unless required by applicable law or agreed to in writing, software
14
+ * distributed under the License is distributed on an "AS IS" BASIS,
15
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
+ * See the License for the specific language governing permissions and
17
+ * limitations under the License.
18
+ *
19
+ */
20
+ export {};
@@ -278,4 +278,3 @@ export declare const accountAndLedgerFromSession: (session: SessionTypes.Struct)
278
278
  network: LedgerId;
279
279
  account: AccountId;
280
280
  }[];
281
- //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1,424 @@
1
+ /*
2
+ *
3
+ * Hedera Wallet Connect
4
+ *
5
+ * Copyright (C) 2023 Hedera Hashgraph, LLC
6
+ *
7
+ * Licensed under the Apache License, Version 2.0 (the "License");
8
+ * you may not use this file except in compliance with the License.
9
+ * You may obtain a copy of the License at
10
+ *
11
+ * http://www.apache.org/licenses/LICENSE-2.0
12
+ *
13
+ * Unless required by applicable law or agreed to in writing, software
14
+ * distributed under the License is distributed on an "AS IS" BASIS,
15
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
+ * See the License for the specific language governing permissions and
17
+ * limitations under the License.
18
+ *
19
+ */
20
+ import { Buffer } from 'buffer';
21
+ import { AccountId, Transaction, LedgerId, Query, } from '@hashgraph/sdk';
22
+ import { proto } from '@hashgraph/proto';
23
+ /**
24
+ * Freezes a transaction if it is not already frozen. Transactions must
25
+ * be frozen before they can be converted to bytes.
26
+ *
27
+ * @param transaction - Any instance of a class that extends `Transaction`
28
+ */
29
+ export function freezeTransaction(transaction) {
30
+ if (!transaction.isFrozen())
31
+ transaction.freeze();
32
+ }
33
+ /**
34
+ * Sets default consensus nodes that a transaction will be submitted to. Node Account ID(s)
35
+ * must be set before a transaction can be frozen. If they have already been set, this
36
+ * function will not modify the transaction.
37
+ * @param transaction - any instance of a class that extends `Transaction`
38
+ *
39
+ * @see {@link https://docs.hedera.com/hedera/networks/testnet/testnet-nodes | Full list of Testnet-nodes}
40
+ * @see {@link https://docs.hedera.com/hedera/networks/mainnet/mainnet-nodes | Full list of Mainnet-nodes}
41
+ */
42
+ export function setDefaultNodeAccountIds(transaction) {
43
+ const isNodeAccountIdNotSet = !transaction.nodeAccountIds || transaction.nodeAccountIds.length === 0;
44
+ if (!transaction.isFrozen() && isNodeAccountIdNotSet)
45
+ transaction.setNodeAccountIds([new AccountId(3), new AccountId(4), new AccountId(5)]);
46
+ }
47
+ /**
48
+ * Converts `Transaction` to a Base64-string.
49
+ *
50
+ * First converts a transaction to bytes and then encodes it as a Base64-string. Will attempt
51
+ * to set default Node Account ID and freeze the transaction before converting.
52
+ * @param transaction - Any instance of a class that extends `Transaction`
53
+ * @returns Base64 encoded representation of the input `Transaction` object
54
+ */
55
+ export function transactionToBase64String(transaction) {
56
+ setDefaultNodeAccountIds(transaction);
57
+ freezeTransaction(transaction);
58
+ const transactionBytes = transaction.toBytes();
59
+ return Buffer.from(transactionBytes).toString('base64');
60
+ }
61
+ /**
62
+ * Recreates a `Transaction` from a base64 encoded string.
63
+ *
64
+ * Decodes the string to a buffer,
65
+ * then passes to `Transaction.fromBytes`. For greater flexibility, this function uses the base
66
+ * `Transaction` class, but takes an optional type parameter if the type of transaction is known,
67
+ * allowing stronger typeing.
68
+ * @param transactionBytes - a base64 encoded string
69
+ * @returns `Transaction`
70
+ * @example
71
+ * ```ts
72
+ * const txn1 = base64StringToTransaction(bytesString)
73
+ * const txn2 = base64StringToTransaction<TransferTransaction>(bytesString)
74
+ * // txn1 type: Transaction
75
+ * // txn2 type: TransferTransaction
76
+ * ```
77
+ */
78
+ export function base64StringToTransaction(transactionBytes) {
79
+ const decoded = Buffer.from(transactionBytes, 'base64');
80
+ return Transaction.fromBytes(decoded);
81
+ }
82
+ /**
83
+ * @param transaction - a base64 encoded string of proto.TransactionBody.encode().finish()
84
+ * @returns `string`
85
+ * */
86
+ export function transactionToTransactionBody(transaction, nodeAccountId) {
87
+ // This is a private function, though provides the capabilities to construct a proto.TransactionBody
88
+ //@ts-ignore
89
+ return transaction._makeTransactionBody(nodeAccountId);
90
+ }
91
+ export function transactionBodyToBase64String(transactionBody) {
92
+ return Uint8ArrayToBase64String(proto.TransactionBody.encode(transactionBody).finish());
93
+ }
94
+ /**
95
+ * @param transactionList - a proto.TransactionList object
96
+ * @returns `string`
97
+ * */
98
+ export function transactionListToBase64String(transactionList) {
99
+ const encoded = proto.TransactionList.encode(transactionList).finish();
100
+ return Uint8ArrayToBase64String(encoded);
101
+ }
102
+ /**
103
+ * Decodes base64 encoded proto.TransactionBody bytes to a `proto.TransactionBody` object.
104
+ *
105
+ * @param transactionBody - a base64 encoded string of proto.TransactionBody.encode().finish()
106
+ * @returns `Transaction`
107
+ *
108
+ * */
109
+ export function base64StringToTransactionBody(transactionBody) {
110
+ const bytes = Buffer.from(transactionBody, 'base64');
111
+ return proto.TransactionBody.decode(bytes);
112
+ }
113
+ /**
114
+ * Converts a `proto.SignatureMap` to a base64 encoded string.
115
+ *
116
+ * First converts the `proto.SignatureMap` object to a JSON.
117
+ * Then encodes the JSON to a base64 encoded string.
118
+ * @param signatureMap - The `proto.SignatureMap` object to be converted
119
+ * @returns Base64-encoded string representation of the input `proto.SignatureMap`
120
+ */
121
+ export function signatureMapToBase64String(signatureMap) {
122
+ const encoded = proto.SignatureMap.encode(signatureMap).finish();
123
+ return Uint8ArrayToBase64String(encoded);
124
+ }
125
+ /**
126
+ * Converts a Base64-encoded string to a `proto.SignatureMap`.
127
+ * @param base64string - Base64-encoded string
128
+ * @returns `proto.SignatureMap`
129
+ */
130
+ export function base64StringToSignatureMap(base64string) {
131
+ const encoded = Buffer.from(base64string, 'base64');
132
+ return proto.SignatureMap.decode(encoded);
133
+ }
134
+ /**
135
+ * Encodes the binary data represented by the `Uint8Array` to a Base64 string.
136
+ * @param binary - The `Uint8Array` containing binary data to be converted
137
+ * @returns Base64-encoded string representation of the input `Uint8Array`
138
+ */
139
+ export function Uint8ArrayToBase64String(binary) {
140
+ return Buffer.from(binary).toString('base64');
141
+ }
142
+ /**
143
+ * Converts a Base64-encoded string to a `Uint8Array`.
144
+ * @param base64string - Base64-encoded string to be converted
145
+ * @returns A `Uint8Array` representing the decoded binary data
146
+ */
147
+ export function base64StringToUint8Array(base64string) {
148
+ const encoded = Buffer.from(base64string, 'base64');
149
+ return new Uint8Array(encoded);
150
+ }
151
+ /**
152
+ * Converts a `Query` object to a Base64-encoded string.
153
+ * First utilizes the `toBytes` method of the `Query` instance to obtain its binary `Uint8Array` representation.
154
+ * Then encodes the binary `Uint8Array` to a Base64 string representation.
155
+ * @param query - A `Query` object to be converted
156
+ * @returns Base64 encoded representation of the input `Query` object
157
+ */
158
+ export function queryToBase64String(query) {
159
+ const queryBytes = query.toBytes();
160
+ return Buffer.from(queryBytes).toString('base64');
161
+ }
162
+ /**
163
+ * Recreates a `Query` from a Base64-encoded string. First decodes the string to a buffer,
164
+ * then passes to `Query.fromBytes`. For greater flexibility, this function uses the base
165
+ * `Query` class, but takes an optional type parameter if the type of query is known,
166
+ * allowing stronger typeing.
167
+ * @param bytesString - Base64-encoded string
168
+ * @returns `Query<T>`
169
+ * @example
170
+ * ```ts
171
+ * const query1 = base64StringToQuery(bytesString)
172
+ * const query2 = base64StringToQuery<AccountInfoQuery>(bytesString)
173
+ * // query1 type: Query<any>
174
+ * // query2 type: AccountInfoQuery
175
+ * ```
176
+ */
177
+ export function base64StringToQuery(bytesString) {
178
+ const decoded = Buffer.from(bytesString, 'base64');
179
+ return Query.fromBytes(decoded);
180
+ }
181
+ export function prefixMessageToSign(message) {
182
+ return '\x19Hedera Signed Message:\n' + message.length + message;
183
+ }
184
+ /**
185
+ * Incorporates additional data (salt) into the message to alter the output signature.
186
+ * This alteration ensures that passing a transaction here for signing will yield an invalid signature,
187
+ * as the additional data modifies the signature text.
188
+ *
189
+ * @param message - A plain text string
190
+ * @returns An array of Uint8Array containing the prepared message for signing
191
+ */
192
+ export function stringToSignerMessage(message) {
193
+ return [Buffer.from(prefixMessageToSign(message))];
194
+ }
195
+ /**
196
+ * This implementation expects a plain text string, which is prefixed and then signed by a wallet.
197
+ * Because the spec calls for 1 message to be signed and 1 signer, this function expects a single
198
+ * signature and used the first item in the sigPair array.
199
+ *
200
+ * @param message - A plain text string
201
+ * @param base64SignatureMap - A base64 encoded proto.SignatureMap object
202
+ * @param publicKey - A PublicKey object use to verify the signature
203
+ * @returns boolean - whether or not the first signature in the sigPair is valid for the message and public key
204
+ */
205
+ export function verifyMessageSignature(message, base64SignatureMap, publicKey) {
206
+ const signatureMap = base64StringToSignatureMap(base64SignatureMap);
207
+ const signature = signatureMap.sigPair[0].ed25519 || signatureMap.sigPair[0].ECDSASecp256k1;
208
+ if (!signature)
209
+ throw new Error('Signature not found in signature map');
210
+ return publicKey.verify(Buffer.from(prefixMessageToSign(message)), signature);
211
+ }
212
+ /**
213
+ * This implementation expects a plain text string, which is prefixed and then signed by a wallet.
214
+ * Because the spec calls for 1 message to be signed and 1 signer, this function expects a single
215
+ * signature and used the first item in the sigPair array.
216
+ *
217
+ * @param message - A plain text string
218
+ * @param signerSignature - A SignerSignature object
219
+ * @param publicKey - A PublicKey object use to verify the signature
220
+ * @returns boolean - whether or not the first signature in the sigPair is valid for the message and public key
221
+ */
222
+ export function verifySignerSignature(message, signerSignature, publicKey) {
223
+ const signature = signerSignature.signature;
224
+ if (!signature)
225
+ throw new Error('Signature not found in signature map');
226
+ return publicKey.verify(Buffer.from(prefixMessageToSign(message)), signature);
227
+ }
228
+ /**
229
+ *
230
+ * https://github.com/hashgraph/hedera-sdk-js/blob/c78512b1d43eedf1d8bf2926a5b7ed3368fc39d1/src/PublicKey.js#L258
231
+ * a signature pair is a protobuf object with a signature and a public key, it is the responsibility of a dApp to ensure the public key matches the account id
232
+ * @param signerSignatures - An array of `SignerSignature` objects
233
+ * @returns `proto.SignatureMap` object
234
+ */
235
+ export function signerSignaturesToSignatureMap(signerSignatures) {
236
+ const signatureMap = proto.SignatureMap.create({
237
+ sigPair: signerSignatures.map((s) => s.publicKey._toProtobufSignature(s.signature)),
238
+ });
239
+ return signatureMap;
240
+ }
241
+ /**
242
+ * A mapping of `LedgerId` to EIP chain id and CAIP-2 network name.
243
+ *
244
+ * Structure: [`LedgerId`, `number` (EIP155 chain id), `string` (CAIP-2 chain id)][]
245
+ *
246
+ * @see {@link https://namespaces.chainagnostic.org/hedera/README | Hedera Namespaces}
247
+ * @see {@link https://hips.hedera.com/hip/hip-30 | CAIP Identifiers for the Hedera Network (HIP-30)}
248
+ */
249
+ export const LEDGER_ID_MAPPINGS = [
250
+ [LedgerId.MAINNET, 295, 'hedera:mainnet'],
251
+ [LedgerId.TESTNET, 296, 'hedera:testnet'],
252
+ [LedgerId.PREVIEWNET, 297, 'hedera:previewnet'],
253
+ [LedgerId.LOCAL_NODE, 298, 'hedera:devnet'],
254
+ ];
255
+ const DEFAULT_LEDGER_ID = LedgerId.LOCAL_NODE;
256
+ const DEFAULT_EIP = LEDGER_ID_MAPPINGS[3][1];
257
+ const DEFAULT_CAIP = LEDGER_ID_MAPPINGS[3][2];
258
+ /**
259
+ * Converts an EIP chain id to a LedgerId object.
260
+ *
261
+ * If no mapping is found, returns `LedgerId.LOCAL_NODE`.
262
+ *
263
+ * @param chainId - The EIP chain ID (number) to be converted
264
+ * @returns A `LedgerId` corresponding to the provided chain ID
265
+ * @example
266
+ * ```ts
267
+ * const localnodeLedgerId = EIPChainIdToLedgerId(298)
268
+ * console.log(localnodeLedgerId) // LedgerId.LOCAL_NODE
269
+ * const mainnetLedgerId = EIPChainIdToLedgerId(295)
270
+ * console.log(mainnetLedgerId) // LedgerId.MAINNET
271
+ * ```
272
+ */
273
+ export function EIPChainIdToLedgerId(chainId) {
274
+ for (let i = 0; i < LEDGER_ID_MAPPINGS.length; i++) {
275
+ const [ledgerId, chainId_] = LEDGER_ID_MAPPINGS[i];
276
+ if (chainId === chainId_) {
277
+ return ledgerId;
278
+ }
279
+ }
280
+ return DEFAULT_LEDGER_ID;
281
+ }
282
+ /**
283
+ * Converts a LedgerId object to an EIP chain id.
284
+ *
285
+ * If no mapping is found, returns the EIP chain id for `LedgerId.LOCAL_NODE`.
286
+ *
287
+ * @param ledgerId - The `LedgerId` object to be converted
288
+ * @returns A `number` representing the EIP chain id for the provided `LedgerId`
289
+ * @example
290
+ * ```ts
291
+ * const previewnetChainId = ledgerIdToEIPChainId(LedgerId.PREVIEWNET)
292
+ * console.log(previewnetChainId) // 297
293
+ * const testnetChainId = ledgerIdToEIPChainId(LedgerId.TESTNET)
294
+ * console.log(testnetChainId) // 296
295
+ * ```
296
+ */
297
+ export function ledgerIdToEIPChainId(ledgerId) {
298
+ for (let i = 0; i < LEDGER_ID_MAPPINGS.length; i++) {
299
+ const [ledgerId_, chainId] = LEDGER_ID_MAPPINGS[i];
300
+ if (ledgerId === ledgerId_) {
301
+ return chainId;
302
+ }
303
+ }
304
+ return DEFAULT_EIP;
305
+ }
306
+ /**
307
+ * Converts a network name to an EIP chain id.
308
+ * If no mapping is found, returns the EIP chain id for `LedgerId.LOCAL_NODE`.
309
+ *
310
+ * @param networkName - The network name (string) to be converted
311
+ * @returns A `number` representing the EIP chain id for the provided network name
312
+ * @example
313
+ * ```ts
314
+ * const mainnetChainId = networkNameToEIPChainId('mainnet')
315
+ * console.log(mainnetChainId) // 295
316
+ * const testnetChainId = networkNameToEIPChainId('testnet')
317
+ * console.log(mainnetChainId) // 296
318
+ * ```
319
+ */
320
+ export function networkNameToEIPChainId(networkName) {
321
+ const ledgerId = LedgerId.fromString(networkName.toLowerCase());
322
+ return ledgerIdToEIPChainId(ledgerId);
323
+ }
324
+ /**
325
+ * Converts a CAIP chain id to a LedgerId object.
326
+ *
327
+ * If no mapping is found, returns `LedgerId.LOCAL_NODE`.
328
+ *
329
+ * @param chainId - The CAIP chain ID (string) to be converted
330
+ * @returns A `LedgerId` corresponding to the provided CAIP chain ID
331
+ * @example
332
+ * ```ts
333
+ * const previewnetLedgerId = CAIPChainIdToLedgerId(HederaChainId.Previewnet)
334
+ * console.log(previewnetLedgerId) // LedgerId.PREVIEWNET
335
+ * const testnetLedgerId = CAIPChainIdToLedgerId(HederaChainId.Testnet)
336
+ * console.log(testnetLedgerId) // LedgerId.TESTNET
337
+ * ```
338
+ */
339
+ export function CAIPChainIdToLedgerId(chainId) {
340
+ for (let i = 0; i < LEDGER_ID_MAPPINGS.length; i++) {
341
+ const [ledgerId, _, chainId_] = LEDGER_ID_MAPPINGS[i];
342
+ if (chainId === chainId_) {
343
+ return ledgerId;
344
+ }
345
+ }
346
+ return DEFAULT_LEDGER_ID;
347
+ }
348
+ /**
349
+ * Converts a LedgerId object to a CAIP chain id.
350
+ *
351
+ * If no mapping is found, returns the CAIP chain id for `LedgerId.LOCAL_NODE`.
352
+ *
353
+ * @param ledgerId - The `LedgerId` object to be converted
354
+ * @returns A `string` representing the CAIP chain id for the provided `LedgerId`
355
+ * @example
356
+ * ```ts
357
+ * const mainnetChainId = ledgerIdToCAIPChainId(HederaChainId.Mainnet)
358
+ * console.log(mainnetChainId) // LedgerId.PREVIEWNET
359
+ * const testnetChainId = ledgerIdToCAIPChainId(HederaChainId.Testnet)
360
+ * console.log(testnetChainId) // LedgerId.TESTNET
361
+ * ```
362
+ */
363
+ export function ledgerIdToCAIPChainId(ledgerId) {
364
+ for (let i = 0; i < LEDGER_ID_MAPPINGS.length; i++) {
365
+ const [ledgerId_, _, chainId] = LEDGER_ID_MAPPINGS[i];
366
+ if (ledgerId.toString() === ledgerId_.toString()) {
367
+ return chainId;
368
+ }
369
+ }
370
+ return DEFAULT_CAIP;
371
+ }
372
+ /**
373
+ * Converts a network name to a CAIP chain id.
374
+ *
375
+ * If no mapping is found, returns the CAIP chain id for `LedgerId.LOCAL_NODE`.
376
+ *
377
+ * @param networkName - The network name (string) to be converted
378
+ * @returns A `string` representing the CAIP chain id for the provided network name
379
+ * @example
380
+ * ```ts
381
+ * const previewnetChainId = networkNameToCAIPChainId('previewnet')
382
+ * console.log(previewnetChainId) // HederaChainId.Previewnet
383
+ * const devnetChainId = networkNameToCAIPChainId('devnet')
384
+ * console.log(devnetChainId) // HederaChainId.Devnet
385
+ * ```
386
+ */
387
+ export function networkNameToCAIPChainId(networkName) {
388
+ const ledgerId = LedgerId.fromString(networkName.toLowerCase());
389
+ const chainId = ledgerIdToCAIPChainId(ledgerId);
390
+ return chainId;
391
+ }
392
+ /**
393
+ * Create a `ProposalTypes.RequiredNamespaces` object for a given ledgerId.
394
+ *
395
+ * @param ledgerId - The `LedgerId` for which the namespaces are created
396
+ * @param methods - An array of strings representing methods
397
+ * @param events - An array of strings representing events
398
+ * @returns A `ProposalTypes.RequiredNamespaces` object
399
+ */
400
+ export const networkNamespaces = (ledgerId, methods, events) => ({
401
+ hedera: {
402
+ chains: [ledgerIdToCAIPChainId(ledgerId)],
403
+ methods,
404
+ events,
405
+ },
406
+ });
407
+ /**
408
+ * Get the account and ledger from a `SessionTypes.Struct` object.
409
+ *
410
+ * @param session - The `SessionTypes.Struct` object containing namespaces
411
+ * @returns `ProposalTypes.RequiredNamespaces` - an array of objects containing network (LedgerId) and account (AccountId)
412
+ */
413
+ export const accountAndLedgerFromSession = (session) => {
414
+ const hederaNamespace = session.namespaces.hedera;
415
+ if (!hederaNamespace)
416
+ throw new Error('No hedera namespace found');
417
+ return hederaNamespace.accounts.map((account) => {
418
+ const [chain, network, acc] = account.split(':');
419
+ return {
420
+ network: CAIPChainIdToLedgerId(chain + ':' + network),
421
+ account: AccountId.fromString(acc),
422
+ };
423
+ });
424
+ };
@@ -37,4 +37,3 @@ export declare class HederaWeb3Wallet extends Web3Wallet implements HederaNative
37
37
  hedera_signTransaction(id: number, topic: string, body: Uint8Array, signer: HederaWallet): Promise<void>;
38
38
  }
39
39
  export default HederaWeb3Wallet;
40
- //# sourceMappingURL=index.d.ts.map