@meshconnect/uwc-wallet-connect-connector 0.2.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/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -0
- package/dist/services/connection-service.d.ts +60 -0
- package/dist/services/connection-service.d.ts.map +1 -0
- package/dist/services/connection-service.js +235 -0
- package/dist/services/connection-service.js.map +1 -0
- package/dist/services/network-switch-service.d.ts +16 -0
- package/dist/services/network-switch-service.d.ts.map +1 -0
- package/dist/services/network-switch-service.js +71 -0
- package/dist/services/network-switch-service.js.map +1 -0
- package/dist/services/signature-service.d.ts +15 -0
- package/dist/services/signature-service.d.ts.map +1 -0
- package/dist/services/signature-service.js +102 -0
- package/dist/services/signature-service.js.map +1 -0
- package/dist/services/transaction-service.d.ts +33 -0
- package/dist/services/transaction-service.d.ts.map +1 -0
- package/dist/services/transaction-service.js +287 -0
- package/dist/services/transaction-service.js.map +1 -0
- package/dist/services/walletconnect-client.d.ts +28 -0
- package/dist/services/walletconnect-client.d.ts.map +1 -0
- package/dist/services/walletconnect-client.js +92 -0
- package/dist/services/walletconnect-client.js.map +1 -0
- package/dist/utils/account-utils.d.ts +41 -0
- package/dist/utils/account-utils.d.ts.map +1 -0
- package/dist/utils/account-utils.js +81 -0
- package/dist/utils/account-utils.js.map +1 -0
- package/dist/utils/encoding-utils.d.ts +6 -0
- package/dist/utils/encoding-utils.d.ts.map +1 -0
- package/dist/utils/encoding-utils.js +27 -0
- package/dist/utils/encoding-utils.js.map +1 -0
- package/dist/utils/error-utils.d.ts +6 -0
- package/dist/utils/error-utils.d.ts.map +1 -0
- package/dist/utils/error-utils.js +55 -0
- package/dist/utils/error-utils.js.map +1 -0
- package/dist/utils/solana-transactions.d.ts +4 -0
- package/dist/utils/solana-transactions.d.ts.map +1 -0
- package/dist/utils/solana-transactions.js +15 -0
- package/dist/utils/solana-transactions.js.map +1 -0
- package/dist/wallet-connect-connector.d.ts +17 -0
- package/dist/wallet-connect-connector.d.ts.map +1 -0
- package/dist/wallet-connect-connector.js +47 -0
- package/dist/wallet-connect-connector.js.map +1 -0
- package/package.json +41 -0
- package/src/index.ts +1 -0
- package/src/services/connection-service.ts +304 -0
- package/src/services/network-switch-service.ts +83 -0
- package/src/services/signature-service.ts +128 -0
- package/src/services/transaction-service.ts +397 -0
- package/src/services/walletconnect-client.ts +103 -0
- package/src/utils/account-utils.ts +116 -0
- package/src/utils/encoding-utils.ts +32 -0
- package/src/utils/error-utils.ts +62 -0
- package/src/utils/solana-transactions.ts +24 -0
- package/src/wallet-connect-connector.ts +83 -0
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,4BAA4B,CAAA"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,4BAA4B,CAAA"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import type { SessionTypes } from '@walletconnect/types';
|
|
2
|
+
import type { Network, ConnectorResult, WalletConnectProvider } from '@meshconnect/uwc-types';
|
|
3
|
+
import { WalletConnectClient } from './walletconnect-client';
|
|
4
|
+
/**
|
|
5
|
+
* Service for handling WalletConnect connections
|
|
6
|
+
*/
|
|
7
|
+
export declare class ConnectionService {
|
|
8
|
+
private walletConnectClient;
|
|
9
|
+
private currentSession;
|
|
10
|
+
private connectionUri;
|
|
11
|
+
private activeNetwork;
|
|
12
|
+
private activeAddress;
|
|
13
|
+
constructor(walletConnectClient: WalletConnectClient);
|
|
14
|
+
/**
|
|
15
|
+
* Connect to a wallet via WalletConnect
|
|
16
|
+
* This will store the URI and wait for approval
|
|
17
|
+
*/
|
|
18
|
+
connect(network: Network, provider: WalletConnectProvider): Promise<ConnectorResult>;
|
|
19
|
+
/**
|
|
20
|
+
* Get the current connection URI
|
|
21
|
+
*/
|
|
22
|
+
getConnectionURI(): string | null;
|
|
23
|
+
/**
|
|
24
|
+
* Build WalletConnect namespaces from provider's supported network IDs
|
|
25
|
+
*/
|
|
26
|
+
private buildNamespacesFromProvider;
|
|
27
|
+
/**
|
|
28
|
+
* Extract addresses from a WalletConnect session
|
|
29
|
+
*/
|
|
30
|
+
private extractAddresses;
|
|
31
|
+
/**
|
|
32
|
+
* Get current session
|
|
33
|
+
*/
|
|
34
|
+
getSession(): SessionTypes.Struct | null;
|
|
35
|
+
/**
|
|
36
|
+
* Set session (for restoration)
|
|
37
|
+
*/
|
|
38
|
+
setSession(session: SessionTypes.Struct): void;
|
|
39
|
+
/**
|
|
40
|
+
* Get active network
|
|
41
|
+
*/
|
|
42
|
+
getActiveNetwork(): Network | null;
|
|
43
|
+
/**
|
|
44
|
+
* Set active network (for network switching)
|
|
45
|
+
*/
|
|
46
|
+
setActiveNetwork(network: Network): void;
|
|
47
|
+
/**
|
|
48
|
+
* Get active address
|
|
49
|
+
*/
|
|
50
|
+
getActiveAddress(): string | null;
|
|
51
|
+
/**
|
|
52
|
+
* Set active address (for network/address switching)
|
|
53
|
+
*/
|
|
54
|
+
setActiveAddress(address: string): void;
|
|
55
|
+
/**
|
|
56
|
+
* Disconnect current session
|
|
57
|
+
*/
|
|
58
|
+
disconnect(): Promise<void>;
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=connection-service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connection-service.d.ts","sourceRoot":"","sources":["../../src/services/connection-service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AACxD,OAAO,KAAK,EACV,OAAO,EAEP,eAAe,EACf,qBAAqB,EAEtB,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAA;AAI5D;;GAEG;AACH,qBAAa,iBAAiB;IAMhB,OAAO,CAAC,mBAAmB;IALvC,OAAO,CAAC,cAAc,CAAmC;IACzD,OAAO,CAAC,aAAa,CAAsB;IAC3C,OAAO,CAAC,aAAa,CAAuB;IAC5C,OAAO,CAAC,aAAa,CAAsB;gBAEvB,mBAAmB,EAAE,mBAAmB;IAE5D;;;OAGG;IACG,OAAO,CACX,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,qBAAqB,GAC9B,OAAO,CAAC,eAAe,CAAC;IA0D3B;;OAEG;IACH,gBAAgB,IAAI,MAAM,GAAG,IAAI;IAIjC;;OAEG;IACH,OAAO,CAAC,2BAA2B;IAqGnC;;OAEG;IACH,OAAO,CAAC,gBAAgB;IA+CxB;;OAEG;IACH,UAAU,IAAI,YAAY,CAAC,MAAM,GAAG,IAAI;IAIxC;;OAEG;IACH,UAAU,CAAC,OAAO,EAAE,YAAY,CAAC,MAAM,GAAG,IAAI;IAI9C;;OAEG;IACH,gBAAgB,IAAI,OAAO,GAAG,IAAI;IAIlC;;OAEG;IACH,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAIxC;;OAEG;IACH,gBAAgB,IAAI,MAAM,GAAG,IAAI;IAIjC;;OAEG;IACH,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAIvC;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;CASlC"}
|
|
@@ -0,0 +1,235 @@
|
|
|
1
|
+
import { WalletConnectClient } from './walletconnect-client';
|
|
2
|
+
import { parseAccount, getNamespaceFromNetworkId } from '../utils/account-utils';
|
|
3
|
+
import { parseError } from '../utils/error-utils';
|
|
4
|
+
/**
|
|
5
|
+
* Service for handling WalletConnect connections
|
|
6
|
+
*/
|
|
7
|
+
export class ConnectionService {
|
|
8
|
+
walletConnectClient;
|
|
9
|
+
currentSession = null;
|
|
10
|
+
connectionUri = null;
|
|
11
|
+
activeNetwork = null;
|
|
12
|
+
activeAddress = null;
|
|
13
|
+
constructor(walletConnectClient) {
|
|
14
|
+
this.walletConnectClient = walletConnectClient;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Connect to a wallet via WalletConnect
|
|
18
|
+
* This will store the URI and wait for approval
|
|
19
|
+
*/
|
|
20
|
+
async connect(network, provider) {
|
|
21
|
+
try {
|
|
22
|
+
const client = await this.walletConnectClient.getClient();
|
|
23
|
+
// Disconnect any existing sessions first
|
|
24
|
+
await this.walletConnectClient.disconnectAll();
|
|
25
|
+
// Build namespaces from the provider's supported network IDs
|
|
26
|
+
const optionalNamespaces = this.buildNamespacesFromProvider(provider);
|
|
27
|
+
// Initiate connection - this starts the connection process
|
|
28
|
+
const connectResult = await client.connect({
|
|
29
|
+
optionalNamespaces
|
|
30
|
+
});
|
|
31
|
+
if (!connectResult.uri) {
|
|
32
|
+
throw new Error('No connection URI generated');
|
|
33
|
+
}
|
|
34
|
+
// Store the URI immediately so it can be retrieved via getConnectionURI
|
|
35
|
+
this.connectionUri = connectResult.uri;
|
|
36
|
+
// Start the approval process in the background
|
|
37
|
+
// The main thread will poll for the URI while this waits for approval
|
|
38
|
+
const approvalPromise = connectResult.approval();
|
|
39
|
+
try {
|
|
40
|
+
// Wait for approval (this resolves when user approves in wallet)
|
|
41
|
+
const session = await approvalPromise;
|
|
42
|
+
this.currentSession = session;
|
|
43
|
+
this.connectionUri = null; // Clear URI after connection
|
|
44
|
+
// Extract addresses from session
|
|
45
|
+
const { address, availableAddresses } = this.extractAddresses(session, network, provider);
|
|
46
|
+
// Store the active network and address
|
|
47
|
+
this.activeNetwork = network;
|
|
48
|
+
this.activeAddress = address;
|
|
49
|
+
return {
|
|
50
|
+
networkId: network.id,
|
|
51
|
+
address,
|
|
52
|
+
availableAddresses
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
catch (approvalError) {
|
|
56
|
+
this.connectionUri = null; // Clear URI on error
|
|
57
|
+
throw approvalError;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
catch (error) {
|
|
61
|
+
this.connectionUri = null; // Clear URI on error
|
|
62
|
+
throw parseError(error);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Get the current connection URI
|
|
67
|
+
*/
|
|
68
|
+
getConnectionURI() {
|
|
69
|
+
return this.connectionUri;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Build WalletConnect namespaces from provider's supported network IDs
|
|
73
|
+
*/
|
|
74
|
+
buildNamespacesFromProvider(provider) {
|
|
75
|
+
const namespaces = {};
|
|
76
|
+
// Group networks by namespace
|
|
77
|
+
const namespaceGroups = {};
|
|
78
|
+
provider.supportedNetworkIds.forEach(networkId => {
|
|
79
|
+
const namespace = getNamespaceFromNetworkId(networkId);
|
|
80
|
+
if (!namespaceGroups[namespace]) {
|
|
81
|
+
namespaceGroups[namespace] = [];
|
|
82
|
+
}
|
|
83
|
+
namespaceGroups[namespace].push(networkId);
|
|
84
|
+
});
|
|
85
|
+
// Build namespaces for each group
|
|
86
|
+
Object.entries(namespaceGroups).forEach(([namespace, chains]) => {
|
|
87
|
+
switch (namespace) {
|
|
88
|
+
case 'eip155':
|
|
89
|
+
namespaces['eip155'] = {
|
|
90
|
+
chains,
|
|
91
|
+
methods: [
|
|
92
|
+
'personal_sign',
|
|
93
|
+
'eth_sign',
|
|
94
|
+
'eth_signTypedData',
|
|
95
|
+
'eth_signTypedData_v4',
|
|
96
|
+
'eth_sendTransaction',
|
|
97
|
+
'eth_sendRawTransaction',
|
|
98
|
+
'eth_accounts',
|
|
99
|
+
'eth_requestAccounts',
|
|
100
|
+
'wallet_switchEthereumChain',
|
|
101
|
+
'wallet_addEthereumChain'
|
|
102
|
+
],
|
|
103
|
+
events: ['chainChanged', 'accountsChanged']
|
|
104
|
+
};
|
|
105
|
+
break;
|
|
106
|
+
case 'solana':
|
|
107
|
+
namespaces['solana'] = {
|
|
108
|
+
chains,
|
|
109
|
+
methods: [
|
|
110
|
+
'solana_signMessage',
|
|
111
|
+
'solana_signTransaction',
|
|
112
|
+
'solana_signAndSendTransaction',
|
|
113
|
+
'solana_getAccounts',
|
|
114
|
+
'solana_requestAccounts'
|
|
115
|
+
],
|
|
116
|
+
events: []
|
|
117
|
+
};
|
|
118
|
+
break;
|
|
119
|
+
case 'bip122':
|
|
120
|
+
namespaces['bip122'] = {
|
|
121
|
+
chains,
|
|
122
|
+
methods: [
|
|
123
|
+
'sendTransfer',
|
|
124
|
+
'getAccountAddresses',
|
|
125
|
+
'signPsbt',
|
|
126
|
+
'signMessage'
|
|
127
|
+
],
|
|
128
|
+
events: ['bip122_addressesChanged']
|
|
129
|
+
};
|
|
130
|
+
break;
|
|
131
|
+
case 'tron':
|
|
132
|
+
namespaces['tron'] = {
|
|
133
|
+
chains,
|
|
134
|
+
methods: ['tron_signTransaction', 'tron_signMessage'],
|
|
135
|
+
events: []
|
|
136
|
+
};
|
|
137
|
+
break;
|
|
138
|
+
default:
|
|
139
|
+
// For unknown namespaces, include basic methods
|
|
140
|
+
namespaces[namespace] = {
|
|
141
|
+
chains,
|
|
142
|
+
methods: [],
|
|
143
|
+
events: []
|
|
144
|
+
};
|
|
145
|
+
}
|
|
146
|
+
});
|
|
147
|
+
return namespaces;
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Extract addresses from a WalletConnect session
|
|
151
|
+
*/
|
|
152
|
+
extractAddresses(session, network, provider) {
|
|
153
|
+
const availableAddresses = [];
|
|
154
|
+
let primaryAddress = '';
|
|
155
|
+
// Extract addresses from all namespaces
|
|
156
|
+
Object.entries(session.namespaces).forEach(([, data]) => {
|
|
157
|
+
data.accounts.forEach((account) => {
|
|
158
|
+
try {
|
|
159
|
+
const { networkId, address } = parseAccount(account);
|
|
160
|
+
// Only include addresses for networks that are supported by the provider
|
|
161
|
+
if (provider.supportedNetworkIds.includes(networkId)) {
|
|
162
|
+
availableAddresses.push({
|
|
163
|
+
address,
|
|
164
|
+
networkId
|
|
165
|
+
});
|
|
166
|
+
// Set the primary address based on the requested network
|
|
167
|
+
if (networkId === network.id && !primaryAddress) {
|
|
168
|
+
primaryAddress = address;
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
catch {
|
|
173
|
+
// Skip invalid account formats
|
|
174
|
+
}
|
|
175
|
+
});
|
|
176
|
+
});
|
|
177
|
+
// If no address for the specific network, use the first available
|
|
178
|
+
if (!primaryAddress && availableAddresses.length > 0) {
|
|
179
|
+
primaryAddress = availableAddresses[0]?.address || '';
|
|
180
|
+
}
|
|
181
|
+
if (!primaryAddress) {
|
|
182
|
+
throw new Error('No addresses found in session');
|
|
183
|
+
}
|
|
184
|
+
return { address: primaryAddress, availableAddresses };
|
|
185
|
+
}
|
|
186
|
+
/**
|
|
187
|
+
* Get current session
|
|
188
|
+
*/
|
|
189
|
+
getSession() {
|
|
190
|
+
return this.currentSession;
|
|
191
|
+
}
|
|
192
|
+
/**
|
|
193
|
+
* Set session (for restoration)
|
|
194
|
+
*/
|
|
195
|
+
setSession(session) {
|
|
196
|
+
this.currentSession = session;
|
|
197
|
+
}
|
|
198
|
+
/**
|
|
199
|
+
* Get active network
|
|
200
|
+
*/
|
|
201
|
+
getActiveNetwork() {
|
|
202
|
+
return this.activeNetwork;
|
|
203
|
+
}
|
|
204
|
+
/**
|
|
205
|
+
* Set active network (for network switching)
|
|
206
|
+
*/
|
|
207
|
+
setActiveNetwork(network) {
|
|
208
|
+
this.activeNetwork = network;
|
|
209
|
+
}
|
|
210
|
+
/**
|
|
211
|
+
* Get active address
|
|
212
|
+
*/
|
|
213
|
+
getActiveAddress() {
|
|
214
|
+
return this.activeAddress;
|
|
215
|
+
}
|
|
216
|
+
/**
|
|
217
|
+
* Set active address (for network/address switching)
|
|
218
|
+
*/
|
|
219
|
+
setActiveAddress(address) {
|
|
220
|
+
this.activeAddress = address;
|
|
221
|
+
}
|
|
222
|
+
/**
|
|
223
|
+
* Disconnect current session
|
|
224
|
+
*/
|
|
225
|
+
async disconnect() {
|
|
226
|
+
if (this.currentSession) {
|
|
227
|
+
await this.walletConnectClient.disconnect(this.currentSession.topic);
|
|
228
|
+
this.currentSession = null;
|
|
229
|
+
}
|
|
230
|
+
this.connectionUri = null;
|
|
231
|
+
this.activeNetwork = null;
|
|
232
|
+
this.activeAddress = null;
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
//# sourceMappingURL=connection-service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connection-service.js","sourceRoot":"","sources":["../../src/services/connection-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { Network, SwitchNetworkResult } from '@meshconnect/uwc-types';
|
|
2
|
+
import { WalletConnectClient } from './walletconnect-client';
|
|
3
|
+
import { ConnectionService } from './connection-service';
|
|
4
|
+
/**
|
|
5
|
+
* Service for handling network switching in WalletConnect
|
|
6
|
+
*/
|
|
7
|
+
export declare class NetworkSwitchService {
|
|
8
|
+
private walletConnectClient;
|
|
9
|
+
private connectionService;
|
|
10
|
+
constructor(walletConnectClient: WalletConnectClient, connectionService: ConnectionService);
|
|
11
|
+
/**
|
|
12
|
+
* Switch to a different network
|
|
13
|
+
*/
|
|
14
|
+
switchNetwork(network: Network): Promise<SwitchNetworkResult>;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=network-switch-service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"network-switch-service.d.ts","sourceRoot":"","sources":["../../src/services/network-switch-service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAA;AAC1E,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAA;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AAIxD;;GAEG;AACH,qBAAa,oBAAoB;IAE7B,OAAO,CAAC,mBAAmB;IAC3B,OAAO,CAAC,iBAAiB;gBADjB,mBAAmB,EAAE,mBAAmB,EACxC,iBAAiB,EAAE,iBAAiB;IAG9C;;OAEG;IACG,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,mBAAmB,CAAC;CAgEpE"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { WalletConnectClient } from './walletconnect-client';
|
|
2
|
+
import { ConnectionService } from './connection-service';
|
|
3
|
+
import { parseAccount } from '../utils/account-utils';
|
|
4
|
+
import { parseError } from '../utils/error-utils';
|
|
5
|
+
/**
|
|
6
|
+
* Service for handling network switching in WalletConnect
|
|
7
|
+
*/
|
|
8
|
+
export class NetworkSwitchService {
|
|
9
|
+
walletConnectClient;
|
|
10
|
+
connectionService;
|
|
11
|
+
constructor(walletConnectClient, connectionService) {
|
|
12
|
+
this.walletConnectClient = walletConnectClient;
|
|
13
|
+
this.connectionService = connectionService;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Switch to a different network
|
|
17
|
+
*/
|
|
18
|
+
async switchNetwork(network) {
|
|
19
|
+
try {
|
|
20
|
+
const session = this.connectionService.getSession();
|
|
21
|
+
if (!session) {
|
|
22
|
+
throw new Error('No active session. Please connect first.');
|
|
23
|
+
}
|
|
24
|
+
const client = await this.walletConnectClient.getClient();
|
|
25
|
+
// Check if the requested network is available in the session
|
|
26
|
+
const networkChain = network.id;
|
|
27
|
+
const namespace = network.namespace;
|
|
28
|
+
if (!session.namespaces[namespace]?.chains?.includes(networkChain)) {
|
|
29
|
+
throw new Error(`Network ${networkChain} is not available in the current session`);
|
|
30
|
+
}
|
|
31
|
+
// For WalletConnect, we can't directly switch networks
|
|
32
|
+
// The wallet controls the active network
|
|
33
|
+
// We can only request methods on specific chains
|
|
34
|
+
// Return the current address for the requested network
|
|
35
|
+
const accounts = session.namespaces[namespace]?.accounts || [];
|
|
36
|
+
const matchingAccount = accounts.find(account => account.startsWith(networkChain));
|
|
37
|
+
if (!matchingAccount) {
|
|
38
|
+
throw new Error(`No account found for network ${networkChain}`);
|
|
39
|
+
}
|
|
40
|
+
// Extract address from account string
|
|
41
|
+
const { address } = parseAccount(matchingAccount);
|
|
42
|
+
// Update the active network and address in the connection service
|
|
43
|
+
this.connectionService.setActiveNetwork(network);
|
|
44
|
+
this.connectionService.setActiveAddress(address);
|
|
45
|
+
// Emit a chainChanged event if switching within the same namespace
|
|
46
|
+
if (namespace === 'eip155') {
|
|
47
|
+
try {
|
|
48
|
+
await client.emit({
|
|
49
|
+
topic: session.topic,
|
|
50
|
+
event: {
|
|
51
|
+
name: 'chainChanged',
|
|
52
|
+
data: networkChain
|
|
53
|
+
},
|
|
54
|
+
chainId: networkChain
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
catch {
|
|
58
|
+
// Some wallets may not support this event
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
return {
|
|
62
|
+
networkId: network.id,
|
|
63
|
+
address
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
catch (error) {
|
|
67
|
+
throw parseError(error);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
//# sourceMappingURL=network-switch-service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"network-switch-service.js","sourceRoot":"","sources":["../../src/services/network-switch-service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAA;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAA;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AAEjD;;GAEG;AACH,MAAM,OAAO,oBAAoB;IAErB;IACA;IAFV,YACU,mBAAwC,EACxC,iBAAoC;QADpC,wBAAmB,GAAnB,mBAAmB,CAAqB;QACxC,sBAAiB,GAAjB,iBAAiB,CAAmB;IAC3C,CAAC;IAEJ;;OAEG;IACH,KAAK,CAAC,aAAa,CAAC,OAAgB;QAClC,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC,UAAU,EAAE,CAAA;YACnD,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAA;YAC7D,CAAC;YAED,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,SAAS,EAAE,CAAA;YAEzD,6DAA6D;YAC7D,MAAM,YAAY,GAAG,OAAO,CAAC,EAAE,CAAA;YAC/B,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,CAAA;YAEnC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;gBACnE,MAAM,IAAI,KAAK,CACb,WAAW,YAAY,0CAA0C,CAClE,CAAA;YACH,CAAC;YAED,uDAAuD;YACvD,yCAAyC;YACzC,iDAAiD;YACjD,uDAAuD;YAEvD,MAAM,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,QAAQ,IAAI,EAAE,CAAA;YAC9D,MAAM,eAAe,GAAG,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAC9C,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,CACjC,CAAA;YAED,IAAI,CAAC,eAAe,EAAE,CAAC;gBACrB,MAAM,IAAI,KAAK,CAAC,gCAAgC,YAAY,EAAE,CAAC,CAAA;YACjE,CAAC;YAED,sCAAsC;YACtC,MAAM,EAAE,OAAO,EAAE,GAAG,YAAY,CAAC,eAAe,CAAC,CAAA;YAEjD,kEAAkE;YAClE,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAA;YAChD,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAA;YAEhD,mEAAmE;YACnE,IAAI,SAAS,KAAK,QAAQ,EAAE,CAAC;gBAC3B,IAAI,CAAC;oBACH,MAAM,MAAM,CAAC,IAAI,CAAC;wBAChB,KAAK,EAAE,OAAO,CAAC,KAAK;wBACpB,KAAK,EAAE;4BACL,IAAI,EAAE,cAAc;4BACpB,IAAI,EAAE,YAAY;yBACnB;wBACD,OAAO,EAAE,YAAY;qBACtB,CAAC,CAAA;gBACJ,CAAC;gBAAC,MAAM,CAAC;oBACP,0CAA0C;gBAC5C,CAAC;YACH,CAAC;YAED,OAAO;gBACL,SAAS,EAAE,OAAO,CAAC,EAAE;gBACrB,OAAO;aACR,CAAA;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,UAAU,CAAC,KAAK,CAAC,CAAA;QACzB,CAAC;IACH,CAAC;CACF"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { WalletConnectClient } from './walletconnect-client';
|
|
2
|
+
import { ConnectionService } from './connection-service';
|
|
3
|
+
/**
|
|
4
|
+
* Service for handling message signing in WalletConnect
|
|
5
|
+
*/
|
|
6
|
+
export declare class SignatureService {
|
|
7
|
+
private walletConnectClient;
|
|
8
|
+
private connectionService;
|
|
9
|
+
constructor(walletConnectClient: WalletConnectClient, connectionService: ConnectionService);
|
|
10
|
+
/**
|
|
11
|
+
* Sign a message with the connected wallet
|
|
12
|
+
*/
|
|
13
|
+
signMessage(message: string): Promise<string>;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=signature-service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"signature-service.d.ts","sourceRoot":"","sources":["../../src/services/signature-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAA;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AAKxD;;GAEG;AACH,qBAAa,gBAAgB;IAEzB,OAAO,CAAC,mBAAmB;IAC3B,OAAO,CAAC,iBAAiB;gBADjB,mBAAmB,EAAE,mBAAmB,EACxC,iBAAiB,EAAE,iBAAiB;IAG9C;;OAEG;IACG,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CA6GpD"}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import { WalletConnectClient } from './walletconnect-client';
|
|
2
|
+
import { ConnectionService } from './connection-service';
|
|
3
|
+
import { findAccountInNamespaces, parseAccount } from '../utils/account-utils';
|
|
4
|
+
import { base58Encode } from '../utils/encoding-utils';
|
|
5
|
+
import { parseError } from '../utils/error-utils';
|
|
6
|
+
/**
|
|
7
|
+
* Service for handling message signing in WalletConnect
|
|
8
|
+
*/
|
|
9
|
+
export class SignatureService {
|
|
10
|
+
walletConnectClient;
|
|
11
|
+
connectionService;
|
|
12
|
+
constructor(walletConnectClient, connectionService) {
|
|
13
|
+
this.walletConnectClient = walletConnectClient;
|
|
14
|
+
this.connectionService = connectionService;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Sign a message with the connected wallet
|
|
18
|
+
*/
|
|
19
|
+
async signMessage(message) {
|
|
20
|
+
try {
|
|
21
|
+
const session = this.connectionService.getSession();
|
|
22
|
+
if (!session) {
|
|
23
|
+
throw new Error('No active session. Please connect first.');
|
|
24
|
+
}
|
|
25
|
+
const activeNetwork = this.connectionService.getActiveNetwork();
|
|
26
|
+
const activeAddress = this.connectionService.getActiveAddress();
|
|
27
|
+
if (!activeNetwork) {
|
|
28
|
+
throw new Error('No active network. Please connect first.');
|
|
29
|
+
}
|
|
30
|
+
if (!activeAddress) {
|
|
31
|
+
throw new Error('No active address. Please connect first.');
|
|
32
|
+
}
|
|
33
|
+
const client = await this.walletConnectClient.getClient();
|
|
34
|
+
// Find the account that matches the active network and address
|
|
35
|
+
const targetAccount = findAccountInNamespaces(session.namespaces, activeNetwork.id, activeAddress);
|
|
36
|
+
if (!targetAccount) {
|
|
37
|
+
throw new Error(`No account found for network ${activeNetwork.id} and address ${activeAddress}`);
|
|
38
|
+
}
|
|
39
|
+
const { namespace: accountNamespace, chainId, address } = parseAccount(targetAccount);
|
|
40
|
+
// Determine the signing method based on namespace
|
|
41
|
+
let method;
|
|
42
|
+
let params;
|
|
43
|
+
switch (accountNamespace) {
|
|
44
|
+
case 'eip155':
|
|
45
|
+
method = 'personal_sign';
|
|
46
|
+
// For personal_sign: [message, address]
|
|
47
|
+
params = [message, address];
|
|
48
|
+
break;
|
|
49
|
+
case 'solana': {
|
|
50
|
+
method = 'solana_signMessage';
|
|
51
|
+
// For Solana: message needs to be base58 encoded
|
|
52
|
+
const base58Message = base58Encode(message);
|
|
53
|
+
// For Solana, params is an object, not an array
|
|
54
|
+
params = {
|
|
55
|
+
message: base58Message,
|
|
56
|
+
pubkey: address
|
|
57
|
+
};
|
|
58
|
+
break;
|
|
59
|
+
}
|
|
60
|
+
case 'bip122':
|
|
61
|
+
method = 'signMessage';
|
|
62
|
+
params = [
|
|
63
|
+
{
|
|
64
|
+
message,
|
|
65
|
+
address
|
|
66
|
+
}
|
|
67
|
+
];
|
|
68
|
+
break;
|
|
69
|
+
case 'tron':
|
|
70
|
+
method = 'tron_signMessage';
|
|
71
|
+
params = [
|
|
72
|
+
{
|
|
73
|
+
message,
|
|
74
|
+
address
|
|
75
|
+
}
|
|
76
|
+
];
|
|
77
|
+
break;
|
|
78
|
+
default:
|
|
79
|
+
throw new Error(`Signing not supported for namespace: ${accountNamespace}`);
|
|
80
|
+
}
|
|
81
|
+
// Make the signing request
|
|
82
|
+
const result = await client.request({
|
|
83
|
+
topic: session.topic,
|
|
84
|
+
chainId: `${accountNamespace}:${chainId}`,
|
|
85
|
+
request: {
|
|
86
|
+
method,
|
|
87
|
+
params
|
|
88
|
+
}
|
|
89
|
+
});
|
|
90
|
+
// Handle different response formats
|
|
91
|
+
if (accountNamespace === 'solana') {
|
|
92
|
+
// Solana returns an object with a signature property
|
|
93
|
+
return result.signature;
|
|
94
|
+
}
|
|
95
|
+
return result;
|
|
96
|
+
}
|
|
97
|
+
catch (error) {
|
|
98
|
+
throw parseError(error);
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
//# sourceMappingURL=signature-service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"signature-service.js","sourceRoot":"","sources":["../../src/services/signature-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import type { TransactionRequest, TransactionResult, NetworkRpcMap } from '@meshconnect/uwc-types';
|
|
2
|
+
import { WalletConnectClient } from './walletconnect-client';
|
|
3
|
+
import { ConnectionService } from './connection-service';
|
|
4
|
+
/**
|
|
5
|
+
* Service for handling transactions in WalletConnect
|
|
6
|
+
*/
|
|
7
|
+
export declare class TransactionService {
|
|
8
|
+
private walletConnectClient;
|
|
9
|
+
private connectionService;
|
|
10
|
+
private networkRpcMap;
|
|
11
|
+
constructor(walletConnectClient: WalletConnectClient, connectionService: ConnectionService, networkRpcMap?: NetworkRpcMap);
|
|
12
|
+
/**
|
|
13
|
+
* Send a transaction with the connected wallet
|
|
14
|
+
*/
|
|
15
|
+
sendTransaction(request: TransactionRequest): Promise<TransactionResult>;
|
|
16
|
+
/**
|
|
17
|
+
* Send an Ethereum transaction
|
|
18
|
+
*/
|
|
19
|
+
private sendEthereumTransaction;
|
|
20
|
+
/**
|
|
21
|
+
* Send a Solana transaction
|
|
22
|
+
*/
|
|
23
|
+
private sendSolanaTransaction;
|
|
24
|
+
/**
|
|
25
|
+
* Send native token transfer (ETH, BNB, MATIC, etc.)
|
|
26
|
+
*/
|
|
27
|
+
private sendNativeTransfer;
|
|
28
|
+
/**
|
|
29
|
+
* Send smart contract transaction (including ERC-20 transfers)
|
|
30
|
+
*/
|
|
31
|
+
private sendContractCall;
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=transaction-service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transaction-service.d.ts","sourceRoot":"","sources":["../../src/services/transaction-service.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EACV,kBAAkB,EAClB,iBAAiB,EAKjB,aAAa,EACd,MAAM,wBAAwB,CAAA;AAE/B,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAA;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AAQxD;;GAEG;AACH,qBAAa,kBAAkB;IAE3B,OAAO,CAAC,mBAAmB;IAC3B,OAAO,CAAC,iBAAiB;IACzB,OAAO,CAAC,aAAa;gBAFb,mBAAmB,EAAE,mBAAmB,EACxC,iBAAiB,EAAE,iBAAiB,EACpC,aAAa,GAAE,aAAkB;IAG3C;;OAEG;IACG,eAAe,CACnB,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC,iBAAiB,CAAC;IA2C7B;;OAEG;YACW,uBAAuB;IAwCrC;;OAEG;YACW,qBAAqB;IAmHnC;;OAEG;YACW,kBAAkB;IAkEhC;;OAEG;YACW,gBAAgB;CA8E/B"}
|