@hashgraph/hedera-wallet-connect 2.0.1-canary.fc2f418.0 → 2.0.3-canary.2d3a595.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.
- package/README.md +1 -1
- package/dist/lib/dapp/DAppSigner.d.ts +0 -2
- package/dist/lib/dapp/DAppSigner.js +2 -16
- package/dist/lib/dapp/index.d.ts +5 -7
- package/dist/lib/dapp/index.js +4 -36
- package/dist/lib/shared/index.d.ts +0 -2
- package/dist/lib/shared/index.js +0 -2
- package/dist/lib/shared/payloads.d.ts +1 -1
- package/dist/lib/shared/utils.d.ts +3 -2
- package/dist/lib/shared/utils.js +4 -3
- package/dist/reown/adapter.d.ts +21 -5
- package/dist/reown/adapter.js +10 -7
- package/dist/reown/providers/EIP155Provider.d.ts +1 -2
- package/dist/reown/utils/account.d.ts +2 -0
- package/dist/reown/utils/account.js +20 -0
- package/dist/reown/utils/index.d.ts +1 -0
- package/dist/reown/utils/index.js +1 -0
- package/dist/reown/wallets/HIP820Wallet.d.ts +2 -2
- package/dist/reown/wallets/HIP820Wallet.js +3 -3
- package/package.json +9 -11
- package/dist/lib/shared/accountInfo.d.ts +0 -30
- package/dist/lib/shared/accountInfo.js +0 -1
- package/dist/lib/shared/mirrorNode.d.ts +0 -3
- package/dist/lib/shared/mirrorNode.js +0 -17
package/README.md
CHANGED
@@ -121,7 +121,7 @@ await dAppConnector.openModal()
|
|
121
121
|
2. Add Hedera dependencies to your project:
|
122
122
|
|
123
123
|
```sh
|
124
|
-
npm install @hashgraph/hedera-wallet-connect@2.0.
|
124
|
+
npm install @hashgraph/hedera-wallet-connect@2.0.1-canary.24fffa7.0 @hashgraph/sdk @walletconnect/universal-provider
|
125
125
|
```
|
126
126
|
|
127
127
|
3. Update `createAppKit` with adapters and a universal provider for Hedera. Note the
|
@@ -8,7 +8,6 @@ export declare class DAppSigner implements Signer {
|
|
8
8
|
private readonly ledgerId;
|
9
9
|
readonly extensionId?: string | undefined;
|
10
10
|
private logger;
|
11
|
-
private publicKey;
|
12
11
|
constructor(accountId: AccountId, signClient: ISignClient, topic: string, ledgerId?: LedgerId, extensionId?: string | undefined, logLevel?: LogLevel);
|
13
12
|
/**
|
14
13
|
* Sets the logging level for the DAppSigner
|
@@ -23,7 +22,6 @@ export declare class DAppSigner implements Signer {
|
|
23
22
|
}): Promise<T>;
|
24
23
|
getAccountId(): AccountId;
|
25
24
|
getAccountKey(): Key;
|
26
|
-
getAccountKeyAsync(): Promise<Key | null>;
|
27
25
|
getLedgerId(): LedgerId;
|
28
26
|
getNetwork(): {
|
29
27
|
[key: string]: string | AccountId;
|
@@ -19,7 +19,7 @@
|
|
19
19
|
*/
|
20
20
|
import { AccountBalance, AccountInfo, LedgerId, SignerSignature, Transaction, TransactionRecord, Client, PublicKey, TransactionId, TransactionResponse, Query, AccountRecordsQuery, AccountInfoQuery, AccountBalanceQuery, TransactionReceiptQuery, TransactionReceipt, TransactionRecordQuery, } from '@hashgraph/sdk';
|
21
21
|
import { proto } from '@hashgraph/proto';
|
22
|
-
import { HederaJsonRpcMethod, base64StringToSignatureMap, base64StringToUint8Array, ledgerIdToCAIPChainId, queryToBase64String, transactionBodyToBase64String, transactionToBase64String, transactionToTransactionBody, extensionOpen, Uint8ArrayToBase64String, Uint8ArrayToString,
|
22
|
+
import { HederaJsonRpcMethod, base64StringToSignatureMap, base64StringToUint8Array, ledgerIdToCAIPChainId, queryToBase64String, transactionBodyToBase64String, transactionToBase64String, transactionToTransactionBody, extensionOpen, Uint8ArrayToBase64String, Uint8ArrayToString, } from '../shared';
|
23
23
|
import { DefaultLogger } from '../shared/logger';
|
24
24
|
import { SessionNotFoundError } from './SessionNotFoundError';
|
25
25
|
const clients = {};
|
@@ -31,11 +31,6 @@ export class DAppSigner {
|
|
31
31
|
this.ledgerId = ledgerId;
|
32
32
|
this.extensionId = extensionId;
|
33
33
|
this.logger = new DefaultLogger(logLevel);
|
34
|
-
this.publicKey = null;
|
35
|
-
// cache public key from mirror node
|
36
|
-
this.getAccountKeyAsync()
|
37
|
-
.then((key) => (this.publicKey = key))
|
38
|
-
.catch((error) => this.logger.error('Error when receiving a public key:', error.message));
|
39
34
|
}
|
40
35
|
/**
|
41
36
|
* Sets the logging level for the DAppSigner
|
@@ -84,16 +79,7 @@ export class DAppSigner {
|
|
84
79
|
return this.accountId;
|
85
80
|
}
|
86
81
|
getAccountKey() {
|
87
|
-
|
88
|
-
throw new Error('No key was received from the mirror node');
|
89
|
-
}
|
90
|
-
return this.publicKey;
|
91
|
-
}
|
92
|
-
async getAccountKeyAsync() {
|
93
|
-
const accountInfo = await getAccountInfo(this.ledgerId, this.accountId.toString());
|
94
|
-
if (!(accountInfo === null || accountInfo === void 0 ? void 0 : accountInfo.key))
|
95
|
-
return null;
|
96
|
-
return PublicKey.fromString(accountInfo.key.key);
|
82
|
+
throw new Error('Method not implemented.');
|
97
83
|
}
|
98
84
|
getLedgerId() {
|
99
85
|
return this.ledgerId;
|
package/dist/lib/dapp/index.d.ts
CHANGED
@@ -1,17 +1,15 @@
|
|
1
1
|
import { AccountId, LedgerId, Transaction } from '@hashgraph/sdk';
|
2
|
-
import {
|
2
|
+
import { SessionTypes, SignClientTypes } from '@walletconnect/types';
|
3
3
|
import { WalletConnectModal } from '@walletconnect/modal';
|
4
4
|
import SignClient from '@walletconnect/sign-client';
|
5
5
|
import { LogLevel } from '../shared/logger';
|
6
6
|
import { GetNodeAddressesResult, ExecuteTransactionParams, ExecuteTransactionResult, SignMessageParams, SignMessageResult, SignAndExecuteQueryResult, SignAndExecuteQueryParams, SignAndExecuteTransactionParams, SignAndExecuteTransactionResult, SignTransactionParams, SignTransactionResult, ExtensionData } from '../shared';
|
7
7
|
import { DAppSigner } from './DAppSigner';
|
8
|
-
import { JsonRpcResult } from '@walletconnect/jsonrpc-types';
|
9
8
|
export * from './DAppSigner';
|
10
9
|
export { SessionNotFoundError } from './SessionNotFoundError';
|
11
10
|
type BaseLogger = 'error' | 'warn' | 'info' | 'debug' | 'trace' | 'fatal';
|
12
11
|
export declare class DAppConnector {
|
13
12
|
private logger;
|
14
|
-
readonly storagePrefix = "hedera-wc/dapp-connector/";
|
15
13
|
dAppMetadata: SignClientTypes.Metadata;
|
16
14
|
network: LedgerId;
|
17
15
|
projectId: string;
|
@@ -108,7 +106,7 @@ export declare class DAppConnector {
|
|
108
106
|
private createSigners;
|
109
107
|
private onSessionConnected;
|
110
108
|
private connectURI;
|
111
|
-
|
109
|
+
private request;
|
112
110
|
/**
|
113
111
|
* Retrieves the node addresses associated with the current Hedera network.
|
114
112
|
*
|
@@ -194,7 +192,9 @@ export declare class DAppConnector {
|
|
194
192
|
*
|
195
193
|
* @param {SignTransactionParams} params - The parameters of type {@link SignTransactionParams | `SignTransactionParams`} required for `Transaction` signing.
|
196
194
|
* @param {string} params.signerAccountId - a signer Hedera Account identifier in {@link https://hips.hedera.com/hip/hip-30 | HIP-30} (`<nework>:<shard>.<realm>.<num>`) form.
|
197
|
-
* @param {Transaction} params.transactionBody - a Transaction object
|
195
|
+
* @param {Transaction | string} params.transactionBody - a built Transaction object, or a base64 string of a transaction body( HIP-820).
|
196
|
+
* HIP-820 calls for a base64 encoded proto.TransactionBody and many wallets support a serialized Transaction object generated by the Hedera Javascript SDK.
|
197
|
+
* Both options are supported here for backwards compatibility.
|
198
198
|
* @returns Promise\<{@link SignTransactionResult}\>
|
199
199
|
* @example
|
200
200
|
* ```ts
|
@@ -212,7 +212,5 @@ export declare class DAppConnector {
|
|
212
212
|
private handleSessionUpdate;
|
213
213
|
private handleSessionDelete;
|
214
214
|
private handlePairingDelete;
|
215
|
-
private handleRelayConnected;
|
216
|
-
private verifyLastConnectedInstance;
|
217
215
|
}
|
218
216
|
export default DAppConnector;
|
package/dist/lib/dapp/index.js
CHANGED
@@ -20,8 +20,7 @@
|
|
20
20
|
import { LedgerId, Transaction } from '@hashgraph/sdk';
|
21
21
|
import { WalletConnectModal } from '@walletconnect/modal';
|
22
22
|
import SignClient from '@walletconnect/sign-client';
|
23
|
-
import { getSdkError
|
24
|
-
import { RELAYER_EVENTS } from '@walletconnect/core';
|
23
|
+
import { getSdkError } from '@walletconnect/utils';
|
25
24
|
import { DefaultLogger } from '../shared/logger';
|
26
25
|
import { HederaJsonRpcMethod, accountAndLedgerFromSession, networkNamespaces, extensionConnect, findExtensions, } from '../shared';
|
27
26
|
import { DAppSigner } from './DAppSigner';
|
@@ -39,7 +38,6 @@ export class DAppConnector {
|
|
39
38
|
* @param logLevel - Logging level for the DAppConnector (optional).
|
40
39
|
*/
|
41
40
|
constructor(metadata, network, projectId, methods, events, chains, logLevel = 'debug') {
|
42
|
-
this.storagePrefix = 'hedera-wc/dapp-connector/';
|
43
41
|
this.network = LedgerId.TESTNET;
|
44
42
|
this.supportedMethods = [];
|
45
43
|
this.supportedEvents = [];
|
@@ -112,9 +110,6 @@ export class DAppConnector {
|
|
112
110
|
this.signers = existingSessions.flatMap((session) => this.createSigners(session));
|
113
111
|
else
|
114
112
|
this.checkIframeConnect();
|
115
|
-
//manual call after init before relayer connect event handler is attached
|
116
|
-
this.handleRelayConnected();
|
117
|
-
this.walletConnectClient.core.relayer.on(RELAYER_EVENTS.connect, this.handleRelayConnected.bind(this));
|
118
113
|
this.walletConnectClient.on('session_event', this.handleSessionEvent.bind(this));
|
119
114
|
this.walletConnectClient.on('session_update', this.handleSessionUpdate.bind(this));
|
120
115
|
this.walletConnectClient.on('session_delete', this.handleSessionDelete.bind(this));
|
@@ -384,7 +379,6 @@ export class DAppConnector {
|
|
384
379
|
if (!signer) {
|
385
380
|
throw new Error('There is no active session. Connect to the wallet at first.');
|
386
381
|
}
|
387
|
-
await this.verifyLastConnectedInstance();
|
388
382
|
this.logger.debug(`Using signer: ${signer.getAccountId().toString()}: ${signer.topic} - about to request.`);
|
389
383
|
return await signer.request({
|
390
384
|
method: method,
|
@@ -501,7 +495,9 @@ export class DAppConnector {
|
|
501
495
|
*
|
502
496
|
* @param {SignTransactionParams} params - The parameters of type {@link SignTransactionParams | `SignTransactionParams`} required for `Transaction` signing.
|
503
497
|
* @param {string} params.signerAccountId - a signer Hedera Account identifier in {@link https://hips.hedera.com/hip/hip-30 | HIP-30} (`<nework>:<shard>.<realm>.<num>`) form.
|
504
|
-
* @param {Transaction} params.transactionBody - a Transaction object
|
498
|
+
* @param {Transaction | string} params.transactionBody - a built Transaction object, or a base64 string of a transaction body( HIP-820).
|
499
|
+
* HIP-820 calls for a base64 encoded proto.TransactionBody and many wallets support a serialized Transaction object generated by the Hedera Javascript SDK.
|
500
|
+
* Both options are supported here for backwards compatibility.
|
505
501
|
* @returns Promise\<{@link SignTransactionResult}\>
|
506
502
|
* @example
|
507
503
|
* ```ts
|
@@ -580,33 +576,5 @@ export class DAppConnector {
|
|
580
576
|
}
|
581
577
|
this.logger.info('Pairing deleted by wallet');
|
582
578
|
}
|
583
|
-
// Store the last connected randomSessionIdentifier
|
584
|
-
async handleRelayConnected() {
|
585
|
-
if (!this.walletConnectClient) {
|
586
|
-
this.logger.error('walletConnectClient not found');
|
587
|
-
return;
|
588
|
-
}
|
589
|
-
const core = this.walletConnectClient.core;
|
590
|
-
const instanceId = core.crypto.randomSessionIdentifier;
|
591
|
-
await core.storage.setItem(this.storagePrefix + 'last-connected-instance', instanceId);
|
592
|
-
}
|
593
|
-
// In the event of another tab being connected after the current one,
|
594
|
-
// the current tab will be forcibly reconnected to the relay so that
|
595
|
-
// a response to the request can be received.
|
596
|
-
// https://github.com/hashgraph/hedera-wallet-connect/issues/387
|
597
|
-
async verifyLastConnectedInstance() {
|
598
|
-
if (!this.walletConnectClient) {
|
599
|
-
this.logger.error('walletConnectClient not found');
|
600
|
-
return;
|
601
|
-
}
|
602
|
-
const core = this.walletConnectClient.core;
|
603
|
-
const instanceId = core.crypto.randomSessionIdentifier;
|
604
|
-
const isOnlineStatus = await isOnline();
|
605
|
-
const lastConnectedInstanceId = await core.storage.getItem(this.storagePrefix + 'last-connected-instance');
|
606
|
-
if (lastConnectedInstanceId != instanceId && isOnlineStatus) {
|
607
|
-
this.logger.info('Forced reconnecting to the relay');
|
608
|
-
await core.relayer.restartTransport();
|
609
|
-
}
|
610
|
-
}
|
611
579
|
}
|
612
580
|
export default DAppConnector;
|
package/dist/lib/shared/index.js
CHANGED
@@ -84,7 +84,7 @@ export interface SignAndExecuteTransactionResponse extends EngineTypes.RespondPa
|
|
84
84
|
}
|
85
85
|
export interface SignTransactionParams {
|
86
86
|
signerAccountId: string;
|
87
|
-
transactionBody: Transaction;
|
87
|
+
transactionBody: Transaction | string;
|
88
88
|
}
|
89
89
|
export interface SignTransactionRequest extends EngineTypes.RequestParams {
|
90
90
|
request: {
|
@@ -4,7 +4,7 @@ import { proto } from '@hashgraph/proto';
|
|
4
4
|
/**
|
5
5
|
* Converts `Transaction` to a Base64-string.
|
6
6
|
*
|
7
|
-
* Converts a transaction to bytes and then encodes it as a Base64-string. Allow
|
7
|
+
* Converts a transaction to bytes and then encodes it as a Base64-string. Allow incomplete transaction (HIP-745).
|
8
8
|
* @param transaction - Any instance of a class that extends `Transaction`
|
9
9
|
* @returns Base64 encoded representation of the input `Transaction` object
|
10
10
|
*/
|
@@ -29,9 +29,10 @@ export declare function transactionToBase64String<T extends Transaction>(transac
|
|
29
29
|
export declare function base64StringToTransaction<T extends Transaction>(transactionBytes: string): T;
|
30
30
|
/**
|
31
31
|
* @param transaction - a base64 encoded string of proto.TransactionBody.encode().finish()
|
32
|
+
* @param nodeAccountId - an optional `AccountId` to set the node account ID for the transaction
|
32
33
|
* @returns `string`
|
33
34
|
* */
|
34
|
-
export declare function transactionToTransactionBody<T extends Transaction>(transaction: T):
|
35
|
+
export declare function transactionToTransactionBody<T extends Transaction>(transaction: T, nodeAccountId?: AccountId | null): proto.ITransactionBody;
|
35
36
|
export declare function transactionBodyToBase64String(transactionBody: proto.ITransactionBody): string;
|
36
37
|
/**
|
37
38
|
* @param transactionList - a proto.TransactionList object
|
package/dist/lib/shared/utils.js
CHANGED
@@ -23,7 +23,7 @@ import { proto } from '@hashgraph/proto';
|
|
23
23
|
/**
|
24
24
|
* Converts `Transaction` to a Base64-string.
|
25
25
|
*
|
26
|
-
* Converts a transaction to bytes and then encodes it as a Base64-string. Allow
|
26
|
+
* Converts a transaction to bytes and then encodes it as a Base64-string. Allow incomplete transaction (HIP-745).
|
27
27
|
* @param transaction - Any instance of a class that extends `Transaction`
|
28
28
|
* @returns Base64 encoded representation of the input `Transaction` object
|
29
29
|
*/
|
@@ -54,12 +54,13 @@ export function base64StringToTransaction(transactionBytes) {
|
|
54
54
|
}
|
55
55
|
/**
|
56
56
|
* @param transaction - a base64 encoded string of proto.TransactionBody.encode().finish()
|
57
|
+
* @param nodeAccountId - an optional `AccountId` to set the node account ID for the transaction
|
57
58
|
* @returns `string`
|
58
59
|
* */
|
59
|
-
export function transactionToTransactionBody(transaction) {
|
60
|
+
export function transactionToTransactionBody(transaction, nodeAccountId = null) {
|
60
61
|
// This is a private function, though provides the capabilities to construct a proto.TransactionBody
|
61
62
|
//@ts-ignore
|
62
|
-
return transaction._makeTransactionBody(
|
63
|
+
return transaction._makeTransactionBody(nodeAccountId);
|
63
64
|
}
|
64
65
|
export function transactionBodyToBase64String(transactionBody) {
|
65
66
|
return Uint8ArrayToBase64String(proto.TransactionBody.encode(transactionBody).finish());
|
package/dist/reown/adapter.d.ts
CHANGED
@@ -1,25 +1,41 @@
|
|
1
|
+
import { CaipNetwork } from '@reown/appkit';
|
1
2
|
import { type ChainNamespace } from '@reown/appkit-common';
|
2
3
|
import { AdapterBlueprint } from '@reown/appkit/adapters';
|
3
4
|
type UniversalProvider = Parameters<AdapterBlueprint['setUniversalProvider']>[0];
|
5
|
+
type AdapterSendTransactionParams = AdapterBlueprint.SendTransactionParams & {
|
6
|
+
address: string;
|
7
|
+
};
|
8
|
+
type GetEnsAddressParams = {
|
9
|
+
name: string;
|
10
|
+
caipNetwork?: CaipNetwork;
|
11
|
+
};
|
12
|
+
type GetEnsAddressResult = {
|
13
|
+
address: string | false;
|
14
|
+
};
|
15
|
+
type GetProfileResult = {
|
16
|
+
profileImage: string;
|
17
|
+
profileName: string;
|
18
|
+
};
|
4
19
|
export declare class HederaAdapter extends AdapterBlueprint {
|
5
20
|
constructor(params: AdapterBlueprint.Params);
|
6
|
-
setUniversalProvider(universalProvider: UniversalProvider): void
|
21
|
+
setUniversalProvider(universalProvider: UniversalProvider): Promise<void>;
|
7
22
|
connect(params: AdapterBlueprint.ConnectParams): Promise<AdapterBlueprint.ConnectResult>;
|
8
|
-
disconnect(): Promise<
|
23
|
+
disconnect(_params?: AdapterBlueprint.DisconnectParams): Promise<AdapterBlueprint.DisconnectResult>;
|
9
24
|
getAccounts({ namespace, }: AdapterBlueprint.GetAccountsParams & {
|
10
25
|
namespace: ChainNamespace;
|
11
26
|
}): Promise<AdapterBlueprint.GetAccountsResult>;
|
12
27
|
syncConnectors(): Promise<void>;
|
28
|
+
syncConnections(_params: AdapterBlueprint.SyncConnectionsParams): Promise<void>;
|
13
29
|
getBalance(params: AdapterBlueprint.GetBalanceParams): Promise<AdapterBlueprint.GetBalanceResult>;
|
14
30
|
signMessage(params: AdapterBlueprint.SignMessageParams): Promise<AdapterBlueprint.SignMessageResult>;
|
15
31
|
estimateGas(params: AdapterBlueprint.EstimateGasTransactionArgs): Promise<AdapterBlueprint.EstimateGasTransactionResult>;
|
16
|
-
sendTransaction(params:
|
32
|
+
sendTransaction(params: AdapterSendTransactionParams): Promise<AdapterBlueprint.SendTransactionResult>;
|
17
33
|
writeContract(params: AdapterBlueprint.WriteContractParams): Promise<AdapterBlueprint.WriteContractResult>;
|
18
|
-
getEnsAddress(params:
|
34
|
+
getEnsAddress(params: GetEnsAddressParams): Promise<GetEnsAddressResult>;
|
19
35
|
parseUnits(params: AdapterBlueprint.ParseUnitsParams): AdapterBlueprint.ParseUnitsResult;
|
20
36
|
formatUnits(params: AdapterBlueprint.FormatUnitsParams): AdapterBlueprint.FormatUnitsResult;
|
21
37
|
getCapabilities(params: AdapterBlueprint.GetCapabilitiesParams): Promise<unknown>;
|
22
|
-
getProfile(): Promise<
|
38
|
+
getProfile(): Promise<GetProfileResult>;
|
23
39
|
grantPermissions(): Promise<unknown>;
|
24
40
|
revokePermissions(): Promise<`0x${string}`>;
|
25
41
|
syncConnection(params: AdapterBlueprint.SyncConnectionParams): Promise<{
|
package/dist/reown/adapter.js
CHANGED
@@ -5,8 +5,7 @@ import { ProviderUtil } from '@reown/appkit/store';
|
|
5
5
|
import { LedgerId } from '@hashgraph/sdk';
|
6
6
|
import { BrowserProvider, Contract, formatUnits, JsonRpcSigner, parseUnits } from 'ethers';
|
7
7
|
import { HederaConnector } from './connectors';
|
8
|
-
import { hederaNamespace } from './utils';
|
9
|
-
import { getAccountInfo } from '..';
|
8
|
+
import { hederaNamespace, getAccountBalance } from './utils';
|
10
9
|
export class HederaAdapter extends AdapterBlueprint {
|
11
10
|
constructor(params) {
|
12
11
|
var _a, _b;
|
@@ -25,7 +24,7 @@ export class HederaAdapter extends AdapterBlueprint {
|
|
25
24
|
}
|
26
25
|
super(Object.assign({}, params));
|
27
26
|
}
|
28
|
-
setUniversalProvider(universalProvider) {
|
27
|
+
async setUniversalProvider(universalProvider) {
|
29
28
|
this.addConnector(new HederaConnector({
|
30
29
|
provider: universalProvider,
|
31
30
|
caipNetworks: this.getCaipNetworks() || [],
|
@@ -41,7 +40,7 @@ export class HederaAdapter extends AdapterBlueprint {
|
|
41
40
|
address: '',
|
42
41
|
});
|
43
42
|
}
|
44
|
-
async disconnect() {
|
43
|
+
async disconnect(_params) {
|
45
44
|
try {
|
46
45
|
const connector = this.getWalletConnectConnector();
|
47
46
|
await connector.disconnect();
|
@@ -49,6 +48,7 @@ export class HederaAdapter extends AdapterBlueprint {
|
|
49
48
|
catch (error) {
|
50
49
|
console.warn('UniversalAdapter:disconnect - error', error);
|
51
50
|
}
|
51
|
+
return { connections: [] };
|
52
52
|
}
|
53
53
|
async getAccounts({ namespace, }) {
|
54
54
|
var _a, _b, _c, _d;
|
@@ -64,6 +64,9 @@ export class HederaAdapter extends AdapterBlueprint {
|
|
64
64
|
async syncConnectors() {
|
65
65
|
return Promise.resolve();
|
66
66
|
}
|
67
|
+
async syncConnections(_params) {
|
68
|
+
return Promise.resolve();
|
69
|
+
}
|
67
70
|
async getBalance(params) {
|
68
71
|
const { address, caipNetwork } = params;
|
69
72
|
if (!caipNetwork) {
|
@@ -73,10 +76,10 @@ export class HederaAdapter extends AdapterBlueprint {
|
|
73
76
|
symbol: '',
|
74
77
|
});
|
75
78
|
}
|
76
|
-
const
|
79
|
+
const accountBalance = await getAccountBalance(caipNetwork.testnet ? LedgerId.TESTNET : LedgerId.MAINNET, address);
|
77
80
|
return Promise.resolve({
|
78
|
-
balance:
|
79
|
-
? formatUnits(
|
81
|
+
balance: accountBalance
|
82
|
+
? formatUnits(accountBalance.hbars.toTinybars().toString(), 8).toString()
|
80
83
|
: '0',
|
81
84
|
decimals: caipNetwork.nativeCurrency.decimals,
|
82
85
|
symbol: caipNetwork.nativeCurrency.symbol,
|
@@ -1,10 +1,9 @@
|
|
1
1
|
import { EventEmitter } from 'events';
|
2
|
-
import Client from '@walletconnect/sign-client';
|
3
2
|
import { SessionTypes } from '@walletconnect/types';
|
4
3
|
import { IProvider, SessionNamespace, RpcProvidersMap, RequestParams, Namespace } from '@walletconnect/universal-provider';
|
5
4
|
declare class EIP155Provider implements IProvider {
|
6
5
|
name: string;
|
7
|
-
client:
|
6
|
+
client: IProvider['client'];
|
8
7
|
chainId: number;
|
9
8
|
namespace: SessionNamespace;
|
10
9
|
httpProviders: RpcProvidersMap;
|
@@ -0,0 +1,20 @@
|
|
1
|
+
import { AccountBalanceQuery, AccountId, Client, LedgerId, } from '@hashgraph/sdk';
|
2
|
+
export async function getAccountBalance(ledgerId, address) {
|
3
|
+
const client = ledgerId === LedgerId.TESTNET ? Client.forTestnet() : Client.forMainnet();
|
4
|
+
let accountId;
|
5
|
+
try {
|
6
|
+
accountId = AccountId.fromString(address);
|
7
|
+
}
|
8
|
+
catch (e) {
|
9
|
+
accountId = AccountId.fromEvmAddress(0, 0, address);
|
10
|
+
}
|
11
|
+
if (accountId.num.isZero() && accountId.evmAddress != null) {
|
12
|
+
await accountId.populateAccountNum(client);
|
13
|
+
}
|
14
|
+
try {
|
15
|
+
return await new AccountBalanceQuery().setAccountId(accountId).execute(client);
|
16
|
+
}
|
17
|
+
catch (e) {
|
18
|
+
return null;
|
19
|
+
}
|
20
|
+
}
|
@@ -1,11 +1,11 @@
|
|
1
|
-
import { Wallet as HederaWallet, AccountId, Transaction, Query } from '@hashgraph/sdk';
|
1
|
+
import { Wallet as HederaWallet, AccountId, Transaction, Query, PrivateKey } from '@hashgraph/sdk';
|
2
2
|
import { JsonRpcError, JsonRpcResult } from '@walletconnect/jsonrpc-utils';
|
3
3
|
import { HederaChainId, HederaJsonRpcMethod, GetNodeAddressesResult, ExecuteTransactionResult, SignAndExecuteQueryResult, SignMessageResult, SignAndExecuteTransactionResult, SignTransactionResult, WalletRequestEventArgs } from '../..';
|
4
4
|
import Provider from '../../lib/wallet/provider';
|
5
5
|
interface IInitArgs {
|
6
6
|
chainId: HederaChainId;
|
7
7
|
accountId: AccountId | string;
|
8
|
-
privateKey:
|
8
|
+
privateKey: PrivateKey;
|
9
9
|
_provider?: Provider;
|
10
10
|
}
|
11
11
|
export interface HIP820WalletInterface {
|
@@ -1,6 +1,6 @@
|
|
1
1
|
import { Buffer } from 'buffer';
|
2
2
|
import { getSdkError } from '@walletconnect/utils';
|
3
|
-
import { Wallet as HederaWallet, Client, AccountId, PrecheckStatusError,
|
3
|
+
import { Wallet as HederaWallet, Client, AccountId, PrecheckStatusError, } from '@hashgraph/sdk';
|
4
4
|
import { proto } from '@hashgraph/proto';
|
5
5
|
import { formatJsonRpcError, formatJsonRpcResult, } from '@walletconnect/jsonrpc-utils';
|
6
6
|
import { HederaJsonRpcMethod, base64StringToQuery, Uint8ArrayToBase64String, stringToSignerMessage, signerSignaturesToSignatureMap, getHederaError, base64StringToTransaction, signatureMapToBase64String, } from '../..';
|
@@ -22,7 +22,7 @@ export class HIP820Wallet {
|
|
22
22
|
const network = chainId.split(':')[1];
|
23
23
|
const client = Client.forName(network);
|
24
24
|
const provider = _provider !== null && _provider !== void 0 ? _provider : new Provider(client);
|
25
|
-
const wallet = new HederaWallet(accountId,
|
25
|
+
const wallet = new HederaWallet(accountId, privateKey, provider);
|
26
26
|
return new HIP820Wallet(wallet);
|
27
27
|
}
|
28
28
|
/*
|
@@ -140,7 +140,7 @@ export class HIP820Wallet {
|
|
140
140
|
// 2. hedera_executeTransaction
|
141
141
|
async hedera_executeTransaction(id, signedTransaction) {
|
142
142
|
try {
|
143
|
-
const response = await
|
143
|
+
const response = await this.wallet.call(signedTransaction);
|
144
144
|
return formatJsonRpcResult(id, response.toJSON());
|
145
145
|
}
|
146
146
|
catch (e) {
|
package/package.json
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
{
|
2
2
|
"name": "@hashgraph/hedera-wallet-connect",
|
3
|
-
"version": "2.0.
|
4
|
-
"description": "A library to facilitate integrating Hedera",
|
3
|
+
"version": "2.0.3-canary.2d3a595.0",
|
4
|
+
"description": "A library to facilitate integrating Hedera with WalletConnect",
|
5
5
|
"repository": {
|
6
6
|
"type": "git",
|
7
7
|
"url": "git+https://github.com/hashgraph/hedera-wallet-connect.git"
|
@@ -14,32 +14,30 @@
|
|
14
14
|
"walletconnect",
|
15
15
|
"reown",
|
16
16
|
"hashgraph",
|
17
|
-
"evm",
|
18
|
-
"ethereum",
|
19
|
-
"smart contracts",
|
20
17
|
"hbar",
|
21
|
-
"
|
18
|
+
"evm",
|
19
|
+
"smart contracts"
|
22
20
|
],
|
23
21
|
"license": "Apache-2.0",
|
24
22
|
"scripts": {
|
25
23
|
"build": "rimraf dist && tsc",
|
26
24
|
"watch": "nodemon --watch src/ --ext ts --exec \"npm run build\"",
|
27
|
-
"test": "jest",
|
25
|
+
"test": "jest --coverage",
|
28
26
|
"prepublishOnly": "rm -Rf dist && npm run test && npm run build",
|
29
27
|
"prettier:check": "prettier --check ./src/",
|
30
28
|
"prettier:fix": "prettier --write ./src/"
|
31
29
|
},
|
32
30
|
"peerDependencies": {
|
33
31
|
"@hashgraph/sdk": "^2.63.0",
|
34
|
-
"@reown/appkit": "1.7.
|
35
|
-
"@reown/walletkit": "1.2.
|
32
|
+
"@reown/appkit": "^1.7.16",
|
33
|
+
"@reown/walletkit": "^1.2.8",
|
36
34
|
"@walletconnect/modal": "^2.7.0",
|
37
35
|
"ethers": "^6.13.5"
|
38
36
|
},
|
39
37
|
"devDependencies": {
|
40
38
|
"@swc/jest": "^0.2.37",
|
41
|
-
"@types/jest": "^
|
42
|
-
"jest": "^
|
39
|
+
"@types/jest": "^30.0.0",
|
40
|
+
"jest": "^30.0.3",
|
43
41
|
"prettier": "^3.5.3",
|
44
42
|
"ts-node": "^10.9.2",
|
45
43
|
"typescript": "^5.8.2"
|
@@ -1,30 +0,0 @@
|
|
1
|
-
export interface AccountInfo {
|
2
|
-
account: string;
|
3
|
-
alias: string;
|
4
|
-
auto_renew_period: number;
|
5
|
-
balance: Balance;
|
6
|
-
created_timestamp: string;
|
7
|
-
decline_reward: boolean;
|
8
|
-
deleted: boolean;
|
9
|
-
ethereum_nonce: number;
|
10
|
-
evm_address: string;
|
11
|
-
expiry_timestamp: string;
|
12
|
-
key: Key | null;
|
13
|
-
max_automatic_token_associations: number;
|
14
|
-
memo: string;
|
15
|
-
pending_reward: number;
|
16
|
-
receiver_sig_required: boolean;
|
17
|
-
}
|
18
|
-
export interface Balance {
|
19
|
-
balance: number;
|
20
|
-
timestamp: string;
|
21
|
-
tokens: Token[];
|
22
|
-
}
|
23
|
-
export interface Token {
|
24
|
-
token_id: string;
|
25
|
-
balance: number;
|
26
|
-
}
|
27
|
-
export interface Key {
|
28
|
-
_type: string;
|
29
|
-
key: string;
|
30
|
-
}
|
@@ -1 +0,0 @@
|
|
1
|
-
export {};
|
@@ -1,17 +0,0 @@
|
|
1
|
-
function getMirrorNodeUrl(ledgerId) {
|
2
|
-
return `https://${ledgerId.toString()}.mirrornode.hedera.com`;
|
3
|
-
}
|
4
|
-
export async function getAccountInfo(ledgerId, address) {
|
5
|
-
const mirrorNodeApiUrl = getMirrorNodeUrl(ledgerId);
|
6
|
-
const url = `${mirrorNodeApiUrl}/api/v1/accounts/${address}`;
|
7
|
-
const result = await fetch(url, {
|
8
|
-
headers: {
|
9
|
-
accept: 'application/json',
|
10
|
-
},
|
11
|
-
});
|
12
|
-
if (result.status !== 200) {
|
13
|
-
return null;
|
14
|
-
}
|
15
|
-
const response = await result.json();
|
16
|
-
return response;
|
17
|
-
}
|