@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.
- package/dist/eip6963-discovery.d.ts +47 -0
- package/dist/eip6963-discovery.d.ts.map +1 -0
- package/dist/eip6963-discovery.js +58 -0
- package/dist/eip6963-discovery.js.map +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -0
- package/dist/injected-connector.d.ts +40 -0
- package/dist/injected-connector.d.ts.map +1 -0
- package/dist/injected-connector.js +183 -0
- package/dist/injected-connector.js.map +1 -0
- package/dist/injected-connector.old.d.ts +44 -0
- package/dist/injected-connector.old.d.ts.map +1 -0
- package/dist/injected-connector.old.js +491 -0
- package/dist/injected-connector.old.js.map +1 -0
- package/dist/providers/evm-provider.d.ts +18 -0
- package/dist/providers/evm-provider.d.ts.map +1 -0
- package/dist/providers/evm-provider.js +86 -0
- package/dist/providers/evm-provider.js.map +1 -0
- package/dist/providers/solana-provider.d.ts +22 -0
- package/dist/providers/solana-provider.d.ts.map +1 -0
- package/dist/providers/solana-provider.js +137 -0
- package/dist/providers/solana-provider.js.map +1 -0
- package/dist/services/connection-manager.d.ts +56 -0
- package/dist/services/connection-manager.d.ts.map +1 -0
- package/dist/services/connection-manager.js +303 -0
- package/dist/services/connection-manager.js.map +1 -0
- package/dist/services/ethereum-transaction-service.d.ts +28 -0
- package/dist/services/ethereum-transaction-service.d.ts.map +1 -0
- package/dist/services/ethereum-transaction-service.js +143 -0
- package/dist/services/ethereum-transaction-service.js.map +1 -0
- package/dist/services/ethereum-wallet-service.d.ts +55 -0
- package/dist/services/ethereum-wallet-service.d.ts.map +1 -0
- package/dist/services/ethereum-wallet-service.js +133 -0
- package/dist/services/ethereum-wallet-service.js.map +1 -0
- package/dist/services/index.d.ts +8 -0
- package/dist/services/index.d.ts.map +1 -0
- package/dist/services/index.js +8 -0
- package/dist/services/index.js.map +1 -0
- package/dist/services/signature-service.d.ts +16 -0
- package/dist/services/signature-service.d.ts.map +1 -0
- package/dist/services/signature-service.js +63 -0
- package/dist/services/signature-service.js.map +1 -0
- package/dist/services/solana-transaction-service.d.ts +14 -0
- package/dist/services/solana-transaction-service.d.ts.map +1 -0
- package/dist/services/solana-transaction-service.js +48 -0
- package/dist/services/solana-transaction-service.js.map +1 -0
- package/dist/services/solana-wallet-service.d.ts +55 -0
- package/dist/services/solana-wallet-service.d.ts.map +1 -0
- package/dist/services/solana-wallet-service.js +129 -0
- package/dist/services/solana-wallet-service.js.map +1 -0
- package/dist/services/storage-service.d.ts +19 -0
- package/dist/services/storage-service.d.ts.map +1 -0
- package/dist/services/storage-service.js +41 -0
- package/dist/services/storage-service.js.map +1 -0
- package/dist/services/transaction-service.d.ts +28 -0
- package/dist/services/transaction-service.d.ts.map +1 -0
- package/dist/services/transaction-service.js +67 -0
- package/dist/services/transaction-service.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/wallet-standard-discovery.d.ts +24 -0
- package/dist/wallet-standard-discovery.d.ts.map +1 -0
- package/dist/wallet-standard-discovery.js +74 -0
- package/dist/wallet-standard-discovery.js.map +1 -0
- package/package.json +42 -0
- package/src/eip6963-discovery.ts +103 -0
- package/src/index.ts +7 -0
- package/src/injected-connector.ts +265 -0
- package/src/services/connection-manager.ts +437 -0
- package/src/services/ethereum-transaction-service.ts +196 -0
- package/src/services/ethereum-wallet-service.ts +161 -0
- package/src/services/index.ts +7 -0
- package/src/services/signature-service.ts +84 -0
- package/src/services/solana-transaction-service.ts +68 -0
- package/src/services/solana-wallet-service.ts +161 -0
- package/src/services/storage-service.ts +44 -0
- package/src/services/transaction-service.ts +106 -0
- package/src/utils/error-utils.ts +62 -0
- 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"}
|