@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,47 @@
1
+ /**
2
+ * EIP-6963: Multi Injected Provider Discovery
3
+ * https://eips.ethereum.org/EIPS/eip-6963
4
+ */
5
+ export interface EthereumProvider {
6
+ request: (args: {
7
+ method: string;
8
+ params?: unknown[];
9
+ }) => Promise<any>;
10
+ on?: (event: string, handler: (...args: any[]) => void) => void;
11
+ removeListener?: (event: string, handler: (...args: any[]) => void) => void;
12
+ }
13
+ export interface EIP6963ProviderInfo {
14
+ uuid: string;
15
+ name: string;
16
+ icon: string;
17
+ rdns: string;
18
+ }
19
+ export interface EIP6963ProviderDetail {
20
+ info: EIP6963ProviderInfo;
21
+ provider: EthereumProvider;
22
+ }
23
+ export interface EIP6963AnnounceProviderEvent extends CustomEvent {
24
+ type: 'eip6963:announceProvider';
25
+ detail: EIP6963ProviderDetail;
26
+ }
27
+ export interface EIP6963RequestProviderEvent extends Event {
28
+ type: 'eip6963:requestProvider';
29
+ }
30
+ export interface DetectedWallet {
31
+ uuid: string;
32
+ name: string;
33
+ icon: string;
34
+ rdns: string;
35
+ provider: EthereumProvider;
36
+ }
37
+ /**
38
+ * Discovers wallets using EIP-6963 protocol
39
+ * @returns Promise that resolves to an array of detected wallets
40
+ */
41
+ export declare function discoverWallets(): Promise<DetectedWallet[]>;
42
+ /**
43
+ * Gets available wallets by discovering them via EIP-6963
44
+ * This function can be called multiple times to refresh the list
45
+ */
46
+ export declare function getAvailableWallets(): Promise<DetectedWallet[]>;
47
+ //# sourceMappingURL=eip6963-discovery.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"eip6963-discovery.d.ts","sourceRoot":"","sources":["../src/eip6963-discovery.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,gBAAgB;IAE/B,OAAO,EAAE,CAAC,IAAI,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,OAAO,EAAE,CAAA;KAAE,KAAK,OAAO,CAAC,GAAG,CAAC,CAAA;IAEvE,EAAE,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,KAAK,IAAI,CAAA;IAE/D,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,KAAK,IAAI,CAAA;CAC5E;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;CACb;AAED,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,mBAAmB,CAAA;IACzB,QAAQ,EAAE,gBAAgB,CAAA;CAC3B;AAED,MAAM,WAAW,4BAA6B,SAAQ,WAAW;IAC/D,IAAI,EAAE,0BAA0B,CAAA;IAChC,MAAM,EAAE,qBAAqB,CAAA;CAC9B;AAED,MAAM,WAAW,2BAA4B,SAAQ,KAAK;IACxD,IAAI,EAAE,yBAAyB,CAAA;CAChC;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,gBAAgB,CAAA;CAC3B;AAED;;;GAGG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC,CAyCjE;AAED;;;GAGG;AACH,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC,CAQrE"}
@@ -0,0 +1,58 @@
1
+ /**
2
+ * EIP-6963: Multi Injected Provider Discovery
3
+ * https://eips.ethereum.org/EIPS/eip-6963
4
+ */
5
+ /**
6
+ * Discovers wallets using EIP-6963 protocol
7
+ * @returns Promise that resolves to an array of detected wallets
8
+ */
9
+ export async function discoverWallets() {
10
+ // Skip discovery in non-browser environments
11
+ if (typeof window === 'undefined') {
12
+ return [];
13
+ }
14
+ return new Promise(resolve => {
15
+ const detectedWallets = [];
16
+ const timeout = 1000; // Wait up to 1 second for wallets to announce
17
+ // Set up listener for wallet announcements
18
+ const handleAnnouncement = (event) => {
19
+ const announcementEvent = event;
20
+ const { info, provider } = announcementEvent.detail;
21
+ // Check if wallet is already detected (by uuid)
22
+ const existingIndex = detectedWallets.findIndex(w => w.uuid === info.uuid);
23
+ if (existingIndex === -1) {
24
+ detectedWallets.push({
25
+ uuid: info.uuid,
26
+ name: info.name,
27
+ icon: info.icon,
28
+ rdns: info.rdns,
29
+ provider
30
+ });
31
+ }
32
+ };
33
+ // Listen for wallet announcements
34
+ window.addEventListener('eip6963:announceProvider', handleAnnouncement);
35
+ // Request wallets to announce themselves
36
+ window.dispatchEvent(new Event('eip6963:requestProvider'));
37
+ // Clean up and resolve after timeout
38
+ setTimeout(() => {
39
+ window.removeEventListener('eip6963:announceProvider', handleAnnouncement);
40
+ resolve(detectedWallets);
41
+ }, timeout);
42
+ });
43
+ }
44
+ /**
45
+ * Gets available wallets by discovering them via EIP-6963
46
+ * This function can be called multiple times to refresh the list
47
+ */
48
+ export async function getAvailableWallets() {
49
+ try {
50
+ const wallets = await discoverWallets();
51
+ return wallets;
52
+ }
53
+ catch {
54
+ // Return empty array if discovery fails
55
+ return [];
56
+ }
57
+ }
58
+ //# sourceMappingURL=eip6963-discovery.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"eip6963-discovery.js","sourceRoot":"","sources":["../src/eip6963-discovery.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAwCH;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe;IACnC,6CAA6C;IAC7C,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;QAClC,OAAO,EAAE,CAAA;IACX,CAAC;IAED,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE;QAC3B,MAAM,eAAe,GAAqB,EAAE,CAAA;QAC5C,MAAM,OAAO,GAAG,IAAI,CAAA,CAAC,8CAA8C;QAEnE,2CAA2C;QAC3C,MAAM,kBAAkB,GAAG,CAAC,KAAY,EAAE,EAAE;YAC1C,MAAM,iBAAiB,GAAG,KAAqC,CAAA;YAC/D,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,iBAAiB,CAAC,MAAM,CAAA;YAEnD,gDAAgD;YAChD,MAAM,aAAa,GAAG,eAAe,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,CAAA;YAE1E,IAAI,aAAa,KAAK,CAAC,CAAC,EAAE,CAAC;gBACzB,eAAe,CAAC,IAAI,CAAC;oBACnB,IAAI,EAAE,IAAI,CAAC,IAAI;oBACf,IAAI,EAAE,IAAI,CAAC,IAAI;oBACf,IAAI,EAAE,IAAI,CAAC,IAAI;oBACf,IAAI,EAAE,IAAI,CAAC,IAAI;oBACf,QAAQ;iBACT,CAAC,CAAA;YACJ,CAAC;QACH,CAAC,CAAA;QAED,kCAAkC;QAClC,MAAM,CAAC,gBAAgB,CAAC,0BAA0B,EAAE,kBAAkB,CAAC,CAAA;QAEvE,yCAAyC;QACzC,MAAM,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC,CAAA;QAE1D,qCAAqC;QACrC,UAAU,CAAC,GAAG,EAAE;YACd,MAAM,CAAC,mBAAmB,CAAC,0BAA0B,EAAE,kBAAkB,CAAC,CAAA;YAC1E,OAAO,CAAC,eAAe,CAAC,CAAA;QAC1B,CAAC,EAAE,OAAO,CAAC,CAAA;IACb,CAAC,CAAC,CAAA;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB;IACvC,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,eAAe,EAAE,CAAA;QACvC,OAAO,OAAO,CAAA;IAChB,CAAC;IAAC,MAAM,CAAC;QACP,wCAAwC;QACxC,OAAO,EAAE,CAAA;IACX,CAAC;AACH,CAAC"}
@@ -0,0 +1,4 @@
1
+ export * from './injected-connector';
2
+ export { getAvailableWallets, type DetectedWallet } from './eip6963-discovery';
3
+ export { getSolanaWallets, type WalletStandardInfo, type SolanaWalletWithAdapter } from './wallet-standard-discovery';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAA;AACpC,OAAO,EAAE,mBAAmB,EAAE,KAAK,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAC9E,OAAO,EACL,gBAAgB,EAChB,KAAK,kBAAkB,EACvB,KAAK,uBAAuB,EAC7B,MAAM,6BAA6B,CAAA"}
package/dist/index.js ADDED
@@ -0,0 +1,4 @@
1
+ export * from './injected-connector';
2
+ export { getAvailableWallets } from './eip6963-discovery';
3
+ export { getSolanaWallets } from './wallet-standard-discovery';
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAA;AACpC,OAAO,EAAE,mBAAmB,EAAuB,MAAM,qBAAqB,CAAA;AAC9E,OAAO,EACL,gBAAgB,EAGjB,MAAM,6BAA6B,CAAA"}
@@ -0,0 +1,40 @@
1
+ import type { Network, ExtensionInjectedProvider, IntegratedBrowserInjectedProvider, Connector, ConnectorResult, SwitchNetworkResult, Namespace, DetectedEIP6963WalletInfo, DetectedSolanaWalletInfo, TransactionRequest, TransactionResult, NetworkRpcMap } from '@meshconnect/uwc-types';
2
+ export declare class InjectedConnector implements Connector {
3
+ private storageService;
4
+ private ethereumService;
5
+ private solanaService;
6
+ private connectionManager;
7
+ private signatureService;
8
+ private transactionService;
9
+ private networkRpcMap;
10
+ constructor(networkRpcMap?: NetworkRpcMap);
11
+ /**
12
+ * Initialize wallet discovery for both Ethereum and Solana
13
+ */
14
+ private initializeWalletDiscovery;
15
+ /**
16
+ * Get available wallets for a specific namespace
17
+ */
18
+ getAvailableWallets(namespace: Namespace): Promise<DetectedEIP6963WalletInfo[] | DetectedSolanaWalletInfo[]>;
19
+ /**
20
+ * Connect to a wallet
21
+ */
22
+ connect(network: Network, provider: ExtensionInjectedProvider | IntegratedBrowserInjectedProvider): Promise<ConnectorResult>;
23
+ /**
24
+ * Switch to a different network
25
+ */
26
+ switchNetwork(network: Network, provider: ExtensionInjectedProvider | IntegratedBrowserInjectedProvider): Promise<SwitchNetworkResult>;
27
+ /**
28
+ * Disconnect from all wallets (only clears local state)
29
+ */
30
+ disconnect(): Promise<void>;
31
+ /**
32
+ * Sign a message with the connected wallet
33
+ */
34
+ signMessage(message: string, provider: ExtensionInjectedProvider | IntegratedBrowserInjectedProvider): Promise<string>;
35
+ /**
36
+ * Send a transaction with the connected wallet
37
+ */
38
+ sendTransaction(request: TransactionRequest, provider: ExtensionInjectedProvider | IntegratedBrowserInjectedProvider): Promise<TransactionResult>;
39
+ }
40
+ //# sourceMappingURL=injected-connector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"injected-connector.d.ts","sourceRoot":"","sources":["../src/injected-connector.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,OAAO,EACP,yBAAyB,EACzB,iCAAiC,EACjC,SAAS,EACT,eAAe,EACf,mBAAmB,EACnB,SAAS,EACT,yBAAyB,EACzB,wBAAwB,EACxB,kBAAkB,EAClB,iBAAiB,EACjB,aAAa,EACd,MAAM,wBAAwB,CAAA;AAS/B,qBAAa,iBAAkB,YAAW,SAAS;IACjD,OAAO,CAAC,cAAc,CAAgB;IACtC,OAAO,CAAC,eAAe,CAAuB;IAC9C,OAAO,CAAC,aAAa,CAAqB;IAC1C,OAAO,CAAC,iBAAiB,CAAmB;IAC5C,OAAO,CAAC,gBAAgB,CAAkB;IAC1C,OAAO,CAAC,kBAAkB,CAAoB;IAC9C,OAAO,CAAC,aAAa,CAAe;gBAExB,aAAa,GAAE,aAAkB;IAmB7C;;OAEG;YACW,yBAAyB;IAKvC;;OAEG;IACG,mBAAmB,CACvB,SAAS,EAAE,SAAS,GACnB,OAAO,CAAC,yBAAyB,EAAE,GAAG,wBAAwB,EAAE,CAAC;IAoCpE;;OAEG;IACG,OAAO,CACX,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,yBAAyB,GAAG,iCAAiC,GACtE,OAAO,CAAC,eAAe,CAAC;IAmC3B;;OAEG;IACG,aAAa,CACjB,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,yBAAyB,GAAG,iCAAiC,GACtE,OAAO,CAAC,mBAAmB,CAAC;IAI/B;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAIjC;;OAEG;IACG,WAAW,CACf,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,yBAAyB,GAAG,iCAAiC,GACtE,OAAO,CAAC,MAAM,CAAC;IAqDlB;;OAEG;IACG,eAAe,CACnB,OAAO,EAAE,kBAAkB,EAC3B,QAAQ,EAAE,yBAAyB,GAAG,iCAAiC,GACtE,OAAO,CAAC,iBAAiB,CAAC;CA0C9B"}
@@ -0,0 +1,183 @@
1
+ import { EthereumWalletService } from './services/ethereum-wallet-service';
2
+ import { SolanaWalletService } from './services/solana-wallet-service';
3
+ import { StorageService } from './services/storage-service';
4
+ import { ConnectionManager } from './services/connection-manager';
5
+ import { SignatureService } from './services/signature-service';
6
+ import { TransactionService } from './services/transaction-service';
7
+ export class InjectedConnector {
8
+ storageService;
9
+ ethereumService;
10
+ solanaService;
11
+ connectionManager;
12
+ signatureService;
13
+ transactionService;
14
+ networkRpcMap;
15
+ constructor(networkRpcMap = {}) {
16
+ // Store the network RPC map
17
+ this.networkRpcMap = networkRpcMap;
18
+ // Initialize services
19
+ this.storageService = new StorageService();
20
+ this.ethereumService = new EthereumWalletService();
21
+ this.solanaService = new SolanaWalletService(this.storageService);
22
+ this.connectionManager = new ConnectionManager(this.ethereumService, this.solanaService);
23
+ this.signatureService = new SignatureService();
24
+ this.transactionService = new TransactionService(this.networkRpcMap);
25
+ // Initialize wallet discovery
26
+ this.initializeWalletDiscovery();
27
+ }
28
+ /**
29
+ * Initialize wallet discovery for both Ethereum and Solana
30
+ */
31
+ async initializeWalletDiscovery() {
32
+ await this.ethereumService.initializeDiscovery();
33
+ this.solanaService.initializeDiscovery();
34
+ }
35
+ /**
36
+ * Get available wallets for a specific namespace
37
+ */
38
+ async getAvailableWallets(namespace) {
39
+ switch (namespace) {
40
+ case 'eip155': {
41
+ const detectedWallets = this.ethereumService.getDetectedWallets();
42
+ // Re-fetch if no wallets detected
43
+ if (detectedWallets.length === 0) {
44
+ await this.ethereumService.initializeDiscovery();
45
+ }
46
+ // Convert to DetectedWalletInfo format
47
+ return this.ethereumService.getDetectedWallets().map(wallet => ({
48
+ uuid: wallet.uuid,
49
+ name: wallet.name,
50
+ icon: wallet.icon,
51
+ rdns: wallet.rdns
52
+ }));
53
+ }
54
+ case 'solana': {
55
+ // Re-fetch Solana wallets
56
+ this.solanaService.initializeDiscovery();
57
+ // Convert to DetectedWalletInfo format
58
+ return this.solanaService.getDetectedWallets().map(wallet => ({
59
+ uuid: wallet.uuid,
60
+ name: wallet.name,
61
+ features: wallet.features
62
+ }));
63
+ }
64
+ default:
65
+ return [];
66
+ }
67
+ }
68
+ /**
69
+ * Connect to a wallet
70
+ */
71
+ async connect(network, provider) {
72
+ const targetNamespace = network.namespace;
73
+ // Check if we're already connected
74
+ const { address: existingAddress, availableAddresses } = await this.connectionManager.checkExistingConnections(targetNamespace, provider);
75
+ // If already connected, just return the existing connection
76
+ if (existingAddress) {
77
+ this.connectionManager.setCurrentNetworkId(network.id);
78
+ return {
79
+ networkId: network.id,
80
+ address: existingAddress,
81
+ availableAddresses
82
+ };
83
+ }
84
+ // Not connected, need to establish new connection
85
+ switch (targetNamespace) {
86
+ case 'eip155':
87
+ return await this.connectionManager.connectEthereum(network, provider);
88
+ case 'solana':
89
+ return await this.connectionManager.connectSolana(network, provider);
90
+ default:
91
+ throw new Error(`Namespace '${network.namespace}' is not implemented yet. Only 'eip155' and 'solana' are currently supported.`);
92
+ }
93
+ }
94
+ /**
95
+ * Switch to a different network
96
+ */
97
+ async switchNetwork(network, provider) {
98
+ return await this.connectionManager.switchNetwork(network, provider);
99
+ }
100
+ /**
101
+ * Disconnect from all wallets (only clears local state)
102
+ */
103
+ async disconnect() {
104
+ this.connectionManager.disconnect();
105
+ }
106
+ /**
107
+ * Sign a message with the connected wallet
108
+ */
109
+ async signMessage(message, provider) {
110
+ if (!provider) {
111
+ throw new Error('Provider is required for message signing');
112
+ }
113
+ if (!message) {
114
+ throw new Error('Message is required for signing');
115
+ }
116
+ // Get current network ID to determine namespace
117
+ const currentNetworkId = this.connectionManager.getCurrentNetworkId();
118
+ if (!currentNetworkId) {
119
+ throw new Error('No active network connection');
120
+ }
121
+ // Determine namespace from network ID (format: "namespace:chainId")
122
+ const namespace = currentNetworkId.split(':')[0];
123
+ // Get current address for the namespace
124
+ const currentAddress = this.connectionManager.getCurrentAccount();
125
+ if (namespace === 'eip155') {
126
+ if (!currentAddress) {
127
+ throw new Error('No active wallet address for signing');
128
+ }
129
+ // Get the actual Ethereum provider
130
+ const ethProvider = this.ethereumService.getConnectedProvider();
131
+ if (!ethProvider) {
132
+ throw new Error('No connected Ethereum provider');
133
+ }
134
+ return await this.signatureService.signEthereumMessage(message, currentAddress, ethProvider);
135
+ }
136
+ else if (namespace === 'solana') {
137
+ // Get the actual Solana adapter
138
+ const solanaAdapter = this.solanaService.getConnectedAdapter();
139
+ if (!solanaAdapter) {
140
+ throw new Error('No connected Solana adapter');
141
+ }
142
+ return await this.signatureService.signSolanaMessage(message, solanaAdapter);
143
+ }
144
+ else {
145
+ throw new Error(`Signing not supported for namespace: ${namespace}`);
146
+ }
147
+ }
148
+ /**
149
+ * Send a transaction with the connected wallet
150
+ */
151
+ async sendTransaction(request, provider) {
152
+ if (!provider) {
153
+ throw new Error('Provider is required for sending transactions');
154
+ }
155
+ // Get current network ID to determine namespace
156
+ const currentNetworkId = this.connectionManager.getCurrentNetworkId();
157
+ if (!currentNetworkId) {
158
+ throw new Error('No active network connection');
159
+ }
160
+ // Determine namespace from network ID (format: "namespace:chainId")
161
+ const namespace = currentNetworkId.split(':')[0];
162
+ if (namespace === 'eip155') {
163
+ // Get the actual Ethereum provider
164
+ const ethProvider = this.ethereumService.getConnectedProvider();
165
+ if (!ethProvider) {
166
+ throw new Error('No connected Ethereum provider');
167
+ }
168
+ return await this.transactionService.sendTransaction(request, namespace, ethProvider);
169
+ }
170
+ else if (namespace === 'solana') {
171
+ // Get the actual Solana adapter
172
+ const solanaAdapter = this.solanaService.getConnectedAdapter();
173
+ if (!solanaAdapter) {
174
+ throw new Error('No connected Solana adapter');
175
+ }
176
+ return await this.transactionService.sendTransaction(request, namespace, solanaAdapter);
177
+ }
178
+ else {
179
+ throw new Error(`Transactions not supported for namespace: ${namespace}`);
180
+ }
181
+ }
182
+ }
183
+ //# sourceMappingURL=injected-connector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"injected-connector.js","sourceRoot":"","sources":["../src/injected-connector.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,44 @@
1
+ import type { Network, ExtensionInjectedProvider, IntegratedBrowserInjectedProvider, Connector, ConnectorResult, SwitchNetworkResult, Namespace, DetectedWalletInfo } from '@meshconnect/uwc-types';
2
+ export declare class InjectedConnector implements Connector {
3
+ private detectedEIP6963Wallets;
4
+ private detectedSolanaWallets;
5
+ private connectedProviders;
6
+ constructor();
7
+ /**
8
+ * Discovers available wallets
9
+ */
10
+ private initializeWalletDiscovery;
11
+ /**
12
+ * Detect available Solana wallets in the browser
13
+ */
14
+ private detectSolanaWallets;
15
+ /**
16
+ * Get EVM provider - first try EIP-6963 discovered wallets, then fall back to window.ethereum
17
+ */
18
+ private getEVMProvider;
19
+ /**
20
+ * Get Solana provider based on metadata
21
+ */
22
+ private getSolanaProvider;
23
+ /**
24
+ * Get available wallets for a specific namespace
25
+ * @param namespace The namespace to check for available wallets
26
+ * @returns Promise that resolves to detected wallets for the namespace
27
+ */
28
+ getAvailableWallets(namespace: Namespace): Promise<DetectedWalletInfo[]>;
29
+ connect(network: Network, provider: ExtensionInjectedProvider | IntegratedBrowserInjectedProvider): Promise<ConnectorResult>;
30
+ switchNetwork(network: Network): Promise<SwitchNetworkResult>;
31
+ /**
32
+ * Connect to EIP155 in the background (when primary namespace is Solana)
33
+ */
34
+ private connectEIP155InBackground;
35
+ /**
36
+ * Connect to Solana in the background (when primary namespace is EIP155)
37
+ */
38
+ private connectSolanaInBackground;
39
+ /**
40
+ * Disconnect from all providers
41
+ */
42
+ disconnect(): Promise<void>;
43
+ }
44
+ //# sourceMappingURL=injected-connector.old.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"injected-connector.old.d.ts","sourceRoot":"","sources":["../src/injected-connector.old.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,OAAO,EACP,yBAAyB,EACzB,iCAAiC,EACjC,SAAS,EACT,eAAe,EACf,mBAAmB,EAEnB,SAAS,EACT,kBAAkB,EACnB,MAAM,wBAAwB,CAAA;AAY/B,qBAAa,iBAAkB,YAAW,SAAS;IACjD,OAAO,CAAC,sBAAsB,CAA8B;IAC5D,OAAO,CAAC,qBAAqB,CAA6B;IAC1D,OAAO,CAAC,kBAAkB,CAAiC;;IAO3D;;OAEG;YACW,yBAAyB;IAQvC;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAuE3B;;OAEG;IACH,OAAO,CAAC,cAAc;IAuBtB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAsEzB;;;;OAIG;IACG,mBAAmB,CACvB,SAAS,EAAE,SAAS,GACnB,OAAO,CAAC,kBAAkB,EAAE,CAAC;IA6B1B,OAAO,CACX,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,yBAAyB,GAAG,iCAAiC,GACtE,OAAO,CAAC,eAAe,CAAC;IAiLrB,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAkHnE;;OAEG;YACW,yBAAyB;IAwCvC;;OAEG;YACW,yBAAyB;IAsCvC;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;CAIlC"}