@meshconnect/uwc-injected-connector 0.2.0 → 0.2.2

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 (57) hide show
  1. package/dist/injected-connector.d.ts +6 -2
  2. package/dist/injected-connector.d.ts.map +1 -1
  3. package/dist/injected-connector.js +18 -4
  4. package/dist/injected-connector.js.map +1 -1
  5. package/dist/services/connection-manager.d.ts +2 -2
  6. package/dist/services/connection-manager.d.ts.map +1 -1
  7. package/dist/services/connection-manager.js +2 -2
  8. package/dist/services/connection-manager.js.map +1 -1
  9. package/dist/services/ethereum/ethereum-transaction-builder.d.ts +14 -0
  10. package/dist/services/ethereum/ethereum-transaction-builder.d.ts.map +1 -0
  11. package/dist/services/ethereum/ethereum-transaction-builder.js +60 -0
  12. package/dist/services/ethereum/ethereum-transaction-builder.js.map +1 -0
  13. package/dist/services/ethereum/ethereum-transaction-service.d.ts +26 -0
  14. package/dist/services/ethereum/ethereum-transaction-service.d.ts.map +1 -0
  15. package/dist/services/ethereum/ethereum-transaction-service.js +145 -0
  16. package/dist/services/ethereum/ethereum-transaction-service.js.map +1 -0
  17. package/dist/services/ethereum/ethereum-wallet-service.d.ts +59 -0
  18. package/dist/services/ethereum/ethereum-wallet-service.d.ts.map +1 -0
  19. package/dist/services/ethereum/ethereum-wallet-service.js +173 -0
  20. package/dist/services/ethereum/ethereum-wallet-service.js.map +1 -0
  21. package/dist/services/ethereum-transaction-service.d.ts +3 -0
  22. package/dist/services/ethereum-transaction-service.d.ts.map +1 -1
  23. package/dist/services/ethereum-transaction-service.js +93 -35
  24. package/dist/services/ethereum-transaction-service.js.map +1 -1
  25. package/dist/services/index.d.ts +3 -3
  26. package/dist/services/index.d.ts.map +1 -1
  27. package/dist/services/index.js +3 -3
  28. package/dist/services/index.js.map +1 -1
  29. package/dist/services/solana/solana-transaction-builder.d.ts +20 -0
  30. package/dist/services/solana/solana-transaction-builder.d.ts.map +1 -0
  31. package/dist/services/solana/solana-transaction-builder.js +112 -0
  32. package/dist/services/solana/solana-transaction-builder.js.map +1 -0
  33. package/dist/services/solana/solana-transaction-service.d.ts +27 -0
  34. package/dist/services/solana/solana-transaction-service.d.ts.map +1 -0
  35. package/dist/services/solana/solana-transaction-service.js +136 -0
  36. package/dist/services/solana/solana-transaction-service.js.map +1 -0
  37. package/dist/services/solana/solana-wallet-service.d.ts +55 -0
  38. package/dist/services/solana/solana-wallet-service.d.ts.map +1 -0
  39. package/dist/services/solana/solana-wallet-service.js +129 -0
  40. package/dist/services/solana/solana-wallet-service.js.map +1 -0
  41. package/dist/services/transaction-service.d.ts +1 -13
  42. package/dist/services/transaction-service.d.ts.map +1 -1
  43. package/dist/services/transaction-service.js +4 -42
  44. package/dist/services/transaction-service.js.map +1 -1
  45. package/package.json +4 -2
  46. package/src/injected-connector.ts +25 -6
  47. package/src/services/connection-manager.ts +2 -2
  48. package/src/services/ethereum/ethereum-transaction-builder.ts +82 -0
  49. package/src/services/ethereum/ethereum-transaction-service.ts +192 -0
  50. package/src/services/{ethereum-wallet-service.ts → ethereum/ethereum-wallet-service.ts} +56 -3
  51. package/src/services/index.ts +3 -3
  52. package/src/services/solana/solana-transaction-builder.ts +214 -0
  53. package/src/services/solana/solana-transaction-service.ts +190 -0
  54. package/src/services/{solana-wallet-service.ts → solana/solana-wallet-service.ts} +2 -2
  55. package/src/services/transaction-service.ts +9 -67
  56. package/src/services/ethereum-transaction-service.ts +0 -196
  57. package/src/services/solana-transaction-service.ts +0 -68
@@ -0,0 +1,173 @@
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
+ * Get wallet capabilities (EIP-5792 support)
134
+ */
135
+ async getCapabilities(from) {
136
+ if (!this.connectedProvider) {
137
+ throw new Error('No Ethereum wallet connected');
138
+ }
139
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
140
+ let raw;
141
+ try {
142
+ raw = await this.connectedProvider.request({
143
+ method: 'wallet_getCapabilities',
144
+ params: [from]
145
+ });
146
+ }
147
+ catch {
148
+ return {};
149
+ }
150
+ const result = {};
151
+ for (const [chainId, caps] of Object.entries(raw || {})) {
152
+ const networkId = `eip155:${Number(chainId)}`;
153
+ result[networkId] = {};
154
+ for (const [capKey, capValue] of Object.entries(caps)) {
155
+ if (capValue && typeof capValue === 'object') {
156
+ if (typeof capValue.supported === 'boolean') {
157
+ result[networkId][capKey] = {
158
+ status: capValue.supported ? 'supported' : 'unsupported'
159
+ };
160
+ }
161
+ else if (typeof capValue.status === 'string' &&
162
+ ['supported', 'ready', 'unsupported'].includes(capValue.status)) {
163
+ result[networkId][capKey] = {
164
+ status: capValue.status
165
+ };
166
+ }
167
+ }
168
+ }
169
+ }
170
+ return result;
171
+ }
172
+ }
173
+ //# sourceMappingURL=ethereum-wallet-service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ethereum-wallet-service.js","sourceRoot":"","sources":["../../../src/services/ethereum/ethereum-wallet-service.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,12 @@
1
1
  import type { EthereumProvider } from '../eip6963-discovery';
2
2
  import type { EVMNativeTransferRequest, EVMContractCallRequest, EVMBatchTransactionRequest, EVMCapabilities } from '@meshconnect/uwc-types';
3
+ import type { TransactionRequest } from 'ethers';
3
4
  /**
4
5
  * Service for handling Ethereum/EVM transaction operations
5
6
  */
6
7
  export declare class EthereumTransactionService {
8
+ buildContractCall(provider: EthereumProvider, request: EVMContractCallRequest): Promise<TransactionRequest>;
9
+ buildNativeTransfer(provider: EthereumProvider, request: EVMNativeTransferRequest): Promise<TransactionRequest>;
7
10
  /**
8
11
  * Send native token transfer (ETH, BNB, MATIC, etc.)
9
12
  */
@@ -1 +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"}
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;AAE/B,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,QAAQ,CAAA;AAEhD;;GAEG;AACH,qBAAa,0BAA0B;IAC/B,iBAAiB,CACrB,QAAQ,EAAE,gBAAgB,EAC1B,OAAO,EAAE,sBAAsB,GAC9B,OAAO,CAAC,kBAAkB,CAAC;IA+CxB,mBAAmB,CACvB,QAAQ,EAAE,gBAAgB,EAC1B,OAAO,EAAE,wBAAwB,GAChC,OAAO,CAAC,kBAAkB,CAAC;IA2B9B;;OAEG;IACG,kBAAkB,CACtB,QAAQ,EAAE,gBAAgB,EAC1B,OAAO,EAAE,wBAAwB,GAChC,OAAO,CAAC,MAAM,CAAC;IAoBlB;;OAEG;IACG,gBAAgB,CACpB,QAAQ,EAAE,gBAAgB,EAC1B,OAAO,EAAE,sBAAsB,GAC9B,OAAO,CAAC,MAAM,CAAC;IAoBlB;;OAEG;IACG,SAAS,CACb,QAAQ,EAAE,gBAAgB,EAC1B,OAAO,EAAE,0BAA0B,GAClC,OAAO,CAAC,MAAM,CAAC;IA+ElB;;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"}
@@ -4,10 +4,7 @@ import { parseError } from '../utils/error-utils';
4
4
  * Service for handling Ethereum/EVM transaction operations
5
5
  */
6
6
  export class EthereumTransactionService {
7
- /**
8
- * Send native token transfer (ETH, BNB, MATIC, etc.)
9
- */
10
- async sendNativeTransfer(provider, request) {
7
+ async buildContractCall(provider, request) {
11
8
  try {
12
9
  // Get current chain ID
13
10
  const chainIdHex = await provider.request({
@@ -16,62 +13,91 @@ export class EthereumTransactionService {
16
13
  const chainId = parseInt(chainIdHex, 16);
17
14
  // Create ethers provider and signer
18
15
  const ethersProvider = new ethers.BrowserProvider(provider);
19
- const signer = await ethersProvider.getSigner(request.from);
20
16
  // Verify network hasn't changed
21
17
  const network = await ethersProvider.getNetwork();
22
18
  if (Number(network.chainId) !== chainId) {
23
19
  throw new Error('Network changed during transaction setup');
24
20
  }
25
- // Build transaction
26
- const tx = await signer.sendTransaction({
27
- to: request.to,
28
- value: request.amount,
21
+ // Build transaction options
22
+ const txOptions = {
29
23
  ...this.formatGasConfig(request.gasConfig)
30
- });
31
- // Wait for confirmation
32
- const receipt = await tx.wait();
33
- return receipt ? receipt.hash : '';
24
+ };
25
+ // Add value for payable functions
26
+ if (request.value) {
27
+ txOptions.value = request.value;
28
+ }
29
+ const iface = new ethers.Interface(request.abi);
30
+ const data = iface.encodeFunctionData(request.functionName, request.args || []);
31
+ const txRequest = {
32
+ to: request.contractAddress,
33
+ data,
34
+ value: request.value ?? 0n,
35
+ ...txOptions
36
+ };
37
+ return txRequest;
34
38
  }
35
39
  catch (error) {
36
40
  parseError(error);
37
41
  }
38
42
  }
39
- /**
40
- * Send smart contract transaction (including ERC-20 transfers)
41
- */
42
- async sendContractCall(provider, request) {
43
+ async buildNativeTransfer(provider, request) {
43
44
  try {
44
45
  // Get current chain ID
45
46
  const chainIdHex = await provider.request({
46
47
  method: 'eth_chainId'
47
48
  });
48
49
  const chainId = parseInt(chainIdHex, 16);
49
- // Create ethers provider and signer
50
+ // Create ethers provider
50
51
  const ethersProvider = new ethers.BrowserProvider(provider);
51
- const signer = await ethersProvider.getSigner(request.from);
52
52
  // Verify network hasn't changed
53
53
  const network = await ethersProvider.getNetwork();
54
54
  if (Number(network.chainId) !== chainId) {
55
55
  throw new Error('Network changed during transaction setup');
56
56
  }
57
- // Create contract instance
58
- const contract = new ethers.Contract(request.contractAddress, request.abi, signer);
59
- // Build transaction options
60
- const txOptions = {
57
+ return {
58
+ to: request.to,
59
+ value: request.amount,
61
60
  ...this.formatGasConfig(request.gasConfig)
62
61
  };
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);
62
+ }
63
+ catch (error) {
64
+ parseError(error);
65
+ }
66
+ }
67
+ /**
68
+ * Send native token transfer (ETH, BNB, MATIC, etc.)
69
+ */
70
+ async sendNativeTransfer(provider, request) {
71
+ try {
72
+ // Build transaction
73
+ const tx = await this.buildNativeTransfer(provider, request);
74
+ // Create ethers provider and signer
75
+ const ethersProvider = new ethers.BrowserProvider(provider);
76
+ const signer = await ethersProvider.getSigner(request.from);
77
+ // Send transaction
78
+ const response = await signer.sendTransaction(tx);
79
+ // Wait for confirmation
80
+ const receipt = await response.wait();
81
+ return receipt ? receipt.hash : '';
82
+ }
83
+ catch (error) {
84
+ parseError(error);
85
+ }
86
+ }
87
+ /**
88
+ * Send smart contract transaction (including ERC-20 transfers)
89
+ */
90
+ async sendContractCall(provider, request) {
91
+ try {
92
+ // Build transaction
93
+ const tx = await this.buildContractCall(provider, request);
94
+ // Create ethers provider and signer
95
+ const ethersProvider = new ethers.BrowserProvider(provider);
96
+ const signer = await ethersProvider.getSigner(request.from);
97
+ // Send transaction
98
+ const response = await signer.sendTransaction(tx);
73
99
  // Wait for confirmation
74
- const receipt = await tx.wait();
100
+ const receipt = await response.wait();
75
101
  return receipt ? receipt.hash : '';
76
102
  }
77
103
  catch (error) {
@@ -83,9 +109,41 @@ export class EthereumTransactionService {
83
109
  */
84
110
  async sendBatch(provider, request) {
85
111
  try {
112
+ // Prepare calls
113
+ const calls = await Promise.all(request.calls.map(async (tx) => {
114
+ if ('contractAddress' in tx && 'abi' in tx) {
115
+ // Contract call
116
+ const result = await this.buildContractCall(provider, tx);
117
+ return {
118
+ to: result.to ?? '',
119
+ value: '0x' + (result.value ?? 0n).toString(16),
120
+ data: result.data
121
+ };
122
+ }
123
+ else if ('amount' in tx && typeof tx.amount === 'bigint') {
124
+ // Native transfer
125
+ const result = await this.buildNativeTransfer(provider, tx);
126
+ return {
127
+ to: result.to ?? '',
128
+ value: '0x' + (result.value ?? 0n).toString(16)
129
+ };
130
+ }
131
+ else {
132
+ throw new Error('Invalid transaction request type');
133
+ }
134
+ }));
135
+ // Create ethers provider
86
136
  const ethersProvider = new ethers.BrowserProvider(provider);
87
137
  // Send batch transaction
88
- const response = await ethersProvider.send('wallet_sendCalls', [request]);
138
+ const response = await ethersProvider.send('wallet_sendCalls', [
139
+ {
140
+ version: request.version,
141
+ from: request.from,
142
+ chainId: request.chainId,
143
+ atomicRequired: request.atomicRequired,
144
+ calls: calls
145
+ }
146
+ ]);
89
147
  // Poll for completion
90
148
  let result;
91
149
  do {
@@ -1 +1 @@
1
- {"version":3,"file":"ethereum-transaction-service.js","sourceRoot":"","sources":["../../src/services/ethereum-transaction-service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ethereum-transaction-service.js","sourceRoot":"","sources":["../../src/services/ethereum-transaction-service.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,8 @@
1
1
  export { StorageService } from './storage-service';
2
- export { EthereumWalletService } from './ethereum-wallet-service';
3
- export { SolanaWalletService } from './solana-wallet-service';
2
+ export { EthereumWalletService } from './ethereum/ethereum-wallet-service';
3
+ export { SolanaWalletService } from './solana/solana-wallet-service';
4
4
  export { ConnectionManager } from './connection-manager';
5
5
  export { SignatureService } from './signature-service';
6
6
  export { TransactionService } from './transaction-service';
7
- export { EthereumTransactionService } from './ethereum-transaction-service';
7
+ export { EthereumTransactionService } from './ethereum/ethereum-transaction-service';
8
8
  //# sourceMappingURL=index.d.ts.map
@@ -1 +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"}
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,oCAAoC,CAAA;AAC1E,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAA;AACpE,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,yCAAyC,CAAA"}
@@ -1,8 +1,8 @@
1
1
  export { StorageService } from './storage-service';
2
- export { EthereumWalletService } from './ethereum-wallet-service';
3
- export { SolanaWalletService } from './solana-wallet-service';
2
+ export { EthereumWalletService } from './ethereum/ethereum-wallet-service';
3
+ export { SolanaWalletService } from './solana/solana-wallet-service';
4
4
  export { ConnectionManager } from './connection-manager';
5
5
  export { SignatureService } from './signature-service';
6
6
  export { TransactionService } from './transaction-service';
7
- export { EthereumTransactionService } from './ethereum-transaction-service';
7
+ export { EthereumTransactionService } from './ethereum/ethereum-transaction-service';
8
8
  //# sourceMappingURL=index.js.map
@@ -1 +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"}
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,oCAAoC,CAAA;AAC1E,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAA;AACpE,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,yCAAyC,CAAA"}
@@ -0,0 +1,20 @@
1
+ import { PublicKey, TransactionInstruction, VersionedTransaction } from '@solana/web3.js';
2
+ import type { SolanaTransactionRequest } from '@meshconnect/uwc-types';
3
+ /**
4
+ * Service for handling Solana transaction operations
5
+ */
6
+ export declare class SolanaTransactionBuilder {
7
+ buildTransferInstructions(request: SolanaTransactionRequest): Promise<TransactionInstruction[]>;
8
+ getVersionedTransaction(feePayer: PublicKey, request: SolanaTransactionRequest): Promise<VersionedTransaction>;
9
+ /**
10
+ * Build native SOL transfer
11
+ */
12
+ private buildNativeTransferInstruction;
13
+ /**
14
+ * Build SPL Token transfer
15
+ */
16
+ private buildSplTokenTransferInstructions;
17
+ private buildGenericTransferInstructions;
18
+ private parseLookupTable;
19
+ }
20
+ //# sourceMappingURL=solana-transaction-builder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"solana-transaction-builder.d.ts","sourceRoot":"","sources":["../../../src/services/solana/solana-transaction-builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,SAAS,EAET,sBAAsB,EAEtB,oBAAoB,EAErB,MAAM,iBAAiB,CAAA;AACxB,OAAO,KAAK,EAKV,wBAAwB,EACzB,MAAM,wBAAwB,CAAA;AAU/B;;GAEG;AACH,qBAAa,wBAAwB;IAC7B,yBAAyB,CAC7B,OAAO,EAAE,wBAAwB,GAChC,OAAO,CAAC,sBAAsB,EAAE,CAAC;IAkB9B,uBAAuB,CAC3B,QAAQ,EAAE,SAAS,EACnB,OAAO,EAAE,wBAAwB;IAanC;;OAEG;IACH,OAAO,CAAC,8BAA8B;IAUtC;;OAEG;YACW,iCAAiC;YA8DjC,gCAAgC;IAiD9C,OAAO,CAAC,gBAAgB,CAqBvB;CACF"}
@@ -0,0 +1,112 @@
1
+ import { AddressLookupTableAccount, PublicKey, SystemProgram, TransactionInstruction, TransactionMessage, VersionedTransaction } from '@solana/web3.js';
2
+ import { createTransferCheckedInstruction, createAssociatedTokenAccountIdempotentInstruction, getAssociatedTokenAddress, TOKEN_PROGRAM_ID, TOKEN_2022_PROGRAM_ID } from '@solana/spl-token';
3
+ import { Buffer } from 'buffer';
4
+ /**
5
+ * Service for handling Solana transaction operations
6
+ */
7
+ export class SolanaTransactionBuilder {
8
+ async buildTransferInstructions(request) {
9
+ if ('tokenMint' in request) {
10
+ return await this.buildSplTokenTransferInstructions(request);
11
+ }
12
+ else if ('instructions' in request) {
13
+ return await this.buildGenericTransferInstructions(request);
14
+ }
15
+ else {
16
+ return [
17
+ this.buildNativeTransferInstruction(request)
18
+ ];
19
+ }
20
+ }
21
+ async getVersionedTransaction(feePayer, request) {
22
+ const lookupTable = this.parseLookupTable(request);
23
+ return new VersionedTransaction(new TransactionMessage({
24
+ payerKey: feePayer,
25
+ recentBlockhash: request.blockhash,
26
+ instructions: await this.buildTransferInstructions(request)
27
+ }).compileToV0Message(lookupTable));
28
+ }
29
+ /**
30
+ * Build native SOL transfer
31
+ */
32
+ buildNativeTransferInstruction(request) {
33
+ return SystemProgram.transfer({
34
+ fromPubkey: new PublicKey(request.from),
35
+ toPubkey: new PublicKey(request.to),
36
+ lamports: Number(request.amount)
37
+ });
38
+ }
39
+ /**
40
+ * Build SPL Token transfer
41
+ */
42
+ async buildSplTokenTransferInstructions(request) {
43
+ let instructions = [];
44
+ // Create Public Keys
45
+ const mint = new PublicKey(request.tokenMint);
46
+ const from = new PublicKey(request.from);
47
+ const to = new PublicKey(request.to);
48
+ const fromTokenAccount = await getAssociatedTokenAddress(mint, from, false, request.tokenProgram
49
+ ? new PublicKey(request.tokenProgram)
50
+ : TOKEN_PROGRAM_ID);
51
+ const toTokenAccount = await getAssociatedTokenAddress(mint, to, false, request.tokenProgram
52
+ ? new PublicKey(request.tokenProgram)
53
+ : TOKEN_PROGRAM_ID);
54
+ // Create target associated token account
55
+ instructions.push(createAssociatedTokenAccountIdempotentInstruction(from, toTokenAccount, to, mint, request.tokenProgram
56
+ ? new PublicKey(request.tokenProgram)
57
+ : TOKEN_PROGRAM_ID));
58
+ const programId = request.tokenProgram === TOKEN_2022_PROGRAM_ID.toBase58()
59
+ ? TOKEN_2022_PROGRAM_ID
60
+ : TOKEN_PROGRAM_ID;
61
+ instructions.push(createTransferCheckedInstruction(fromTokenAccount, mint, toTokenAccount, from, request.amount, request.tokenDecimals, [], programId));
62
+ return instructions;
63
+ }
64
+ async buildGenericTransferInstructions(request) {
65
+ const result = [];
66
+ const instructions = request.instructions;
67
+ for (let instrIndex = 0; instrIndex < instructions.length; instrIndex++) {
68
+ const ix = instructions[instrIndex];
69
+ const programId = new PublicKey(ix.programId);
70
+ const keys = ix.accounts.map((meta, accountIndex) => {
71
+ if (!meta.pubKey) {
72
+ throw new Error(`Account at instruction ${instrIndex}, index ${accountIndex} has no pubKey and is not fillable`);
73
+ }
74
+ const resolvedPubkey = new PublicKey(meta.pubKey);
75
+ return {
76
+ pubkey: resolvedPubkey,
77
+ isSigner: meta.isSigner,
78
+ isWritable: meta.isWritable
79
+ };
80
+ });
81
+ result.push(new TransactionInstruction({
82
+ keys,
83
+ programId,
84
+ data: Buffer.from(ix.data, 'base64')
85
+ }));
86
+ }
87
+ if (request.additionalRequests) {
88
+ const extraInstructions = await Promise.all(request.additionalRequests.map(req => this.buildTransferInstructions(req)));
89
+ result.push(...extraInstructions.flat());
90
+ }
91
+ return result;
92
+ }
93
+ parseLookupTable = (request) => {
94
+ if (!('states' in request)) {
95
+ return [];
96
+ }
97
+ return (request.states ?? []).map(state => {
98
+ const currentState = {
99
+ deactivationSlot: state.deactivationSlot,
100
+ lastExtendedSlot: state.lastExtendedSlot,
101
+ lastExtendedSlotStartIndex: state.lastExtendedStartIndex,
102
+ addresses: [],
103
+ ...(state.authority && { authority: new PublicKey(state.authority) })
104
+ };
105
+ return new AddressLookupTableAccount({
106
+ key: new PublicKey(state.key),
107
+ state: currentState
108
+ });
109
+ });
110
+ };
111
+ }
112
+ //# sourceMappingURL=solana-transaction-builder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"solana-transaction-builder.js","sourceRoot":"","sources":["../../../src/services/solana/solana-transaction-builder.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,yBAAyB,EACzB,SAAS,EACT,aAAa,EACb,sBAAsB,EACtB,kBAAkB,EAClB,oBAAoB,EAErB,MAAM,iBAAiB,CAAA;AAQxB,OAAO,EACL,gCAAgC,EAChC,iDAAiD,EACjD,yBAAyB,EACzB,gBAAgB,EAChB,qBAAqB,EACtB,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAE/B;;GAEG;AACH,MAAM,OAAO,wBAAwB;IACnC,KAAK,CAAC,yBAAyB,CAC7B,OAAiC;QAEjC,IAAI,WAAW,IAAI,OAAO,EAAE,CAAC;YAC3B,OAAO,MAAM,IAAI,CAAC,iCAAiC,CACjD,OAAqC,CACtC,CAAA;QACH,CAAC;aAAM,IAAI,cAAc,IAAI,OAAO,EAAE,CAAC;YACrC,OAAO,MAAM,IAAI,CAAC,gCAAgC,CAChD,OAAuC,CACxC,CAAA;QACH,CAAC;aAAM,CAAC;YACN,OAAO;gBACL,IAAI,CAAC,8BAA8B,CACjC,OAAsC,CACvC;aACF,CAAA;QACH,CAAC;IACH,CAAC;IAED,KAAK,CAAC,uBAAuB,CAC3B,QAAmB,EACnB,OAAiC;QAEjC,MAAM,WAAW,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAA;QAElD,OAAO,IAAI,oBAAoB,CAC7B,IAAI,kBAAkB,CAAC;YACrB,QAAQ,EAAE,QAAQ;YAClB,eAAe,EAAE,OAAO,CAAC,SAAS;YAClC,YAAY,EAAE,MAAM,IAAI,CAAC,yBAAyB,CAAC,OAAO,CAAC;SAC5D,CAAC,CAAC,kBAAkB,CAAC,WAAW,CAAC,CACnC,CAAA;IACH,CAAC;IAED;;OAEG;IACK,8BAA8B,CACpC,OAAoC;QAEpC,OAAO,aAAa,CAAC,QAAQ,CAAC;YAC5B,UAAU,EAAE,IAAI,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC;YACvC,QAAQ,EAAE,IAAI,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC;YACnC,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;SACjC,CAAC,CAAA;IACJ,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,iCAAiC,CAC7C,OAAmC;QAEnC,IAAI,YAAY,GAA6B,EAAE,CAAA;QAE/C,qBAAqB;QACrB,MAAM,IAAI,GAAG,IAAI,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;QAC7C,MAAM,IAAI,GAAG,IAAI,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;QACxC,MAAM,EAAE,GAAG,IAAI,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;QAEpC,MAAM,gBAAgB,GAAG,MAAM,yBAAyB,CACtD,IAAI,EACJ,IAAI,EACJ,KAAK,EACL,OAAO,CAAC,YAAY;YAClB,CAAC,CAAC,IAAI,SAAS,CAAC,OAAO,CAAC,YAAY,CAAC;YACrC,CAAC,CAAC,gBAAgB,CACrB,CAAA;QAED,MAAM,cAAc,GAAG,MAAM,yBAAyB,CACpD,IAAI,EACJ,EAAE,EACF,KAAK,EACL,OAAO,CAAC,YAAY;YAClB,CAAC,CAAC,IAAI,SAAS,CAAC,OAAO,CAAC,YAAY,CAAC;YACrC,CAAC,CAAC,gBAAgB,CACrB,CAAA;QAED,yCAAyC;QACzC,YAAY,CAAC,IAAI,CACf,iDAAiD,CAC/C,IAAI,EACJ,cAAc,EACd,EAAE,EACF,IAAI,EACJ,OAAO,CAAC,YAAY;YAClB,CAAC,CAAC,IAAI,SAAS,CAAC,OAAO,CAAC,YAAY,CAAC;YACrC,CAAC,CAAC,gBAAgB,CACrB,CACF,CAAA;QAED,MAAM,SAAS,GACb,OAAO,CAAC,YAAY,KAAK,qBAAqB,CAAC,QAAQ,EAAE;YACvD,CAAC,CAAC,qBAAqB;YACvB,CAAC,CAAC,gBAAgB,CAAA;QAEtB,YAAY,CAAC,IAAI,CACf,gCAAgC,CAC9B,gBAAgB,EAChB,IAAI,EACJ,cAAc,EACd,IAAI,EACJ,OAAO,CAAC,MAAM,EACd,OAAO,CAAC,aAAa,EACrB,EAAE,EACF,SAAS,CACV,CACF,CAAA;QAED,OAAO,YAAY,CAAA;IACrB,CAAC;IAEO,KAAK,CAAC,gCAAgC,CAC5C,OAAqC;QAErC,MAAM,MAAM,GAA6B,EAAE,CAAA;QAE3C,MAAM,YAAY,GAAG,OAAO,CAAC,YAAY,CAAA;QACzC,KAAK,IAAI,UAAU,GAAG,CAAC,EAAE,UAAU,GAAG,YAAY,CAAC,MAAM,EAAE,UAAU,EAAE,EAAE,CAAC;YACxE,MAAM,EAAE,GAAG,YAAY,CAAC,UAAU,CAAE,CAAA;YACpC,MAAM,SAAS,GAAG,IAAI,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,CAAA;YAE7C,MAAM,IAAI,GAAG,EAAE,CAAC,QAAQ,CAAC,GAAG,CAC1B,CAAC,IAAuB,EAAE,YAAoB,EAAE,EAAE;gBAChD,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;oBACjB,MAAM,IAAI,KAAK,CACb,0BAA0B,UAAU,WAAW,YAAY,oCAAoC,CAChG,CAAA;gBACH,CAAC;gBAED,MAAM,cAAc,GAAc,IAAI,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;gBAC5D,OAAO;oBACL,MAAM,EAAE,cAAc;oBACtB,QAAQ,EAAE,IAAI,CAAC,QAAQ;oBACvB,UAAU,EAAE,IAAI,CAAC,UAAU;iBAC5B,CAAA;YACH,CAAC,CACF,CAAA;YAED,MAAM,CAAC,IAAI,CACT,IAAI,sBAAsB,CAAC;gBACzB,IAAI;gBACJ,SAAS;gBACT,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,CAAC;aACrC,CAAC,CACH,CAAA;QACH,CAAC;QAED,IAAI,OAAO,CAAC,kBAAkB,EAAE,CAAC;YAC/B,MAAM,iBAAiB,GAAG,MAAM,OAAO,CAAC,GAAG,CACzC,OAAO,CAAC,kBAAkB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CACnC,IAAI,CAAC,yBAAyB,CAAC,GAAG,CAAC,CACpC,CACF,CAAA;YAED,MAAM,CAAC,IAAI,CAAC,GAAG,iBAAiB,CAAC,IAAI,EAAE,CAAC,CAAA;QAC1C,CAAC;QAED,OAAO,MAAM,CAAA;IACf,CAAC;IAEO,gBAAgB,GAAG,CACzB,OAAiC,EACJ,EAAE;QAC/B,IAAI,CAAC,CAAC,QAAQ,IAAI,OAAO,CAAC,EAAE,CAAC;YAC3B,OAAO,EAAE,CAAA;QACX,CAAC;QAED,OAAO,CAAC,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;YACxC,MAAM,YAAY,GAA4B;gBAC5C,gBAAgB,EAAE,KAAK,CAAC,gBAAgB;gBACxC,gBAAgB,EAAE,KAAK,CAAC,gBAAgB;gBACxC,0BAA0B,EAAE,KAAK,CAAC,sBAAsB;gBACxD,SAAS,EAAE,EAAE;gBACb,GAAG,CAAC,KAAK,CAAC,SAAS,IAAI,EAAE,SAAS,EAAE,IAAI,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC;aACtE,CAAA;YAED,OAAO,IAAI,yBAAyB,CAAC;gBACnC,GAAG,EAAE,IAAI,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC;gBAC7B,KAAK,EAAE,YAAY;aACpB,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;IACJ,CAAC,CAAA;CACF"}
@@ -0,0 +1,27 @@
1
+ import type { WalletAdapter } from '@solana/wallet-adapter-base';
2
+ import type { NetworkRpcMap, SolanaTransactionRequest } from '@meshconnect/uwc-types';
3
+ /**
4
+ * Service for handling Solana transaction operations
5
+ */
6
+ export declare class SolanaTransactionService {
7
+ private networkRpcMap;
8
+ private builder;
9
+ constructor(networkRpcMap?: NetworkRpcMap);
10
+ /**
11
+ * Send a transaction for Solana
12
+ */
13
+ sendTransaction(request: SolanaTransactionRequest, adapter: WalletAdapter): Promise<string>;
14
+ /**
15
+ * Send native SOL transfer
16
+ */
17
+ private sendNativeTransaction;
18
+ /**
19
+ * Send SPL token transfer
20
+ */
21
+ private sendSplTokenTransaction;
22
+ /**
23
+ * Send native SOL transfer
24
+ */
25
+ private sendGenericTransferWithInstructions;
26
+ }
27
+ //# sourceMappingURL=solana-transaction-service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"solana-transaction-service.d.ts","sourceRoot":"","sources":["../../../src/services/solana/solana-transaction-service.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAA;AAChE,OAAO,KAAK,EAEV,aAAa,EAIb,wBAAwB,EACzB,MAAM,wBAAwB,CAAA;AAI/B;;GAEG;AACH,qBAAa,wBAAwB;IACnC,OAAO,CAAC,aAAa,CAAe;IACpC,OAAO,CAAC,OAAO,CAA0B;gBAE7B,aAAa,GAAE,aAAkB;IAK7C;;OAEG;IACG,eAAe,CACnB,OAAO,EAAE,wBAAwB,EACjC,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC,MAAM,CAAC;IA0BlB;;OAEG;YACW,qBAAqB;IA0CnC;;OAEG;YACW,uBAAuB;IA0CrC;;OAEG;YACW,mCAAmC;CAuClD"}