@meshconnect/uwc-wallet-connect-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.
- package/dist/services/connection-service.d.ts.map +1 -1
- package/dist/services/connection-service.js +0 -2
- package/dist/services/connection-service.js.map +1 -1
- 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/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/package.json +3 -2
- package/src/services/connection-service.ts +0 -3
- package/src/services/ethereum/ethereum-transaction-builder.ts +82 -0
- package/src/services/ethereum/ethereum-transaction-service.ts +152 -0
- 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/utils/solana-transactions.ts +0 -24
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connection-service.d.ts","sourceRoot":"","sources":["../../src/services/connection-service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AACxD,OAAO,KAAK,EACV,OAAO,EAEP,eAAe,EACf,qBAAqB,EAEtB,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAA;AAI5D;;GAEG;AACH,qBAAa,iBAAiB;IAMhB,OAAO,CAAC,mBAAmB;IALvC,OAAO,CAAC,cAAc,CAAmC;IACzD,OAAO,CAAC,aAAa,CAAsB;IAC3C,OAAO,CAAC,aAAa,CAAuB;IAC5C,OAAO,CAAC,aAAa,CAAsB;gBAEvB,mBAAmB,EAAE,mBAAmB;IAE5D;;;OAGG;IACG,OAAO,CACX,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,qBAAqB,GAC9B,OAAO,CAAC,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"connection-service.d.ts","sourceRoot":"","sources":["../../src/services/connection-service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AACxD,OAAO,KAAK,EACV,OAAO,EAEP,eAAe,EACf,qBAAqB,EAEtB,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAA;AAI5D;;GAEG;AACH,qBAAa,iBAAiB;IAMhB,OAAO,CAAC,mBAAmB;IALvC,OAAO,CAAC,cAAc,CAAmC;IACzD,OAAO,CAAC,aAAa,CAAsB;IAC3C,OAAO,CAAC,aAAa,CAAuB;IAC5C,OAAO,CAAC,aAAa,CAAsB;gBAEvB,mBAAmB,EAAE,mBAAmB;IAE5D;;;OAGG;IACG,OAAO,CACX,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,qBAAqB,GAC9B,OAAO,CAAC,eAAe,CAAC;IAuD3B;;OAEG;IACH,gBAAgB,IAAI,MAAM,GAAG,IAAI;IAIjC;;OAEG;IACH,OAAO,CAAC,2BAA2B;IAqGnC;;OAEG;IACH,OAAO,CAAC,gBAAgB;IA+CxB;;OAEG;IACH,UAAU,IAAI,YAAY,CAAC,MAAM,GAAG,IAAI;IAIxC;;OAEG;IACH,UAAU,CAAC,OAAO,EAAE,YAAY,CAAC,MAAM,GAAG,IAAI;IAI9C;;OAEG;IACH,gBAAgB,IAAI,OAAO,GAAG,IAAI;IAIlC;;OAEG;IACH,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAIxC;;OAEG;IACH,gBAAgB,IAAI,MAAM,GAAG,IAAI;IAIjC;;OAEG;IACH,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAIvC;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;CASlC"}
|
|
@@ -20,8 +20,6 @@ export class ConnectionService {
|
|
|
20
20
|
async connect(network, provider) {
|
|
21
21
|
try {
|
|
22
22
|
const client = await this.walletConnectClient.getClient();
|
|
23
|
-
// Disconnect any existing sessions first
|
|
24
|
-
await this.walletConnectClient.disconnectAll();
|
|
25
23
|
// Build namespaces from the provider's supported network IDs
|
|
26
24
|
const optionalNamespaces = this.buildNamespacesFromProvider(provider);
|
|
27
25
|
// Initiate connection - this starts the connection process
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connection-service.js","sourceRoot":"","sources":["../../src/services/connection-service.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAA;AAC5D,OAAO,EAAE,YAAY,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAA;AAChF,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AAEjD;;GAEG;AACH,MAAM,OAAO,iBAAiB;IAMR;IALZ,cAAc,GAA+B,IAAI,CAAA;IACjD,aAAa,GAAkB,IAAI,CAAA;IACnC,aAAa,GAAmB,IAAI,CAAA;IACpC,aAAa,GAAkB,IAAI,CAAA;IAE3C,YAAoB,mBAAwC;QAAxC,wBAAmB,GAAnB,mBAAmB,CAAqB;IAAG,CAAC;IAEhE;;;OAGG;IACH,KAAK,CAAC,OAAO,CACX,OAAgB,EAChB,QAA+B;QAE/B,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,SAAS,EAAE,CAAA;YAEzD,
|
|
1
|
+
{"version":3,"file":"connection-service.js","sourceRoot":"","sources":["../../src/services/connection-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -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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"}
|
|
@@ -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"}
|
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
import { VersionedTransaction, PublicKey, Connection, Transaction } from '@solana/web3.js';
|
|
2
|
+
import { standardizeSignature } from '../../utils/encoding-utils';
|
|
3
|
+
import { parseError } from '../../utils/error-utils';
|
|
4
|
+
import { Buffer } from 'buffer';
|
|
5
|
+
import base58 from 'bs58';
|
|
6
|
+
import { SolanaTransactionBuilder } from './solana-transaction-builder';
|
|
7
|
+
export class SolanaTransactionService {
|
|
8
|
+
networkRpcMap;
|
|
9
|
+
builder;
|
|
10
|
+
constructor(networkRpcMap = {}) {
|
|
11
|
+
this.networkRpcMap = networkRpcMap;
|
|
12
|
+
this.builder = new SolanaTransactionBuilder();
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Send a Solana transaction
|
|
16
|
+
*/
|
|
17
|
+
async sendTransaction(client, session, request, activeNetworkId, activeAddress) {
|
|
18
|
+
try {
|
|
19
|
+
// Handle different types of Solana transactions
|
|
20
|
+
if ('tokenMint' in request) {
|
|
21
|
+
// SPL token transfer
|
|
22
|
+
return await this.sendSplTokenTransaction(client, session, request, activeNetworkId, activeAddress);
|
|
23
|
+
}
|
|
24
|
+
else if ('instructions' in request) {
|
|
25
|
+
// Generic transaction with instructions
|
|
26
|
+
return await this.sendGenericTransferWithInstructions(client, session, request, activeNetworkId, activeAddress);
|
|
27
|
+
}
|
|
28
|
+
else if ('from' in request) {
|
|
29
|
+
// Native transfer
|
|
30
|
+
return await this.sendNativeTransaction(client, session, request, activeNetworkId, activeAddress);
|
|
31
|
+
}
|
|
32
|
+
else {
|
|
33
|
+
throw new Error('Invalid transaction request type');
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
catch (error) {
|
|
37
|
+
throw parseError(error);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
async sendGenericTransferWithInstructions(client, session, request, activeNetworkId, activeAddress) {
|
|
41
|
+
try {
|
|
42
|
+
if (!activeNetworkId) {
|
|
43
|
+
throw new Error('Active network not found');
|
|
44
|
+
}
|
|
45
|
+
// Verify the from address matches active address
|
|
46
|
+
if (request.feePayer !== activeAddress) {
|
|
47
|
+
throw new Error('Fee payer address does not match connected wallet');
|
|
48
|
+
}
|
|
49
|
+
// Blockhash is required
|
|
50
|
+
if (!request.blockhash) {
|
|
51
|
+
throw new Error('Blockhash is required for Solana transactions');
|
|
52
|
+
}
|
|
53
|
+
let transaction = await this.builder.getVersionedTransaction(new PublicKey(activeAddress), request);
|
|
54
|
+
return this.submitTransaction(client, session, transaction, activeNetworkId, activeAddress);
|
|
55
|
+
}
|
|
56
|
+
catch (error) {
|
|
57
|
+
throw parseError(error);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
async sendNativeTransaction(client, session, request, activeNetworkId, activeAddress) {
|
|
61
|
+
try {
|
|
62
|
+
// Verify the from address matches active address
|
|
63
|
+
if (request.from !== activeAddress) {
|
|
64
|
+
throw new Error('From address does not match connected wallet');
|
|
65
|
+
}
|
|
66
|
+
// Blockhash is required
|
|
67
|
+
if (!request.blockhash) {
|
|
68
|
+
throw new Error('Blockhash is required for Solana transactions');
|
|
69
|
+
}
|
|
70
|
+
let transaction = new Transaction();
|
|
71
|
+
transaction.recentBlockhash = request.blockhash;
|
|
72
|
+
transaction.feePayer = new PublicKey(request.from);
|
|
73
|
+
transaction.instructions =
|
|
74
|
+
await this.builder.buildTransferInstructions(request);
|
|
75
|
+
// Serialize the transaction for WalletConnect
|
|
76
|
+
return this.submitTransaction(client, session, transaction, activeNetworkId, activeAddress);
|
|
77
|
+
}
|
|
78
|
+
catch (error) {
|
|
79
|
+
throw parseError(error);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
async sendSplTokenTransaction(client, session, request, activeNetworkId, activeAddress) {
|
|
83
|
+
try {
|
|
84
|
+
if (!activeNetworkId) {
|
|
85
|
+
throw new Error('Active network not found');
|
|
86
|
+
}
|
|
87
|
+
// Verify the from address matches active address
|
|
88
|
+
if (request.from !== activeAddress) {
|
|
89
|
+
throw new Error('From address does not match connected wallet');
|
|
90
|
+
}
|
|
91
|
+
// Blockhash is required
|
|
92
|
+
if (!request.blockhash) {
|
|
93
|
+
throw new Error('Blockhash is required for Solana transactions');
|
|
94
|
+
}
|
|
95
|
+
let transaction = await this.builder.getVersionedTransaction(new PublicKey(activeAddress), request);
|
|
96
|
+
return this.submitTransaction(client, session, transaction, activeNetworkId, activeAddress);
|
|
97
|
+
}
|
|
98
|
+
catch (error) {
|
|
99
|
+
throw parseError(error);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
async submitTransaction(client, session, transaction, activeNetworkId, activeAddress) {
|
|
103
|
+
// Get the chain ID (e.g., "solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp" for mainnet)
|
|
104
|
+
const chainId = activeNetworkId;
|
|
105
|
+
let serializedTransaction;
|
|
106
|
+
if (transaction instanceof Transaction) {
|
|
107
|
+
serializedTransaction = transaction
|
|
108
|
+
.serialize({
|
|
109
|
+
verifySignatures: false
|
|
110
|
+
})
|
|
111
|
+
.toString('base64');
|
|
112
|
+
}
|
|
113
|
+
else {
|
|
114
|
+
serializedTransaction = Buffer.from(new Uint8Array(transaction.serialize())).toString('base64');
|
|
115
|
+
}
|
|
116
|
+
try {
|
|
117
|
+
// First try signAndSendTransaction (preferred method)
|
|
118
|
+
const result = await client.request({
|
|
119
|
+
topic: session.topic,
|
|
120
|
+
chainId,
|
|
121
|
+
request: {
|
|
122
|
+
method: 'solana_signAndSendTransaction',
|
|
123
|
+
params: {
|
|
124
|
+
transaction: serializedTransaction
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
});
|
|
128
|
+
// WalletConnect returns the signature directly for Solana
|
|
129
|
+
return result;
|
|
130
|
+
}
|
|
131
|
+
catch (signAndSendError) {
|
|
132
|
+
const errorMessage = signAndSendError instanceof Error
|
|
133
|
+
? signAndSendError.message
|
|
134
|
+
: String(signAndSendError);
|
|
135
|
+
// If signAndSendTransaction is not supported, fallback to signTransaction
|
|
136
|
+
if (errorMessage.includes('solana_signAndSendTransaction') ||
|
|
137
|
+
errorMessage.includes('Missing or invalid')) {
|
|
138
|
+
// Sign the transaction only
|
|
139
|
+
const result = await client.request({
|
|
140
|
+
topic: session.topic,
|
|
141
|
+
chainId,
|
|
142
|
+
request: {
|
|
143
|
+
method: 'solana_signTransaction',
|
|
144
|
+
params: {
|
|
145
|
+
transaction: serializedTransaction
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
});
|
|
149
|
+
if ('signature' in result) {
|
|
150
|
+
const decoded = base58.decode(result.signature);
|
|
151
|
+
transaction.addSignature(new PublicKey(activeAddress), Buffer.from(decoded));
|
|
152
|
+
}
|
|
153
|
+
if ('transaction' in result) {
|
|
154
|
+
const decodedTransaction = Buffer.from(result.transaction, 'base64');
|
|
155
|
+
if (transaction instanceof VersionedTransaction) {
|
|
156
|
+
transaction = VersionedTransaction.deserialize(new Uint8Array(decodedTransaction));
|
|
157
|
+
}
|
|
158
|
+
else {
|
|
159
|
+
transaction = Transaction.from(decodedTransaction);
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
// Get RPC URL from the network RPC map or fall back to public endpoint
|
|
163
|
+
const rpcUrl = this.networkRpcMap[activeNetworkId] ||
|
|
164
|
+
'https://alien-newest-vineyard.solana-mainnet.quiknode.pro/ebe5e35661d7edb7a5e48ab84bd9d477e472a40b';
|
|
165
|
+
const connection = new Connection(rpcUrl);
|
|
166
|
+
const rawSignature = await connection.sendRawTransaction(transaction.serialize(), {
|
|
167
|
+
skipPreflight: false,
|
|
168
|
+
maxRetries: 3,
|
|
169
|
+
preflightCommitment: 'confirmed'
|
|
170
|
+
});
|
|
171
|
+
return standardizeSignature(rawSignature);
|
|
172
|
+
}
|
|
173
|
+
// If it's a different error, throw it
|
|
174
|
+
throw signAndSendError;
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
//# sourceMappingURL=solana-transaction-service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"solana-transaction-service.js","sourceRoot":"","sources":["../../../src/services/solana/solana-transaction-service.ts"],"names":[],"mappings":"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"}
|