@trustwallet/connect-walletconnect 0.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (94) hide show
  1. package/LICENSE.md +76 -0
  2. package/dist/constants.d.ts +30 -0
  3. package/dist/constants.d.ts.map +1 -0
  4. package/dist/constants.js +30 -0
  5. package/dist/constants.js.map +1 -0
  6. package/dist/errors/index.d.ts +34 -0
  7. package/dist/errors/index.d.ts.map +1 -0
  8. package/dist/errors/index.js +55 -0
  9. package/dist/errors/index.js.map +1 -0
  10. package/dist/explorer-api/index.d.ts +83 -0
  11. package/dist/explorer-api/index.d.ts.map +1 -0
  12. package/dist/explorer-api/index.js +118 -0
  13. package/dist/explorer-api/index.js.map +1 -0
  14. package/dist/index.d.ts +7 -0
  15. package/dist/index.d.ts.map +1 -0
  16. package/dist/index.js +7 -0
  17. package/dist/index.js.map +1 -0
  18. package/dist/react/hooks/index.d.ts +3 -0
  19. package/dist/react/hooks/index.d.ts.map +1 -0
  20. package/dist/react/hooks/index.js +3 -0
  21. package/dist/react/hooks/index.js.map +1 -0
  22. package/dist/react/hooks/useWalletConnect.d.ts +16 -0
  23. package/dist/react/hooks/useWalletConnect.d.ts.map +1 -0
  24. package/dist/react/hooks/useWalletConnect.js +51 -0
  25. package/dist/react/hooks/useWalletConnect.js.map +1 -0
  26. package/dist/react/hooks/useWalletConnectExplorer.d.ts +18 -0
  27. package/dist/react/hooks/useWalletConnectExplorer.d.ts.map +1 -0
  28. package/dist/react/hooks/useWalletConnectExplorer.js +82 -0
  29. package/dist/react/hooks/useWalletConnectExplorer.js.map +1 -0
  30. package/dist/react/hooks/useWalletConnectService.d.ts +7 -0
  31. package/dist/react/hooks/useWalletConnectService.d.ts.map +1 -0
  32. package/dist/react/hooks/useWalletConnectService.js +15 -0
  33. package/dist/react/hooks/useWalletConnectService.js.map +1 -0
  34. package/dist/react/index.d.ts +3 -0
  35. package/dist/react/index.d.ts.map +1 -0
  36. package/dist/react/index.js +2 -0
  37. package/dist/react/index.js.map +1 -0
  38. package/dist/rpc-interceptors/bip122/index.d.ts +25 -0
  39. package/dist/rpc-interceptors/bip122/index.d.ts.map +1 -0
  40. package/dist/rpc-interceptors/bip122/index.js +124 -0
  41. package/dist/rpc-interceptors/bip122/index.js.map +1 -0
  42. package/dist/rpc-interceptors/eip155/index.d.ts +27 -0
  43. package/dist/rpc-interceptors/eip155/index.d.ts.map +1 -0
  44. package/dist/rpc-interceptors/eip155/index.js +55 -0
  45. package/dist/rpc-interceptors/eip155/index.js.map +1 -0
  46. package/dist/rpc-interceptors/solana/index.d.ts +29 -0
  47. package/dist/rpc-interceptors/solana/index.d.ts.map +1 -0
  48. package/dist/rpc-interceptors/solana/index.js +112 -0
  49. package/dist/rpc-interceptors/solana/index.js.map +1 -0
  50. package/dist/rpc-types/bip122.d.ts +54 -0
  51. package/dist/rpc-types/bip122.d.ts.map +1 -0
  52. package/dist/rpc-types/bip122.js +2 -0
  53. package/dist/rpc-types/bip122.js.map +1 -0
  54. package/dist/rpc-types/eip155.d.ts +64 -0
  55. package/dist/rpc-types/eip155.d.ts.map +1 -0
  56. package/dist/rpc-types/eip155.js +6 -0
  57. package/dist/rpc-types/eip155.js.map +1 -0
  58. package/dist/rpc-types/index.d.ts +4 -0
  59. package/dist/rpc-types/index.d.ts.map +1 -0
  60. package/dist/rpc-types/index.js +4 -0
  61. package/dist/rpc-types/index.js.map +1 -0
  62. package/dist/rpc-types/solana.d.ts +72 -0
  63. package/dist/rpc-types/solana.d.ts.map +1 -0
  64. package/dist/rpc-types/solana.js +6 -0
  65. package/dist/rpc-types/solana.js.map +1 -0
  66. package/dist/scope-interceptor/index.d.ts +3 -0
  67. package/dist/scope-interceptor/index.d.ts.map +1 -0
  68. package/dist/scope-interceptor/index.js +29 -0
  69. package/dist/scope-interceptor/index.js.map +1 -0
  70. package/dist/service/index.d.ts +14 -0
  71. package/dist/service/index.d.ts.map +1 -0
  72. package/dist/service/index.js +40 -0
  73. package/dist/service/index.js.map +1 -0
  74. package/dist/service/service.d.ts +34 -0
  75. package/dist/service/service.d.ts.map +1 -0
  76. package/dist/service/service.js +63 -0
  77. package/dist/service/service.js.map +1 -0
  78. package/dist/types.d.ts +18 -0
  79. package/dist/types.d.ts.map +1 -0
  80. package/dist/types.js +2 -0
  81. package/dist/types.js.map +1 -0
  82. package/dist/wallet/index.d.ts +49 -0
  83. package/dist/wallet/index.d.ts.map +1 -0
  84. package/dist/wallet/index.js +361 -0
  85. package/dist/wallet/index.js.map +1 -0
  86. package/dist/wallet/namespace-config.d.ts +31 -0
  87. package/dist/wallet/namespace-config.d.ts.map +1 -0
  88. package/dist/wallet/namespace-config.js +92 -0
  89. package/dist/wallet/namespace-config.js.map +1 -0
  90. package/dist/wallet/types.d.ts +22 -0
  91. package/dist/wallet/types.d.ts.map +1 -0
  92. package/dist/wallet/types.js +2 -0
  93. package/dist/wallet/types.js.map +1 -0
  94. package/package.json +58 -0
@@ -0,0 +1,361 @@
1
+ import { WalletAdapterBase, extractNamespace, NoActiveSessionError, } from '@trustwallet/connect-core';
2
+ import { NAMESPACES, WALLETCONNECT_WALLET } from '../constants';
3
+ import { NAMESPACE_CONFIG } from './namespace-config';
4
+ class AbortError extends Error {
5
+ constructor(message) {
6
+ super(message);
7
+ this.code = 'ABORT_ERROR';
8
+ this.name = 'AbortError';
9
+ }
10
+ }
11
+ const { EIP155, SOLANA, BIP122 } = NAMESPACES;
12
+ export class WalletConnectWalletAdapter extends WalletAdapterBase {
13
+ constructor(options) {
14
+ super();
15
+ this.options = options;
16
+ // We cannot know if a wallet supports namespaces or not until we make a session request.
17
+ this.namespaceIds = [];
18
+ this.id = WALLETCONNECT_WALLET.ID;
19
+ this.type = 'caip';
20
+ this.name = WALLETCONNECT_WALLET.NAME;
21
+ this.icon = WALLETCONNECT_WALLET.ICON;
22
+ this.accounts = new Map();
23
+ this.unsubscribers = [];
24
+ this.service = options.walletConnectService;
25
+ }
26
+ /**
27
+ * Get account data for a specific namespace
28
+ */
29
+ getAccount(namespaceId) {
30
+ return (this.accounts.get(namespaceId) ?? {});
31
+ }
32
+ /**
33
+ * Set account data for a specific namespace
34
+ */
35
+ setAccount(namespaceId, data) {
36
+ this.accounts.set(namespaceId, data);
37
+ }
38
+ /**
39
+ * Update account data for a specific namespace (merge with existing)
40
+ */
41
+ updateAccount(namespaceId, updates) {
42
+ const current = this.getAccount(namespaceId);
43
+ this.accounts.set(namespaceId, { ...current, ...updates });
44
+ }
45
+ /**
46
+ * Reset all account data
47
+ */
48
+ resetAllAccounts() {
49
+ this.accounts.clear();
50
+ }
51
+ /**
52
+ * Clean up all pending proposals from previous failed attempts
53
+ */
54
+ async cleanupPendingPairings() {
55
+ try {
56
+ const signClient = await this.service.getSignClientInstance();
57
+ const pairings = signClient.core.pairing.getPairings();
58
+ const proposals = signClient.proposal.getAll();
59
+ const activePairingTopics = new Set(signClient.session
60
+ .getAll()
61
+ .map((s) => s.pairingTopic)
62
+ .filter(Boolean));
63
+ for (const pairing of pairings) {
64
+ if (!activePairingTopics.has(pairing.topic)) {
65
+ signClient.core.expirer.set(pairing.topic, 0);
66
+ }
67
+ }
68
+ await Promise.allSettled(proposals.map((proposal) => signClient.proposal.delete(proposal.id, {
69
+ code: 5000,
70
+ message: 'Cleanup',
71
+ })));
72
+ }
73
+ catch (error) {
74
+ // Log but don't throw - cleanup is best effort
75
+ console.warn('Failed to cleanup WalletConnect pairings:', error);
76
+ }
77
+ }
78
+ async connect() {
79
+ if (this.connectPromise)
80
+ return this.connectPromise;
81
+ this.connectPromise = (async () => {
82
+ try {
83
+ this.service.setUri('');
84
+ const oldSession = await this.reconnect();
85
+ if (oldSession) {
86
+ return oldSession;
87
+ }
88
+ await this.cleanupPendingPairings();
89
+ const signClient = await this.service.getSignClientInstance();
90
+ const { uri, approval } = await signClient.connect(await this.service.getConnectParams());
91
+ if (uri) {
92
+ this.service.setUri(uri);
93
+ }
94
+ this.abortController = new AbortController();
95
+ const signal = this.abortController.signal;
96
+ const session = await Promise.race([
97
+ approval(),
98
+ new Promise((_, reject) => {
99
+ signal.addEventListener('abort', () => {
100
+ reject(new AbortError('Connection aborted'));
101
+ });
102
+ }),
103
+ ]);
104
+ this.currentSession = session;
105
+ await this.startListeners();
106
+ const namespaces = {};
107
+ for (const [namespaceKey, namespaceData] of Object.entries(session.namespaces)) {
108
+ const nsKey = namespaceKey;
109
+ const nsData = namespaceData;
110
+ namespaces[nsKey] = {
111
+ chains: nsData.chains || [],
112
+ methods: nsData.methods,
113
+ events: nsData.events,
114
+ accounts: nsData.accounts,
115
+ };
116
+ }
117
+ this.service.setUri('');
118
+ this.onConnect(namespaces);
119
+ return { namespaces };
120
+ }
121
+ catch (error) {
122
+ this.abortController = undefined;
123
+ this.service.setUri('');
124
+ this.connectPromise = undefined;
125
+ if (error instanceof AbortError) {
126
+ return { namespaces: {} };
127
+ }
128
+ throw error;
129
+ }
130
+ finally {
131
+ this.connectPromise = undefined;
132
+ }
133
+ })();
134
+ return this.connectPromise;
135
+ }
136
+ disconnectRemainingSessions(signClient) {
137
+ const sessions = signClient.session.getAll();
138
+ if (!sessions.length)
139
+ return;
140
+ const sessionsToDisconnect = sessions.slice(0, -1);
141
+ for (const session of sessionsToDisconnect) {
142
+ /**
143
+ * we don't await- if disconnection fails,
144
+ * sessions will expire naturally or be cleaned up on next connect.
145
+ *
146
+ * Why would the user want a hundred sessions connected to the same website?
147
+ */
148
+ signClient
149
+ .disconnect({
150
+ topic: session.topic,
151
+ reason: {
152
+ code: 6000,
153
+ message: 'Disconnecting from old session',
154
+ },
155
+ })
156
+ .catch((e) => console.warn(`Unable to disconnect from old session ${session.topic}`, e));
157
+ }
158
+ }
159
+ async reconnect() {
160
+ const signClient = await this.service.getSignClientInstance();
161
+ const sessions = signClient.session.getAll();
162
+ if (!sessions.length)
163
+ return;
164
+ // Use the most recent session
165
+ const session = sessions[sessions.length - 1];
166
+ this.currentSession = session;
167
+ this.disconnectRemainingSessions(signClient);
168
+ this.startListeners();
169
+ const namespaces = {};
170
+ for (const [namespaceKey, namespaceData] of Object.entries(session.namespaces)) {
171
+ const nsKey = namespaceKey;
172
+ const nsData = namespaceData;
173
+ namespaces[nsKey] = {
174
+ chains: nsData.chains || [],
175
+ methods: nsData.methods,
176
+ events: nsData.events,
177
+ accounts: nsData.accounts,
178
+ };
179
+ }
180
+ this.onConnect(namespaces);
181
+ return { namespaces };
182
+ }
183
+ async disconnect() {
184
+ try {
185
+ this.stopListeners();
186
+ if (!this.currentSession)
187
+ return;
188
+ const topic = this.currentSession.topic;
189
+ const signClient = await this.service.getSignClientInstance();
190
+ // Reset all accounts
191
+ this.resetAllAccounts();
192
+ // Emit empty accounts for EIP155 (fallback behavior)
193
+ this.emitCaipSessionEvent({
194
+ chainId: `${EIP155.ID}:1`,
195
+ event: {
196
+ name: EIP155.EVENTS.ACCOUNTS_CHANGED,
197
+ data: [],
198
+ },
199
+ });
200
+ signClient.disconnect({
201
+ topic,
202
+ reason: {
203
+ code: 6000,
204
+ message: 'User disconnected',
205
+ },
206
+ });
207
+ const inactivePairings = signClient.pairing.getAll();
208
+ for (const pairing of inactivePairings) {
209
+ signClient.core.expirer.set(pairing.topic, 0);
210
+ }
211
+ this.currentSession = undefined;
212
+ this.service.setUri('');
213
+ }
214
+ catch (e) {
215
+ throw e;
216
+ }
217
+ }
218
+ async getProvider() {
219
+ const signClient = await this.service.getSignClientInstance();
220
+ if (!this.currentSession) {
221
+ throw new NoActiveSessionError();
222
+ }
223
+ const session = this.currentSession;
224
+ const provider = {
225
+ request: async (args) => {
226
+ // Determine namespace from chainId
227
+ const namespaceId = extractNamespace(args.chainId);
228
+ const config = NAMESPACE_CONFIG[namespaceId];
229
+ if (!config) {
230
+ // Fallback to direct WalletConnect request
231
+ return signClient.request({
232
+ topic: session.topic,
233
+ chainId: args.chainId,
234
+ request: {
235
+ method: args.request.method,
236
+ params: args.request.params,
237
+ },
238
+ });
239
+ }
240
+ // Get account data for this namespace
241
+ const account = this.getAccount(namespaceId);
242
+ // Get the interceptor dynamically
243
+ const interceptor = await config.getInterceptor();
244
+ // Build context using namespace config
245
+ const context = config.buildContext(account, session, signClient);
246
+ // Call the interceptor
247
+ return interceptor(context, args);
248
+ },
249
+ };
250
+ return provider;
251
+ }
252
+ async startListeners() {
253
+ if (!this.currentSession)
254
+ return;
255
+ this.stopListeners();
256
+ const signClient = await this.service.getSignClientInstance();
257
+ const topic = this.currentSession.topic;
258
+ const handleSessionEvent = (event) => {
259
+ if (event.topic !== topic)
260
+ return;
261
+ // Determine namespace from chainId
262
+ const namespaceId = extractNamespace(event.params.chainId);
263
+ const config = NAMESPACE_CONFIG[namespaceId];
264
+ const namespace = NAMESPACES[namespaceId.toUpperCase()];
265
+ if (!config || !namespace) {
266
+ // Still emit generic event for unsupported namespaces
267
+ this.emitCaipSessionEvent({
268
+ chainId: event.params.chainId,
269
+ event: event.params.event,
270
+ });
271
+ return;
272
+ }
273
+ // Handle ACCOUNTS_CHANGED event
274
+ if (event.params.event.name === namespace.EVENTS.ACCOUNTS_CHANGED) {
275
+ const updates = config.parseAccountsChangedEvent(event.params.event.data);
276
+ this.updateAccount(namespaceId, updates);
277
+ const updatedAccount = this.getAccount(namespaceId);
278
+ const eventChainId = (updatedAccount.chainId || event.params.chainId);
279
+ this.emitCaipSessionEvent({
280
+ chainId: eventChainId,
281
+ event: {
282
+ name: namespace.EVENTS.ACCOUNTS_CHANGED,
283
+ data: event.params.event.data,
284
+ },
285
+ });
286
+ }
287
+ // Handle CHAIN_CHANGED event
288
+ if (event.params.event.name === namespace.EVENTS.CHAIN_CHANGED) {
289
+ const updates = config.parseChainChangedEvent(event.params.event.data);
290
+ this.updateAccount(namespaceId, updates);
291
+ const updatedAccount = this.getAccount(namespaceId);
292
+ const eventChainId = (updatedAccount.chainId || event.params.chainId);
293
+ this.emitCaipSessionEvent({
294
+ chainId: eventChainId,
295
+ event: {
296
+ name: namespace.EVENTS.CHAIN_CHANGED,
297
+ data: updatedAccount.chainId,
298
+ },
299
+ });
300
+ }
301
+ // Always emit generic event
302
+ this.emitCaipSessionEvent({
303
+ chainId: event.params.chainId,
304
+ event: event.params.event,
305
+ });
306
+ };
307
+ const handleSessionDelete = (event) => {
308
+ if (event.topic !== topic)
309
+ return;
310
+ this.currentSession = undefined;
311
+ this.service.setUri('');
312
+ this.stopListeners();
313
+ this.emitCaipSessionDelete();
314
+ };
315
+ signClient.on('session_event', handleSessionEvent);
316
+ signClient.on('session_delete', handleSessionDelete);
317
+ this.unsubscribers = [
318
+ () => signClient.off('session_event', handleSessionEvent),
319
+ () => signClient.off('session_delete', handleSessionDelete),
320
+ ];
321
+ }
322
+ stopListeners() {
323
+ this.unsubscribers.forEach((unsubscriber) => unsubscriber());
324
+ this.unsubscribers = [];
325
+ }
326
+ onConnect(namespaces) {
327
+ // Process each namespace using configuration
328
+ for (const [namespaceKey, namespaceData] of Object.entries(namespaces)) {
329
+ const namespaceId = namespaceKey;
330
+ const config = NAMESPACE_CONFIG[namespaceId];
331
+ if (!config || !namespaceData)
332
+ continue;
333
+ const firstChain = namespaceData.chains?.[0];
334
+ const firstAccount = namespaceData.accounts[0];
335
+ if (!firstChain || !firstAccount)
336
+ continue;
337
+ const parsedChain = config.parseChain(firstChain);
338
+ const parsedAccount = config.parseAccount(firstAccount);
339
+ // Set account data based on namespace type
340
+ if (namespaceId === EIP155.ID) {
341
+ this.setAccount(EIP155.ID, {
342
+ address: parsedAccount,
343
+ chainId: parsedChain,
344
+ });
345
+ }
346
+ else if (namespaceId === SOLANA.ID) {
347
+ this.setAccount(SOLANA.ID, {
348
+ pubkey: parsedAccount,
349
+ chainId: parsedChain,
350
+ });
351
+ }
352
+ else if (namespaceId === BIP122.ID) {
353
+ this.setAccount(BIP122.ID, {
354
+ address: parsedAccount,
355
+ chainId: parsedChain,
356
+ });
357
+ }
358
+ }
359
+ }
360
+ }
361
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/wallet/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ import type { SessionTypes } from '@walletconnect/types';
2
+ import type { SignClientInstance } from '../types';
3
+ import type { NamespaceAccountData, NamespaceId } from './types';
4
+ import { type ChainId } from '@trustwallet/connect-core';
5
+ import type { EIP155InterceptorContext } from '../rpc-interceptors/eip155';
6
+ import type { SolanaInterceptorContext } from '../rpc-interceptors/solana';
7
+ import type { BIP122InterceptorContext } from '../rpc-interceptors/bip122';
8
+ /**
9
+ * Interceptor function type
10
+ */
11
+ type InterceptorFunction = (context: any, args: any) => Promise<any>;
12
+ /**
13
+ * Configuration type for a namespace
14
+ */
15
+ type NamespaceConfigItem<N extends NamespaceId> = {
16
+ parseAccount: (account: string) => string;
17
+ parseChain: (chain: string | ChainId) => ChainId;
18
+ getInterceptor: () => Promise<InterceptorFunction>;
19
+ buildContext: (account: Partial<NamespaceAccountData[N]>, session: SessionTypes.Struct, signClient: SignClientInstance) => EIP155InterceptorContext | SolanaInterceptorContext | BIP122InterceptorContext;
20
+ parseAccountsChangedEvent: (data: unknown) => Partial<NamespaceAccountData[N]>;
21
+ parseChainChangedEvent: (data: unknown) => Partial<NamespaceAccountData[N]>;
22
+ };
23
+ type NamespaceConfigMap = {
24
+ [K in NamespaceId]: NamespaceConfigItem<K>;
25
+ };
26
+ /**
27
+ * Configuration for each namespace to handle account parsing and RPC interception
28
+ */
29
+ export declare const NAMESPACE_CONFIG: NamespaceConfigMap;
30
+ export {};
31
+ //# sourceMappingURL=namespace-config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"namespace-config.d.ts","sourceRoot":"","sources":["../../src/wallet/namespace-config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AACxD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAA;AAClD,OAAO,KAAK,EAAE,oBAAoB,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAGhE,OAAO,EAAiD,KAAK,OAAO,EAAwB,MAAM,2BAA2B,CAAA;AAC7H,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAA;AAC1E,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAA;AAC1E,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAA;AAI1E;;GAEG;AACH,KAAK,mBAAmB,GAAG,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,KAAK,OAAO,CAAC,GAAG,CAAC,CAAA;AAEpE;;GAEG;AACH,KAAK,mBAAmB,CAAC,CAAC,SAAS,WAAW,IAAI;IACjD,YAAY,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,CAAA;IACzC,UAAU,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,KAAK,OAAO,CAAA;IAChD,cAAc,EAAE,MAAM,OAAO,CAAC,mBAAmB,CAAC,CAAA;IAClD,YAAY,EAAE,CACb,OAAO,EAAE,OAAO,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,EACzC,OAAO,EAAE,YAAY,CAAC,MAAM,EAC5B,UAAU,EAAE,kBAAkB,KAC1B,wBAAwB,GAAG,wBAAwB,GAAG,wBAAwB,CAAA;IACnF,yBAAyB,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,OAAO,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAA;IAC9E,sBAAsB,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,OAAO,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAA;CAC3E,CAAA;AAED,KAAK,kBAAkB,GAAG;KACxB,CAAC,IAAI,WAAW,GAAG,mBAAmB,CAAC,CAAC,CAAC;CAC1C,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,gBAAgB,EAAE,kBAoH9B,CAAA"}
@@ -0,0 +1,92 @@
1
+ import { NAMESPACES } from '../constants';
2
+ import { hexToBytes } from '@trustwallet/connect-utils/encoding';
3
+ import { extractChainRef, extractAddress, buildChainId, InvalidChainRefError } from '@trustwallet/connect-core';
4
+ const { EIP155, SOLANA, BIP122 } = NAMESPACES;
5
+ /**
6
+ * Configuration for each namespace to handle account parsing and RPC interception
7
+ */
8
+ export const NAMESPACE_CONFIG = {
9
+ [EIP155.ID]: {
10
+ parseAccount: (account) => extractAddress(account),
11
+ parseChain: (chain) => {
12
+ const ref = extractChainRef(chain);
13
+ const num = Number(ref);
14
+ if (!Number.isFinite(num))
15
+ throw new InvalidChainRefError(ref, EIP155.ID);
16
+ return buildChainId({ namespace: EIP155.ID, reference: num.toString() });
17
+ },
18
+ getInterceptor: async () => {
19
+ const { interceptEip155Requests } = await import('../rpc-interceptors/eip155');
20
+ return interceptEip155Requests;
21
+ },
22
+ buildContext: (account, session, signClient) => ({
23
+ client: signClient,
24
+ session,
25
+ currentChainId: account.chainId,
26
+ currentAddress: account.address,
27
+ supportedChains: session.namespaces.eip155?.chains || [],
28
+ }),
29
+ parseAccountsChangedEvent: (data) => {
30
+ const accounts = data;
31
+ return { address: accounts[0] };
32
+ },
33
+ parseChainChangedEvent: (data) => {
34
+ const numRef = Number(data);
35
+ return { chainId: buildChainId({ namespace: EIP155.ID, reference: numRef.toString() }) };
36
+ },
37
+ },
38
+ [SOLANA.ID]: {
39
+ parseAccount: (account) => extractAddress(account),
40
+ parseChain: (chain) => chain,
41
+ getInterceptor: async () => {
42
+ const { interceptSolanaRequests } = await import('../rpc-interceptors/solana');
43
+ return interceptSolanaRequests;
44
+ },
45
+ buildContext: (account, session, signClient) => ({
46
+ client: signClient,
47
+ session,
48
+ currentChainId: account.chainId,
49
+ currentAccount: account.pubkey ? { pubkey: account.pubkey } : undefined,
50
+ }),
51
+ parseAccountsChangedEvent: (data) => {
52
+ const accounts = data;
53
+ return { pubkey: accounts[0] };
54
+ },
55
+ parseChainChangedEvent: (data) => {
56
+ return { chainId: data };
57
+ },
58
+ },
59
+ [BIP122.ID]: {
60
+ parseAccount: (account) => extractAddress(account),
61
+ parseChain: (chain) => chain,
62
+ getInterceptor: async () => {
63
+ const { interceptBIP122Requests } = await import('../rpc-interceptors/bip122');
64
+ return interceptBIP122Requests;
65
+ },
66
+ buildContext: (account, session, signClient) => ({
67
+ client: signClient,
68
+ session,
69
+ currentChainId: account.chainId,
70
+ currentAccount: account.address
71
+ ? {
72
+ address: account.address,
73
+ publicKey: account.publicKey,
74
+ addressType: account.addressType,
75
+ }
76
+ : undefined,
77
+ }),
78
+ parseAccountsChangedEvent: (data) => {
79
+ const accounts = data;
80
+ const accountData = accounts[0];
81
+ return {
82
+ address: accountData?.address,
83
+ publicKey: accountData?.publicKey ? hexToBytes(accountData.publicKey) : undefined,
84
+ addressType: accountData?.addressType,
85
+ };
86
+ },
87
+ parseChainChangedEvent: (data) => {
88
+ return { chainId: data };
89
+ },
90
+ },
91
+ };
92
+ //# sourceMappingURL=namespace-config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"namespace-config.js","sourceRoot":"","sources":["../../src/wallet/namespace-config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ import type { ChainId } from '@trustwallet/connect-core';
2
+ /**
3
+ * Account data structure for each namespace
4
+ */
5
+ export type NamespaceAccountData = {
6
+ eip155: {
7
+ address: string;
8
+ chainId: ChainId;
9
+ };
10
+ solana: {
11
+ pubkey: string;
12
+ chainId: ChainId;
13
+ };
14
+ bip122: {
15
+ address: string;
16
+ publicKey?: Uint8Array;
17
+ addressType?: 'p2tr' | 'p2wpkh' | 'p2sh' | 'p2pkh';
18
+ chainId: ChainId;
19
+ };
20
+ };
21
+ export type NamespaceId = keyof NamespaceAccountData;
22
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/wallet/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAA;AAExD;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAAG;IAClC,MAAM,EAAE;QACP,OAAO,EAAE,MAAM,CAAA;QACf,OAAO,EAAE,OAAO,CAAA;KAChB,CAAA;IACD,MAAM,EAAE;QACP,MAAM,EAAE,MAAM,CAAA;QACd,OAAO,EAAE,OAAO,CAAA;KAChB,CAAA;IACD,MAAM,EAAE;QACP,OAAO,EAAE,MAAM,CAAA;QACf,SAAS,CAAC,EAAE,UAAU,CAAA;QACtB,WAAW,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAA;QAClD,OAAO,EAAE,OAAO,CAAA;KAChB,CAAA;CACD,CAAA;AAED,MAAM,MAAM,WAAW,GAAG,MAAM,oBAAoB,CAAA"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/wallet/types.ts"],"names":[],"mappings":""}
package/package.json ADDED
@@ -0,0 +1,58 @@
1
+ {
2
+ "name": "@trustwallet/connect-walletconnect",
3
+ "version": "0.0.0",
4
+ "description": "WalletConnect integration for TrustConnect SDK",
5
+ "type": "module",
6
+ "main": "./dist/index.js",
7
+ "types": "./dist/index.d.ts",
8
+ "sideEffects": false,
9
+ "exports": {
10
+ ".": {
11
+ "types": "./dist/index.d.ts",
12
+ "import": "./dist/index.js"
13
+ },
14
+ "./react": {
15
+ "types": "./dist/react/index.d.ts",
16
+ "import": "./dist/react/index.js"
17
+ }
18
+ },
19
+ "files": [
20
+ "dist",
21
+ "README.md"
22
+ ],
23
+ "dependencies": {
24
+ "@walletconnect/sign-client": "2.23.1",
25
+ "@walletconnect/types": "2.23.1",
26
+ "@trustwallet/connect-core": "0.0.0",
27
+ "@trustwallet/connect-bip122-types": "0.0.0",
28
+ "@trustwallet/connect-eip155-types": "0.0.0",
29
+ "@trustwallet/connect-solana-types": "0.0.0",
30
+ "@trustwallet/connect-utils": "0.0.0"
31
+ },
32
+ "peerDependencies": {
33
+ "react": "^18.0.0 || ^19.0.0"
34
+ },
35
+ "peerDependenciesMeta": {
36
+ "react": {
37
+ "optional": true
38
+ }
39
+ },
40
+ "devDependencies": {
41
+ "@types/react": "19.2.7",
42
+ "react": "19.2.3",
43
+ "@trustwallet/connect-headless": "0.0.0"
44
+ },
45
+ "keywords": [
46
+ "trust",
47
+ "connect",
48
+ "sdk",
49
+ "walletconnect"
50
+ ],
51
+ "author": "",
52
+ "license": "Apache-2.0",
53
+ "scripts": {
54
+ "build": "tsc",
55
+ "dev": "tsc --watch",
56
+ "clean": "rm -rf dist"
57
+ }
58
+ }