@hashgraph/hedera-wallet-connect 1.3.2-0 → 1.3.2

Sign up to get free protection for your applications and to get access to all the features.
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