@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,143 @@
1
+ import { ethers } from 'ethers';
2
+ import { parseError } from '../utils/error-utils';
3
+ /**
4
+ * Service for handling Ethereum/EVM transaction operations
5
+ */
6
+ export class EthereumTransactionService {
7
+ /**
8
+ * Send native token transfer (ETH, BNB, MATIC, etc.)
9
+ */
10
+ async sendNativeTransfer(provider, request) {
11
+ try {
12
+ // Get current chain ID
13
+ const chainIdHex = await provider.request({
14
+ method: 'eth_chainId'
15
+ });
16
+ const chainId = parseInt(chainIdHex, 16);
17
+ // Create ethers provider and signer
18
+ const ethersProvider = new ethers.BrowserProvider(provider);
19
+ const signer = await ethersProvider.getSigner(request.from);
20
+ // Verify network hasn't changed
21
+ const network = await ethersProvider.getNetwork();
22
+ if (Number(network.chainId) !== chainId) {
23
+ throw new Error('Network changed during transaction setup');
24
+ }
25
+ // Build transaction
26
+ const tx = await signer.sendTransaction({
27
+ to: request.to,
28
+ value: request.amount,
29
+ ...this.formatGasConfig(request.gasConfig)
30
+ });
31
+ // Wait for confirmation
32
+ const receipt = await tx.wait();
33
+ return receipt ? receipt.hash : '';
34
+ }
35
+ catch (error) {
36
+ parseError(error);
37
+ }
38
+ }
39
+ /**
40
+ * Send smart contract transaction (including ERC-20 transfers)
41
+ */
42
+ async sendContractCall(provider, request) {
43
+ try {
44
+ // Get current chain ID
45
+ const chainIdHex = await provider.request({
46
+ method: 'eth_chainId'
47
+ });
48
+ const chainId = parseInt(chainIdHex, 16);
49
+ // Create ethers provider and signer
50
+ const ethersProvider = new ethers.BrowserProvider(provider);
51
+ const signer = await ethersProvider.getSigner(request.from);
52
+ // Verify network hasn't changed
53
+ const network = await ethersProvider.getNetwork();
54
+ if (Number(network.chainId) !== chainId) {
55
+ throw new Error('Network changed during transaction setup');
56
+ }
57
+ // Create contract instance
58
+ const contract = new ethers.Contract(request.contractAddress, request.abi, signer);
59
+ // Build transaction options
60
+ const txOptions = {
61
+ ...this.formatGasConfig(request.gasConfig)
62
+ };
63
+ // Add value for payable functions
64
+ if (request.value) {
65
+ txOptions.value = request.value;
66
+ }
67
+ // Call the contract function
68
+ const contractFunction = contract[request.functionName];
69
+ if (!contractFunction) {
70
+ throw new Error(`Function ${request.functionName} not found in contract`);
71
+ }
72
+ const tx = await contractFunction(...request.args, txOptions);
73
+ // Wait for confirmation
74
+ const receipt = await tx.wait();
75
+ return receipt ? receipt.hash : '';
76
+ }
77
+ catch (error) {
78
+ parseError(error);
79
+ }
80
+ }
81
+ /**
82
+ * Send batch of transactions (EIP-5792)
83
+ */
84
+ async sendBatch(provider, request) {
85
+ try {
86
+ const ethersProvider = new ethers.BrowserProvider(provider);
87
+ // Send batch transaction
88
+ const response = await ethersProvider.send('wallet_sendCalls', [request]);
89
+ // Poll for completion
90
+ let result;
91
+ do {
92
+ result = await ethersProvider.send('wallet_getCallsStatus', [
93
+ response.id
94
+ ]);
95
+ // Wait 1 second if still pending
96
+ if (result.status === 100) {
97
+ await new Promise(resolve => setTimeout(resolve, 1000));
98
+ }
99
+ } while (result.status === 100);
100
+ // Check if successful
101
+ if (result.status !== 200) {
102
+ throw new Error('Batch transaction failed');
103
+ }
104
+ // Return first transaction hash
105
+ const firstReceipt = result.receipts.find(r => r);
106
+ if (!firstReceipt) {
107
+ throw new Error('No transaction receipt found');
108
+ }
109
+ return firstReceipt.transactionHash;
110
+ }
111
+ catch (error) {
112
+ parseError(error);
113
+ }
114
+ }
115
+ /**
116
+ * Get wallet capabilities (EIP-5792 support)
117
+ */
118
+ async getCapabilities(provider, from, chainId) {
119
+ const ethersProvider = new ethers.BrowserProvider(provider);
120
+ const capabilities = await ethersProvider.send('wallet_getCapabilities', [
121
+ from,
122
+ [chainId]
123
+ ]);
124
+ return capabilities[chainId] || {};
125
+ }
126
+ /**
127
+ * Helper to format gas configuration for ethers
128
+ */
129
+ formatGasConfig(gasConfig) {
130
+ const txOptions = {};
131
+ if (gasConfig?.gasLimit) {
132
+ txOptions.gasLimit = BigInt(Math.floor(gasConfig.gasLimit));
133
+ }
134
+ if (gasConfig?.maxFeePerGas) {
135
+ txOptions.maxFeePerGas = BigInt(Math.floor(gasConfig.maxFeePerGas));
136
+ }
137
+ if (gasConfig?.maxPriorityFeePerGas) {
138
+ txOptions.maxPriorityFeePerGas = BigInt(Math.floor(gasConfig.maxPriorityFeePerGas));
139
+ }
140
+ return txOptions;
141
+ }
142
+ }
143
+ //# sourceMappingURL=ethereum-transaction-service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ethereum-transaction-service.js","sourceRoot":"","sources":["../../src/services/ethereum-transaction-service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,55 @@
1
+ import type { AvailableAddress } from '@meshconnect/uwc-types';
2
+ import type { EthereumProvider, DetectedWallet as EIP6963DetectedWallet } from '../eip6963-discovery';
3
+ /**
4
+ * Service for managing Ethereum wallet connections
5
+ */
6
+ export declare class EthereumWalletService {
7
+ private detectedWallets;
8
+ private connectedProvider;
9
+ private account;
10
+ /**
11
+ * Initialize wallet discovery
12
+ */
13
+ initializeDiscovery(): Promise<void>;
14
+ /**
15
+ * Get detected wallets
16
+ */
17
+ getDetectedWallets(): EIP6963DetectedWallet[];
18
+ /**
19
+ * Find wallet by UUID
20
+ */
21
+ findWalletByUuid(uuid: string): EIP6963DetectedWallet | undefined;
22
+ /**
23
+ * Check if a wallet is already connected without requesting access
24
+ */
25
+ checkExistingConnection(provider: EthereumProvider): Promise<string[] | null>;
26
+ /**
27
+ * Connect to wallet
28
+ */
29
+ connect(provider: EthereumProvider): Promise<string>;
30
+ /**
31
+ * Switch network
32
+ */
33
+ switchNetwork(networkId: string): Promise<void>;
34
+ /**
35
+ * Build available addresses for all supported networks
36
+ */
37
+ buildAvailableAddresses(supportedNetworkIds: string[], address: string): AvailableAddress[];
38
+ /**
39
+ * Set connection state
40
+ */
41
+ setConnectionState(provider: EthereumProvider | null, account: string | null): void;
42
+ /**
43
+ * Get current account
44
+ */
45
+ getAccount(): string | null;
46
+ /**
47
+ * Get connected provider
48
+ */
49
+ getConnectedProvider(): EthereumProvider | null;
50
+ /**
51
+ * Disconnect (clear state only)
52
+ */
53
+ disconnect(): void;
54
+ }
55
+ //# sourceMappingURL=ethereum-wallet-service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ethereum-wallet-service.d.ts","sourceRoot":"","sources":["../../src/services/ethereum-wallet-service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAa,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AACzE,OAAO,KAAK,EACV,gBAAgB,EAChB,cAAc,IAAI,qBAAqB,EACxC,MAAM,sBAAsB,CAAA;AAG7B;;GAEG;AACH,qBAAa,qBAAqB;IAChC,OAAO,CAAC,eAAe,CAA8B;IACrD,OAAO,CAAC,iBAAiB,CAAgC;IACzD,OAAO,CAAC,OAAO,CAAsB;IAErC;;OAEG;IACG,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC;IAI1C;;OAEG;IACH,kBAAkB,IAAI,qBAAqB,EAAE;IAI7C;;OAEG;IACH,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,qBAAqB,GAAG,SAAS;IAIjE;;OAEG;IACG,uBAAuB,CAC3B,QAAQ,EAAE,gBAAgB,GACzB,OAAO,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC;IAY3B;;OAEG;IACG,OAAO,CAAC,QAAQ,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,CAAC;IAqB1D;;OAEG;IACG,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA6BrD;;OAEG;IACH,uBAAuB,CACrB,mBAAmB,EAAE,MAAM,EAAE,EAC7B,OAAO,EAAE,MAAM,GACd,gBAAgB,EAAE;IAarB;;OAEG;IACH,kBAAkB,CAChB,QAAQ,EAAE,gBAAgB,GAAG,IAAI,EACjC,OAAO,EAAE,MAAM,GAAG,IAAI,GACrB,IAAI;IAKP;;OAEG;IACH,UAAU,IAAI,MAAM,GAAG,IAAI;IAI3B;;OAEG;IACH,oBAAoB,IAAI,gBAAgB,GAAG,IAAI;IAI/C;;OAEG;IACH,UAAU,IAAI,IAAI;CAInB"}
@@ -0,0 +1,133 @@
1
+ import { getAvailableWallets as getEIP6963Wallets } from '../eip6963-discovery';
2
+ /**
3
+ * Service for managing Ethereum wallet connections
4
+ */
5
+ export class EthereumWalletService {
6
+ detectedWallets = [];
7
+ connectedProvider = null;
8
+ account = null;
9
+ /**
10
+ * Initialize wallet discovery
11
+ */
12
+ async initializeDiscovery() {
13
+ this.detectedWallets = await getEIP6963Wallets();
14
+ }
15
+ /**
16
+ * Get detected wallets
17
+ */
18
+ getDetectedWallets() {
19
+ return this.detectedWallets;
20
+ }
21
+ /**
22
+ * Find wallet by UUID
23
+ */
24
+ findWalletByUuid(uuid) {
25
+ return this.detectedWallets.find(w => w.uuid === uuid);
26
+ }
27
+ /**
28
+ * Check if a wallet is already connected without requesting access
29
+ */
30
+ async checkExistingConnection(provider) {
31
+ try {
32
+ // Try eth_accounts which doesn't prompt user
33
+ const accounts = await provider.request({
34
+ method: 'eth_accounts'
35
+ });
36
+ return accounts && accounts.length > 0 ? accounts : null;
37
+ }
38
+ catch {
39
+ return null;
40
+ }
41
+ }
42
+ /**
43
+ * Connect to wallet
44
+ */
45
+ async connect(provider) {
46
+ const accounts = await provider.request({
47
+ method: 'eth_requestAccounts'
48
+ });
49
+ if (!accounts || accounts.length === 0) {
50
+ throw new Error('No accounts returned from wallet');
51
+ }
52
+ const address = accounts[0];
53
+ this.connectedProvider = provider;
54
+ this.account = address;
55
+ // Request chain ID to ensure we're connected
56
+ await provider.request({
57
+ method: 'eth_chainId'
58
+ });
59
+ return address;
60
+ }
61
+ /**
62
+ * Switch network
63
+ */
64
+ async switchNetwork(networkId) {
65
+ if (!this.connectedProvider) {
66
+ throw new Error('No Ethereum wallet connected');
67
+ }
68
+ // Extract chain ID from network.id (format: "eip155:1")
69
+ const chainIdParts = networkId.split(':');
70
+ if (chainIdParts.length !== 2 || !chainIdParts[1]) {
71
+ throw new Error(`Invalid network ID format: ${networkId}`);
72
+ }
73
+ const chainId = chainIdParts[1];
74
+ const chainIdHex = `0x${parseInt(chainId, 10).toString(16)}`;
75
+ // Try to switch to the requested chain
76
+ try {
77
+ await this.connectedProvider.request({
78
+ method: 'wallet_switchEthereumChain',
79
+ params: [{ chainId: chainIdHex }]
80
+ });
81
+ }
82
+ catch (switchError) {
83
+ // This error code indicates that the chain has not been added to the wallet
84
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
85
+ if (switchError.code === 4902) {
86
+ throw new Error(`Chain ${networkId} is not added to the wallet`);
87
+ }
88
+ throw switchError;
89
+ }
90
+ }
91
+ /**
92
+ * Build available addresses for all supported networks
93
+ */
94
+ buildAvailableAddresses(supportedNetworkIds, address) {
95
+ const addresses = [];
96
+ supportedNetworkIds.forEach(networkId => {
97
+ if (networkId.startsWith('eip155:')) {
98
+ addresses.push({
99
+ address,
100
+ networkId: networkId
101
+ });
102
+ }
103
+ });
104
+ return addresses;
105
+ }
106
+ /**
107
+ * Set connection state
108
+ */
109
+ setConnectionState(provider, account) {
110
+ this.connectedProvider = provider;
111
+ this.account = account;
112
+ }
113
+ /**
114
+ * Get current account
115
+ */
116
+ getAccount() {
117
+ return this.account;
118
+ }
119
+ /**
120
+ * Get connected provider
121
+ */
122
+ getConnectedProvider() {
123
+ return this.connectedProvider;
124
+ }
125
+ /**
126
+ * Disconnect (clear state only)
127
+ */
128
+ disconnect() {
129
+ this.connectedProvider = null;
130
+ this.account = null;
131
+ }
132
+ }
133
+ //# sourceMappingURL=ethereum-wallet-service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ethereum-wallet-service.js","sourceRoot":"","sources":["../../src/services/ethereum-wallet-service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ export { StorageService } from './storage-service';
2
+ export { EthereumWalletService } from './ethereum-wallet-service';
3
+ export { SolanaWalletService } from './solana-wallet-service';
4
+ export { ConnectionManager } from './connection-manager';
5
+ export { SignatureService } from './signature-service';
6
+ export { TransactionService } from './transaction-service';
7
+ export { EthereumTransactionService } from './ethereum-transaction-service';
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/services/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAClD,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAA;AACjE,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAA;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAA;AAC1D,OAAO,EAAE,0BAA0B,EAAE,MAAM,gCAAgC,CAAA"}
@@ -0,0 +1,8 @@
1
+ export { StorageService } from './storage-service';
2
+ export { EthereumWalletService } from './ethereum-wallet-service';
3
+ export { SolanaWalletService } from './solana-wallet-service';
4
+ export { ConnectionManager } from './connection-manager';
5
+ export { SignatureService } from './signature-service';
6
+ export { TransactionService } from './transaction-service';
7
+ export { EthereumTransactionService } from './ethereum-transaction-service';
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/services/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAClD,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAA;AACjE,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAA;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAA;AAC1D,OAAO,EAAE,0BAA0B,EAAE,MAAM,gCAAgC,CAAA"}
@@ -0,0 +1,16 @@
1
+ import type { EthereumProvider } from '../eip6963-discovery';
2
+ import type { WalletAdapter } from '@solana/wallet-adapter-base';
3
+ /**
4
+ * Service for handling message signing operations for injected wallets
5
+ */
6
+ export declare class SignatureService {
7
+ /**
8
+ * Sign a message with an Ethereum wallet
9
+ */
10
+ signEthereumMessage(message: string, address: string, provider: EthereumProvider): Promise<string>;
11
+ /**
12
+ * Sign a message with a Solana wallet
13
+ */
14
+ signSolanaMessage(message: string, adapter: WalletAdapter): Promise<string>;
15
+ }
16
+ //# sourceMappingURL=signature-service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signature-service.d.ts","sourceRoot":"","sources":["../../src/services/signature-service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AAC5D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAA;AAIhE;;GAEG;AACH,qBAAa,gBAAgB;IAC3B;;OAEG;IACG,mBAAmB,CACvB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,gBAAgB,GACzB,OAAO,CAAC,MAAM,CAAC;IA0BlB;;OAEG;IACG,iBAAiB,CACrB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC,MAAM,CAAC;CAmCnB"}
@@ -0,0 +1,63 @@
1
+ import bs58 from 'bs58';
2
+ import { parseError } from '../utils/error-utils';
3
+ /**
4
+ * Service for handling message signing operations for injected wallets
5
+ */
6
+ export class SignatureService {
7
+ /**
8
+ * Sign a message with an Ethereum wallet
9
+ */
10
+ async signEthereumMessage(message, address, provider) {
11
+ if (!provider) {
12
+ throw new Error('Provider is required for Ethereum message signing');
13
+ }
14
+ if (!message) {
15
+ throw new Error('Message is required for signing');
16
+ }
17
+ if (!address) {
18
+ throw new Error('Address is required for signing');
19
+ }
20
+ try {
21
+ // Use personal_sign for Ethereum
22
+ const signature = await provider.request({
23
+ method: 'personal_sign',
24
+ params: [message, address]
25
+ });
26
+ return signature;
27
+ }
28
+ catch (error) {
29
+ parseError(error);
30
+ }
31
+ }
32
+ /**
33
+ * Sign a message with a Solana wallet
34
+ */
35
+ async signSolanaMessage(message, adapter) {
36
+ if (!adapter) {
37
+ throw new Error('Adapter is required for Solana message signing');
38
+ }
39
+ if (!message) {
40
+ throw new Error('Message is required for signing');
41
+ }
42
+ // Check if adapter supports signMessage
43
+ const signingAdapter = adapter;
44
+ if (!signingAdapter.signMessage) {
45
+ throw new Error('Solana adapter does not support message signing');
46
+ }
47
+ try {
48
+ // Convert message to Uint8Array for Solana
49
+ const encoder = new TextEncoder();
50
+ const messageBytes = encoder.encode(message);
51
+ // Sign the message
52
+ const signedMessage = await signingAdapter.signMessage(messageBytes);
53
+ // Encode signature using base58 for Solana (standard encoding for Solana)
54
+ // The signature is returned as a Uint8Array, encode it to base58 string
55
+ const signatureBase58 = bs58.encode(signedMessage);
56
+ return signatureBase58;
57
+ }
58
+ catch (error) {
59
+ parseError(error);
60
+ }
61
+ }
62
+ }
63
+ //# sourceMappingURL=signature-service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signature-service.js","sourceRoot":"","sources":["../../src/services/signature-service.ts"],"names":[],"mappings":"AAEA,OAAO,IAAI,MAAM,MAAM,CAAA;AACvB,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AAEjD;;GAEG;AACH,MAAM,OAAO,gBAAgB;IAC3B;;OAEG;IACH,KAAK,CAAC,mBAAmB,CACvB,OAAe,EACf,OAAe,EACf,QAA0B;QAE1B,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAA;QACtE,CAAC;QAED,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAA;QACpD,CAAC;QAED,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAA;QACpD,CAAC;QAED,IAAI,CAAC;YACH,iCAAiC;YACjC,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC;gBACvC,MAAM,EAAE,eAAe;gBACvB,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC;aAC3B,CAAC,CAAA;YAEF,OAAO,SAAS,CAAA;QAClB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,UAAU,CAAC,KAAK,CAAC,CAAA;QACnB,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,iBAAiB,CACrB,OAAe,EACf,OAAsB;QAEtB,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAA;QACnE,CAAC;QAED,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAA;QACpD,CAAC;QAED,wCAAwC;QACxC,MAAM,cAAc,GAAG,OAEtB,CAAA;QAED,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE,CAAC;YAChC,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAA;QACpE,CAAC;QAED,IAAI,CAAC;YACH,2CAA2C;YAC3C,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAA;YACjC,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;YAE5C,mBAAmB;YACnB,MAAM,aAAa,GAAG,MAAM,cAAc,CAAC,WAAW,CAAC,YAAY,CAAC,CAAA;YAEpE,0EAA0E;YAC1E,wEAAwE;YACxE,MAAM,eAAe,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAA;YAElD,OAAO,eAAe,CAAA;QACxB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,UAAU,CAAC,KAAK,CAAC,CAAA;QACnB,CAAC;IACH,CAAC;CACF"}
@@ -0,0 +1,14 @@
1
+ import type { WalletAdapter } from '@solana/wallet-adapter-base';
2
+ import type { SolanaNativeTransferRequest, NetworkRpcMap, NetworkId } from '@meshconnect/uwc-types';
3
+ /**
4
+ * Service for handling Solana transaction operations
5
+ */
6
+ export declare class SolanaTransactionService {
7
+ private networkRpcMap;
8
+ constructor(networkRpcMap?: NetworkRpcMap);
9
+ /**
10
+ * Send native SOL transfer
11
+ */
12
+ sendNativeTransfer(adapter: WalletAdapter, request: SolanaNativeTransferRequest, networkId?: NetworkId): Promise<string>;
13
+ }
14
+ //# sourceMappingURL=solana-transaction-service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"solana-transaction-service.d.ts","sourceRoot":"","sources":["../../src/services/solana-transaction-service.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAA;AAChE,OAAO,KAAK,EAAE,2BAA2B,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAA;AAGnG;;GAEG;AACH,qBAAa,wBAAwB;IACnC,OAAO,CAAC,aAAa,CAAe;gBAExB,aAAa,GAAE,aAAkB;IAI7C;;OAEG;IACG,kBAAkB,CACtB,OAAO,EAAE,aAAa,EACtB,OAAO,EAAE,2BAA2B,EACpC,SAAS,CAAC,EAAE,SAAS,GACpB,OAAO,CAAC,MAAM,CAAC;CAwCnB"}
@@ -0,0 +1,48 @@
1
+ import { PublicKey, SystemProgram, Transaction, Connection } from '@solana/web3.js';
2
+ import { parseError } from '../utils/error-utils';
3
+ /**
4
+ * Service for handling Solana transaction operations
5
+ */
6
+ export class SolanaTransactionService {
7
+ networkRpcMap;
8
+ constructor(networkRpcMap = {}) {
9
+ this.networkRpcMap = networkRpcMap;
10
+ }
11
+ /**
12
+ * Send native SOL transfer
13
+ */
14
+ async sendNativeTransfer(adapter, request, networkId) {
15
+ try {
16
+ if (!adapter.publicKey) {
17
+ throw new Error('Wallet not connected');
18
+ }
19
+ // Verify the from address matches connected wallet
20
+ if (adapter.publicKey.toBase58() !== request.from) {
21
+ throw new Error('From address does not match connected wallet');
22
+ }
23
+ // Blockhash is required
24
+ if (!request.blockhash) {
25
+ throw new Error('Blockhash is required for Solana transactions');
26
+ }
27
+ // Create transaction
28
+ const transaction = new Transaction().add(SystemProgram.transfer({
29
+ fromPubkey: new PublicKey(request.from),
30
+ toPubkey: new PublicKey(request.to),
31
+ lamports: Number(request.amount)
32
+ }));
33
+ transaction.recentBlockhash = request.blockhash;
34
+ transaction.feePayer = adapter.publicKey;
35
+ // Get RPC URL from the network RPC map or fall back to public endpoint
36
+ const rpcUrl = networkId && this.networkRpcMap[networkId]
37
+ ? this.networkRpcMap[networkId]
38
+ : 'https://api.mainnet-beta.solana.com';
39
+ const connection = new Connection(rpcUrl);
40
+ const signature = await adapter.sendTransaction(transaction, connection);
41
+ return signature;
42
+ }
43
+ catch (error) {
44
+ parseError(error);
45
+ }
46
+ }
47
+ }
48
+ //# sourceMappingURL=solana-transaction-service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"solana-transaction-service.js","sourceRoot":"","sources":["../../src/services/solana-transaction-service.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EACT,aAAa,EACb,WAAW,EACX,UAAU,EACX,MAAM,iBAAiB,CAAA;AAGxB,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AAEjD;;GAEG;AACH,MAAM,OAAO,wBAAwB;IAC3B,aAAa,CAAe;IAEpC,YAAY,gBAA+B,EAAE;QAC3C,IAAI,CAAC,aAAa,GAAG,aAAa,CAAA;IACpC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,kBAAkB,CACtB,OAAsB,EACtB,OAAoC,EACpC,SAAqB;QAErB,IAAI,CAAC;YACH,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;gBACvB,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAA;YACzC,CAAC;YAED,mDAAmD;YACnD,IAAI,OAAO,CAAC,SAAS,CAAC,QAAQ,EAAE,KAAK,OAAO,CAAC,IAAI,EAAE,CAAC;gBAClD,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAA;YACjE,CAAC;YAED,wBAAwB;YACxB,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;gBACvB,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAA;YAClE,CAAC;YAED,qBAAqB;YACrB,MAAM,WAAW,GAAG,IAAI,WAAW,EAAE,CAAC,GAAG,CACvC,aAAa,CAAC,QAAQ,CAAC;gBACrB,UAAU,EAAE,IAAI,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC;gBACvC,QAAQ,EAAE,IAAI,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC;gBACnC,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;aACjC,CAAC,CACH,CAAA;YAED,WAAW,CAAC,eAAe,GAAG,OAAO,CAAC,SAAS,CAAA;YAC/C,WAAW,CAAC,QAAQ,GAAG,OAAO,CAAC,SAAS,CAAA;YAExC,uEAAuE;YACvE,MAAM,MAAM,GAAG,SAAS,IAAI,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC;gBACvD,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC;gBAC/B,CAAC,CAAC,qCAAqC,CAAA;YACzC,MAAM,UAAU,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,CAAA;YAEzC,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,eAAe,CAAC,WAAW,EAAE,UAAU,CAAC,CAAA;YACxE,OAAO,SAAS,CAAA;QAClB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,UAAU,CAAC,KAAK,CAAC,CAAA;QACnB,CAAC;IACH,CAAC;CACF"}
@@ -0,0 +1,55 @@
1
+ import type { AvailableAddress } from '@meshconnect/uwc-types';
2
+ import type { WalletAdapter } from '@solana/wallet-adapter-base';
3
+ import { type WalletStandardInfo } from '../wallet-standard-discovery';
4
+ import { StorageService } from './storage-service';
5
+ /**
6
+ * Service for managing Solana wallet connections
7
+ */
8
+ export declare class SolanaWalletService {
9
+ private detectedWallets;
10
+ private connectedAdapter;
11
+ private account;
12
+ private storageService;
13
+ constructor(storageService: StorageService);
14
+ /**
15
+ * Initialize wallet discovery
16
+ */
17
+ initializeDiscovery(): void;
18
+ /**
19
+ * Get detected wallets
20
+ */
21
+ getDetectedWallets(): WalletStandardInfo[];
22
+ /**
23
+ * Find wallet by UUID
24
+ */
25
+ findWalletByUuid(uuid: string): WalletStandardInfo | undefined;
26
+ /**
27
+ * Check if a Solana wallet is already connected
28
+ */
29
+ checkExistingConnection(adapter: WalletAdapter, walletUuid: string): Promise<string | null>;
30
+ /**
31
+ * Connect to wallet
32
+ */
33
+ connect(adapter: WalletAdapter, walletUuid: string): Promise<string>;
34
+ /**
35
+ * Build available addresses for all supported networks
36
+ */
37
+ buildAvailableAddresses(supportedNetworkIds: string[], address: string): AvailableAddress[];
38
+ /**
39
+ * Set connection state
40
+ */
41
+ setConnectionState(adapter: WalletAdapter | null, account: string | null, walletUuid?: string): void;
42
+ /**
43
+ * Get current account
44
+ */
45
+ getAccount(): string | null;
46
+ /**
47
+ * Get connected adapter
48
+ */
49
+ getConnectedAdapter(): WalletAdapter | null;
50
+ /**
51
+ * Disconnect (clear state only, don't actually disconnect from wallet)
52
+ */
53
+ disconnect(): void;
54
+ }
55
+ //# sourceMappingURL=solana-wallet-service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"solana-wallet-service.d.ts","sourceRoot":"","sources":["../../src/services/solana-wallet-service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAa,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AACzE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAA;AAChE,OAAO,EAEL,KAAK,kBAAkB,EACxB,MAAM,8BAA8B,CAAA;AACrC,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAElD;;GAEG;AACH,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,eAAe,CAA2B;IAClD,OAAO,CAAC,gBAAgB,CAA6B;IACrD,OAAO,CAAC,OAAO,CAAsB;IACrC,OAAO,CAAC,cAAc,CAAgB;gBAE1B,cAAc,EAAE,cAAc;IAI1C;;OAEG;IACH,mBAAmB,IAAI,IAAI;IAI3B;;OAEG;IACH,kBAAkB,IAAI,kBAAkB,EAAE;IAI1C;;OAEG;IACH,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,kBAAkB,GAAG,SAAS;IAI9D;;OAEG;IACG,uBAAuB,CAC3B,OAAO,EAAE,aAAa,EACtB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAkCzB;;OAEG;IACG,OAAO,CAAC,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAkB1E;;OAEG;IACH,uBAAuB,CACrB,mBAAmB,EAAE,MAAM,EAAE,EAC7B,OAAO,EAAE,MAAM,GACd,gBAAgB,EAAE;IAarB;;OAEG;IACH,kBAAkB,CAChB,OAAO,EAAE,aAAa,GAAG,IAAI,EAC7B,OAAO,EAAE,MAAM,GAAG,IAAI,EACtB,UAAU,CAAC,EAAE,MAAM,GAClB,IAAI;IAUP;;OAEG;IACH,UAAU,IAAI,MAAM,GAAG,IAAI;IAI3B;;OAEG;IACH,mBAAmB,IAAI,aAAa,GAAG,IAAI;IAI3C;;OAEG;IACH,UAAU,IAAI,IAAI;CAInB"}