@meshconnect/uwc-injected-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.
Files changed (83) hide show
  1. package/dist/eip6963-discovery.d.ts +47 -0
  2. package/dist/eip6963-discovery.d.ts.map +1 -0
  3. package/dist/eip6963-discovery.js +58 -0
  4. package/dist/eip6963-discovery.js.map +1 -0
  5. package/dist/index.d.ts +4 -0
  6. package/dist/index.d.ts.map +1 -0
  7. package/dist/index.js +4 -0
  8. package/dist/index.js.map +1 -0
  9. package/dist/injected-connector.d.ts +40 -0
  10. package/dist/injected-connector.d.ts.map +1 -0
  11. package/dist/injected-connector.js +183 -0
  12. package/dist/injected-connector.js.map +1 -0
  13. package/dist/injected-connector.old.d.ts +44 -0
  14. package/dist/injected-connector.old.d.ts.map +1 -0
  15. package/dist/injected-connector.old.js +491 -0
  16. package/dist/injected-connector.old.js.map +1 -0
  17. package/dist/providers/evm-provider.d.ts +18 -0
  18. package/dist/providers/evm-provider.d.ts.map +1 -0
  19. package/dist/providers/evm-provider.js +86 -0
  20. package/dist/providers/evm-provider.js.map +1 -0
  21. package/dist/providers/solana-provider.d.ts +22 -0
  22. package/dist/providers/solana-provider.d.ts.map +1 -0
  23. package/dist/providers/solana-provider.js +137 -0
  24. package/dist/providers/solana-provider.js.map +1 -0
  25. package/dist/services/connection-manager.d.ts +56 -0
  26. package/dist/services/connection-manager.d.ts.map +1 -0
  27. package/dist/services/connection-manager.js +303 -0
  28. package/dist/services/connection-manager.js.map +1 -0
  29. package/dist/services/ethereum-transaction-service.d.ts +28 -0
  30. package/dist/services/ethereum-transaction-service.d.ts.map +1 -0
  31. package/dist/services/ethereum-transaction-service.js +143 -0
  32. package/dist/services/ethereum-transaction-service.js.map +1 -0
  33. package/dist/services/ethereum-wallet-service.d.ts +55 -0
  34. package/dist/services/ethereum-wallet-service.d.ts.map +1 -0
  35. package/dist/services/ethereum-wallet-service.js +133 -0
  36. package/dist/services/ethereum-wallet-service.js.map +1 -0
  37. package/dist/services/index.d.ts +8 -0
  38. package/dist/services/index.d.ts.map +1 -0
  39. package/dist/services/index.js +8 -0
  40. package/dist/services/index.js.map +1 -0
  41. package/dist/services/signature-service.d.ts +16 -0
  42. package/dist/services/signature-service.d.ts.map +1 -0
  43. package/dist/services/signature-service.js +63 -0
  44. package/dist/services/signature-service.js.map +1 -0
  45. package/dist/services/solana-transaction-service.d.ts +14 -0
  46. package/dist/services/solana-transaction-service.d.ts.map +1 -0
  47. package/dist/services/solana-transaction-service.js +48 -0
  48. package/dist/services/solana-transaction-service.js.map +1 -0
  49. package/dist/services/solana-wallet-service.d.ts +55 -0
  50. package/dist/services/solana-wallet-service.d.ts.map +1 -0
  51. package/dist/services/solana-wallet-service.js +129 -0
  52. package/dist/services/solana-wallet-service.js.map +1 -0
  53. package/dist/services/storage-service.d.ts +19 -0
  54. package/dist/services/storage-service.d.ts.map +1 -0
  55. package/dist/services/storage-service.js +41 -0
  56. package/dist/services/storage-service.js.map +1 -0
  57. package/dist/services/transaction-service.d.ts +28 -0
  58. package/dist/services/transaction-service.d.ts.map +1 -0
  59. package/dist/services/transaction-service.js +67 -0
  60. package/dist/services/transaction-service.js.map +1 -0
  61. package/dist/utils/error-utils.d.ts +6 -0
  62. package/dist/utils/error-utils.d.ts.map +1 -0
  63. package/dist/utils/error-utils.js +55 -0
  64. package/dist/utils/error-utils.js.map +1 -0
  65. package/dist/wallet-standard-discovery.d.ts +24 -0
  66. package/dist/wallet-standard-discovery.d.ts.map +1 -0
  67. package/dist/wallet-standard-discovery.js +74 -0
  68. package/dist/wallet-standard-discovery.js.map +1 -0
  69. package/package.json +42 -0
  70. package/src/eip6963-discovery.ts +103 -0
  71. package/src/index.ts +7 -0
  72. package/src/injected-connector.ts +265 -0
  73. package/src/services/connection-manager.ts +437 -0
  74. package/src/services/ethereum-transaction-service.ts +196 -0
  75. package/src/services/ethereum-wallet-service.ts +161 -0
  76. package/src/services/index.ts +7 -0
  77. package/src/services/signature-service.ts +84 -0
  78. package/src/services/solana-transaction-service.ts +68 -0
  79. package/src/services/solana-wallet-service.ts +161 -0
  80. package/src/services/storage-service.ts +44 -0
  81. package/src/services/transaction-service.ts +106 -0
  82. package/src/utils/error-utils.ts +62 -0
  83. package/src/wallet-standard-discovery.ts +102 -0
@@ -0,0 +1,137 @@
1
+ /**
2
+ * Solana provider management
3
+ */
4
+ export class SolanaProvider {
5
+ detectedWallets = [];
6
+ initialize() {
7
+ this.detectedWallets = this.detectWallets();
8
+ }
9
+ getProvider(metadata) {
10
+ if (!metadata || !metadata.injectedId) {
11
+ // Fallback to checking common Solana provider locations
12
+ if (window.solana)
13
+ return window.solana;
14
+ if (window.phantom?.solana)
15
+ return window.phantom.solana;
16
+ if (window.solflare?.solana)
17
+ return window.solflare.solana;
18
+ return null;
19
+ }
20
+ const { injectedId, ignoredInjectedIds } = metadata;
21
+ // Helper function to validate provider
22
+ const isValidProvider = (provider) => {
23
+ if (!provider)
24
+ return false;
25
+ // Check if provider has ignored IDs (meaning it's the wrong wallet)
26
+ if (ignoredInjectedIds && ignoredInjectedIds.length > 0) {
27
+ for (const ignoredId of ignoredInjectedIds) {
28
+ if (provider[ignoredId] === true) {
29
+ return false;
30
+ }
31
+ }
32
+ }
33
+ // Check if provider has the required injectedId property
34
+ // For example, if injectedId is 'isPhantom', check provider.isPhantom === true
35
+ if (injectedId.startsWith('is')) {
36
+ return provider[injectedId] === true;
37
+ }
38
+ // For non-boolean identifiers, just check existence
39
+ return !!provider[injectedId];
40
+ };
41
+ // Strategy 1: Check window[walletName].solana (e.g., window.phantom.solana)
42
+ const walletName = injectedId.replace(/^is/, '').toLowerCase();
43
+ const nestedProvider = window[walletName]?.solana;
44
+ if (nestedProvider && isValidProvider(nestedProvider)) {
45
+ return nestedProvider;
46
+ }
47
+ // Strategy 2: Check window[walletName] directly (e.g., window.solflare)
48
+ const directProvider = window[walletName];
49
+ if (directProvider && isValidProvider(directProvider)) {
50
+ return directProvider;
51
+ }
52
+ // Strategy 3: Check window.solana with validation
53
+ if (window.solana && isValidProvider(window.solana)) {
54
+ return window.solana;
55
+ }
56
+ // Strategy 4: For wallets that might inject differently (e.g., window.trustwallet.solana)
57
+ // Check various common patterns
58
+ const commonPatterns = [
59
+ window[`${walletName}wallet`]?.solana,
60
+ window[`${walletName}Wallet`]?.solana,
61
+ window[walletName.replace('wallet', '')]?.solana
62
+ ];
63
+ for (const provider of commonPatterns) {
64
+ if (provider && isValidProvider(provider)) {
65
+ return provider;
66
+ }
67
+ }
68
+ return null;
69
+ }
70
+ detectWallets() {
71
+ const wallets = [];
72
+ // Check common Solana wallet locations and identify them
73
+ const checkProvider = (provider, name, injectedId) => {
74
+ if (provider && typeof provider.connect === 'function') {
75
+ if (injectedId) {
76
+ wallets.push({ name, provider, injectedId });
77
+ }
78
+ else {
79
+ wallets.push({ name, provider });
80
+ }
81
+ }
82
+ };
83
+ // Check window.solana and identify the wallet type
84
+ if (window.solana) {
85
+ const provider = window.solana;
86
+ let name = 'Solana Wallet';
87
+ let injectedId;
88
+ if (provider.isPhantom) {
89
+ name = 'Phantom';
90
+ injectedId = 'isPhantom';
91
+ }
92
+ else if (provider.isSolflare) {
93
+ name = 'Solflare';
94
+ injectedId = 'isSolflare';
95
+ }
96
+ else if (provider.isTrust || provider.isTrustWallet) {
97
+ name = 'Trust Wallet';
98
+ injectedId = provider.isTrust ? 'isTrust' : 'isTrustWallet';
99
+ }
100
+ else if (provider.isExodus) {
101
+ name = 'Exodus';
102
+ injectedId = 'isExodus';
103
+ }
104
+ checkProvider(provider, name, injectedId);
105
+ }
106
+ // Check nested providers
107
+ if (window.phantom?.solana) {
108
+ checkProvider(window.phantom.solana, 'Phantom', 'isPhantom');
109
+ }
110
+ if (window.solflare) {
111
+ checkProvider(window.solflare, 'Solflare', 'isSolflare');
112
+ }
113
+ if (window.trustwallet?.solana) {
114
+ checkProvider(window.trustwallet.solana, 'Trust Wallet', 'isTrust');
115
+ }
116
+ if (window.exodus?.solana) {
117
+ checkProvider(window.exodus.solana, 'Exodus', 'isExodus');
118
+ }
119
+ // Remove duplicates based on provider reference
120
+ const uniqueWallets = wallets.filter((wallet, index, self) => index === self.findIndex(w => w.provider === wallet.provider));
121
+ return uniqueWallets;
122
+ }
123
+ async connect(provider) {
124
+ if (!provider.isConnected) {
125
+ const response = await provider.connect();
126
+ if (!response || !response.publicKey) {
127
+ throw new Error('Failed to connect to Solana wallet');
128
+ }
129
+ return response;
130
+ }
131
+ return { publicKey: provider.publicKey };
132
+ }
133
+ getDetectedWallets() {
134
+ return this.detectedWallets;
135
+ }
136
+ }
137
+ //# sourceMappingURL=solana-provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"solana-provider.js","sourceRoot":"","sources":["../../src/providers/solana-provider.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,56 @@
1
+ import type { Network, ExtensionInjectedProvider, IntegratedBrowserInjectedProvider, ConnectorResult, SwitchNetworkResult, AvailableAddress } from '@meshconnect/uwc-types';
2
+ import { EthereumWalletService } from './ethereum-wallet-service';
3
+ import { SolanaWalletService } from './solana-wallet-service';
4
+ /**
5
+ * Manages connections across different wallet namespaces
6
+ */
7
+ export declare class ConnectionManager {
8
+ private ethereumService;
9
+ private solanaService;
10
+ private currentNetworkId;
11
+ constructor(ethereumService: EthereumWalletService, solanaService: SolanaWalletService);
12
+ /**
13
+ * Check and add existing connections from other namespaces
14
+ */
15
+ checkExistingConnections(targetNamespace: 'eip155' | 'solana', provider: ExtensionInjectedProvider | IntegratedBrowserInjectedProvider): Promise<{
16
+ address: string | null;
17
+ availableAddresses: AvailableAddress[];
18
+ }>;
19
+ /**
20
+ * Check and add Ethereum addresses if connected
21
+ */
22
+ private checkAndAddEthereumAddresses;
23
+ /**
24
+ * Check and add Solana addresses if connected
25
+ */
26
+ private checkAndAddSolanaAddresses;
27
+ /**
28
+ * Connect to Ethereum wallet
29
+ */
30
+ connectEthereum(network: Network, provider: ExtensionInjectedProvider | IntegratedBrowserInjectedProvider): Promise<ConnectorResult>;
31
+ /**
32
+ * Connect to Solana wallet
33
+ */
34
+ connectSolana(network: Network, provider: ExtensionInjectedProvider | IntegratedBrowserInjectedProvider): Promise<ConnectorResult>;
35
+ /**
36
+ * Switch network
37
+ */
38
+ switchNetwork(network: Network, provider: ExtensionInjectedProvider | IntegratedBrowserInjectedProvider): Promise<SwitchNetworkResult>;
39
+ /**
40
+ * Get current network ID
41
+ */
42
+ getCurrentNetworkId(): string | null;
43
+ /**
44
+ * Set current network ID
45
+ */
46
+ setCurrentNetworkId(networkId: string | null): void;
47
+ /**
48
+ * Get current account based on current network
49
+ */
50
+ getCurrentAccount(): string | null;
51
+ /**
52
+ * Disconnect all
53
+ */
54
+ disconnect(): void;
55
+ }
56
+ //# sourceMappingURL=connection-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connection-manager.d.ts","sourceRoot":"","sources":["../../src/services/connection-manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,OAAO,EACP,yBAAyB,EACzB,iCAAiC,EACjC,eAAe,EACf,mBAAmB,EACnB,gBAAgB,EACjB,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAA;AACjE,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAA;AAG7D;;GAEG;AACH,qBAAa,iBAAiB;IAI1B,OAAO,CAAC,eAAe;IACvB,OAAO,CAAC,aAAa;IAJvB,OAAO,CAAC,gBAAgB,CAAsB;gBAGpC,eAAe,EAAE,qBAAqB,EACtC,aAAa,EAAE,mBAAmB;IAG5C;;OAEG;IACG,wBAAwB,CAC5B,eAAe,EAAE,QAAQ,GAAG,QAAQ,EACpC,QAAQ,EAAE,yBAAyB,GAAG,iCAAiC,GACtE,OAAO,CAAC;QACT,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;QACtB,kBAAkB,EAAE,gBAAgB,EAAE,CAAA;KACvC,CAAC;IAqFF;;OAEG;YACW,4BAA4B;IAqC1C;;OAEG;YACW,0BAA0B;IAyCxC;;OAEG;IACG,eAAe,CACnB,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,yBAAyB,GAAG,iCAAiC,GACtE,OAAO,CAAC,eAAe,CAAC;IAsC3B;;OAEG;IACG,aAAa,CACjB,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,yBAAyB,GAAG,iCAAiC,GACtE,OAAO,CAAC,eAAe,CAAC;IAyC3B;;OAEG;IACG,aAAa,CACjB,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,yBAAyB,GAAG,iCAAiC,GACtE,OAAO,CAAC,mBAAmB,CAAC;IAqG/B;;OAEG;IACH,mBAAmB,IAAI,MAAM,GAAG,IAAI;IAIpC;;OAEG;IACH,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAInD;;OAEG;IACH,iBAAiB,IAAI,MAAM,GAAG,IAAI;IAYlC;;OAEG;IACH,UAAU,IAAI,IAAI;CAKnB"}
@@ -0,0 +1,303 @@
1
+ import { EthereumWalletService } from './ethereum-wallet-service';
2
+ import { SolanaWalletService } from './solana-wallet-service';
3
+ import { parseError } from '../utils/error-utils';
4
+ /**
5
+ * Manages connections across different wallet namespaces
6
+ */
7
+ export class ConnectionManager {
8
+ ethereumService;
9
+ solanaService;
10
+ currentNetworkId = null;
11
+ constructor(ethereumService, solanaService) {
12
+ this.ethereumService = ethereumService;
13
+ this.solanaService = solanaService;
14
+ }
15
+ /**
16
+ * Check and add existing connections from other namespaces
17
+ */
18
+ async checkExistingConnections(targetNamespace, provider) {
19
+ const availableAddresses = [];
20
+ let currentAddress = null;
21
+ if (targetNamespace === 'eip155') {
22
+ // Check Ethereum connection
23
+ const ethAccount = this.ethereumService.getAccount();
24
+ if (ethAccount) {
25
+ currentAddress = ethAccount;
26
+ }
27
+ else {
28
+ // Try to get existing connection without prompting
29
+ const walletUuid = provider.namespaceMetaData?.eip155?.detectedWallet?.uuid;
30
+ if (walletUuid) {
31
+ const wallet = this.ethereumService.findWalletByUuid(walletUuid);
32
+ if (wallet?.provider) {
33
+ const accounts = await this.ethereumService.checkExistingConnection(wallet.provider);
34
+ if (accounts && accounts.length > 0) {
35
+ currentAddress = accounts[0] || null;
36
+ this.ethereumService.setConnectionState(wallet.provider, currentAddress);
37
+ }
38
+ }
39
+ }
40
+ }
41
+ // Add Ethereum addresses
42
+ if (currentAddress) {
43
+ const ethAddresses = this.ethereumService.buildAvailableAddresses(provider.supportedNetworkIds, currentAddress);
44
+ availableAddresses.push(...ethAddresses);
45
+ }
46
+ // Check and add Solana addresses
47
+ await this.checkAndAddSolanaAddresses(provider, availableAddresses);
48
+ }
49
+ else if (targetNamespace === 'solana') {
50
+ // Check Solana connection
51
+ const solanaAccount = this.solanaService.getAccount();
52
+ if (solanaAccount) {
53
+ currentAddress = solanaAccount;
54
+ }
55
+ else {
56
+ // Try to get existing connection without prompting
57
+ const walletUuid = provider.namespaceMetaData?.solana?.detectedWallet?.uuid;
58
+ if (walletUuid) {
59
+ const wallet = this.solanaService.findWalletByUuid(walletUuid);
60
+ if (wallet?.adapter) {
61
+ const address = await this.solanaService.checkExistingConnection(wallet.adapter, walletUuid);
62
+ if (address) {
63
+ currentAddress = address;
64
+ this.solanaService.setConnectionState(wallet.adapter, address, walletUuid);
65
+ }
66
+ }
67
+ }
68
+ }
69
+ // Add Solana addresses
70
+ if (currentAddress) {
71
+ const solanaAddresses = this.solanaService.buildAvailableAddresses(provider.supportedNetworkIds, currentAddress);
72
+ availableAddresses.push(...solanaAddresses);
73
+ }
74
+ // Check and add Ethereum addresses
75
+ await this.checkAndAddEthereumAddresses(provider, availableAddresses);
76
+ }
77
+ return { address: currentAddress, availableAddresses };
78
+ }
79
+ /**
80
+ * Check and add Ethereum addresses if connected
81
+ */
82
+ async checkAndAddEthereumAddresses(provider, availableAddresses) {
83
+ let ethAccount = this.ethereumService.getAccount();
84
+ // If not connected, try to check existing connection
85
+ if (!ethAccount) {
86
+ const ethWalletUuid = provider.namespaceMetaData?.eip155?.detectedWallet?.uuid;
87
+ if (ethWalletUuid) {
88
+ const ethWallet = this.ethereumService.findWalletByUuid(ethWalletUuid);
89
+ if (ethWallet?.provider) {
90
+ const accounts = await this.ethereumService.checkExistingConnection(ethWallet.provider);
91
+ if (accounts && accounts.length > 0) {
92
+ ethAccount = accounts[0] || null;
93
+ this.ethereumService.setConnectionState(ethWallet.provider, ethAccount);
94
+ }
95
+ }
96
+ }
97
+ }
98
+ // Add Ethereum addresses if connected
99
+ if (ethAccount) {
100
+ const ethAddresses = this.ethereumService.buildAvailableAddresses(provider.supportedNetworkIds, ethAccount);
101
+ availableAddresses.push(...ethAddresses);
102
+ }
103
+ }
104
+ /**
105
+ * Check and add Solana addresses if connected
106
+ */
107
+ async checkAndAddSolanaAddresses(provider, availableAddresses) {
108
+ let solanaAccount = this.solanaService.getAccount();
109
+ // If not connected, try to check existing connection
110
+ if (!solanaAccount) {
111
+ const solanaWalletUuid = provider.namespaceMetaData?.solana?.detectedWallet?.uuid;
112
+ if (solanaWalletUuid) {
113
+ const solanaWallet = this.solanaService.findWalletByUuid(solanaWalletUuid);
114
+ if (solanaWallet?.adapter) {
115
+ const solanaAddress = await this.solanaService.checkExistingConnection(solanaWallet.adapter, solanaWalletUuid);
116
+ if (solanaAddress) {
117
+ solanaAccount = solanaAddress;
118
+ this.solanaService.setConnectionState(solanaWallet.adapter, solanaAddress, solanaWalletUuid);
119
+ }
120
+ }
121
+ }
122
+ }
123
+ // Add Solana addresses if connected
124
+ if (solanaAccount) {
125
+ const solanaAddresses = this.solanaService.buildAvailableAddresses(provider.supportedNetworkIds, solanaAccount);
126
+ availableAddresses.push(...solanaAddresses);
127
+ }
128
+ }
129
+ /**
130
+ * Connect to Ethereum wallet
131
+ */
132
+ async connectEthereum(network, provider) {
133
+ try {
134
+ const walletUuid = provider.namespaceMetaData?.eip155?.detectedWallet?.uuid;
135
+ if (!walletUuid) {
136
+ throw new Error('No wallet UUID found in provider metadata');
137
+ }
138
+ const wallet = this.ethereumService.findWalletByUuid(walletUuid);
139
+ if (!wallet || !wallet.provider) {
140
+ throw new Error(`Wallet provider not found for UUID: ${walletUuid}`);
141
+ }
142
+ const address = await this.ethereumService.connect(wallet.provider);
143
+ this.currentNetworkId = network.id;
144
+ const availableAddresses = [];
145
+ // Add all Ethereum addresses
146
+ const ethAddresses = this.ethereumService.buildAvailableAddresses(provider.supportedNetworkIds, address);
147
+ availableAddresses.push(...ethAddresses);
148
+ // Check and add Solana addresses if connected
149
+ await this.checkAndAddSolanaAddresses(provider, availableAddresses);
150
+ return {
151
+ networkId: network.id,
152
+ address,
153
+ availableAddresses
154
+ };
155
+ }
156
+ catch (error) {
157
+ parseError(error);
158
+ }
159
+ }
160
+ /**
161
+ * Connect to Solana wallet
162
+ */
163
+ async connectSolana(network, provider) {
164
+ try {
165
+ const walletUuid = provider.namespaceMetaData?.solana?.detectedWallet?.uuid;
166
+ if (!walletUuid) {
167
+ throw new Error('No wallet UUID found in provider metadata');
168
+ }
169
+ const wallet = this.solanaService.findWalletByUuid(walletUuid);
170
+ if (!wallet || !wallet.adapter) {
171
+ throw new Error(`Wallet adapter not found for UUID: ${walletUuid}`);
172
+ }
173
+ const address = await this.solanaService.connect(wallet.adapter, walletUuid);
174
+ this.currentNetworkId = network.id;
175
+ const availableAddresses = [];
176
+ // Add all Solana addresses
177
+ const solanaAddresses = this.solanaService.buildAvailableAddresses(provider.supportedNetworkIds, address);
178
+ availableAddresses.push(...solanaAddresses);
179
+ // Check and add Ethereum addresses if connected
180
+ await this.checkAndAddEthereumAddresses(provider, availableAddresses);
181
+ return {
182
+ networkId: network.id,
183
+ address,
184
+ availableAddresses
185
+ };
186
+ }
187
+ catch (error) {
188
+ parseError(error);
189
+ }
190
+ }
191
+ /**
192
+ * Switch network
193
+ */
194
+ async switchNetwork(network, provider) {
195
+ try {
196
+ const targetNamespace = network.namespace;
197
+ // Check if switching to a different namespace
198
+ const isEthereumConnected = this.ethereumService.getConnectedProvider() !== null;
199
+ const isSolanaConnected = this.solanaService.getConnectedAdapter() !== null;
200
+ // If switching to eip155 but only Solana is connected, connect to Ethereum
201
+ if (targetNamespace === 'eip155' && !isEthereumConnected) {
202
+ const connectResult = await this.connectEthereum(network, provider);
203
+ return {
204
+ networkId: connectResult.networkId,
205
+ address: connectResult.address,
206
+ availableAddresses: connectResult.availableAddresses
207
+ };
208
+ }
209
+ // If switching to solana but only Ethereum is connected, connect to Solana
210
+ if (targetNamespace === 'solana' && !isSolanaConnected) {
211
+ const connectResult = await this.connectSolana(network, provider);
212
+ return {
213
+ networkId: connectResult.networkId,
214
+ address: connectResult.address,
215
+ availableAddresses: connectResult.availableAddresses
216
+ };
217
+ }
218
+ // Otherwise proceed with normal network switching within the same namespace
219
+ if (targetNamespace === 'eip155') {
220
+ await this.ethereumService.switchNetwork(network.id);
221
+ this.currentNetworkId = network.id;
222
+ const availableAddresses = [];
223
+ const ethAccount = this.ethereumService.getAccount();
224
+ if (ethAccount) {
225
+ const ethAddresses = this.ethereumService.buildAvailableAddresses(provider.supportedNetworkIds, ethAccount);
226
+ availableAddresses.push(...ethAddresses);
227
+ }
228
+ // Add Solana addresses if connected
229
+ const solanaAccount = this.solanaService.getAccount();
230
+ if (solanaAccount) {
231
+ const solanaAddresses = this.solanaService.buildAvailableAddresses(provider.supportedNetworkIds, solanaAccount);
232
+ availableAddresses.push(...solanaAddresses);
233
+ }
234
+ return {
235
+ networkId: network.id,
236
+ address: ethAccount || '',
237
+ availableAddresses
238
+ };
239
+ }
240
+ else if (targetNamespace === 'solana') {
241
+ // Solana doesn't support programmatic network switching
242
+ this.currentNetworkId = network.id;
243
+ const availableAddresses = [];
244
+ const solanaAccount = this.solanaService.getAccount();
245
+ if (solanaAccount) {
246
+ const solanaAddresses = this.solanaService.buildAvailableAddresses(provider.supportedNetworkIds, solanaAccount);
247
+ availableAddresses.push(...solanaAddresses);
248
+ }
249
+ // Add Ethereum addresses if connected
250
+ const ethAccount = this.ethereumService.getAccount();
251
+ if (ethAccount) {
252
+ const ethAddresses = this.ethereumService.buildAvailableAddresses(provider.supportedNetworkIds, ethAccount);
253
+ availableAddresses.push(...ethAddresses);
254
+ }
255
+ return {
256
+ networkId: network.id,
257
+ address: solanaAccount || '',
258
+ availableAddresses
259
+ };
260
+ }
261
+ throw new Error(`Cannot switch to namespace '${network.namespace}'. Only 'eip155' and 'solana' are currently supported.`);
262
+ }
263
+ catch (error) {
264
+ parseError(error);
265
+ }
266
+ }
267
+ /**
268
+ * Get current network ID
269
+ */
270
+ getCurrentNetworkId() {
271
+ return this.currentNetworkId;
272
+ }
273
+ /**
274
+ * Set current network ID
275
+ */
276
+ setCurrentNetworkId(networkId) {
277
+ this.currentNetworkId = networkId;
278
+ }
279
+ /**
280
+ * Get current account based on current network
281
+ */
282
+ getCurrentAccount() {
283
+ if (this.currentNetworkId) {
284
+ const namespace = this.currentNetworkId.split(':')[0];
285
+ if (namespace === 'eip155') {
286
+ return this.ethereumService.getAccount();
287
+ }
288
+ else if (namespace === 'solana') {
289
+ return this.solanaService.getAccount();
290
+ }
291
+ }
292
+ return null;
293
+ }
294
+ /**
295
+ * Disconnect all
296
+ */
297
+ disconnect() {
298
+ this.ethereumService.disconnect();
299
+ this.solanaService.disconnect();
300
+ this.currentNetworkId = null;
301
+ }
302
+ }
303
+ //# sourceMappingURL=connection-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connection-manager.js","sourceRoot":"","sources":["../../src/services/connection-manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ import type { EthereumProvider } from '../eip6963-discovery';
2
+ import type { EVMNativeTransferRequest, EVMContractCallRequest, EVMBatchTransactionRequest, EVMCapabilities } from '@meshconnect/uwc-types';
3
+ /**
4
+ * Service for handling Ethereum/EVM transaction operations
5
+ */
6
+ export declare class EthereumTransactionService {
7
+ /**
8
+ * Send native token transfer (ETH, BNB, MATIC, etc.)
9
+ */
10
+ sendNativeTransfer(provider: EthereumProvider, request: EVMNativeTransferRequest): Promise<string>;
11
+ /**
12
+ * Send smart contract transaction (including ERC-20 transfers)
13
+ */
14
+ sendContractCall(provider: EthereumProvider, request: EVMContractCallRequest): Promise<string>;
15
+ /**
16
+ * Send batch of transactions (EIP-5792)
17
+ */
18
+ sendBatch(provider: EthereumProvider, request: EVMBatchTransactionRequest): Promise<string>;
19
+ /**
20
+ * Get wallet capabilities (EIP-5792 support)
21
+ */
22
+ getCapabilities(provider: EthereumProvider, from: string, chainId: string): Promise<EVMCapabilities>;
23
+ /**
24
+ * Helper to format gas configuration for ethers
25
+ */
26
+ private formatGasConfig;
27
+ }
28
+ //# sourceMappingURL=ethereum-transaction-service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ethereum-transaction-service.d.ts","sourceRoot":"","sources":["../../src/services/ethereum-transaction-service.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AAC5D,OAAO,KAAK,EAEV,wBAAwB,EACxB,sBAAsB,EACtB,0BAA0B,EAC1B,eAAe,EAEhB,MAAM,wBAAwB,CAAA;AAG/B;;GAEG;AACH,qBAAa,0BAA0B;IACrC;;OAEG;IACG,kBAAkB,CACtB,QAAQ,EAAE,gBAAgB,EAC1B,OAAO,EAAE,wBAAwB,GAChC,OAAO,CAAC,MAAM,CAAC;IAiClB;;OAEG;IACG,gBAAgB,CACpB,QAAQ,EAAE,gBAAgB,EAC1B,OAAO,EAAE,sBAAsB,GAC9B,OAAO,CAAC,MAAM,CAAC;IAoDlB;;OAEG;IACG,SAAS,CACb,QAAQ,EAAE,gBAAgB,EAC1B,OAAO,EAAE,0BAA0B,GAClC,OAAO,CAAC,MAAM,CAAC;IAwClB;;OAEG;IACG,eAAe,CACnB,QAAQ,EAAE,gBAAgB,EAC1B,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,eAAe,CAAC;IAS3B;;OAEG;IACH,OAAO,CAAC,eAAe;CAiBxB"}