@meshconnect/uwc-wallet-connect-connector 0.2.1 → 0.2.3
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/services/ethereum/ethereum-transaction-builder.d.ts +14 -0
- package/dist/services/ethereum/ethereum-transaction-builder.d.ts.map +1 -0
- package/dist/services/ethereum/ethereum-transaction-builder.js +60 -0
- package/dist/services/ethereum/ethereum-transaction-builder.js.map +1 -0
- package/dist/services/ethereum/ethereum-transaction-service.d.ts +21 -0
- package/dist/services/ethereum/ethereum-transaction-service.d.ts.map +1 -0
- package/dist/services/ethereum/ethereum-transaction-service.js +107 -0
- package/dist/services/ethereum/ethereum-transaction-service.js.map +1 -0
- package/dist/services/signature-service.d.ts +2 -1
- package/dist/services/signature-service.d.ts.map +1 -1
- package/dist/services/signature-service.js +36 -18
- package/dist/services/signature-service.js.map +1 -1
- package/dist/services/solana/solana-transaction-builder.d.ts +20 -0
- package/dist/services/solana/solana-transaction-builder.d.ts.map +1 -0
- package/dist/services/solana/solana-transaction-builder.js +112 -0
- package/dist/services/solana/solana-transaction-builder.js.map +1 -0
- package/dist/services/solana/solana-transaction-service.d.ts +17 -0
- package/dist/services/solana/solana-transaction-service.d.ts.map +1 -0
- package/dist/services/solana/solana-transaction-service.js +178 -0
- package/dist/services/solana/solana-transaction-service.js.map +1 -0
- package/dist/services/transaction-service.d.ts +2 -17
- package/dist/services/transaction-service.d.ts.map +1 -1
- package/dist/services/transaction-service.js +8 -246
- package/dist/services/transaction-service.js.map +1 -1
- package/dist/wallet-connect-connector.d.ts +2 -2
- package/dist/wallet-connect-connector.d.ts.map +1 -1
- package/dist/wallet-connect-connector.js.map +1 -1
- package/package.json +4 -2
- package/src/services/ethereum/ethereum-transaction-builder.ts +82 -0
- package/src/services/ethereum/ethereum-transaction-service.ts +152 -0
- package/src/services/signature-service.ts +47 -18
- package/src/services/solana/solana-transaction-builder.ts +214 -0
- package/src/services/solana/solana-transaction-service.ts +294 -0
- package/src/services/transaction-service.ts +17 -339
- package/src/utils/account-utils.ts +1 -1
- package/src/wallet-connect-connector.ts +3 -2
- package/src/utils/solana-transactions.ts +0 -24
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { EVMNativeTransferRequest, EVMContractCallRequest } from '@meshconnect/uwc-types';
|
|
2
|
+
import type { TransactionRequest } from 'ethers';
|
|
3
|
+
/**
|
|
4
|
+
* Service for handling Ethereum/EVM transaction operations
|
|
5
|
+
*/
|
|
6
|
+
export declare class EthereumTransactionBuilder {
|
|
7
|
+
getContractTransaction(request: EVMContractCallRequest): Promise<TransactionRequest>;
|
|
8
|
+
getNativeTransaction(request: EVMNativeTransferRequest): Promise<TransactionRequest>;
|
|
9
|
+
/**
|
|
10
|
+
* Helper to format gas configuration for ethers
|
|
11
|
+
*/
|
|
12
|
+
private formatGasConfig;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=ethereum-transaction-builder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ethereum-transaction-builder.d.ts","sourceRoot":"","sources":["../../../src/services/ethereum/ethereum-transaction-builder.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAEV,wBAAwB,EACxB,sBAAsB,EACvB,MAAM,wBAAwB,CAAA;AAE/B,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,QAAQ,CAAA;AAEhD;;GAEG;AACH,qBAAa,0BAA0B;IAC/B,sBAAsB,CAC1B,OAAO,EAAE,sBAAsB,GAC9B,OAAO,CAAC,kBAAkB,CAAC;IAgCxB,oBAAoB,CACxB,OAAO,EAAE,wBAAwB,GAChC,OAAO,CAAC,kBAAkB,CAAC;IAY9B;;OAEG;IACH,OAAO,CAAC,eAAe;CAiBxB"}
|
|
@@ -0,0 +1,60 @@
|
|
|
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 EthereumTransactionBuilder {
|
|
7
|
+
async getContractTransaction(request) {
|
|
8
|
+
try {
|
|
9
|
+
// Build transaction options
|
|
10
|
+
const txOptions = {
|
|
11
|
+
...this.formatGasConfig(request.gasConfig)
|
|
12
|
+
};
|
|
13
|
+
// Add value for payable functions
|
|
14
|
+
if (request.value) {
|
|
15
|
+
txOptions.value = request.value;
|
|
16
|
+
}
|
|
17
|
+
const iface = new ethers.Interface(request.abi);
|
|
18
|
+
const data = iface.encodeFunctionData(request.functionName, request.args || []);
|
|
19
|
+
const txRequest = {
|
|
20
|
+
to: request.contractAddress,
|
|
21
|
+
data,
|
|
22
|
+
value: request.value ?? 0n,
|
|
23
|
+
...txOptions
|
|
24
|
+
};
|
|
25
|
+
return txRequest;
|
|
26
|
+
}
|
|
27
|
+
catch (error) {
|
|
28
|
+
parseError(error);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
async getNativeTransaction(request) {
|
|
32
|
+
try {
|
|
33
|
+
return {
|
|
34
|
+
to: request.to,
|
|
35
|
+
value: request.amount,
|
|
36
|
+
...this.formatGasConfig(request.gasConfig)
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
catch (error) {
|
|
40
|
+
parseError(error);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Helper to format gas configuration for ethers
|
|
45
|
+
*/
|
|
46
|
+
formatGasConfig(gasConfig) {
|
|
47
|
+
const txOptions = {};
|
|
48
|
+
if (gasConfig?.gasLimit) {
|
|
49
|
+
txOptions.gasLimit = BigInt(Math.floor(gasConfig.gasLimit));
|
|
50
|
+
}
|
|
51
|
+
if (gasConfig?.maxFeePerGas) {
|
|
52
|
+
txOptions.maxFeePerGas = BigInt(Math.floor(gasConfig.maxFeePerGas));
|
|
53
|
+
}
|
|
54
|
+
if (gasConfig?.maxPriorityFeePerGas) {
|
|
55
|
+
txOptions.maxPriorityFeePerGas = BigInt(Math.floor(gasConfig.maxPriorityFeePerGas));
|
|
56
|
+
}
|
|
57
|
+
return txOptions;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=ethereum-transaction-builder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ethereum-transaction-builder.js","sourceRoot":"","sources":["../../../src/services/ethereum/ethereum-transaction-builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAM/B,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAA;AAGpD;;GAEG;AACH,MAAM,OAAO,0BAA0B;IACrC,KAAK,CAAC,sBAAsB,CAC1B,OAA+B;QAE/B,IAAI,CAAC;YACH,4BAA4B;YAC5B,MAAM,SAAS,GAAqB;gBAClC,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,SAAS,CAAC;aAC3C,CAAA;YAED,kCAAkC;YAClC,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;gBAClB,SAAS,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAA;YACjC,CAAC;YAED,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;YAE/C,MAAM,IAAI,GAAG,KAAK,CAAC,kBAAkB,CACnC,OAAO,CAAC,YAAY,EACpB,OAAO,CAAC,IAAI,IAAI,EAAE,CACnB,CAAA;YAED,MAAM,SAAS,GAAuB;gBACpC,EAAE,EAAE,OAAO,CAAC,eAAe;gBAC3B,IAAI;gBACJ,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,EAAE;gBAC1B,GAAG,SAAS;aACb,CAAA;YAED,OAAO,SAAS,CAAA;QAClB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,UAAU,CAAC,KAAK,CAAC,CAAA;QACnB,CAAC;IACH,CAAC;IAED,KAAK,CAAC,oBAAoB,CACxB,OAAiC;QAEjC,IAAI,CAAC;YACH,OAAO;gBACL,EAAE,EAAE,OAAO,CAAC,EAAE;gBACd,KAAK,EAAE,OAAO,CAAC,MAAM;gBACrB,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,SAAS,CAAC;aAC3C,CAAA;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,UAAU,CAAC,KAAK,CAAC,CAAA;QACnB,CAAC;IACH,CAAC;IAED;;OAEG;IACK,eAAe,CAAC,SAAwB;QAC9C,MAAM,SAAS,GAAqB,EAAE,CAAA;QAEtC,IAAI,SAAS,EAAE,QAAQ,EAAE,CAAC;YACxB,SAAS,CAAC,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAA;QAC7D,CAAC;QACD,IAAI,SAAS,EAAE,YAAY,EAAE,CAAC;YAC5B,SAAS,CAAC,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,CAAA;QACrE,CAAC;QACD,IAAI,SAAS,EAAE,oBAAoB,EAAE,CAAC;YACpC,SAAS,CAAC,oBAAoB,GAAG,MAAM,CACrC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,oBAAoB,CAAC,CAC3C,CAAA;QACH,CAAC;QAED,OAAO,SAAS,CAAA;IAClB,CAAC;CACF"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { EthereumTransactionRequest } from '@meshconnect/uwc-types';
|
|
2
|
+
import type SignClient from '@walletconnect/sign-client';
|
|
3
|
+
import type { SessionTypes } from '@walletconnect/types';
|
|
4
|
+
export declare class EthereumTransactionService {
|
|
5
|
+
private builder;
|
|
6
|
+
constructor();
|
|
7
|
+
/**
|
|
8
|
+
* Send an Ethereum transaction
|
|
9
|
+
*/
|
|
10
|
+
sendTransaction(client: SignClient, session: SessionTypes.Struct, request: EthereumTransactionRequest, activeNetworkId: string): Promise<string>;
|
|
11
|
+
/**
|
|
12
|
+
* Send native token transfer (ETH, BNB, MATIC, etc.)
|
|
13
|
+
*/
|
|
14
|
+
private sendNativeTransaction;
|
|
15
|
+
/**
|
|
16
|
+
* Send smart contract transaction (including ERC-20 transfers)
|
|
17
|
+
*/
|
|
18
|
+
private sendContractCall;
|
|
19
|
+
private parseTransaction;
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=ethereum-transaction-service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ethereum-transaction-service.d.ts","sourceRoot":"","sources":["../../../src/services/ethereum/ethereum-transaction-service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,0BAA0B,EAI3B,MAAM,wBAAwB,CAAA;AAC/B,OAAO,KAAK,UAAU,MAAM,4BAA4B,CAAA;AACxD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AAMxD,qBAAa,0BAA0B;IACrC,OAAO,CAAC,OAAO,CAA4B;;IAI3C;;OAEG;IACG,eAAe,CACnB,MAAM,EAAE,UAAU,EAClB,OAAO,EAAE,YAAY,CAAC,MAAM,EAC5B,OAAO,EAAE,0BAA0B,EACnC,eAAe,EAAE,MAAM,GACtB,OAAO,CAAC,MAAM,CAAC;IAgClB;;OAEG;YACW,qBAAqB;IA6BnC;;OAEG;YACW,gBAAgB;IA6B9B,OAAO,CAAC,gBAAgB;CA6BzB"}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import { getChainIdFromNetworkId } from '../../utils/account-utils';
|
|
2
|
+
import { parseError } from '../../utils/error-utils';
|
|
3
|
+
import { EthereumTransactionBuilder } from './ethereum-transaction-builder';
|
|
4
|
+
export class EthereumTransactionService {
|
|
5
|
+
builder;
|
|
6
|
+
constructor() {
|
|
7
|
+
this.builder = new EthereumTransactionBuilder();
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Send an Ethereum transaction
|
|
11
|
+
*/
|
|
12
|
+
async sendTransaction(client, session, request, activeNetworkId) {
|
|
13
|
+
try {
|
|
14
|
+
// Handle different types of EVM transactions
|
|
15
|
+
if ('contractAddress' in request && 'abi' in request) {
|
|
16
|
+
// Contract call
|
|
17
|
+
return await this.sendContractCall(client, session, request, activeNetworkId);
|
|
18
|
+
}
|
|
19
|
+
else if ('calls' in request) {
|
|
20
|
+
// Batch transaction - not yet supported
|
|
21
|
+
throw new Error('Batch transactions are not yet supported for WalletConnect');
|
|
22
|
+
}
|
|
23
|
+
else if ('amount' in request && typeof request.amount === 'bigint') {
|
|
24
|
+
// Native transfer
|
|
25
|
+
return await this.sendNativeTransaction(client, session, request, activeNetworkId);
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
throw new Error('Invalid transaction request type');
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
catch (error) {
|
|
32
|
+
throw parseError(error);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Send native token transfer (ETH, BNB, MATIC, etc.)
|
|
37
|
+
*/
|
|
38
|
+
async sendNativeTransaction(client, session, request, activeNetworkId) {
|
|
39
|
+
try {
|
|
40
|
+
// Use the active network chainId
|
|
41
|
+
const chainId = getChainIdFromNetworkId(activeNetworkId);
|
|
42
|
+
const params = this.parseTransaction(await this.builder.getNativeTransaction(request));
|
|
43
|
+
const hash = await client.request({
|
|
44
|
+
topic: session.topic,
|
|
45
|
+
chainId: `eip155:${chainId}`,
|
|
46
|
+
request: {
|
|
47
|
+
method: 'eth_sendTransaction',
|
|
48
|
+
params: [params]
|
|
49
|
+
}
|
|
50
|
+
});
|
|
51
|
+
return hash;
|
|
52
|
+
}
|
|
53
|
+
catch (error) {
|
|
54
|
+
throw parseError(error);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Send smart contract transaction (including ERC-20 transfers)
|
|
59
|
+
*/
|
|
60
|
+
async sendContractCall(client, session, request, activeNetworkId) {
|
|
61
|
+
try {
|
|
62
|
+
// Use the active network chainId
|
|
63
|
+
const chainId = getChainIdFromNetworkId(activeNetworkId);
|
|
64
|
+
const params = this.parseTransaction(await this.builder.getContractTransaction(request));
|
|
65
|
+
const hash = await client.request({
|
|
66
|
+
topic: session.topic,
|
|
67
|
+
chainId: `eip155:${chainId}`,
|
|
68
|
+
request: {
|
|
69
|
+
method: 'eth_sendTransaction',
|
|
70
|
+
params: [params]
|
|
71
|
+
}
|
|
72
|
+
});
|
|
73
|
+
return hash;
|
|
74
|
+
}
|
|
75
|
+
catch (error) {
|
|
76
|
+
throw parseError(error);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
parseTransaction(tx) {
|
|
80
|
+
// Convert to hex format for WalletConnect
|
|
81
|
+
const txParams = {
|
|
82
|
+
from: tx.from,
|
|
83
|
+
to: tx.to,
|
|
84
|
+
data: (tx.data ?? '0x')
|
|
85
|
+
};
|
|
86
|
+
// Add value if present
|
|
87
|
+
if (tx.value) {
|
|
88
|
+
txParams['value'] = '0x' + BigInt(tx.value).toString(16);
|
|
89
|
+
}
|
|
90
|
+
else {
|
|
91
|
+
txParams['value'] = '0x';
|
|
92
|
+
}
|
|
93
|
+
// Add gas params if present
|
|
94
|
+
if (tx.gasLimit) {
|
|
95
|
+
txParams['gasLimit'] = '0x' + tx.gasLimit.toString(16);
|
|
96
|
+
}
|
|
97
|
+
if (tx.maxFeePerGas) {
|
|
98
|
+
txParams['maxFeePerGas'] = '0x' + tx.maxFeePerGas.toString(16);
|
|
99
|
+
}
|
|
100
|
+
if (tx.maxPriorityFeePerGas) {
|
|
101
|
+
txParams['maxPriorityFeePerGas'] =
|
|
102
|
+
'0x' + tx.maxPriorityFeePerGas.toString(16);
|
|
103
|
+
}
|
|
104
|
+
return txParams;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
//# sourceMappingURL=ethereum-transaction-service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ethereum-transaction-service.js","sourceRoot":"","sources":["../../../src/services/ethereum/ethereum-transaction-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { WalletConnectClient } from './walletconnect-client';
|
|
2
2
|
import { ConnectionService } from './connection-service';
|
|
3
|
+
import type { SignatureType } from '@meshconnect/uwc-types';
|
|
3
4
|
/**
|
|
4
5
|
* Service for handling message signing in WalletConnect
|
|
5
6
|
*/
|
|
@@ -10,6 +11,6 @@ export declare class SignatureService {
|
|
|
10
11
|
/**
|
|
11
12
|
* Sign a message with the connected wallet
|
|
12
13
|
*/
|
|
13
|
-
signMessage(message: string): Promise<
|
|
14
|
+
signMessage(message: string): Promise<SignatureType>;
|
|
14
15
|
}
|
|
15
16
|
//# sourceMappingURL=signature-service.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"signature-service.d.ts","sourceRoot":"","sources":["../../src/services/signature-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAA;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AAKxD;;GAEG;AACH,qBAAa,gBAAgB;IAEzB,OAAO,CAAC,mBAAmB;IAC3B,OAAO,CAAC,iBAAiB;gBADjB,mBAAmB,EAAE,mBAAmB,EACxC,iBAAiB,EAAE,iBAAiB;IAG9C;;OAEG;IACG,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,
|
|
1
|
+
{"version":3,"file":"signature-service.d.ts","sourceRoot":"","sources":["../../src/services/signature-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAA;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AAKxD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAA;AAE3D;;GAEG;AACH,qBAAa,gBAAgB;IAEzB,OAAO,CAAC,mBAAmB;IAC3B,OAAO,CAAC,iBAAiB;gBADjB,mBAAmB,EAAE,mBAAmB,EACxC,iBAAiB,EAAE,iBAAiB;IAG9C;;OAEG;IACG,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;CAwI3D"}
|
|
@@ -3,6 +3,7 @@ import { ConnectionService } from './connection-service';
|
|
|
3
3
|
import { findAccountInNamespaces, parseAccount } from '../utils/account-utils';
|
|
4
4
|
import { base58Encode } from '../utils/encoding-utils';
|
|
5
5
|
import { parseError } from '../utils/error-utils';
|
|
6
|
+
import { TronWeb } from 'tronweb';
|
|
6
7
|
/**
|
|
7
8
|
* Service for handling message signing in WalletConnect
|
|
8
9
|
*/
|
|
@@ -57,24 +58,27 @@ export class SignatureService {
|
|
|
57
58
|
};
|
|
58
59
|
break;
|
|
59
60
|
}
|
|
60
|
-
case '
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
}
|
|
67
|
-
];
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
61
|
+
case 'tron': {
|
|
62
|
+
// For TRON the user signs a mock transaction, since trust wallet returns incorrect TRON signatures
|
|
63
|
+
const tronWeb = new TronWeb({ fullHost: 'https://api.trongrid.io/' });
|
|
64
|
+
const mockContract = 'TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t';
|
|
65
|
+
const mockTransaction = await tronWeb.transactionBuilder.triggerSmartContract(mockContract, 'approve(address,uint256)', { feeLimit: 200000000 }, [
|
|
66
|
+
{ type: 'address', value: address },
|
|
67
|
+
{ type: 'uint256', value: 0 }
|
|
68
|
+
], address);
|
|
69
|
+
if (!mockTransaction.transaction) {
|
|
70
|
+
throw new Error('Failed to trigger contract');
|
|
71
|
+
}
|
|
72
|
+
mockTransaction.transaction.raw_data.data = tronWeb.toHex(message);
|
|
73
|
+
method = 'tron_signTransaction';
|
|
74
|
+
params = {
|
|
75
|
+
address,
|
|
76
|
+
transaction: {
|
|
77
|
+
...mockTransaction
|
|
75
78
|
}
|
|
76
|
-
|
|
79
|
+
};
|
|
77
80
|
break;
|
|
81
|
+
}
|
|
78
82
|
default:
|
|
79
83
|
throw new Error(`Signing not supported for namespace: ${accountNamespace}`);
|
|
80
84
|
}
|
|
@@ -90,9 +94,23 @@ export class SignatureService {
|
|
|
90
94
|
// Handle different response formats
|
|
91
95
|
if (accountNamespace === 'solana') {
|
|
92
96
|
// Solana returns an object with a signature property
|
|
93
|
-
return
|
|
97
|
+
return {
|
|
98
|
+
type: 'standard',
|
|
99
|
+
signature: result.signature
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
else if (accountNamespace === 'tron') {
|
|
103
|
+
const tronResult = result.result;
|
|
104
|
+
return {
|
|
105
|
+
type: 'tron',
|
|
106
|
+
signature: tronResult.signature,
|
|
107
|
+
txID: tronResult.txID
|
|
108
|
+
};
|
|
94
109
|
}
|
|
95
|
-
return
|
|
110
|
+
return {
|
|
111
|
+
type: 'standard',
|
|
112
|
+
signature: result
|
|
113
|
+
};
|
|
96
114
|
}
|
|
97
115
|
catch (error) {
|
|
98
116
|
throw parseError(error);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"signature-service.js","sourceRoot":"","sources":["../../src/services/signature-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAA;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AACxD,OAAO,EAAE,uBAAuB,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAA;AAC9E,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;
|
|
1
|
+
{"version":3,"file":"signature-service.js","sourceRoot":"","sources":["../../src/services/signature-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAA;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AACxD,OAAO,EAAE,uBAAuB,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAA;AAC9E,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AACjD,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AAGjC;;GAEG;AACH,MAAM,OAAO,gBAAgB;IAEjB;IACA;IAFV,YACU,mBAAwC,EACxC,iBAAoC;QADpC,wBAAmB,GAAnB,mBAAmB,CAAqB;QACxC,sBAAiB,GAAjB,iBAAiB,CAAmB;IAC3C,CAAC;IAEJ;;OAEG;IACH,KAAK,CAAC,WAAW,CAAC,OAAe;QAC/B,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC,UAAU,EAAE,CAAA;YACnD,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAA;YAC7D,CAAC;YAED,MAAM,aAAa,GAAG,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,EAAE,CAAA;YAC/D,MAAM,aAAa,GAAG,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,EAAE,CAAA;YAE/D,IAAI,CAAC,aAAa,EAAE,CAAC;gBACnB,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAA;YAC7D,CAAC;YAED,IAAI,CAAC,aAAa,EAAE,CAAC;gBACnB,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAA;YAC7D,CAAC;YAED,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,SAAS,EAAE,CAAA;YAEzD,+DAA+D;YAC/D,MAAM,aAAa,GAAG,uBAAuB,CAC3C,OAAO,CAAC,UAAU,EAClB,aAAa,CAAC,EAAE,EAChB,aAAa,CACd,CAAA;YAED,IAAI,CAAC,aAAa,EAAE,CAAC;gBACnB,MAAM,IAAI,KAAK,CACb,gCAAgC,aAAa,CAAC,EAAE,gBAAgB,aAAa,EAAE,CAChF,CAAA;YACH,CAAC;YAED,MAAM,EACJ,SAAS,EAAE,gBAAgB,EAC3B,OAAO,EACP,OAAO,EACR,GAAG,YAAY,CAAC,aAAa,CAAC,CAAA;YAE/B,kDAAkD;YAClD,IAAI,MAAc,CAAA;YAClB,IAAI,MAA2B,CAAA;YAE/B,QAAQ,gBAAgB,EAAE,CAAC;gBACzB,KAAK,QAAQ;oBACX,MAAM,GAAG,eAAe,CAAA;oBACxB,wCAAwC;oBACxC,MAAM,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;oBAC3B,MAAK;gBAEP,KAAK,QAAQ,CAAC,CAAC,CAAC;oBACd,MAAM,GAAG,oBAAoB,CAAA;oBAC7B,iDAAiD;oBACjD,MAAM,aAAa,GAAG,YAAY,CAAC,OAAO,CAAC,CAAA;oBAE3C,gDAAgD;oBAChD,MAAM,GAAG;wBACP,OAAO,EAAE,aAAa;wBACtB,MAAM,EAAE,OAAO;qBAChB,CAAA;oBACD,MAAK;gBACP,CAAC;gBAED,KAAK,MAAM,CAAC,CAAC,CAAC;oBACZ,mGAAmG;oBACnG,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,EAAE,QAAQ,EAAE,0BAA0B,EAAE,CAAC,CAAA;oBACrE,MAAM,YAAY,GAAG,oCAAoC,CAAA;oBAEzD,MAAM,eAAe,GACnB,MAAM,OAAO,CAAC,kBAAkB,CAAC,oBAAoB,CACnD,YAAY,EACZ,0BAA0B,EAC1B,EAAE,QAAQ,EAAE,SAAS,EAAE,EACvB;wBACE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE;wBACnC,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,EAAE;qBAC9B,EACD,OAAO,CACR,CAAA;oBAEH,IAAI,CAAC,eAAe,CAAC,WAAW,EAAE,CAAC;wBACjC,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAA;oBAC/C,CAAC;oBACD,eAAe,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;oBAElE,MAAM,GAAG,sBAAsB,CAAA;oBAC/B,MAAM,GAAG;wBACP,OAAO;wBACP,WAAW,EAAE;4BACX,GAAG,eAAe;yBACnB;qBACF,CAAA;oBACD,MAAK;gBACP,CAAC;gBAED;oBACE,MAAM,IAAI,KAAK,CACb,wCAAwC,gBAAgB,EAAE,CAC3D,CAAA;YACL,CAAC;YACD,2BAA2B;YAC3B,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC;gBAClC,KAAK,EAAE,OAAO,CAAC,KAAK;gBACpB,OAAO,EAAE,GAAG,gBAAgB,IAAI,OAAO,EAAE;gBACzC,OAAO,EAAE;oBACP,MAAM;oBACN,MAAM;iBACP;aACF,CAAC,CAAA;YAEF,oCAAoC;YACpC,IAAI,gBAAgB,KAAK,QAAQ,EAAE,CAAC;gBAClC,qDAAqD;gBACrD,OAAO;oBACL,IAAI,EAAE,UAAU;oBAChB,SAAS,EAAG,MAAgC,CAAC,SAAS;iBACvD,CAAA;YACH,CAAC;iBAAM,IAAI,gBAAgB,KAAK,MAAM,EAAE,CAAC;gBACvC,MAAM,UAAU,GACd,MACD,CAAC,MAAM,CAAA;gBACR,OAAO;oBACL,IAAI,EAAE,MAAM;oBACZ,SAAS,EAAE,UAAU,CAAC,SAAS;oBAC/B,IAAI,EAAE,UAAU,CAAC,IAAI;iBACtB,CAAA;YACH,CAAC;YAED,OAAO;gBACL,IAAI,EAAE,UAAU;gBAChB,SAAS,EAAE,MAAgB;aAC5B,CAAA;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,UAAU,CAAC,KAAK,CAAC,CAAA;QACzB,CAAC;IACH,CAAC;CACF"}
|
|
@@ -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,GAChC,OAAO,CAAC,oBAAoB,CAAC;IAYhC;;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 undefined;
|
|
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":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { NetworkRpcMap, SolanaTransactionRequest } from '@meshconnect/uwc-types';
|
|
2
|
+
import type SignClient from '@walletconnect/sign-client';
|
|
3
|
+
import type { SessionTypes } from '@walletconnect/types';
|
|
4
|
+
export declare class SolanaTransactionService {
|
|
5
|
+
private networkRpcMap;
|
|
6
|
+
private builder;
|
|
7
|
+
constructor(networkRpcMap?: NetworkRpcMap);
|
|
8
|
+
/**
|
|
9
|
+
* Send a Solana transaction
|
|
10
|
+
*/
|
|
11
|
+
sendTransaction(client: SignClient, session: SessionTypes.Struct, request: SolanaTransactionRequest, activeNetworkId: string, activeAddress: string): Promise<string>;
|
|
12
|
+
private sendGenericTransferWithInstructions;
|
|
13
|
+
private sendNativeTransaction;
|
|
14
|
+
private sendSplTokenTransaction;
|
|
15
|
+
private submitTransaction;
|
|
16
|
+
}
|
|
17
|
+
//# 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":"AAAA,OAAO,KAAK,EAEV,aAAa,EAIb,wBAAwB,EACzB,MAAM,wBAAwB,CAAA;AAO/B,OAAO,KAAK,UAAU,MAAM,4BAA4B,CAAA;AACxD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AAOxD,qBAAa,wBAAwB;IAGvB,OAAO,CAAC,aAAa;IAFjC,OAAO,CAAC,OAAO,CAA0B;gBAErB,aAAa,GAAE,aAAkB;IAIrD;;OAEG;IACG,eAAe,CACnB,MAAM,EAAE,UAAU,EAClB,OAAO,EAAE,YAAY,CAAC,MAAM,EAC5B,OAAO,EAAE,wBAAwB,EACjC,eAAe,EAAE,MAAM,EACvB,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,MAAM,CAAC;YAsCJ,mCAAmC;YAuCnC,qBAAqB;YAsCrB,uBAAuB;YAuCvB,iBAAiB;CAqGhC"}
|